From 8daa5b998fe5c74101afb7d22e53f9678ebdab36 Mon Sep 17 00:00:00 2001 From: James Riehl <33920192+jrriehl@users.noreply.github.com> Date: Fri, 5 Aug 2022 14:04:48 +0100 Subject: [PATCH 1/7] Update to reply-based oracle contracts (#2761) --- .../contracts/oracle/build/oracle.wasm | Bin 174306 -> 179175 bytes .../fetchai/contracts/oracle/contract.yaml | 2 +- .../oracle_client/build/oracle_client.wasm | Bin 161202 -> 178539 bytes .../contracts/oracle_client/contract.yaml | 2 +- packages/hashes.csv | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/fetchai/contracts/oracle/build/oracle.wasm b/packages/fetchai/contracts/oracle/build/oracle.wasm index 7a7c23f511b08e3359349fc0ba5cfd157c7a446f..dc76012fd72724a8e6aa71962fb38c927aa3f518 100755 GIT binary patch literal 179175 zcmeFa4U}EiRp)s>-mA~|O0QH^Qt89aeGjkIrG?cfjIoT{i}uyv*eo&-Ak$;kWVK~t z({|YeTX8bZOvbJx?nHrvC}4=v7`g}sn_$l~l_X>+8QQO_C)2i}YnjTMzQT@fI6A39 z{4Y5=%IQ=*WUBx zUvc$aFTdrDw;#LnTi@i3EZ51$ZhtL3Id;oEZ}^tGZhuoUshZ|)zwOJv;wxVMl|y9~ zW8$~mdf#jB82Z${?e=eZ!@u&;%-;Kk+mF5Jme<~K>z%KozwgQ4olj-c(`lMcPfurA zmgvv)bdvCgziF#A!T(yVR-PxB@=Ry^o1V$jJZZJ2XIoikV!F%sasN|Ma?fSTkWXiM zLQ7f8s-PA9zm@Hn==FAVNStp^B|9uwPFn4(<+V@Hoh)m&vgrx+k^j`a z*2H3x?M%{zR(EOFbgR`4nKO!YrbD+gRg+D(v*|8c~>6Yq#6G`ER044)Rcg zUiH6LdwOX$Cj%YNvWZqk_mixvY;;-w2SV9|dXdwS)}BKts%5q9+kaV>x7#GNTKih$zFbfCzdX--{MTxy_oT0XeLGK+`H4OGgK4?8wvo&} zn3T`1ebj!>>v!@y)0v5HyZzg~{n(qbWcJS2z5c#iUw7Y~!omM>^7i|0f9)H1x}j}z zo!mHe>)m&M`)l>_ed)|?w^wf`)A?h!-}{C;kKO+ITR{I~x8C>d$C4jN7w&u=FW-9W zYi}18z5dQ`f88zDkUVqCEg<==x7_}^+wyewmRs(){nmSK`IcK>e|w%y|6-aZWjcH8 zOFxsI$^Pm4(?`;OlYW2tgXzCb*V7+LKal=#`e^zi>5ry|KA3*lSA6-E@5!%v`Ty{( zw|vX1Z-3ymuQ___zr5pk`i}I@`(OXB-f--`|K%65|LNQAx%+kB_&hFFlw3r}S+4*Xe&w|0I1b{eRLwO#dML{q&F0 zwd^g~TeG)ir?RKA4`n}@J&`?`{do2}*?-91l7BQimz~ajEBk}&PqRPEzB~W(?0oiL zvJ?4x^O>JJKmG3fd-JsQ;FqlNzoabg8nmyl$0A+HlKwG+#`vmII1V*JP~An{E}8cNO{9Tf>t@-aAn@U6(B~zP$f!bZW0^D01&jT|=3E zt=CXy<7+5C@O<*mLi^dOM$#^Ot5nwN{n}fo*Pzp0$$H(S1Xw_Z3{$I?tL&^Ygu%qs zjH6w&4`hpj*5N!U5hPcavoy^c(~^0z&xe4K7wOl~ z`=o4HJ87BTH)s`k!GB-7Z;+Q$1^?O8gRd`N_QpN{XXL5%G*wTtBB6sQkDfk>dP2&@23sI8PnZQsfUL|t*fMWqR4sbWYh};H1ebbL~HlIqMH_pu!o=C zhu;d+lG)zV{!8BGc(cZM^X7PqY;`~<$BZ{q{}?5Ws$qNDV!U}ZUO+c8UQ1bKw5l(! z$D7CT@-RByEQ}X0U-WqMdc1#-XRQa*2Lj<8x@!9SE-lDu=q5bhTNu?loaA%KKeAT@NX^_gu~#8qe-a!xlfWd)R46w!$b0|Z zXHrweWWjM?rKv2>CaVXNqz^`{WUqE%rMVQh$;Ia4x@;_=q()G3>)u;(c zTm(Fb4A-&rB9$U0DH%6OW0j&Gz$U4M=0EaN=>^+Q67;fCw2!2R^8zwCBw8s}%V!^g zXZ8L{0j0Ve)z=Alv}s#SQA(~$IQ12M?wBn< zr(Tzb=`D=EeCl88?Zn&p+xvZuB$@r~tEPIO2R;w}^WUIfozH3oD=*iw)gnc6_*vs> zdHF&raZhURmz0uSuYW~;FnIyB`d(CKlwQ}qNc-#5nBsp;UcrYs`w$BMT&V7RRo%~c z%E9FMw2v}fKBq4$+4*$PYBp6j_*`f(>!U;U+x%x%1nKJ8(hfk=yDwe$a{Qe;jVEcnkc_l+EI_2Lm)C_?^VmB?P8S*}~CQm>V zl|4(rD2f0$$1uYH1;uk3)D7J|dj3q>H~Z0>m@Ef^A{AJDf0JNKmJ8(Q?3EUFcDSCi zUeB`6&2RfWSOuB}O4L07D7<~t!M}oC-0ukRPh^7LO7?ix@9Ota;H=tKvh_?twcF3A zhZLkC_CwDn-^j4(3OH8g4j&}5)YUF_>*NrP73my;YI0G% zoFGR;fT|1MXSxL1YWYOADoL830QGFl_Ny^>b|X2vLL|qY@~^C$Q@!zpEtgq2!eR$o zF{d8xhX>5@*x&*kr1B_0b|Oe_=t`4Pdl6Xgt9lCJ9>}ey2ApyjYQ5QFw#;6E(&FXg z*Ky@R8|$C-b6rDS90TpHpx4%ndyR4Ub&cxhRP5AfoyCqa{kraAXGuuvsJ0PNZ9T*M zS-P>S2{=>ZFYST-XF!0!Pl_Gj+N}CP`X@(tO8D47=+jnJ#ZNww_63a%QW@{*bdWkf z0gHNG?l(8xzqQ|#a%9r1=yzTosc=sMMR1J!pbs_%8?)LTn%s#i*pR#g8q zoeAAgb5E-SH*}%9gUQd(vG&00IuTou zYiOjEOswE0ki1>&;IYXDt&3$1>|ud?@#;+M`T$J3 zzeIb2j;kitvxvFkF+PvZI{OO&Rv9^rGbful^Q?Dv*O<=kiV*O&J|ZZ50ozJsnC^Vi zRsXBPY$T?hYF?7^N*p`>go|gF=i9$p%z2t@Q-4}qEf$Ux$G^%7fzC^Z^;GPZxt^3O z_?-$D9{b3DBb|KH*Bgu9t;fonCo>64Y3haQp(7s7Z|(KS}*k^}rJ4YHMvNA|ieB8|x*hL476I^JSnAd%q@ z>3AI`ZnyP~ku8>QUY%>V=Ck>Uc@qK-t74C(v)qS@XK*n6Xkt{q>#QV6`TTGG)Q?Zx zh-RDu0(85M>2_!S^~eA4Pygdn&yLaU7Ndk%r2PiVK$=Ono9L-`%a2JtS>kU8Jui@_ z#KAjFFjcBrWQdGC@+pQdzTqyFT4U=hH){FYFrX+@0$UxaC2+f}v#=Qm2$|)_%Jjxc zjf_t2>7k_HUvvSZ5Jc%n)I)a3t+7iBoR^?~K5O zdKrXC1)wqgsG(vgf|#ITX#)MUnAfcA?92;Drwz4+MAm83>%?hAOE$@ajQ3G2oaQ2G@|GllGJra_(x*MIx}JZ zp_-wgMU_bg z^dPGY)iY2m^S2C_+SQq^l4x&5?fp9wx}EY>t4|*J+w^VyUCOH_R*V;5H;0 zZ65lX?i4M3<=65Pxxua@GY<^*LQbKIH~07D*BATxyJ(`Qo1mV;s$@P6CjDlW(^Prw z*E3PEN-YBwyN)DBW{xDi_sOmkCNhL?lp%5;?+vv#*jMa*bvNrIrt$=}1k^tu8*>*t z8_u{#CZXebP&5Qcpyj1GR1<9&+C{FPG0cCojQ)Ql}qd1e-cA#YE;gFNR$FWp^XYRgzGbEO6P+D`dI zB{QYd$*@v7BMI6!r#S|TndO?FA^ImEX>l1_!U>ohH7`6Dns(NuvB9t?K~I~IZD4M~ z)+tx&KV)E*Y~U7p8J!H8F7{mAQ06o{andWY8y3km5(JePtugpd)TEQ!Is%4%7x@u4 zl=q13F`OTAqv+2hR2wRXm{6-c{hhL6^4>2FtFPim_wc|7S0xD3WlKX84VJ_a(R97s2Z60ev zhV4_MnTCBDT~emDtY_UF#%ViD>txxMRoX3o*aSnnwn{rf%e3EN=H`_Nm(iF^l~p>% zpVYxB?MaSH28%G!F=8_&e>(VIdX@90@ij7$5o)&88}QVbpBbcPj5z=*5(r3tNexo8 zuk8)eQOh`VqAO!m<3C?duG7LjMs!eNS3JDi?>b@%WA7bgmHeA9`A3ngApzwc?rI$_ zB0+|DQjva!aKdJ`#$5PO-yMcY^x|N0r;Apsb%dQl1?tm^8`*nE7Wim2{jD`Oqwd}CHR zv%-J8yC!yJ?$29q%`0I`d?p^$5sjgv{-`%WWSI7c$UrWTh)4soUU;ZIj19{h}s0G1O!baQHJe^_H9pH86((J`I2|tqE3_ z$Zec|oQ5aaJ5@{v`kc}PPP>snFTE`D3M(HgalIeGO{>|cL~SLjv~mpgrY>g_BORBs zAfT2q_%RV`Ghy9lj!rNm7lMqb_gncjgoe0F7HkOq7~r5Gf-RZ?+zF2|-Es%56Z*uL z@=vsORHA4KWWDc~(ShQLsgs04<@s#&3X+Ku`D~h|F+Ax!aU3yP$0~+lt6r_f^j6Eo z)zW=VN3aoOi#_rkw4*?)+(M#wypjUaeXq_6dz#{Dg%mzrgMeqX?htP>wxyAeEZ3Q0 zYF~Swc`JRBGd3=b8B-azG{%^K(jgYW89PpFb5OFwW3$_IN#4rmdG^9<;>Bd&hN5dr(Z4HO;Xg?rv5Z zLO=Kk>M&SeS_mJkj|ES01cYU#IFJAVWnQ+HTYB8%y3UQLZ*>duT}34)vj`RogM=aY zn=c|!ekFUQnkP1;OOR=iGn%Aa3a$DR&Lb@HF3Zy?k0bU@Cd;wWF}D;a)UgBBvEM;! zYmU88cGpU+D{8w?_A3}t?<3}MP;yYA$om4k`9xc)2MohC<|D(vu0-94o2SE;){H`3jis=LukJf^#J zHq`QoeYakpSNn2pDUDw@NQ3fnA{ zw}`pz!Dk4GjTXuxC_-5T-G#=YvI0CBPvB~A8IE+W$UIIAA~bIjxWFwT7D&ylp8=k} z#ylBG`8u=c3sQCYZ7((M^TkoWExhYE>Q50`e|=`iZ@(-$s|yli;QK4l?P$pnpLl`O zn)3m{ZCcGMM06J0OjR}uCUTnKXZ#k-NK6<{p2L~% zZvA%$xu!@AOo|nc(~&1Nlx1fWaf(!H$x`4;e5L7RyM zFG~+naGA#3)PaDp5_?aJHDeb!7t+`b|9#;|Xc|#hN~?V}ivX2R720G|NCXJtm5T~5 zuYDV$BQN?*dn zuO;QVw4qv-a-|3`F;2;xC`t{B{i#RwYXrfW0>oP}Qk=AR4ts2DDsrnJhU&;A;whEK z<{@?@kS0F|fLTkU#|AU2on5bgYEFI+T0`aMzo`-})SY$*lQ-d1Cra$zzCx1Dq!y?& z!z1wlidmA9L)?NELrbC>`du&IpY*zOYr&tl{tF&Sz0%Ci@yy{fr#8l@&F8Eg5B zKgvD=F(g0Zh}*s@vkS9z)aPyMxQoK9n z>U`+2`N5eZ>-p1)&Y@;oO&S4e*OsgJDDI-VBgj9Gy5*6x!l02!OGk?VK^gAGLg(RA zV+r}FQ>%Exl;#I4z10x&cS0DW(i=#rmG7v3lJ_;@2rJpm3ds<2ejJC%k*UM^I=>dH zzoXgMtGuzP{!WBPj6V8?$Q2fVJK^5_#hTIsiS0CMrguBBV6;TcnzqE^f_e&n;oWTf z9o2HQRP>>yZ;IobwAC&xlh-sHYF%Ito4KT5;lrh`uS-t{D47jc#$Zn?ST~POzoTB& zzebCRg6wrvGuU-)@|4_4NTXAN(jkOz6G(@=ErtlCP73;zd^sRX`n!*4QGb_l);Zqy z2oN>2w&IF_O+0b0^TfTz6Z2x15{)NLY9+{{I1~C3CBRD6G4;UhD3;Bzqxw6=7+A8? zq-!{Wi8rz{aznT_NpVGga@ON35U^pes>qGTMRM{I%tq&jlgeIqMXWHZSM*_p`-FC| zLW}Bw74FqLWTs{-R=5w2xsw&Iz5QwD_>&OVPGfqgz~Y2KwiNp;F-Zd_+#7dcxIcZL zZEiG9xVH>DFRCv-cH@M5i=9;8Fh~W~iWBN3a>8N>b)98$?8%A|#)`LQR>V^b@%_nS zzbxUUVyW2AW20e7l954lL2X)<2T|N5Y%{4=k~ed%-BLA2#*2*sfVI5u>vftKi_Po( zfa$shdO6GwJHlG7p||xXj(%%yr;revx{3XLe{CVgc|P~PDYXc4_*=PM!E5INQX6FG(+ z-7)BahvM=l0lyYRjgBr4sI@=9c&Rz`A;3Ld0nU{;a~5ilW-&?GhSwc{77qhduf@S% zIgcag4Y&?#0Z&ogf}?f+Q%Fo_#zBx^H+B5Hxx&pX&D5Ot{@@5*XvW3pGq{i@tk>NQA+d@Al|I7 zrF68PQko5469Cnin(BkA|Lx!Y^LvY(g4a$eCnDh;fb0I%^0GMpbfm@38@lt&aq4BvIOm(=^oSfyl@GBI7s-VE z|7M705rfJyb3u6vlQpMLu$Q5IRlRe0)VE-kQ2cy^xY$p58 zuOG$qR_GW;yb&i^^fCr%r_o3%;uJrfpqibqR@BOAi(Id!VU)>RAh&|rX2ZJRj3#-u za*x!ky%GKmYqxS+uy&hXv34d9mk+SV|C_7cV3YtUWS^EGj8V#i$C`D<_>~!b1p7$t z1UWPG>_<*qO2#L4@FLir*|l5pEXD|ad6crNUkuqOCoiV2Mphy=aLzrQ8YPtZ>i~XmD}4(nG?~giC$CVW^$RzJz06EzdK9Y zaiO=U)&d1sbv>TD0RqGQ3Qo{yAt^a}15Zc6e|F%8bnliuL8|TYuc6+_uPO8UNOnTb zZ``Nd>V-RUR0}q>ox>sGX8sqcyVWRIbAWy9&_=G4N5^xtQFAi6LVwy+8|J{n#dz@J zDi|J4P+x|UN7-j>kdy-5MW4-a`k%F?gRipTr>yX>cUq3vhNp3rU~uc82)>7{_n91tbpOX~3uxBZX-tVTESvyM)xohS{9K^&Ysc69 zTUPf}*$Nx^z2;O})CxN809XnOtSi8gwIQ((1lJT&uqA~>&%%Vz127^C&oYUrvv(C7 zV)jhpfunw!fEHUck6M!V`YSD)*4=Db^mWARVh(oAi=`Uw7^sYYUnReXs-oK|-s|3a z#Ec$n)IS2-uco)4Y1PqIv!h@bU%ZFgQt6IxwdOn77qzcAB$^Co{+5WdadB0qr^g?U3JD`4K3qjspU3JVNNH)VC*Y zi_b!ncvwt8Znff_Vqf`Pe#VkM4b8ACI9B$LPp3L#$+A?3!e}fPRXQ9Y;-xjdfEdMW zeMFN_`qqB~%4kjn*6k@cj95omMRE=!eu;pxQ*|_sc&d*25;Q>pijcshajH&d^i&-y z`Vs+XDB^$;VT-xU<+#gqN{+-^g<<0vTZLbsMBw1YxAXG9y;Z2*a=snl-MT1v8^>%` zEbblW67u+JbrMb#8NyqQs92OL-)&D~Ex#f86k1Ki&qYPoCXd>)csns+JO>$rv!Hyh zm7Ssfo8sv#&Q~bh$QHa=WP9~$@4F+Xh5d+wz&6yTYCcF?y}pRv{R%$8}h+MB3ZGm)JiPkp+>9DK?!;cOZX z;$e<9;N>RzPndQ?J0P>PRIB0{bXls<#=WR=abgm;l(Qf5g znn*hhH2?jE)RSea{D3_XO7J4k`$;R?rMs^TlvvODmgv1Ll3F;H)XBVzUChg$wPs+d z-o@C4G`y`bS~Xn+g>F5B3s>J@HoszB)WqF9#FK6yMsDjq%BCKfkgWW;RmD2R=QCQ> z^aUJk)zM7u+VVH8i}-xXI}{z>`z~?Ui<_3=njBv5t(o%;ID)o@m#NRg*pZg!yfbCH ziNH6osd{=LlRM^e{2mb+*Fy4 ze%Q|bK_A^`hDlV=UeUE3Hrw;xZReV1x9(GeFINji&X-w45??k<882SVMu)#+HKH7z zOaaHM#oE~%Ek35Fx$JrYIO_9lDSO(?L!zDsJM?3Q1ser|K5v1Rx6T~ z#8}eR2_3-H)ESQ-6M{=MwxZs}My+P<=~FZYMrw`bo@J4_XF!^()Vp@?<8P4?Wp;~* zw9V-=T~`QzT>RHif0QZH7Ps~!Wt8= zzGsM6}0h^++pM>J3`!KCTx<||1AVj$d1{x{2?GTueb3;UD`h_*V zMKzo^D+h8`Zd(mGu$P)FA18^d7PQ_*N{Da2Vecn`CP!yL>U2l?neBx-Kmp}HJF zWmp?`s)msrU<`*dGp$t^I&sRqw5H^gyJp(ubkj9ck5H!Mf#e}6ymHNGIb6j1E+s^} zcKRinl9704wP6}0b{%Ate%Tu3b~-a=o)27`irB`vc9FX27YvBOzr}&hQ&k=NNv|E;9p$$s~fJ|+NTx?+&n!)1a9m@>|wJj*TBe_w`(5;z#3yFVg1!~;3axu z+tCv{(Zp0ZrE!=RNGVzUdzwkf>bA-1FH3%33GRApl@pi7HM@VrHG73vIKkdc*Q^BU z+0;o~lYn2g717?;{8`p0mvPMMm?OK(zqv3p_dgy0LGhb>h}rwiAo zVLKMJ%AaryM670%A-vTZ0LYB+M=f*?n^ykiv{ET4H>E8LRvrjf z9%8cC3WBs>?L`=pNX8%K=aDcZgR31KsU5^0`gRXZL^~We9!d)@HaN{wzo*mMz4=V4 zWkGEr*tC0Xgo$2=Q5gylJeuQ}`eku@HFc;f5b$tu3tq0!RI6#?Ji&f6fS z#m9Ao^i1I6lE_-OGI7hgRVriS=Oig*Y!Ie|vGHZezl++36|EF!3e^jL`V>6{Beh1h zZdr`2i*_V7Y(D~+>g+KcxjO)~c@_P&v;AabSeWRmqXOa)8ErZ#^+Vg3O#M*&K31R9 zkBMA(4ed774=5v04fGTAMC&j3K}tY7QW$>p)Wm-NvZ)Z$mHJ^FgjFj%%B~OKDO?}m zMF^0iE5B~VWW)O10alExHhRzUNz1~80AMu=h~=a2%4yoJHm0E?`_QU*14H|Gfqtaxxjm`{N=*g5cO<(*>T@&KZwq}_uEK*UMSkNmgG1JvfW z{W7BC@&NBRe7@exCmq2=wp|{O`?UaMv>L0%pliQ8z_?4u#aAiwf$sO~o{w;OfTa@t zDj~>z7V%Ycz!0Jp_W;g*`0sr)iC%3vhtdSX_2J(GY39Gqko<{^~nnAF@@~>*&|SssW*uytZVfil{^&RU2F=y#ey_LE&J91X0Ql}_Ny~qj=Y^x z=g<`ijdAR-=rS?8P{;rcU#Z`T8BY-b)%O*>uf+G3B5_SEvkkEJWHGr;DhWIM1gp^- zm557^Y2VG|aYM2`i?ZHefbmL@9)aD^EG$}4Xe~%-i&(aaCyy*YFqnJ{P3~_zo-Mnt znABd6ecBaTSVRpNVnn7;wpJ{Fpj0?py1AS*JB6nCMN^8{*(Q>W@Z?Jn$@awZzMs!En?Md2OpEci&$pW&UeX!}mI z(Y`h#pAK=#R*u9yJlU=}sUld)uaQi&%0(ri4|bq!PfU-^jdAl_YqoQlW}w~)*Z(P4a&0u9d}AG<1i25SNU0g-0eqKI+m0h?@|8tcKIm^9;p^P4*ND@beXIU zCmHW}><0GF?X**ILVcqFd{r3P(&kSPgPj02q&UIb4G9(nPKjX%2tR8mF;Q)990vsa zCvos%ZH-Mz)pS(|*My#Wd|O|e_`@!c-lkn3e7npkWWKnJ#~}*2TwivvFXQs!^5z%c zAnUWC4%wC>qfJKxv5hg~xFp?y0ycHW?y!h7%Mk@jzO4&Hj2jU^#A3lU<6T#0Z>E2^ zH92J!MDb~89jj(y8)7E&C~=CNi|fK5y;V)>&wrQbyi-l8(#$$B)=(k0+}nl(k&kSL zHYkB?v6vKW}BnZ zHB4$64;4g<0(wKn@N5@#Y=>6LqcYkfwb0)$cUo+BGl$!vSHr|@XPb`e)x7m+-gjed zjp+17V!k6yXQ6+Yd1;IwjZ}h4VP}*ym@othWCB0crox~rv)BY1t_@CS!ypz=uePOm zXVr$GRxJ*ioU1}t){l&(z0Bvr_SN3jHy%z?4OKydkeo!b(2s9*(w_8|cC$)b3@Us; zXNW0Mz!+kxiNUu?S6E;NOfPQDkLY;EIayY0;$*g9uHCOV4UM{^AP(Y)sg2^u1nZjx zBHKV^T#kKIqijV^?nTLb6Z~6q$qwxN7}>Vuv9t`5NW~1KpqVs+bVO#Ldx-vGmlwDIerWt#qIGA>#uymsV5nAJQ`C0}jfxlK1{W zr~Jr$UbgLUCh3_Bq#&j_ojto_N+wRuC1~8F&EZ0MJX~mP$jE_prR8_L%b4xfMvlWaSX(+q;VKr@`y$p;Svo}@Ni2%JLYB_N zwaKe_#qaYf8pIfAhb?tv@Z&Ae9i;qAg+R$_m^FIje5A^ghg?XFvAtkN?(_ zCx7}ciAKR8%P=6TUis&S|I?v}8>^624uhld%(;Zz8R6Wrxc$9l7j@V*Vpug|O^l40 zuKEypH?u8fs#AQQ4+ajaXw*G7RP2weAN8dkjyB zD5wx-uJQ*=HDgY8tP{PzroRDNB&gQ72$-|ijgn95IGn*fduK4&IHP_Q@G zpSvM~{YW!*|HGUX8%HNd2R{Hiw`u~^LuJ*SA$Ld8#vnl> zcSNhR!myzsjTElTjZjQnbqpk|zjvcJ5|wD0^OAFAIA6Gp3C_FQ)9_Q;;n(J!v;(ir zPsN63$t2Dic1@R>=q+`+#?*3PYgp}JGrAhkB(a)Wf5-POsV^lCTB2Il-_Bam>bQ}c z9S%0$XKSiE7pP9HzJ>uQ3NErPxUVT?srb*q1f>8jmg@xcQqnFSby$ENXj7`9U*~;b$J(5;>>;YSD^l5G~&E^c0TR`_0j#HF4YCdTsLNsy2us@-}?w zb{TajuVrCxQF#J=FlKzY@y_b1A(4c6iw`DmmUd|2zY{K|^~_23{Di3I$*_`UnFyES zBmhNRnLm{@up;bYg!yYHr_4m}i`$FBKZbUIp&icdmVVW;$+Pals|Q-Tb%Y`xi$b8< z-4Y8IQ5jfkG&6oVj5^MaaU=Ue!J0N+J20WJ zy{Q^1;aPYS4eJ46|9LlZJcsbm$3a&a2E;cX4RCN#nSC`9Fp@tcIA|}VrIS_{DH`7RVg;(Vw zC~qkDQ;!X_*BKT;dCfaZ8jJJH+gg$Uj4&^z?heff?TMWWqURzLYFxuijeuy(HOvoB zw*30#%JR_i%6MKS=aP5rr`*4bhu7lpHuI{ridQ{U@hUt~@NH*QUX_?o@C!1sVzu`{ zjZ?@)dCgs&EjS#>cI9w31tHhjf`h5a_NYo2U*`!XJ5@!t7h2T(*4cvBmTcG5o7t>u z;)V^pr^pE2KV*0hTd-WJ9c~R94MAbTezdfJ4aBHy!iKn>)qZS1xa5Vffw%~I*`&~b z4HDatkE)kj@lj;uMT}>db#FE5VV=BIuE-Ny3~Z50y}BgqLG_Pe4{J^K5d9H`0$Z^M z3oshP9tc1HCFpL&9$+MaJxnthGD0i%KyX4}56&_QF&B*$1{$=74{){M&~k7)C=V85 zG$DE`Vu+EQU@(c&Lz|)SlNNPMHi}2F z?rl(990^fwn~`*+S*XjKZWWVv6*)KB&1C8>)QkAMgqPe`abSx~qQIfGcp{0`-UjQMy|=!3q&|>_AtR?1 zS?JP6{uXI4;EW{+HTe{iJa$1x*eUq?d4&sFzTT&FgGfK+C3d1nXTM`dCKr;Sg!*G4 zd{XLp){#`+K@QAIQM(9~%5!XG)Ncf`0xYZ?3~7o(hwbP9PXcTTWuT6^78ZNU@N?Pg zlxiRuWvBfVDHS(Z4?4S*ZRFLQjLqvgJ?tDi-y(1snt(b|tLMC`9+OVi!s*jO8jzjp z!)ack4^H!PhhaEbZvuU-(L;IYP}aEKStskY?If=j-YS&@Ud&~EgqL2%9N`6}uVh#9 zEgZ4uN^uya1D%i)t1=d{{}^O5R%*2x5g9>Ma~seUmNGg#fnh&JfRzk= z7x@KLoxC)7YETf0iJ+^Q(#xiq`g+@4*91?aJ4|8k5|EA2wYnpMt-7O^P2J&^Q6SU< zLL3=qV2|XZ(4w4`Dm&s*dUGH}VE5#a=aL5oQ}SK`N|fWxM_oGqt?FXDlDDeD&ZLy5 z!|H?n6e!xxuP2L+Te2*HRq#BHLdB_@*_^Fz%1L$0#LgDF(=QC70*noUaIB#*AS-lS z=R^9@ah;4oM+>%s%hJZ+C=|wE7f{fGk0J9hz{PzOk$GwqV>zey#_D3?J5@zrcwjK) z%P?ER!T?KQp@*n7U@}pT!bBZqyb&f0EUUp=k-^1+cYg!CAjnEYkdzmbA-)F$2#-RL zrSl3W9a~t@QSs4?%zQHYr6>S4eM2)N!Mr*9BQ47uC2svId`RYIr>E0wI&ZZnCZ~|U z5vy&o74B-2I$Enc0RsuCyOZP`+uhM|Occ3MWCg;`A zXms3m`@u!d({Pn2XP3Ilbn7blaxuf+F+01{*aB$N`w3aad&^|@FVN9q6l8DcyhGs* z7`~<$(IS&usH4{&G63e9mjC=-z8$+Z>Dt@G8`)FD8+-e0%~G==%K_*H%K?8=upIP3 z+dSpQ@*O2YPTWyi!PH@n-tbz>T5dG8BQ_P=p0k9`8%H{`^Nr=?z2$lDk1v%Db-5~b z&a#Zw+SR(NIuQ}bM{-w@$`GNW0Puvl6{?Yh{%0~i!_7>4J*TV*?cwRIy1fO=@7qeF zrp#HFpDw2_|>Pl-LM z%QBfXzdo~Fp8t*wrS!;eK1*GniJ5kFb{#)V)HVF5v@X-s(=|LDvM0Y*lPv>RvxB8A zhc=eG?T~3}C9UbtX6n@)|GfEL&9;TLj`4MZ5$yx{^}Z*pzE{%@lr(DQJ8Ux0{_N8Y z!04*U{0fGA#DtM=@JmUe!pQXjNbJY%; z)7wFgElhvO^Is@3j*Z=xt=^Fwqj{3DdvA~0(1KF0_HZ5eEN$HlE1-K zq*3CZY2qN}Fl_Rdw4fuL(<~lL3R@IqwqyK0WJ*Mf7L33&?TE{+m+25nc!c|;N2g3$ zbc%u}Jj#9=hH7^=Sb`Wk@rgPKp}q|ZuV(0iTJ+EwTcaheUi{hXpQpW{k)oki;Na1DsWP8W>`#gVJF z;jBZEA-;S_5V#4dn~*`;FXk7UYULT2(M%OnscvcGNQfI}6)-G#>nsrr6;ta#TcdH& zU*in+6)z>~FRzmA(AQf2A$!91h5ooH!&azEAp$1RGN~;=1Cf7LS8z*c~ikWIh41!fEwh0fMu8wHg zJ+_*<3SHv zMVNjt8-M0|1ZYKYoC%Qx66Fzx2?wUIK_so9lNn14sI3=-i$a#FSn0r(SEyw!W!M7|H$EM~e8 zdougQI`JFB6K}5!{_l0-|6+LJZR+2&I@irCIJd>$JWVV__xmiqZXwLRsT?)TZTA1% zwj=Fq;K%6fzt?h1h8!~Shvzvh|5~!XocA0RemrF5x}ls9yEW8yg&z+Yezdp8k9Y2$ zQfO~RSno)9@0qO0d(W}3ZYvj1t(i)_A2GB;r?Qnx`Ohx&Pq7H+Qa`}Uf|!`_(@8W0 zb8$`&f*MYQttf^8ws{~gBtg|Ae+fW{YT`=vY}!ZBUCGYbEimw;Bgv7Z_iia4WW_M> zN@i3^uMcnReV2WsIx7Dc_|(LJc^q`~()oscT4%|EW2Y+<(YP4r1C|f2x*wVA3o-5Q z9b~Y_IrCCb35!-HsQ9DWCZrg8s-y}%QK~J*da9&pXxW0w(L9xdcnpPo0TQdh)@QAh zDVdhjw06a9kWcbdJ80+zM#)T7B`y}##w9SXE^t-apKsVVnBT{)Na7(29>l9`u?fwC zTdQobiOVjt9Ld&I zT|hEsJLiuJBiZKSFlf8OSlBo~$%TS+_Nq|@mQuV42akTUCyML|h;$%7#3Re%He-Ng zruQDl8=;f$gmEONJ0`vLW|@VJhI`VLK5JNcK2@)^ex8@llVVHhY@{GPRyBU zx8{5AvZlfe&dioyUJk{@rwUT%e2d=}$MHybG-g7#KB)wcgs1By{92u$;Q0f|N9zRe zpM;;O6Ohy-e5g*~?Z@JqQ0$02dg}rAnv&Da>(F0|I~6q8_bx=Uy|y*1B8b_;9@vFt zGD?0f+`1^1pd&QomMA8;e(fPD;rF;fdMy()MX%)x2G~9r^%%6K@J~ArD=#0nJcCY6 zX()<$xt@8S24OosRvLBYD>CPbL?rfSRJwd9lP)&MBu7C&f|M{Q;9||SWy{D=hcmuwb4KcW zq>;_o>&Z>oG!t+}Hy1p=8$0jH2Co>&RTX!y8cjTQLb4^?7o$nSY1U%C5FfjRB zhX+OV%ndqZyZ6|LTym+y86{%z;?6Ql`J;&r+&RYPIUjbcP+HBg>ogf5J}Grti9nN0>8;;P`wGGmQBDw%qC?dzg)1Zj_OQ(b?^qIe>vLOeP zQjFj5wfCLkA?!n7UwFNzMm}|s`AYH!B5WObmWt?qCz82$5g%C+4yj;DK1&Byvggym zyq!mp9eI~}NURvLFuFtp!^pmx5L3EQo>K|%^`R>r2t|ktrLV+v6C9SG%^`B)KQB4jR*dOO}?lfByk@1}k_)dwXS_6t%YwYLnXxNWr zaBj}Nc&`hBBf7P44KO@KD}uwR%urhW3rj!6JVe0iU+A@1W)0Ri%h?NH?-TBD&PUbP zgrOKLeJFwrk|Pu5`S5(mCQSrZ%d1vRSE*6U;I4FI7j?S9UFnAJb-KY_=?%C;c)(p7 zavfR2NGhNkRPP9U%+QZod*3Yx9a($$Pd=Tm9nQ~wJ_t;_r?=62Nba?6tDJ7mOFJNN zBP!VtI0h}-45+I<10t34$opg+HV!zgr9!*eRvE$Th_draAHnFv ze2feebQM3JE~a=KVTq=>Tw&Zia8B@yg*Jelsyeaj&W-nXNtK+eDV3hC4~|pH}yM;i;9~3Td6g#{sL*&P_Sz~ z{6JPg@rLkB4KR(4{Y-BsAjCIkt4Gpj3hi=Ik~~J+&m>#Mhv(;#&7&y;o90nk#hEPn zJ${f)Xb-m8;rS(Eb_v9E*I>eZBBPcaj1TbA37($kC?s!840wXXmry1u4ombZSQGfJw2m3@mSHvs%8bd(iJOPg<%Fj8jLK0$4^x^(O>~VzWOh`uuC~->?`54{Uj1P}yWawiu z3iGT&VIBv#+}Af7tV41?$*<3@FIa4@cw7^5OP(hwx}VZRx+N7Kz== z-XiZz%B1|XoI$;hX|W84??idJLc0)-<=7~~5IZu2TvQnE0PJJh0?C9g9s6PtGna%G$IXIWNlvS)u7$b9a2$Lj>QVAtyeRNIsB%`Dibn5K;jSg>#kkAkv^K!q4HTUvzK3|YI&ctS?m zO9ZP`WO~K+U=2$q`jI5Lv=m5n|NYXR6mDCP8KpnX`}u0I{jc{=Oc2IC%YQ9gra?-c z$(wFcHrW& zEfBVOEkw_FJ>nPKAJNiM*)>jlgOIiUF8@bj-`1tAs|tmNg88h`uvTw2zj$;fN{7( z=?zH6^a!$b0SuA;0<1v>`FU9xqIv5>Gvb33+VHQv$JAN8!hSTV=dCmnv!l*qs1iaU z$E~6!DB3$E&~0&=o*nS-u~XR2a75ECj{n&$2|N0alM}Sgy6o$$ z%i#=(UbRX;uYI@0yD0E0Y@U?j`Lrb_jST9d7T1O_e0a!SgSvi_LqfopWs4v{hm%a z_=w+U(*7R!E>F5QPEf%Ym9*c#T z&#H6rj0a*a%*fSroAj5eCj_;_(y!CK7T#bZ%D_P|*y)GUEfkB=uPL@5mb6&wySetY zuUk}{(?%oOV4cgvU(vO20-ckE6E`YTtP*o;cVP?sk%h7ClBt&Ipt@DMSREJ@TSZmr zPt%{!fwMf$dS5=pqaChb7NF~FjEz(apEIwz?fMIK7N)KpHr=7z&qCl?}n`Ay66<~|1^o4-+_6_Yg z1N_Y-)MT7YLrLh%8A7O;3*wUluu5X05C=NbACkJxF%ll{@=SAF4aoC`AP zsPM{%Q-EbAqJpi5o%WvNp(@ABrW~r_KCfU7=l)0qh?TP8Kw=DITu(l!{b^?hfG4eD zmtgCPu>nD<7@M54IxeD0la$CWSEGa=5}lGi71=3)*0i2vvm;nZ30oK51HKDu6atUx z9WOgcs~tPGkPh$|j!By*QZ{5X zwyEyf@~kvM1-IGCst5(-UivEI=o~ljjC2!_WJ8qfysrG+<8Z%npK4%$-|wnpgsmy6 z5qc56k@*d!S2#cHs{Z_-O(#ZSt)4opowAx}zZJNdw9N5+^CA`B%wJ|+3*D23%OaCP zWeaH0Et_rSvJi(sNlxUlU=J;#c~*MJY}nK`E6su<+(a*aM3^#GvwV`OvU2Spy2)3PfjgeZTO8o>jo~@fvMbYJQ z(ir&W{b&_c>k8kd9MLT8@=+GUUGB9l*;WbLx7`8jf{gm}eSU^Pof$R~a-%+)F zk`s#6BL&_2$jBjfCiH1bGaM{b%_y14ZI_=S*_2+StLFw0+Kn5#>5^k$FYqZ(ps?Z& zBn~`*Vmldi)i2%9O<&ZTqqfdw@a*^0L4l7|Srer_fogQ=oM;}?4{fv-0ZJ<;=m%^# zc1W!Y2$nAQopsc4vPwsDiQS8xE1v;@BVa-$3n8H@y%-W~XRD8C2ev0zp#h!4vHh@~ zQ6q6gSlac68I&4Bx-ic?(cj?JX23_e6_!W{AzNW8kmaoJKC)z+5h|!PKufmyQ*xyT z+05T|80E^K`4rb|IW%dB4(Vu&CM#4fF%m$~$VhibGm;HFsj@L1*^Hyvq{_vP)mXu> zhLFOC*~AGULZMSE#vrL?FoJn}0(Hmp8$<(FGSO_Lz0hvn3~Rv}-Y?a6eoM}c2H5UXjh z%Ywj`3Vx5%fPeCacZWA`e7V^37@_+{Sz>gsQ#)6%twROZ0hNvv6vzrTHUYA>v~ge1 zh&+cx<2k-g#;ocTcX$qqblRe&;iygAx^ZOAQ>6LQwFB90eNH@wc*O5)T{xU#NME#@ ziZtkJNz1^k#=5YEs8m}Q))AU<{H&G$gecfFD2g{uUTKGuSA+mwh~>|ZYTi3&?{O|P zKRy=$d_EUbJ{O&Bq`7!-kme$XAkFPaI;1(!GC$Z{Adg9#&tX~Ktz@~b(jJ!OT)^pV zgPlzN2@Cui!UAv~KyO9?$Rp0h2!HlZ48SxJ$ zvCr^9Hx>-+_;&wLNYI`2ZkQVfxgj_Vb|@pxkE6UhwhhF{`}+~R4II^^@9?uMyN&`g zg;hW6UZHleKOiT#YRCz)8gf$iDdFQeXa`7nrL{CXC*}ichAe>qg`E@#L@3hJo5uzk zfjQC}%CR_ob+MA6&~syPOH^T8y|F zaJM<&E)mTmTsd&`nQ`1azoq++DNLs6>K3*BWJnl|p@X+~lW0mwmVx~E>@PWQq6u2hNRMotY4 zWv!9m>L!|++e^krT{R`mB!U;Do8I55ZCa9|Y@u2~=4~lr0YwnaawH9lW*96q(L*gr zd2FDExXT52DgpMgkkV0}DgkoF2uVsr^3wxA*)u6=~T=h_kxsIs%wO2$b=WGFCQ_bf4!P3v$~M2HpNRpo!9ab z!l*(G4`}B;h6d%+AhKta^3w}aevqn>@>#WU#K+hZKWDMS-(A-2^EYTU&W2?IT+%c8 z%c6!Tbe5%b><)?szpiMUvY|Esyr)=Jv^l;O+jh<0AR1ue08^HW)DD|#7bTa~A1dKv zqT}-VgOL$z)lL9aqGPPSLq(NH0W7ou zp}I&BG_=1VMw>Ghn35}2rt&x}_GplQ4-&x1@@(wY4dQdHT|n?pSo6h7@G2 zBx%^{8?-bPn+&2VKk6U}IUbU#QFeQyf)=g>$Ja*Erl3tn1g+ZGLeSpEtiqy>8op@? zVkr1@C0~_F=@<$Q#XSmdHB5a(!bTDnpo^QPwDB2lcd!zRi#Id2B5}o5pRhN+3O<&9cQAV?QE0BeQ@&Q&jJRe*M#-;$q z`qogp;y*D`u-S(ZBQ;!HMO{m>Nt?mTLq=*ea>4bWM{Pm@vCN=<&24sZn3|n$j$!vr z-Hdrl!+B~e!@1F?m!S8hWAr{KbhEFG;SEI#veE#ZLnFgcuS)IM8H<}kRasflqEBLr zJ{G4MfEnXdN2p38v^dpNi#{xF%nHakL@TZx7LzU@%C(7Rh}=0=mg^8Xtuxmla%-%1)**5y*ys*0&v6#4 zexJ)O6eK6r`9l9}&AJsgA%|63ZfQac3DlZafc;qv8FD+bcp zQo5>W2GTuYk)?gYG|CNsR3P0m{-{8@(^fO~fi|!9nY&MI-&!qjPKQAIM{qJS;b_t zA@6V;-5DZ~pU_erJn(V-QaD7??KfIEnEX(@;>a#+0;_u-LpH zFPdruI0Sm`Fzh)z1g#i+$0#YN6e}{A_dCU(jaGaS}$%0Z(BEx-D)ROXe}+_og4? zp3-HF?HaWk&frnMuF(V|5*gI40H3e4*tmF`mC`8^2YN{5LxkbM{cf($|8i1u(o@x7}2B(Ddgr@qc$FQGtwpT!qI^AZw^iG2==)w)`4Ck@m@2RBMzcU6C_N=mab8c_8vtO_S z&l{C^JmFq)Qq532VNcoXwl&vDefH0K%dd}pq~&piCk-QPrq!(Bg4XeunKGfQdZ*WN zQt^a4%SYZK^);Lmp?JccmT6L36D!6ru{>n`20tgm zB+^KPOr(-s9_NI--6giX+i_lc53<^$)sp%S+{ZI7XJ;hAIy46L;gmnxaGuBrGp*=9 zH0OS2FMMhjsmSrc(sU zSWp{?_Y_OT9-!UyN?E73nIxxtSa(JFhE<@g2iY29+GA8Nl*i)1Ue!&+3yK2L&7DNI zYJS0zO^xrHEoYl~k}-Mq&N^V3s6arfUUUQL>IY>IE~Gn1 zBd&rZigsuvf`%flB&{!A_6X_J5Py+Pjfg9kK4;rPB$=MfHQTec7Cp-sHKs31zSoX< zdLP!%eaDQkyY!6cI+kP(CPp%g!Ym@(o0BZip3IyPi>y-EiPGM060odUJTz0Y_!Cx1 z6-9m`Q%_XvVO2F)zBYLVX{{L24N2|eWRJ6&^>;(;8k z|Mwlynu!IBV(u)PxLYLcvWpc2IqVGS0NzgbcgcKnxqu#Cv46DD*hlqc&HFW@=eG#w zV4!wQwW7n>@ zJg}Eh%r5%guUPZ_9&7FsU3DSK0^v5k5J!aJVDl%~4e@Zxud#DzRcG2cJfaxbTkO;7 zC?vR7Vqjk-20&0QOgqzdaRAl<@#-$OGwmwc9Fn33P_i`CCMDCnohfqRUUI;o%T456 z1hYq++kt@+|AE{4Y&KQB?YOqp`vO=N*fvutwrte&f@9kr__OiRzjl24o8%SU5ZU@% zjh>O&{xM2|Q2sd;mhC7!Y4y?XOj3ngxFv)9hG`SbA>y;(ZtjOIKED>$QCdlaSCY;Z z0~ShLIaQcIE{|~>h1175?}F)_c4Q;n`izgE=1Ksd=1Tb4d8@e6*)(#cPphg;T z_;4i+`;5a3ygitF(m?Tr=SFOF+02bte{OP))7~%J>hf#!>*BeQ_PQ8vfqM?u`Lx$L zBmO-(~#DL^SS0v2NT@-Fy`_ksc^*gbgM()V#Ii@3Bgrm2rv59x<%VsH*5$SHytvBVWSHbwc|(T&1O)1@Pv27 z)Xw+P5!8#&M76O_ww=rZoq^l)TUFPFD_QeOa%VPg8Dch8qR~9EWuaDm8upW^Jkn%U zi~J!{ab%NnhrQ0i-B~R1*w9ks5iyqub{P=Hs+P(zWL?FoqPDO-hFfVu6PU&d!v&+` zKD;@zbI{FvnD2}@j*3TIfCEOdeqk$_SqQ*E76O}bA_eRX z76Lj3l6;|Ne=VPdQw?k3^Kl=|8#zNr z%euXdbWhu3M)vto)AE60=Ygbo%lS9(NtJKo zQz|dNue|&Xx>aF@Imqvw%QAXE8LR>!b&yf9!DtoKiewZ=i;_K;KgP8%RiQspd>Bg@ z+Z96GjSQztl3O*w(?x|?2DMcK(}5Gpr(an$wu!c3)u`5CP<&%|f>AN9%gta4LmN|d z>N|2@<}LJ#BWeHg+Qx`O8sl^mq}-*uD5lp`wrd!fZmygWpkpeE-aG0TcHg;l9|wA4 zO+vvJr8Jnz!6{Rby)>1ER~Z3xoSS}w5rE8>L~K^eya-S`Uz}YT4G(F}XSZ|>?k@HQ zJ}a-F8HVnrsrhWf7L2Yz8|Zcn)WpL^%@!gjE}au!Z^NZ3au}@?~Lukdpw{h`qBo=oBVAw?hVvyKe8Cl;V=@OpUdTM zYwn2lX9|59Ty1QI{uHl`&Cs9VwXqr6Nx-)=)720rqqg;hG4G0-q4my4Y%?@_QEfCz zV>DveCx%Nu&-|ngg7Z9v&Cs9aF>Ho@jz>GdCNH1mF>Hq3;E^3-v3)`=d^2=;mJi75 zcGv`cX6RJ_VIzBf0w$wP(Chjobmg3W*#!NxenaWgJeMbNTkMHTXXOdr;(j6AZgOc< z-`03rj&Ew`6z#mAI($)$rA3~B1AotXr&_DMXH41HS;Rd}4o#LhdLkf(H{qN4c@pe| zURT6ubkDn@3Y9**Yx>hR${=OnHD_}}c8PXityBb%qGoOFqrdh@iqkWUZ0kT*tM$dnw~KK)ScyPp;LH@XK>oRqUV zvzTLMQx1K9HhjO}{%MeSoa=p@7TGr461SlONqwb&m(ityO6fGO6FMjo{61IDaCS?s zX-=5N1t&Gri+&902n1b!yEK8IELK~F0kzNa3x14*QK}M|VlP^= zD{}(bObd@a{7LyE`!c1KRv!;DZ8PtbB&2z^acRBHv5%uM(*ZdnN;Q`Z)<@@CIAZ6% zFqxUVXUFavwi8F}n$Ca7`-ZnbF-PPY)xp{|=oo-B%s*+8L+H*6r}2#DYN9;*(#Cub zT#;F7?i}{@`haCjsmtks^M7Xo+Btky3_Bod_(rNBD5;H|!>T@R9bTJQy#mg=mV~Xt z!n;j@6^@Ld_6D||v*jo?IgF}W**XiywAJA+rJO48t;5f}6&i_KhacTTI8M$1|7i@z zIl=bfR_Ku8?rd|Ag|WxYIl~s!h29Dx{iZyi#x6tG>Xq(2Mt9O9aboO1)RXNnekB_> z*l2tm!3+Fc)z>O3wwd4Ij8di^`B3{a{$jxB^F`-GcHkm~#|uhu#1KQk84l!x;_K7# z!_l0Q_?;yzA!6}7CYO8J6oK;_-dyzpIt_vaXxFr{B@3aNYw-nyw zDdlIsOALrTiM?OFbj{X$xb&J#@I))aL*O3Net_B!b3n7Ui&-|6Qey{cqxZ|PGta>)+O`>tTwy2Z z8FdLD*ziz1wi(|4Ys14m_2PyXLJ7j~KKNpWXL~My!q&sf6>MtQFe9)-ONIv<8YOf8 zv><+V)8vs-zUw`jJZy~@H@a}N6V(eh9)2;SV}alTlb5o0f;@)YA_1O5Q1wL&@O?JG zg%>-(aQDnh86ay77Z_l!?G)tk;BA{KXdXl#*hM`g*cTn+D#bvkpPx+!%Y8-^^|xd7vBBGgTL?{^_CWAxK<++B-a1q&zmIP*F8At`jov$2M&y zMKv;ZMph#mZW^8>CiQDVEg#-o-~glTO1*6~CG5VGK-9UNfS|n@1bAJok1-^>W!GFd zze30FdN+K0UDNF0S@@(!^5xBZc0{ju8%Fm<<+CY%UQ9x~760L2e0}E2567Kw3h~Hs zCrq@3B@^a8Zuj3s#>t|mT;yS{^cJqqz`lmJ|5*%+(I95I2*arTk;9BO(fea{+&bQ z=M5suUz8BR-4_|+HaK!N;0Pyz)Hs6JyGR^4JBlO!!65RoFGh$s8`9N?Bb->C(F#-; zw_A`?15{xnFysWNMmGZc*dduBGTb0{hRCT~z7USAGU~gusGB$?sdol|_`+R{5+xM_u znP5tBNu!1L+|Zq8VtM;xTc;dMd$b>E(=pn8T0z-axdHgR7LRuSc@qhg+#tq_X!mI? zka-4=rruO!Fw?U_G7Qxu1%ds+(QcvCP~aIAAk>}V=}1bH2!jkgX95J%S?}XDh?B6kP4m~7M;<@f!6b&X-`Jfa zM;yi>W%r08@?2$|T`^!E8g%M<6v=)=muu)1zdp^8YQ(SGxG=C;sN{oSsK>b+2>3t1 ztcCg=zEHm-EYx#0TL@H~W{^P35(w@iVqGbmhY>r6QQPQ4VSQLoANu`imGt_<)&)xA zNYjGjA`6aTViB{A8a!Nmr)mhn>a0#S+7lXd;x(R}!j*BG9iTsLb7*rjt=ZM=F}u@R zncpFOBxA4a4jvo2h*+^rF!;?~1X+K^r$T9mP-Y7g!?f_XDBCq0@ts9DCzM(s(8*jY^`E{}~vH_?<)k*<^pum~RujA>)O_W}_ zb}ELlA+~{$bDm%Mo1fFW0BV%k^g?Qutn>E03R=#}&qa1o4OHGR*c>Nza=Q|C2G#4A zF1iy^(|01{p5Mhfei@F1?`d32cJ^h-FH_;cFslYGW_4PJDP$HI7^XD~ z?BkrrTO=AtBPvjFtTpXo-|$uu@268ENk#q9XRO08KVHX~P^0Q2^6%2o@YE(6#^9@I z7*#eRikd#{-GHedObGPbj*KUbjIok3xfYt0gvdUG#K9!S_30Xqy45c%B@@%?i1(r> z*-P8p{gQd87{!KzWs&GHBchMS$eJ5Hmerf9h*(qFlp$M_acW&1PsSoe1*MJ9F+pk8 zhg04sEgGqkPq<{B;gJK5Yvz>0oN`4}OvCd`R@&MI@d`m+%{-}<*d0$k)Sr-(D$_w7 zk&Q)se>`BP<7yRUHjM8IFKggC;bp4rB&h&neFWdD@G_uFc-h|>zALz_A#zSM@SWhY zi^O*Ymo+L`^GXcg-x5O0{(<59ahtme-;eu<7KApU;wqBt#_p6HBVRClR~Xp{zQ4)4 zaKFi|ON#9#Lls%p5Za0>!yBzZ$9OVLWzE$UNY=peyA8?DkqDCC5qY|bAGMm0fd`XY zFCl*0cIqLW4DzoztAfHBsClz>!shUsx5aMl8kyD}5ZK3X6&?jb(^fRJj|o6t>;m@)l5b6*T;umRqZLN zeGWBE&UDTk&x+}5lc#}V!Fii(TPH;do-S(O$sx6FmC!Se-u)G~4mBN8gDneQ%MdnU z)8y(cMH$vmy6M77ui`E|zm4u$Q~IsfbQ6=0m7ARMCy&gKys0S-Kw97-I zU8Q?Jd8qqoO%SAFYP5$Gm|A^YcDP20(vF(@Y`wUzj<_wZ@0-+W7GzNiV)ygo+}$*! zQ`3*I4IM=x?r+>imoCqnH<&gBF#Op%E-SWRhCs?(rDni9Z(eP1_~9%b8otRrCPkGT z4^=smBE^^1u-Zgq>x|5oI5X=2HZ6xlb#;Ogg$b2o3OKSRlWtIgbs`Fis{W@o#$F4_Gl~f>WZ=zjk zQ(AV@Asta`ofb$;AY$|J`p5m;%l+ea+o$^Dhbqew6_NufV*#Npp=g5!yOdyp1_*X+ zi#9X|i5f6UN#{z$poNqeTZ9s$1_|VTe`CzK9{ZeAj}Z98rpVcA%{8B6j@KM>%rU!R z2dL;0Eod#4eog2cYv;rMS5S&=WT_B{nc44-Zz3jm)HWS z5<|vJJ-|NEV|f?f^Nq_uk_tRuOjD(L(^3www0CmH9K6e#jsq9%ouul9t>Hv zi+4p*4~%Mx+$k-FOGPlq$ZsV#;pll2Lm#s}l7|?I3Ixl)7ha2^)VS8>qoP9hb&Nf% z6N4X**XVvcr(Vm}UG(GGlBPESmUQ$b@j1f0a1Ftt00jU>Pbh71xGm%X-1+FsmXBSG z#bH(UD|J~APPP4aJYOg|pDexM)L*>i3&(%zCgrXxEtcoKop-4bb3 zy-J5;;fjjmmsDm4%DaAztkN;c+($lqyS8GaiV4oBekB5{@(FXJmbs-S2iffgq*qH$zNW-MH8`f)z^oyf5&2Ox~jonnO$ZC zC>C`EPZ^#WHXxp^;Hj7zh7!29^?#OFbV5-XdaJ4f#)$zkfwhPG`E^mb6ody>vCyMVmdLvGBEZ|gCGHX3f(24kW0#y z*>m-zTh_8A_Cd7#J1J~6<)Qp}hwUYnTiE=3gRRPq?CJSD?X;(>cq;7axjbzbyd&07 z=W0>|`{263rWbG*37Cvy5RK{HO2VPHS(j+DwA+m$pm$b{s&hMSlDVbav2_a2H7rjV zx%_p$UO%!u?SD=*4gPgzEIuthv<}_ay5dX(_s9kX;e%&xaU)7KqtTgK+=x=oO5*o# z(A8%)iEjyX4^u5lwpFiH@@*tqEh(YnGlNM_=el^> z&Yej7Z1rfigtd*=A90Tdu3}9}#XgZPt3n*qp#!S@J>+zH;)SiGNS z(jSFkH%!S^?YoypZ_%2Vcjs)THw5&H28De41Y>|0+|K1mmp06&>k1B?>Y0Vt&g?St zRod;$(aTX}Z8KH^6RQfc08+u=W^>6Tc;%6}y;$q13}jQS*-eM#C3i5h-sW+7CKS4l zYbV-9BYBMD>Fl5;u)HdZQPoA??rv{B_0^RtwoM_CTq!hWd%0p-l}0C$s*2)Np1NyQ zDgny1RImr$$=m3|5(P3Aqnu7D;f<1yD{obDMJjJB`JObbu%M0AfI=r{*2QC@GGYl4 z9&?sYc-#}+$;wRF4C(L&UhES%X3aYfe?DyEuCN7 zliW0J#86>N4_&@a>gi@I9~oEu98)*T=TS^&J07;Td*4J_v|*h+#|(W~Qed{>%WL>C z;Yk3WFxGYDMEEB0dE_W9c>j(G+*g8yEGmE2QZ+c&`$zoVqr`|(oB0A6GLL_&Vi%Xm z@C#X*#Yw}ym3gBAxq&?`SJG<%ccyug1!iS*1B8YKRDS0^zU{v{!CQ>C-obKJZ*y$< zr+A8Fd(_lmf)qj<(`E{6ZuAdo);^5ULB;sAae~^SUTI5%jSeqNODi2~xzUsk1Y1+F zZ5raRNn02e}a#if4WtpyZ9ycA^Z;ArcN3yp_Z}4#dz`t*g zB=leQC_cVbE4zy|zQV>QGKy9yV1A%A&jI9gLQpXCf*AADt%d$u8qI7{h@u`8gE+1% zj*Io&y5nNTn}f7FAFJzEK$Rgyy979+=3U#(&rC;0(9q%fOzDn~yt= zb0)KG(hPfm2~lapmbWt5o|6f+6oN=ueL3(NebM?3vt!B`Di7impu3X_F#&XbRj!+o z|9k}yNWzs@Dln}@mggtlATT-}7)I z(8#6pB`ipa7kNacKEvJenEED*hBOzqXy{2+<(>TU=_-%0u$wo;9Dm!QOkEdCu&<*} z2{jo>C0z22#E-^m;!R@1!VH+QlgDGSe6Ho$@T(c^z5nD!`!fxFWhJfdmlir{Zn<$r zb88nJF}GqJyzDd+8}N4l-1W)smZ#$IyY*yqB3$M)6fw=OR4bo)J;|1~+tM5fx~ZCx#scnWv&|468BU3pF)Ymf z59DcQEt@kYVjG5&JbIhggsdki_XD^*F67W3;@;5I1E73y zuV=k7vDG(>LA(pG3UgCEdNE$+Yl%6nOK5dIr}=z7v2H;AH0tDE-gG@zFs85z^HhbO}0*a2Q|ie50op>k;xR**59`xD%)5=PF{}a`Gh3@QEf{qbQkd-ULbkbyrf@%+bAF$(RWd2h&jy@ESDM6Kjmza$AXx9SiCE zv5e%8Z8@j~?mCKXu5XZp2fbP|LLsu7TpG;3j$9nN-val8FYe5)ckXx1ye;yj**KcvnCwrmJ&=@>*F_pRU_ep=F37eM zr$(dLX`p9e&LJ>?z5HViTQ$dSydj)NF)v@bP$>IllpMXrS@+KD8lZ>>kaF*1d4B}E zz6J3RdP+B#gUhq)T{fA=mAQ_T8s<^{oJWLvTvftibaWmccY|$y@}pBE+slfZ(`AvSb$BzNy|PwiBZN` zH6^%WC#q9~j1&>?5~mY6TeMQEpK8%Xa7{M>o4a%~_DNGP&?2&3=-#*{)+wk${L{ET zHcst_OH*$SPtD9o{zcNKr-G~Tc!Mj}#5VKnRZ|OJH7*r5h=*^>)>pS;i;-0dbrVB+ zaBx>rDN$(!9cf3rtWlz1QhaIfkxGd&HZteB)L=dXDqXP=F^tj8B3l7fuerZEL(vM9 zR$Ed}D7Hk2l~qYE2|<57iOnh?o7-W7Ez4Fj4wRObBMK4DRXWVCX7v(GqNTz)H=&yu z01~mGv)Fr`GaH}ZfenUG8>nN9jP46*sNUCj$DS)=h3%S%JsB@#D^0Ji)SL}QX zX#M#=OvAkno${!5pUV)S7YPK?U!A1<$kUiOu2x0vRdl;4?69t)D}_E6S zCPO2M_~;l%Ha=XZ8Gkf>8`97o#78Ny23M^X*UgPDV`YL`%G-WTW57*OlY@G$TRPM{ z*%^iLh_3ozXdsK&G(8!kw#w3WWz?Wv8UMDryvjDw{PHuDr`*!!DfW71o??S#h;gb6 zE>lw_aK?P+G*vAI^S5bI(}5_V{L$rw`LyHz%aTqfw{=Ha{))LBjy!U-EJXuFh4oC!k69|=(`8&XU9ZzBClG-} zINVysuA^Q6jP*o_$GfO#_zj835J5MejQ(De0{$fBWA273(IvJs{C61aEEmfO40I$J z?P>Q($(=Dgh}}jruxURMB)0W3KV~mkQ{&<=wq^xGK&3zVrmpVK?BCSCv9*H~SbcML z;xpsq63{2}eMLB_kzrac^B?b7(bzMv&xl-$zVQ5v)DuU27azV z8DX!hyF8wyRHw{jAD&fK?W=W0KkGXM+IZt;O=aVvCM(RDACog8A`6=)CnN>EI9+Y%rkNX~TfWD+WYN@~P zsl~9om}{)Bo40w9xuqbSa|cakGQ0e({GC~PGJUC_DiAQ_`pYK1d@l{6;VoN~_K?S- z42II1t2|jNPu{3!OO+>Y<>@r?Y_0MTfIr+Krv7vrc`m5(Fi(vSR2smD)>^pB+LgMhh)hCmi50S7vB%J)tn|T}f+v!VhKBSL> z!^-{mqCRcc^Amk5w3Fwr z=-*}=-!yajHVof}jc=MUeVYs4<{IBLQ~EX^zRfqjX@>M|A$(hCeACS6+hX{(*!ULa z1kwXJZ9cX)=3}w!5taIxH5;SGY>XNs3Di_>3ZvZA_!ehlbNIHo@h#5Amhf#$<6E4K zt>N3&#J4a zYH$?AAL@ijdV^|Ke!H$jV1r4o7(i^JM69Ohi0w!KWWyy6nJ*>dP0}B}OI8MH6EcPv z|D7vexjY#Za~d_$nw@(k>tDX7P=KFFr&zd_Nt1X-P7mQ;li6Z;t+q&j+HA?j{Ptp2 zqI|oOd;Ihz(fKKl-lon^OY}pQ8ir)GNRBUX4TGe0OAeTXki@RPL^)0X;pOoHlM?c{ z9QV>ujxW%=W*(R0o+rxjg%Ua5sK@2F=ZSKB0cE(E$K|-^iE?}a>E6uaa@_MoIlch& zEDw_=iCvE>%JBusaSW~tZMlJsPjdVj#;JfjVXQR&i^88-NJiJDZzm8H+bB28_gf@$ zM|0YRPvxl=#z%$kp(bfnYT#qd)IxVNJ92$A5)lk%flY|TF}HSO6xV;(?HDggIo=!Z z?{UmNx4+U=eRzwE&Cq|7bln%tOO<8$GMrHx!%| z-M}HP#e6=L0?VaX)K7g*!tB1G5(^)Ol^*oH^Q5xW=fYst2IVnh8XpPc&7}Bl*9u?@ z$RuK@3%fuN2+*zZ8RfH6hu7^gL6^YhFJ_IY&rTTr*~LPa&z%=T&id>$;h$YH^!eO< zF;;nfc5?8~E*xg~+f`4}Tpc#Tm=qej!a6<45E+nL;zY>KOte*vLT8o~y zkls*LWeN7}2~7T+HP-JSx5atyTq_iZD}rd6QE+ZJzbGsxwa<#H=-e>By~0_avB#Wxl3N9?ERlpiHOitSO`QqI$n+gEHL`SA-S@YB}R& z7B?u6oKnB*%{03$EWxrjf%6EU0e^jZbnyH8p82%zZ;@5#ZaV;~F6nW0^UxsAM zG#9u)MYApuQ#E`#W-~LS}3tAj=Z$;kBP*pP6CL0%Z%_m(if->;V73Q z`BV*ea8vzARt{+q`nXUmYF}=^{;lsid%iOH?j4~81bMTCQN02_^wx$7P!0U(x~X?G zQ;WHBmisN9Ol~lBoNH%7yPdnH7l#aJ!nONGr{wGS0EEYL){FtHG?*_&z!F6vd1%6&W zWGPY8!3?_r5+9RV7uC5+o4mIPW=4#n8AOTUnF9-d^i8*Td{sibWN4dx;pHpFO!IAi)Wys5IBv(*>d#LQ>dd&EO30|H zOJK?rl~!%*KRH{zP;^2jO6)%DC7?m&tdlQSz9QsU^V#NiE(ea8rIj0R9&=aWCRqV#Q>(h0i%o~_G<#lfo0q_D$Ev`X$i9Ny z{btYA!>=&s4)^c-|77I@W6r_9PcSim4ed;5FQc&iV+)l8CfPQm8E%CJVaJGHjwx7t zCSCBtPLj5pwof+6F`o)|YteBz7nN+LGB*8ZwA*CS%{TcIHulXbXWJp(l(y5t7KvGo zX`}L!AO39CI?528Lu7uI2Lq;M^K!v}yONC_(%>Vv(FVOd9rdo~&cvO&?9y{KAjR`j z%DZz{Z}hw3MH8q^yS8BYiayJ`;(w}E7y%okdi}U~gDS*xtVm?+#tB_N9e!*?86&@p z+7z!~bi!F&!}Y2cmxy$qO?37bImD_8g6r-aZ`3m=?~w>Dc@>22vzI$$Wse60<^Urd zvU3dRYmVzuTuD+m&vc`r8`Pnq1xsPog@b^9erNF zpj(<}+gAV``i>5Qu0Lt7VEF&0S!m?dYUKOW#H-cj%ii^BHTZpKi|tmJ%QLiM0d*X| z8?78l>kVQZm&$$G=&M124dN=ZK%o6-u#-+F&BG!9LoT_vRohg6a}Dal&262t9b{jv zJR|ymgpJu@n9oBp><|AgPy16I&$N@3`GHAJ1Hl71)nZk0lP!aBA7uv}9<=e|EcUyhJfYBE^fuJoC=4wAXGOTT2H)N_#P*8$HXY`Dk$P7gGmbrwa zjsV5|7OO@3wMs*%+CbD(vV)sfCJBf4#AGIHGWV<=9OLBj7DdKsov5j#{E1-7IrQ_5 z)Qb4~^e@_nV)>)ZoWnP3+Mi?0qbw?CI8BO8Ok{Vg1lV;6iMgy<+LRIC*a_O12+(b? z3dBvw@1OKJW>s_q58IAoyi$D8?>G{`Gz*SNh@*;~npdkh28ag#5-#%JwL6rOHCQb# zXFAb-Lj70m#!er$(R?`Qc~H;j{r+6d6}TJc>g6?;;Gk0)m_#b3xU_QguO7*llF`qI zYBMmsy55VYWDIm+450)(uZ#%t@Y@>*a#QPcL&44}GhoM92)A}U^P;i4pbBRav}MZv zoDOU{aG^JOlllk?ejsZJ6<~xEiYHQdi-WSV0U1A@);^eET^OOwu0*KNKAF%09kH!j zdQ%-0Wz4xdq=?7oP0t?TLM;k;iSv`zK}Aw=RUHotCn25MrcOehxnwvA8A`TJLVh~U z8h5!dw2n`OhSmU{g-=9t5qj8?rVrV$00Flrs2mHSr(6XvUD z0@x~%UAX?#X@JC%!yKS;MDTQK@N^tJow6FFOcG^lkdLOVvsB%Bh|G=lof{*y!^((G zjnsaidqa~(9!Djqgb<565;91k5+z1xLn|V@dPKd(bGI=%h8;)5DTgerka|%p& zw>C3L~RbL*e;a2(dMB5`~TLAfS!Reo*tB0P+!}O`jVRH2fRE z3>MetKLmvT^CLy7uVPp!{L0Y6ez0`nCk zlFO4@-@zc*A7)-S14Y82Ist?r;Ry}XbMW?9e3L*}I!1#l919jn%E3+ODgDk)+nDDi z^*YP!hv@|O&7}flb}a$*qg^;uqd7+W7^ydDS7fg<={hwJ-H7a=qIzl&!2^*!n5XV^ z%3lyv6#j=a1;Ekebd_76k@gj&-K}wJu}3b*M<;$d4AF82r@(4t-eFzm=j$m1qVh6u z`sFYXkcFRG@&IzV3i1qeDBCz}(Bew6X|6_vbPAm`i;+hmc&q15`Fv){2O6lGj*GfA zsKBonl*ZiRSD))PnetP>LY=)aqHOVM22kM}WYuY4uAyJPB>z%z1<{PE7~P`z;fy-6 zK5%n%i*>j;;1xp`3^zgz&>dg)fN5=XF96fdP@K~yb&g{bgsA5oKKgS}4yQ6Ezep1Fu>^S_SNu!)Hn{FJd4M1G3+ z{zsiGZ*$$a&Xg+3G_jh|Y{{S%|22>oTn6o?#IXzwU2}5|4 z8Dj}B1*#eSq#=DbumxE>SRguzIL&-m8DJJQ(o??ThYd6mKh$zl&TU8rucN8!urzRr zlOTj2SNsq$A%2)Q`C;y?BQKBsQb04Qlgn!f zyuBE>LOCcOa=cNn9r))XdW#CBHzU4p&1l7`b|t1QA-GJNOSdK9^hkd^mjtSosC{`| zx6s=_zR2 zrqVp<`_&xw>pATE9J03(=diCi{Or^mB7Dpyfq8-+F)w=KNkUl@M&E)BwxR1cm1mUe zvri3~;<{zME>;Uw>tZ`(&zVbBYd9;}(us&SSOrr70iJn;{Q9pWAs@ZV1VA9<+x1ov z@|jt{@jII(SM^qvd?r!+uXJmJi%wC8`8Ljlkj_U(S!T2B+nJ3pi1IT~dfmO@WRiI4<6*4m90T4 zfpCorgy%DcfJayHh#CIADLgu3(SS&y=-sWNO+@NC0}4k>#DY+Y^y34GqQegCG_ zs=21Cl6od2hwu2_P9IHpvDSu9>pVeQ+C}Mf{=W^>Mn2gR&ovcDq_*fm7H>2x1pO1h z6_}X@;30I7E$`ia>YIQyyN6DhID>(u5_i=XhSu)`8 z{s(q8m3V+(;!L>O9K>rz2XoKX+WP?=*HZl>zh?B1kv}CL=&+Do;4JC0lua4@u=koG zSlO+Rpr$4%h>FWqdXmeYJH+0QHQ<2`ov}azygb-}D`-1aNO+>7%XhfoI)6N~zUe!e zxnPtG>Zt41xI-!XLu5w@@a*)_F5Y~>yzYyB0O;fuWV8#TZaHKC?%dq=0G$szbY?5) z%tq+UnOB`b2V=ZoGWv-IWV%2`)zC~6Dk1A+-ZMKMO~HiTTeb5soI-%goX1j#a2Nyi z3P1zV`s_kC8_v!Qc(gBg$k^Sh5fm!Xgc6svnghT>F}#!WF?6<5p5&bVyhFyJ^742R zd2Vi70LuSkt^|fJHp*>7io{Xss;&8OK%HKEKhASZ#;)Z5q@Ky9tCK^#6{9P&6`N5q zkD9H0kGGbLH#6(HXl+h+-BSFen$(iZdK8&sE04!>d%S>0t~457SZo^0t4bG(Zq7lp zGylV%LlV&g{ONHu*iC&yT5ej=?OJKfb(>kn~#)IXfVl$vBIwxSzL zx!bgktL~t?$c`IJ{Cvt^u!F4Os2^X16^oJoPu(ahAU^v*`RpH794x)$`xdgS1BPyS z0cT)0V*-j(S=IZG#+$)ZzpznPg5MwSZnVjkJ)$1oHZ}d6VoR~D*w&OLn!%}I%yTYx z3(G`nlD{jR<gc#9#=EFc@wNFx-NN*7U&V`x^J=7l@S^GDfg`DRe*dS=|Rg z)n}U;ro{SwTvKyVnZ9KH*>jhQ^1yATbX7dWri3mW=|I93K;^<>YjBLXP^+D-&git} z!Or2s8I4}+{6|BPZH)>v|N35ovW+9o;YCVuy3eEcI0T=mYH=asHt2g7OMU8;k1)iG z{87vr&*9l(bN!C3e0%-IFt^!TvE@qmJjGF_9?-9lf4;hom|-5zBbpz!5FhW(u^efJzK#!q}5$ij#d{Rkqn}X59=2LP0dEZ6F9^k zqirhRTF}zt_Ib|L8A(6!4Rp`}( zH@yra#izx=(b->3_PJ3S1s#*9dJ958uP~a6^$Vl9D16@BM8y^w*VD7LxFDdhFu1s& z8mgCd5?G079MRuU{C4xw5S!CAcNIAuMM2R0+cM=x)-1>f%$JMOJOYfO6-$_KBf6pC z)aJm$pp};ShGt}XkcP`Dj$v!RYgIfuPHd^Lf(*NHCuz7s}1GH&a%*p51R7hs*eeJCZZPf z$E^~NL?asHws4p9_o=GM=<4JN`mZ(H;~K|3WRLevX5(!xcbw7fO701*3&AwoyOQ@Z zTa*d{UpgDiTC$(;uH!8@`f{~hwr4#-?_zth;4xShEY?wuAHQUI%7M;p3cIryM0>nj zvQyqw_fPHLr5?S2lLI`zQ<#JJOQg$4xIbZ07fn5Y@tA}jjknRTg!=&DzRi4g%iG#@ z-sW`%b@Qzb-5}q$DW*={8&Se+E#HsnJPSa+9m3Y{Z5Iy5>QN@3lS~+^!bo*V8k{2@l zA0^iJgXk)vTL(&uwL}(?6c-oU18cchtYv$}TBv7E>ZY?8un53bEM~<5lv!{MD3LY} z+ZsdrX=*-a8&}P9?#U?3stwI_LW6u(xDOL`jj_2P-7Ep$_wogi4)jRTjH@us+I%dQRenKrW?K@pgT3^x85Ch;ZoOspC*#}kL&jsh}zQn zk2$KMiHHDx!BJJ%om3oPN*2wU(1}te2pv>D6FO6(>0%`xsfh#1LOkzEe%gqBS8~MJ z!Eh*K?TjUINGLh(&X#vg()!cH$iU)4FD>>xs?Q#6onX;8^vd~-wJ&v1# z9q0fiUrfidBFcSDekeYq8HFEis(E0s&Y~uxY~*}%*sSQeCBQ9+QK*z+p<3Q>g&%Lf z8JDrAy&G)7?MnWJZm6&~u_ZFSxnheky`HUTa8_gm*{c{cAe;UMb2ebkGee^|)@VwQJyV`Z$<#h)2xYh`loKio`(0QyT4vL%l@e4-uyOLwh4xTCMhv`(eO@rt*@1$|efh03rcMgsK+nhWIE5Up^wf*&&5K!#q=4o7I5IJS?4RPN?Ud9O7^u)wB-M4 zOtf1VcV(jOWb^Z#`877$PLiF)NJ|t#3|UFC^o5W7-p&8;dw=}CKTlqIK2}<-`_5pc zeXB9gLA`cc*Gdb~xxyj6A=shKPa54W1JZ*rfwfNY<#HjFgAHXj(^*ZHR2lS%A-nMEkI`kFEF&$bT5tS5n%P!?T>oOnih&kq`J>p( zWbAnyO9G_`wxGq*P}@qW_>CDcHWwH1+%jTdjjw94g-^=USe;xP2M1i} z?q}o`ObL6y%B+L;T6<4jkc`kQY*y)x?7Q(p{1uGHqO-|5`|P&&X1s~o*LonN7^b(# zzE*=<#BCC!iykg&c5Gq< zhvzULO&xKu7zCsd@1YQ-b>t8ucjL&2!#HfBo(Zs;E(5LD4z`s53xhL2 z@XIHRbC}DC?La6{53ooD7LEW>g}pmCkiJ`h_H2{L4IJ7hU-LmV7{Ns}Ad}-`lO!n` z&_@gwNJQe)Jb?po%HrDUh4WqdHc+>80mzzW72LxZz!p&|41iJ4M=QX%j0dbKq-M?k zMn&<`ky)-HRA+p}qQwQ7eb=F}OdOI}F{~k z6WY<&cjkf;k7tt|E)tXmu9`7-63oPK{JSyj>rn4q{2C8HlH$E|U)*ev=LM~`(1_! z+V{W(!@dBUbp{-Ib{CS4$uGO7d1Wgw&7>KIz~{%I zJvuHpM=uQEDlx9@3J0+Rm}z_%xqjT7)^@5hTNT<5vb(2)lrX`^3!R-J8x1H3eY_Y6 zcU;wnX_QeiV-Z)D4%3kp!h=Ng5~|d1;@VyqXb37LhXM>`&VR^v+K`1Tj-rgs(18}G zhHh~&!s!EgpwkDAHrPsdT2hzoJc*4WM#*nFw|C0Zon?1h#D~)6FrEmB_j>w9+d8oy zs^AbC=6L-K=Ul@fO|Htw&gLI!=d%~)5_kdb{ zXY4P^HA7^hGmsq)9V!S3u#w z$U1|;tpjmH_&Osw^{xuyPXRhe^Jbl)$9I2Kbz-41=!EV}Lr3V$Kh%y=&|qps z<2rIg>Y2lMRA*>(c5=#X=*%Tg#Zx6#vgI*EFHKLN>l|d#k;T-8desaE8Uti zuf6j)V-e8)w*hAcprQ$dy}13opk=vO{*qX8$zfe_nY)!Z`eK9cHcEWa96Lts61TQW zh^sbAeBMgTmOp8~=s{}ZFCo4;=a&q3zZ&d zl@L>ClsIZ7Hn-cjyIDe=ujAJc-e3+ogYb)NVgUP1iDOEZ`s)%aWnZfRT(%XqEnce zogC@thI<}UTk>0U#!8_lSfiF=YK!sF-bcj6Nwv-QSb{8#62O~fzK$`%Hc|Y&4r8gD zT^^Iu%Ik-ZF(V^nP!{dvnRe6kuWDv2{@yqRPCDn#8YA(@EMkMkc?Bp@iA_=|{rk)} zYiBh}{#;wG1Z2}}6={)u-ER{2@!ClujaRcjHD1X>LyYqnZ(fi08w}m7+IS%jv;U9? z$;iU7;H$rWXR5~auixn~mBathsmc9ZmMf8x>R)3c3l}sOFmv+@i=$1Ow`{eQ%*TGi zhPShvunys{N>;uvrd&h{7Wu4vTTHox6kKq#^0hH#2Prt1W#y;;d#LA9QZOlJ<@;mG zH!F@SQcVBE8D=Q%o=Z)PD>0d{j#} zQ(E54t;V7>74ti1mhwUOo&^<0Cd1{m2qIThLB-1(ck(^uX3lG} zLR*&6?nek3SZ=$H5UOd>J5auvC_|X>6bzIUnl#yES4R;9@Phit`S63f;If1<$EGZj zAu%Varn>5e|FcGwvs>h9mNtK6dEqjmBlP+I^#7VkIZj_RLVt4g2fY>3PLbnQ267Oe z$S$rV!QqoDY%pCnVA?H{+BMNP&N=!w3%SQhmK)~tT>bG7?tK9w7a+)80#>58F=E{L|<{1NcVa_Vx^?FHf&HtK7 z9S8wv7;IV-nQ?HJZ#{Fg6xuRELclqMIG7A7M(D*(Z!k6wKrp-!WN=ioxQqj8;|MCZ z6cBDrXh*P420;9>s$yP=-pS5{U8u-;ZNf3C8yLteq}VbCIdft?b7Dc=0|khGiD?VV zWibN^v2(`!b7hi9Xf@?#(6d6ZYcZ5-%wPByNs{OMfBJvxB!w(zf@qA!pa|*}NTG%e zAjf!XKo1|;k`6aEf;noerLdAvsQgD5C&e8N0N~`h(b$Z6)MChe#I_kR;S!xxxy23b zZ3fiD3s^f*1ie<2uNjQ+=FP7Ns_74r?8SsfHZxEkR#SsKv}hjisZQbBmXJCia?uG# zR9=N-CBH6L$zY5|{7TsN%4!>(lR+>%4|S4FjEK=?YD$raaa)J07hFZGB^-$ayVuVp z>Jk45MySaaC=|v)hx+1UGi9L}W*RK`eY0crvov0T1S2!&MQlP|B!=siB0i~Yru?2| z;dZI}X1LF*M~YrQzTQm?KwFUOR%yH^qzo z89Oo<8@vtfYe0^|2AY)*OEVe8F!D3ywP25Gongz4y%uoKZ=DvhlRVqRKG8`7`|!j! z?6W}Tv#QDX!b~|jh#;gU+Z8vmp{8EDre3?Ip4DWYE9xqWb722O6wmYi7}JCdE2jbY$~}b6 zCs37vABtSL=L0aRl_U4vbgf+xDmp`N7MT@|ISK{JmE&l2L`Wu+jl(AK$zO*7h+iQ~ zk(@I)2%#V2)uIYH!Ph@NNUGZD*Y%S9MXx12pdr7OBKS>N`TD1pn?p`8A#+y^VL zUa_-Jww3!4Ctw@T-$|Y6{;QK6_SQRCC0uL?b9KT+mazFC_ivV`Rb)GZ5@8mD5T@Gc zniE|23a0utMcJfmw*b|wqKzeM`%=KME)jq$-Jw3Gj#5175>8rCmnE~-=`kI&{#U*8 zuB{mjo6ys>&fsV#b70Cc>|fO!r=BZX_RJ ztU~Ne@_Pop`*E4Alw6=L&|B(M$W1f}9-9tDLM_H$_Qt(9D&Ix6((EF`gPQrJJ)vZ? z`e7j!_qJi^+PH)Y%40HrmE-bO{l>)(nc45OJyk0fb~z;nD8^S=vjD)rj?2;gux(kn zYiOVNq%EJq1t-|+1|cQhzok5<*W~e(mnCx=fGVn_DM5JPic981_)tzC_zV^;?w`2tF@11Oq{weik zG`M99#_MIpq>%1;*1bO9pmaQJrM;?jLbg-M%f!7{1@>4CDtNS%{0nZt8;m-`oePd5 z-MuA828b+Z#s~AMSX?3#dR&uOF(EujN>2$l zDSdhYdJi5A?3;DGygDg8714`L#?iN1BcNUH5L9)uHiSNw6OfjHf*ZP3PGOuxrYwx} z0L?2{h;XgW^@e+}cwK~n!ePO=w7O1_%RsJMUb=6rqgvha|AwW&=XwW<{(j(@mE3D& zx2N}&Mv;sn+%sXBUm+lBA&6RInQ6O~Iag-BZ`Q3ArxOaQN~E+VX8IqkzjAqD2LTuR z-QKk2NAGE(>FnC7l{uoy`>~$%?GQSISi`Q@gdK{f!K=4SK>@5`x1qXoFDGjclFKyX zb1!xNt=X)G#!NzfEgSnY14(Gj^yjZ-YmYTsv!F#^%ho>EY|Y#tzm~0irrDY?p08zV zUud@G+OFscswkwF%IV;3$Q~Gd%B6c?8`+ zbmt0sZz~is{1OMW^-FVhan5G2tfy?n!hveu8tX6IxJhWNzvfxO*b2H?NtMf%Fl#EA zX9;7xLM)eCZ;Gx?STzYq*+;@YB* zyav@~_jgG$94uIp0q@>=6Z?@b)0l-?TD^h9d9s=Id;wa^!yzwK)JC8R!dzol+3 z)P?OJ#)#iXlo*5c-Z#qGw7W6a8WH9sxRyI0HeP!Stppn7ztfdvuq5_W%!uzspWkZ0ua2RE2CwIo$|5l$&Zsr)&(sK{riTJ5=W-({;zT#Of z>a=pFFTMGYN`3QGsoY9&lV-azmIE}qG?_}~ZY>G5^3c*HQ!Q#~0?0 ztkfC+=`74T0D4wzUhnYw1zQxC8PXuCZyx$+)kSb>d+ z--%Vi9P?L9=J#?FHEa;(RV+v;?wS3yTwN8f8+#SdmKy41Vcrw_MHq;Oc43+@oa|uaHoelgTbK2=J`I|q zcE*Zp@c~Bbciwlo*08+f;Qm%N*g9EYyt1s|bS-0z_ z+aPgxw*MCMY{4&NNrr$0yjo-c3aVzL#^;h^!G=PIs!^JdXHWVDHk2h)00)~w2g=8`!?JCJ<~lu)`~uhb91fKXhje2Z0FLA2W80zFn+DKu1`Sd((h>WQUP z&&gIEq1owHip^fDl*IXwX38JRB~YpYqsOEP{&SAyKzZR0mv{dm7%S~~^s(2htR!PY zZ$t5{T=Dze!Bg$ei-bycdmtpcl??=59%FOHq}nZr*xwyzPz=tRSYOL;mm)xzbqqYb zVJ^|BHd*gvk?Tw4NB3AR61LLJ*@f%yJ}AM2E`gUT#>N3yTdG@%4f3 z_jBcEJ{JUs!s zR6$;_z+Iil*8saNu1SI&r)hp?g=Xz-iKAO{BtHIIK*5$urJXgBvfKA_!WXL$O&nFEB*wgBk zBdAt1!>`@}cB;np9bixA^+g_QiGYr3NRwP)zw>lB`ePq7zysd{UWRsd7Mbu;$HxwT z+{U5}P{2V#JcMUE0rErPe;99IG&lQu zgo6N(GVw6m?J;9k+IbiOxj}ksj|##)wJIIMF~lrjgP8WU>ni4=F*#)d0b6^n*N}P2 zdqWzZvkjy6COD``q>5r)h5~_;I8PB55jgLy2QXFdB-E_#x%ljD z^!8u*$@l!+pC$6WZ{Fe)HiWW0Ob7k0{Z*YA%7^v9M8M>~>vl}C5+{OkU{AIY?At?y zwxSZ8jToy>w-(HZ9i7<>_t%S2TgrBRRG)U9Mt?1A^II)ay72V-qC;ojS%;tv&F~v98fyYA^&Q9)2OKfy`b~b{S%0 zB@vMIk2cNY0Z1~rb9%)RoB|YW`tXgNw|RSOT7q@dgR*pcfFR_@>{`HX^jU+UJ_I2M zLJL)Fgy^m^W_e*+if$EkQ;V^w*!F@YG!2oK&~OAn;q}RGcDX7RER*`yFmK8-DM=6b z-1z4s*=tgx5Fw_cQ|*yxhUmYjhmX~*>EzV-g!Iv{2+R-Eq8@`!0685O6pT!nNHdG^ z$AYei5J|!`pexH`Qjyw|&>Yj>{SpS2Z}gB9oH4V6X!rRn(&4|Y&_x*19#~Ww?qS^E*1%NQNFN&!)qhEq?NtHVqXTgNJCSFYUtj=4v>rJ3`K3%fj%t39zM5Rti{eY6wlR5kX2-s~ zx{`3cDQ$H#D70MRP(V^%YCHO)_zOpCo$^;?qn$>4ClFcgQu9iPF5V z!b2^;`$=juk=Maf5zzCWIfb1Cr`%DhCJOcJcJ&O?inRX;|L3Mg;gR+F?v)R&Fd!ya z&4f`*7>B6lb%Os7Om%1UHl;@FazyHkZdanpCAsjborku$J`(?^NpFWx6GGtuH9rtlK8r6%+&U`wyGuJh$@OeCSJM3`TT!K3E|Z1tXvj;aT0W%L$3X)rc8-8m~yb_U)r zIi7NdpkZ#1JF|N=dahZofQ0!7Z?Q?=4)U;7!}VUa^_wv$F>+=MGY5c#*_U@)O%MhU zb)G9V*6W{iP%jH|lH;y~%Ms znULYIXW)R%zA!JaAiB|8ryGDbc7szl25xl&<67)SHDY>`w|f%+SsH_4 zcK)NI6oMl|u?7TEBEo1Q!6)Y!IUX;h8 zeN)=~x#K7B@QO0h?}HsWhA}9gb+GL0lj0<7>%0giRP;I1$Cs3b3z?5hsVjQ>tvYsq zi*7&~0pFO@KGCNn!#Z?5hL!U*9p-ze8~)ZLVNf8ufqu|=km1^W6Snwesm0;b=($D4 zJ!ZCvA)tqbF0#+|qF{4&Y7LD8DRHVpAutk5QxNzSNPo{Tjy3vIMDe4Qg$6>|6<) zvTaIYC<%8bj8Fc1#Cb4CWG=c869vr0wGzT`)sGc$q&t@^C_K;T4&xKDdVr#m9JyS8 zD{^FNgwB}#YVcY=v~Vbu`O5qCFiyZ^A^Y0} z5cy@3WiUb6fuS2f9=7_7B*@3v9i5_0M#q#NgiS`jV4&>E-OxH`4UB%#zGI)Tv``5x zQHMHZ3A|v|;HEV1iT9EI&;@$0$dy%RGWi{^ZB%FUszEht%0(Mqj}(e9J{=X4q8o-t zQ6p#{JXBC2&SYk9`5$C)5ga2g>qoRI`g?)8AY5a|^0hlA_;_m6g!#k4C(L(Ht|r4+ zcsy4(GoG(27%!Ay23X*Xb1~*G7WYm@UYWwd8Fa~M2V)irA`31P)pvRCgo9;9B7`W! zCG%I`=v4JvQ%w*92Giy`OwiUklV_Q{0As}xWYRk%3v7hxMEo- zdA%_2IGKdmLI7%LpcqE(F)|2OCCPT>YU)Fed7!G@-UI;~9{$t<5* z9k2(Q@V$V^>ZKzt20dWt&ve(3I1&WY&{sh?DO@>Z^QNt$NyTC(v2LK3hf4I(#bV7< zb^Ebc@xwwtxE)p3bL8@+Vl8ziae4nclbvF175ny%xCroJ__LsHdUj(Nw1kephls6N zYYO=0*xD{)s}kwJQF&YkZ?glFu;(Vcl?OFlWCj{|EAHob8&0IsL&sZFBLijv?2NMI zlb3R*Q=r+iQL^`oiIHHYtf~FXa(Fd;AGsG^@6|7|sh!zUDSMxPeW0D$Qu%tne?1Yt zhRl}A*9ZOU!{KYlY^i*G$iJQpUqfa~`43d*6?b-S7x`hUyp`Y`@J$d z)_%P`yxK4EBHOQbgjf4ze#7hC`elCGUo91A-0NRg+nFtuulM=a2g28o*;4s>zkfXu zzJ|<}%GU?|>%-w|$ZV;6eaOF_3|~WLOXce${`JxDHDtC_zMk^0r^DBf*;4uXS^xTY z_!=@>DqkP-uPd@g)R`@n*C+hz;qWzNwp6|zQZf@7zJ|<}%GX={>uup{$ZV;6J?dYN zg|8vArSkQ5|9V&W8ZujI{q+ug4Y~rMfrIpEC_|ihuXP19(1w;$NidnqW}U^0i3i>e zqr(b`2?D1H;?bg|M9vKt3cUG@E#qxj^+?OSJW3I|-_%k}D$z{GwG?>QIInoNL<5#a zI{vf?57cp1nQl`n^5JK?M2DdEG;}X>RTduqpG@SMWT8tz@f^HeRel+8!YW;=8=_6U%Q9Zqz`S<*b*~qX`J)aH3eCL zrPempgH-)iWtNw9EK?BG16xW4^#FacQV&wjQ!!P50&|jn=F~I)(J+R;oe@t)E79%I zfJ(=IUem0@-h%U1toi&!XEm7YFwk_v3R|_0{)=HcPU&87lDnBhtzguRFJ>}e0zl`Y zgAp{}V^*Lp1EF%xuj)gWHg-%1sm$p#Ee(iNB4c|7dYN^F2l}LF6dkOy%euXBqB2G5 zNH^jPA4EovUx>q^>FF2)v=u@F(%R+p!#~mCjYUUlEk0XP!Et+`a;hFpx-_MpYZKXu zaZ{5ZV7;<$yy&wmZPdDbaX9>h;3ytNB~kmk6hjwbuhv+=bGLvqfo=gueM~w0s9vkO zO8}&qky%5~k2p^EUJ?$_gskurMxm%kwz`qwmhO;(**$m59L)#lN29fPkX)WjXM}}= zCxA{v+0IbF3y*`va%r3}KV90X3~-a4nq!LwJd*K^u31wpi?`eu0B5js$;>%1b&g*1xQr=^?kxaCc=Bn&!URrP@U4=5v z1b_Y$YNbMp!I-fz)hyZ!GJS^~8x2O_WqNRQSLA5j$`rv$bb94xtFnPZaXb^`8%yLM zS%-~PI6l2q`aGw{eTBwaSx$;X%#oKH(G|F*ae41D_CfCwcj;m|5e}2H;zbM+_#9#F ztl!&guTXNa=hDD)vwC;apY0Ta6UW$cKrrxwRZTEwor@a`9E-VU=H+k#Y5_!BIj|%k z>B&pYu!OZ@_^Y!Pm?>O% z{6N`;BxKBxAHz)PaUR7Wsg&GnwMYb}l?ddE4>Pr48XxUAA620Wd>K6qtQ_PHtlahm zzz1O=Y7FoZV64VOEFlOz@f^zMwa9C9juQInInkaf)|#)!oj1pwSL4pZxI+)axFN!g#;w+a=nAc) ztk75Mzb&e#kP__VHYgB4hTYVO1H$89B!rqgn)|-3U1c~yO*pVTwrYjG*X_`i9tPnF z5+Kx$4^1RJgh%z~wT8oR0BIB?(3an)=o)3(d<9Ol?Fqvjhg>CDz zO|L3PKzY5?q)zaM2&%xMyLa?UfmvC7CZzzfRSO|VSTI`1zU$O)LzksS_{oG&7o828 zI1y+lnaFE1}%_ zmYZ098TG6HHCJ_b7JRnxV!Ot{)wizw+t&CnQx@@Gf2 zy!(&%CdrsZkLt^q7*ej_C#!v@V}uOQrF=+b;^8|o#n2eTZ=erMEDUUCc36#0vht$_ z$ZW?ZMhB#U^&D_zxStc`IW!vAc%#QG;d28-u0UCN`iMT}K`01{CbYp2uGX8W+T1qkId| zoiw#wD)+0Po4~_e6w(=$ zVK~}+RcV4H53ZfZHtcIG04Ge<*<^GvX%=iel$S31=g}`4LYf;D0W#9jJM=DB3UMtC z>Y!1gUQP1y6(-Un|qmj{*|LWb4Ng*zMc+5~9r@|n>ZPOpi<+a_4C zy_D|&!aKx2svSTD$khPpXEk%ch^FJN3u-mb?sWubXgs;YkzCf|`r1MM;xm<3TkuL) zqBu6Xxvj=|M2)ibI_iNc^yPh=L(>+$qYWt`PXJ))T>_)Q2|sOK^&Sj}TMUvYaU4o@ z1AKqmX6S##3twHDD)BDq{Czo|ST#vg;_RH-Y? z)c0mtr*?>|*+1PRj0{L;s*%PaVFXQyi?g?mxzj{CM+pcwBz~_gJj@21Au!tnf1)?8 zl5}>LKQW1`y>w-wLVa?UJ38oc{NN#t_+qGD_EDNNiC1Ko=fp&k_TY6*kZ$A%-=!;h zcXDcFnVR~sa9AWwFeSP*#P1M6pRu=JS2NTHATQ6iYiCv~8(m3dEhgnL0m;=t6cx$8 zN>n|N)-!fCfKfm7@_#7)%m9-`CqgFxOkIjeg?lug8DO#dFt`Y?)<|HLt&zM0&Bf+d zl2G%@e3ye3u=LgdR^Z912RlL=Ms|>9P2w$C4J{m@yO)`I zsbnM7p0hpRA*@Xv|NYVy6mV=J_rVVt(^h_LWVaz%<=)LV=KDBVf;qnPEgUUL|S-@W^Wi-J7IIW)Rt z@BZPeKNQKn;btDoi}d;6UjAPC!X4C6_Q@huvQxft-w*(z)nWDHP|v~YL+aIft{Y{| zvy3WZ;Yo+XPz>FE_|JIuoOm;)`%9Tg#ee~HOjpYA*~*9cb%W2Y%K7Kvg`U@BqE#iZ zB*W)O(>H6sb;|0S&eOM|%R~R&Yro8wMn3SDS1u1P0r=S-^?DS{US@}sTX;&&BC(tV zUJSp30Gc^GHtWZO!*7IOq&Iq9*zr*Q04bU|u)?kUI$4IY06eNy>hNDnwaqwby$1qg zUTms0YgwsvGo0+E7fv!%6`)8e7F@g~c@+kf>-|ZGy@aA2!v)9|Bzv=+WcxSPWHL_Z zUpo2+A(BjEJU{Nwh4Q{ud2K0|j^5CCzS-({ZF@Nr5tX5^E&;H{CNwgd5&DjvP}MXd zxAS}tNsN!>0i%N}ul(^U66h}srG=PwSWC-GEzkkg=uv%AO|ZW}6N$l(n%|>u)!T!% z2p9sEO+HL={Hk&QqtjVy4Hh~rwqdN}X+Em+KD8yka@AAZVXJ(=n9_&6x@XuyEuVkM zJez+WrsrQuoa~$;6TZTf(fZH*pjH6pKT-%_zP*zUqFU0@WnDfZ-)JIkNq~K7kWlvr z%-kx6XOyGrobUwg2W^W;(__DOZ4}{;Bhu`lHzuyynud(0Wa`+$Z^vhLFXW)!UU6UDY&h*RgA_2Eht;YIV z)%0V7J))$Mgc(yoHjzpLNhKE=B0dTb62>h+GVQ7lp zVA6(Y%nArvg=Ma;Kftv;Wo=)DK&H{CTbHR{CxOZs^aFVjO07b9m7H~#P+<48eqOWUHJ5G`1?$_hHdM`7g<^bGf|r5xv~2zoS2Mvfx9t;L!@z5dp== z|5vOL7VP||IXb=d>L zvg0Sxn&2BKYML|aQ9(vB<17&#j(n2Atua<+4J)NCO57>E#lral)ABBriN?ykbuU`_ zyI0Dz%~2kMc6myr%K7pE`&CE~syc2jzgH!p8aUXtux~a3UhLewo16m@5g}^1LNiBr6$r5_~skP8?6YKbiWwp1)$x3i;kG zzYOogkY!Op<@I6itYA0ckcFcoc;921as(4h&q6|Caa$&YF!hOW%z>zp`vZRwa&vnQ zoKx1hORS5a{&jNfkj;zbN9?}F9bOCf^B~1e8S@kNKA{wAaS!KlAxYcFc8rIJ8810y zQq082yQLmsa@LwV`#>8R$-z# zr!w%suLqezuwOE~%T|C3Q1&X{9w^bO-ra-H-szfo`Ona;E5f z2>b9UD;0xlftw2MBjzwK`i_vJ=};2nuS*Z-6>z^H5sRY zv$sodGol+!w;SD(!qM6=C_jQ*%7m9`Csp!F?nIW-Ck3C3hG^x$Fi=DXAY+m5K;zZC z@L&+qB4XotkZsO4+}vBSKsnTKnAg$Y3N0d_Gx(~%kcHKhOD@HSD|JR#-_!{$ys{Dx z9qkTUiYC`)RH}^bVn~A&v=>(q!j~u?zni%vqc(+@1+FvlSocM^(qu*0rv#I{8jI|s}{p(=|$?#c*qV@*` z7H*?IbEEsc>Qjwvot3oW!VLx`%K>CLQmlx)EOh@~(rN+sAT%Z_O~yjioEd{k2s(x+ z-(7y3mK9UJLrnP{1OidyLrtj7`QmkQrXZ;N7+rzMJ=3!T@ErR8NR=p&c@{nYu_44F7p^R zj61(NL9#4?*XUM$^$X}z08pftFbPc257q$xrwtXZLSa_4_o_*fT|%kJ*nUO;ReZLN z{x-q)*Qg*|_2Q8#u}v0c77%~lnO)YPn=r4mjGU9zlF9?^DS`m0v>}rPEk>3OFBO~e zLj$&To|IihCm?c$^#uU}$)j#rPZ?mlPgbPv6Vu)9lbi-%Jy>kSGaw2Bob`@P)}`Wg z0-nNztNIzWGO}wT#o>*y!UcjzUC7f!5iMu1gmG-y?(oDJc`^qJDnBC@BmX-mQ0?5D zo0Sj$>8dM{D79pb+XYl)7V=Q9q;JL$12yHtxn${GCtm+szxK%|4*l5h-90RybVDm; z2A7pTS}kN5uOG>)M!$J7jE8ZRL&27SEI`!E-QPk#|^l(~B7{h_niXpY~~1&cYa- zI6{UJ#QFMOd5qEvY4cv)%z`26`XMU=YNJe8bzCT(f?!tE`$7drsGyrBNrI-W)+pC6 z7ok8@B|9!g_jO(QtaQN{4Mta$&z7fQ+sd>1+W8q>Og>xw6zk?$-TyXQzIJQ)TVORth6pj8c-@`|lG(hxntSKyY zD?xk>w}p$`$vmRPqb&jdPRgOR6~O{UsZuOZJyuUR&SjKEF446dRF zBtn*GVIfJ#sR+A8HKAj6`7CKHV6@GPc7QGz2F6qiMN^4I;g((JO+X9fqPsjK!6K`Q zWR#^M(c$o~@=P}+1ZrNzmezH`VjQvx$*n*HxGU+}?N#DF6G9;Arrr)ZfU*_5Z!iDm zB#2)At^R^ppv~RU3#`>osMTcH zc3!E}5TVK(@C5=|8`zrmPrU>|b<@Hm5Pv#B$&`-<%16uDVplR6et%09t{3#E!b0LA z3;tZ?9U6_LMB5l~SJk}M{qhZyWQBy{$~ro2TUQ!5!1i@>(>Jyl#Sn_N#1LQ?u$fp1 z>*$H4B-3gd&RK-`Fkc~YdX)*=*Agq0{7HsyPU~?t2#DD>I5HQ4W6Pz9dATBluI{pR zR{n)#siBxh&1KpgBw$+v$#V^Tb^{CHlMwUDOsH0)lu#vt=qG#Wj5$r4B-H$Lq+$!- zUG3LZfsjiV$%LqswMs3PrUJx;l4PjXQ`+gvTw5}R!v%@R+tlPp?zVipm{ zx5P9ivSKGVo+oB8krO>^XnJBE6N#ik+3XiIZLit zP;7!~$bwq3vFPh8j)Lpd%L?8Uw1}U*a2z#{AW6mm-+EKQlO_W^mkDjuvFg}BP3U$3 zYml;RDhL6Nz-DcA8e#i%Xhm$?kZQ@#=j)UUXz&PNWO!(avjRwI(I?8%VmgT?Nfp@3 zBAy?F6}@0ewc?{L^#p~iK-Sd^EFfHHHnC z5@Q#xu8ETkzV2nFwn8?xQDhE=qD?3jW+_T#=%bH0vwO=L*%(-)^$(F~d(TE%SnR^y zj|i>9*hFf6DwNG>7nH10YC-uWksD`y%dEsUy8|^~t#|^+($y;wC&&wIMr>Bs7ma8E z?{sN{q$#;}dP<59ixu@!8iE8}-V$_nz*skr3IewFkSU@U1RcMG(#pyqE4ni2R?j!SdXg-iN>(O){&JyidZ2u_`ndcpN%C!p3?)BC z;iV(LpR8<@;g!m;dg$9X%y3W{R(|v2-?DONc`A9uI&B=V91pzb*f(sLWxr)PcJv)@ zd=`1+T(fRnun^0*@|QQi_fIZVPL^!zHHrjgKsUbnPLCV=_kYHqxw!1;r}>RX3cx4e z*QwyAAqaN=e|cX5Cs$SGd$-!FyDN}=z1;@VNqVW?mynR^Yy?6QvJm#}>Z;r6N~)_m zwPeu%l|@C_-8T@FC&;S)MtN!!W&~V77Js0q^As2unKv#tiq3l?{r>-R?yaR4Wc|(a zy-IGMd+yo4^PO)y-?Rx0Jp=eC6qXyz$0wJ@V1Z`|t+3W2g*i z_>4W%e)R0^Kl{zC-+%v~5GkfTuE3r-RY8z+kvM5dB+8D97K*pnh84r9gN10RZXT`! z$=Y$(Vd&V1u0D*%ZbU)Gj0oDcivb6g>RWMm2uY<9eXFhjFH{lWtJvE6j>~uED}5(l zfrpLnJKp!L&mH~zHFp?=T8uz=YEWZ9djQKbU%L0R_kQMOrSEcQs7rO2{tlzr7ceR# za+SI#^lyYVXcvkc-zva}G;RZ6KNtrZ)JSrVeOw3yrW5SMI=1g(`&e*J59)vgQ?!bd zNm@k>c3C-p|B8m4RxdBLYAUyiFNs^|03@HQAl6aO5&IL6W`|gc5r>*c)VSDFDHPFCuv`(4X#xcJ9&!8TA$U#S3nbQQ;6z^wsEwN^6PO z21Dm;i4q%RD$F}&DPA2(bQ-2L zr;8IC7hMzbhw0sDFMW2OT2olq-T*@E0f@<>3}lY$oM_a6xh`jDGRSN8mM7%nNdZYk zMq5;o~sDAJaoSfTcT4a^hnxU}Wn+xXcNfRj5R6TX)68lOEOqLi1J?CUNV zF|zb30wFkhZfJp{{tMSHAftgd*ep~H>??txv^#?G0E67t5R3$W#+jbDf#W)@lg==3Kq99x1dbXEAQSSex%`MZ86YiX z+)7e4tYvT}WGwlOpmx5@#daOR+7}EKS-=@-JQ7bp1b|dU{-=Qwlts!oBP{yG6cp9S z8DX6#XB2Ms!ePF$HjxdK1x^@b2p+*1(MQ;$&|l$!Pif=uzM}i*ncyRk60lPQQiNU! ze_VR?!_ZfJC>(h4kjD=+x{-itf!U&Ma(jBGV~qC$R``RrRrAmzBtE_x%@!Dp$SV*| z{KAVuNECcW9BSc71Hc7Vm0E?h*<4rnzkBwBytwg+P?+|-{7{EHtuc9;JXkSl8dc-T z5;UH9Af!+=-oAhxXPV8xJh`=wttot2gM?szWbDW*o_)9#;T{|oF_JioD8vl`QWoOS zSk49Y0SW|lI&lM}!u+CrKt%8^)MKNE0D&5L1^IB^LnRo>K!EwnMgRiOBp{ePO@d(3 zG=gBV1P25J06MP{wN!$^L2g4Fje&Ep%C1da4Zz5aV^IeM5dq5A2A+KFAd!JAjquU5 z)o2$}Ra`;h-B9S21P}2I3%IygAmA0(2bwQiIb6_AHj2Ma*PP**+_SE%O=JU7lVoEA z!pv!U0~dkAuv?;I(#;9Y(iTEFQbpCa6zQ;VvTX656!AhK3{7Oj`Y2^}Z2q=`&=kIe zQ|z!fvJ2{?U?F+c8)0+AZOn|b!$P`J#@|2&gsdCd2j8H86EpWkT>AsRQcLU>240WN zhHXd?1I9_zweaYp6}k#*j4Yi?jWn1ChPc8Yg}Xyfld;b=J&j6G5GmYLk*?y!dMefo zfQ=pt`2~Ju-a64cVO3nE<+5;0?5nJRw?)C>sJV zR}M7rdIk!cI0p(;=0Gv+94KDRKW?A^0R(;1?+iQO3>!C73>%vsZ~w3ZlMMS2GGcuM$w&RtHCON}9IU7UvC??7Lcu4n z=`ozC4U$2j6m#o*h9Yz*#`l6nX6bH>>^xDy%#au=GD~;gs*P%!i=X#<8442_99c%DEn z$n1s?67gj3>Z7RlxN^L<2K$ei8LX}5CjkDaAcR}Ue=x+Bz;791+(-t0_n991qv;?r zXatmrh7SbX`+`z~d%-(apMf)X$UyT01DOv29K>0jBK>~E(Ib(Ocz{oHqk+BLxp0UK zigRaIOk=fx83YaR9`O&J8IRDI=KJyA;XRda84P8?e*aT`| zrym=;cHo!*!u<{qXrHf43ftg`yo^>jz{+IPN&X9y0WM)ss<{=|rsepBG}x_#I|^AQ z%3gk0G+c8G_XPjwF}ngPca>F#oD@K-m?GyY@>jIRGb}Jx+3Nw-!_z51$l!A#UdRRF^$gq{kmGHrySY>iKWTjJWwOND?ylXwe zyVgV3dO%1+>8T+ke3dk_S^&D#P8mpuSe5NNK%59H50;!j8mtNDv=A0S*=ZpzQJxkO zYB$7MKpd=RuNk1}Apmz8>}$i%5;I41<|`55+UD%$YFHaZ+Qi6I3x#Lz#LgQzx>y3J zsbUELaYzQ8nTAlrw?@ep)l!R})cFo*B@)OHhgGmNAyrTTK_)CR6EAg?1dqEOV|c`ULl95E1LgtB_Xt2H1pw?68_~4L zBGOMT0(9m(s0kpzL#jk-x3Gxp2xZAvlaAbpowTya{w7}Y)*@q<8$H3oiCS{L#cg%YbhE40t$yEM0TK_ zN?761m~d@S1hQ2*4-0(Rog&h|`cvq{U;X)VyQFyb+?DW%eJ)V`=(D%s(Pw9uKl;UU zcvM~f1YV6dz62)`sWvEdi+tvXh(moMN=5Gd9r_+w7P;~zhWD$HhkwtTuj!%pau-E- z*r>?&-RtvvBH#oH?hAzzP&r;YmVLV|T@FsxyH+*o9ChG}Q12;^d zg6)^}BSYs)z{IvJ)EFT^01KC3njQV1uINAvc@;PnE`O1>#5zKTI+jvh?^W&Jl+043 zlVjp2g5a2N#1Q+O6>O~d ze2NAF;KQOQ$v9lLfw9<=sRbH1|4dJ{p&FV(?+WK1c7=*G+@%;Wpo0p#9sUMu3z!A{ zI8}O{7N0w`-5mkvlF6X$mC2y(Zt^{uTwbdvP1^1z_m$~@f;cq+t>ji{>|}o+@bHMj z@dq4qz)fh!px-Isu}OKLNtC02qomxJAPjtvN=d z1~dyZf@v*)M(B|v@{})Pz^aFB3Zh2J4~3u=nK_3-Kw)kIM*$}4!h+bh(+%ckDYN`-*>u^sQ7xzjXY~_L` zo4&K)w^jwF76i_D%^(?@@Efi&#ZGUP_(U5Z4M#3jR0@90)&UP#oKY9bVu(mZI{}hO zK-5EOI-yp&jKO$aJRpj?5qrdj6F3PIW4Vh#Vs>@-Bk3WY#-und&9bchIZq6-94Yy=`YO^HCdgFvNIMdJ|YQO%{={wn3$9lFFY!cf2w zwi>`03K^G}{fzS&*@3GMbb)J9YyV74j&& zKs=+*f0^mJ>o5#VL`>TZMboE=qe+|};hzT%B1emH^NxZb2hRYHV1fXxQK*x1r8@?W z!1r|c|Iil0&q_e;Ijd6 z`WN8+IfQ!Xa2?zUcVy%on03&*uquT(jyZ6dz8!GzgxjX@S@7<_4EZjYSDF?NR=WdY zA^*{ht`-ws?58tBq6ftpf^Qf)UqTE&I^-aMM>I^o2w26P$|+l83iu{XqA6z5^`>Xi zIT;jqQJa(#I8z90#;)Ro!-EyvMEa4^oK~v?uN2J8n`a#un8P?G9v_^9QwT+Sil)1O zA>)oMz6R5J!!3gvkVuu0rE$?pCiZWdPM^6V-z}||$P%fVV9yC|P8W~}3F6J?0?l!x z1YbufI>#XseY+6QwF`$Q9G@uo5lrxjgZmZVs5GS?6L>bP@(}c-gC6h=VwUL!(*i*= z;iBb+lN3D{be?R%M`nZ*7@wQciwafKL2Jqe1YJa4!8^o^W~MPG@O^c|Oy*jr?zFRMBkX%UGlghvoCP=JC8{1GE8Dcq(a3;^P=FI7+} z9_zP)3u1v1H{eW7A2{~6FC;ynh-tPQO#u$sZh}e?Q0FLOvzUd>tbfvoy5;`iHk|*q}+TYt&s30{)8!4cPMRP2@>x@e%T^al0~Q zFFh5fM*~l2lbz)uFOlk~j`ashB5J)~)M`wu)sa7dM8I7-lLxu{*^?7fl_|b$1V@f2 zzs+GF-aSHwNym>!fv&=#7bscJcru28&86fCuJwg!ObIQ$B1?V4Kj=rOii^6#2=v9A#j6M zv2~`|8NqPrPKp2~bo#7_CVwj61xxeznG-8iY%`$*x0wK7ZZmN^FY=ry#eO`%JGr+K z`Hfu{od+WSSxOMVgr)>Y0YqZcMSu{LORZJ8@R`C*mm<_;=bR0H zyUU;?^qKF2N3#&jp*wh?dO>Zt3s0epm{%M>j0yM9%NaewcPLHmvcrdQ7?s99bO{>& z$Hd|;Mn6&+{iuiruDMhN`!3wC1dd;7DDtNwaN%;}^5F8~Do^tv?#C6t6~tAAs~T4g zt`M&Byweb0lTM`KRw_Lb9ZBa?xxr*Qwl|lFrn1pkE|E^f(kaAZxnV1@dpMU%j99VZ zXd>00h-WR7%M9gH@oY36&sf@j9CX-g&9N1=M^T}LqZ$5P(6CJHzI$)+#W;A6E ztjlBu%>B`1-cn9N`z9`q;bdIR!|4&Lc~5l2$~HH}qM6<4=8UyFk5+Zf$FhrL!XkqS=wgY%bo|(iCnAiz3#+(R3!4ZOUX( z|MP&r#Rxxui*Rw`d&kB9)sC~iSU#Iej|@grd;4&mo!vc{&!jl^T)N*L_by~ZLM&-T zGk7+VC_+u-$dAUOIZGyp)RDyQ44$N{1O2gd+yX2|vbz(hY%ZG0C6Hi0OhyN-q;=4W z<#X2d{2*G`9nJP96C;V-HfuC_XiF+(?YA=7d@KgwTbWEc6HOk79?GWot{WN69a^{F zO678gMy+Trmq`qwmTbhi+iM*XQ-E0-O=CEyD3!}j$GC|z#E}`eX5yNKD{8JyWJiZ~bf$7G?iVm3h6d-QJa#lQfr~=n!qn_prfEjBZ>WK|TJKMV2 zJLBP@p`q@U&eo3bVC!JCYp^TaIoJ_zkH?0>;c#;@F_?*B?txP2n3ztWLL#-Bv-yA) zQqDr1UkAby=P`IpKyNQV+1tBLLJc5u9s{^Jq;6;6ph`bbrMH(5%J%l24H!muTN_hD z=}FVqrS>~@i6+)t0B0Xt1LE{NCAeuy?r8FRne7m@>b?h8I(jnHkL4Pd=kNz&%UkQ zD~<{`0u_6Eo%&Z151nfc?&so~hifE3Vzb*EN?1vdnt`AzBu8q<2o9d}?nheINx&lu2OSp_T^IL0uF1w%Yll2)QN_DJ+;o+}xQ+dk zvw$?x)awwkpXGU4TD#39cy^0jkCP{#ObYzioX(lid~P_MNxT~iD3>-t6wnVjKV}AK zAStkT+%F&Z^Ray^)~`)l${%6+@JRH>H-K!4+z=z;zrAb-}%G2EQC8xc%n2vh*0X*6Te)Dkw6 zvofHER%L^vvFwST%x!gPX=WE zbGhzWkv(6)H7oOG2_UA;67(+tcs57l(NToiW-FB+vB*jQ#0Sy$3(@y5F498~eG6QG zhy^xfa_Y=9*u_vXeE`Yj=_4Q-2{4oinTWrRd{K}4rMQ;ia(KjY+&AEA#Pw!*1l!<` z>-O#D5ifcxc|;{)EK;8Ap)6okq^8?N6hvquEiD#tu(w#~jga6~9J52$nsATvtYY3k zTC7Yenv}e>*Tk~5xSaB-42Z#SbTDa|6b^b#$S%H+n2WaurLcGtxok6*NPa}hO0)eT zWheS|H7?H0c$!;4I%Udh5l%&OZ$cVru9N3)(cA~@{7)eyj+Mg+7U;Jm9}Y&dR%d%- zxT&Sh77an_085V6z(MImCw(pA0=D+J87Cce(l;PZ z8sfyyL!9*1i4P%OKAwY!lkPg{M-eY?|AUBAo^;Z$L7elsabz?NP7bv0HAf&CLPY=- z8jkL_%rFU8H#pX4K4%Udg6xWWGZ{su*f8*@K~6?0jmKaQV9ZG?wL3SQeKHtQc9gYs z1KKJd`)!Dq_w~z&bF5oz+Grjawo+hU$yh!K_6R8>ozIC*fU8;=yP48hK8&(vS$j(~ zsh@3hwmwo9qud0@E&|4XoLz~CxZ&^qykWr)pcMICN1nm>o z*^}}($Lqv4|Z%?v36UpDcH9}N>(vw zndGKWfKul693+d~P$nP&nNX|vY$Q#@1c}L-hthdUKW08_m9l265ljMdg40CfP3ERF z5DSVW1aotP1-%+k*?^FBvgS}GJt8uoB{PvV*@**IGHGV>qts}rbAh=JTWFg4Sd+OO zp_v{6x>C@y8HuUN#l<>u>g*M3E3|d&e3HAY9DIZajxg%|kX3|iTC))t37Y7V2598@NA$Q**~%F2ae4NVoIZOp1QcUk5zIz++6O2Q~$iF!dd1a}r1 zFR92HSO%z~H<%;Qy##b_7yuoCNM&Zzq#S9;r_h@zA+wb<{$!elfgfJ1<#zz5i?TI& z&%tRSr5|{ADy~Ji-huX@w3lokFQPr#K$5sf2g`XZ=|%^xPF!3MlKSS-X){TDv%9yIy|bTfcbb$)WQU-Bu>uYnpgY9_h$60Fly-XS5BYgTOtQ3=>>}f+WHSW-^Pi33+BAj3EU1 zv-1Lo!r}siNt?8onFoVRvjO(jOd?i< z+-f|h{$fvrIhr3N*DC_{Jfu?wKNqE7O_BCaJM|#aD9@E9#DQ`aoG)gT&pGj2&Q0H; z3otX~Y1rE+&QJOC6?nego*fI5C2Q>`++m>u%4GQzD`q!rFnqc>om)@PgT2LV;O)!} zb=$XV0mkisq65PUntvMFk|4EnO90y7LNhjiwhH(lj{N0)U5R)(jF_W5eHF(toZLQ~ z*_u9Zc0LJ9b|fCRF+vLQVhuhzTiS4*Ldd<1pCcrFa3G6%)0y-r%^g?(m3<)J6iKOg ziygL3oEuR?Mc+tE1SKdUs8~bJB2q4%6B4?^UWCN4@_8)vClyafSs%s#n5|$sD@LV7 zGnMX#k$xEDK<=g3YH%KgI$M@=N}`R=pe^F%9SFI8ziEdLBlIBtBZQSl7OL1{oIg3J8H#RKztLPQx@op=3>Kg2`F(qqixKtPfouiOd=b{ zzZdBrMn2Ms=?FPr4`bfGhwDLH|Agy4Tqkh#A{TjYQ4p5cw2^vm`Y@F=yoC5VND1j1=8QqN7d4f|OYBs?LW>Y}AQi;0aEf6Ocm{l{>o97azh#?Au%mj1_9itIgrC<2CU!%L$LqyhT@(% zKz=;%TCH&O#X6QWEWu8nD7fU(C1vFZ*aIcFn)Pefgu~AjKD>7Q`t?iSX!YpUl8Y;A zrzTKQeYdQ>?{8Pn+Im^rmi3%%s3Q)$s|4L7$@Yv+QZi+x1qMu7YZ8dm1PTT9Ct1Qt zh!ddUL@>MBw<3puyT`4@Jy|XUZi|MS+M8O04LNQ#W0y`~5#+HyE(j@L*~%%nXrpm{ zW%e(Sno84`Q-(GH+JX2h%RjljY%_W?Y#lTs+t+N|IDXKI;?(&`)J1#EJ2v)_bewwE zOADpmwHR$t?|0&t;=ZmdegyZlara3}3D)wEkd+IIByV_U`ia?VmL2^B+8IFmKf%R* z7FBye{9oHf>@}s07{&hf{4i75uWUXi%>P>%^K03!u0nrzp${LzMHwPb+3&TiSJ;S? zW$m5*&*Klu^#qY&E*E;c6a8G+!d7N^m6aOpjsW+6z zYs=y%L+65eQA}r?^XTNCJ}w>@m!I+S{8flkK5)th$EDYdi%+xTC0i@(VIxucYGhW| zNjcW3%dtB<@fA*4$HYqJn>{o#2&x74Ff>F97zTIPuID<0?CU2HqNuXYVT#tlBCizI z-Kg2wIGCVi&hAN*@((D({UnFY(dKI+{vw`JHW^>HBNtAzX-a-c`;)K~3&XLnM7+Id zTiQNQ*1SvN?bp#y%0RVs?^=AysY~jYE?eHv7;b58Ywzgn>h4(`>07gQ-TDn@Y&`R< zO=oZ3dd{}(J9eIX-uV|?I1n9-#jWAQp1sMD(S4c9d|T{{yO2}l8`>>%rqalp&E@wW zIC$vYrDm2lG&R4q8k(9*wY`~|-b|TNi;ewnt^D$4`f|PIPr*q+!{zpPef~gjY^h8-27pF2;EuY?Zy*1!7l)KP zaV2pz;QBTA^PRXFmf>28s~*=9T&LnXMf!+1wuw#P-)G}G3zze3Gwugy7Jy7~WVy7% zG?>f*uC(Ku!Xs1K zL;(}qnmYs|ixr1~`TY$cp-X-SA$2*&j}!iuLIV}0p@f}4I%Vx`wwyUWpBM+X?2z|) z%`aF@f~;;#KrN^Z-rxZ=I>nG6ArX4G5tJT=i@5Ra{=NP;<^Zz1EY&^ z&;929anA=3cluiLO{HVpek+E)!ax(nJYYu=_Ilgl>dr>#3v(Spj>C<9Q&x=Hn+ReH zSh(T*O($E?M-&w}NBB+b%g{&;{g~e*;TuO=l*^Y+%!m%#*t68k4yW_*r-VJ{w3XDW z%z9|M1JT@o3Flv+mGJKt4^h`a)J=Oq6yYp{YY_^WA0fy00~jkQx0k~+in#FQ5V~t+ z+91-_W7C^~>A@gsrz0c@@~X)BQz=pgbq z>tzq(wB;sonf$%S-{5aRU|wooTJNuK@LwqMJL_Tu`7U;Fspy*soNET?fOp}8@ZN3- zw}#uo?ct7aXSgfe9qwrfx3sjhwzRdhw{*00wsf_0xAe4zTU%ONTiaUOTRU1iTf17j zTYK8VZ7prBZEbDsZ5?fJ6L0Ho>uC?Sx3ssmx3#yoceHo5ceQu7_jH6iS~^-g+B(`h zIyyQ#x;nZ$dOE|MEuF2MZJq6%9i5$>U7g*XJze3hmaf(=_?vfibai%hb#-_3bcefJ zx?8*3y4$-ux;wkOy1To3deFrlG~a`&dr+(gkD_#}Cs8ydaqBgg#b6pXSD7t6@H+)8 z=K&Tk0P(q&33mrZDcq-VjpBl1FR(~jW99VGsfZITQ;4TokZ!?Xq(Q?x(IV&cQG|7< zV*Bvry$f)yr7ChaO&ZaJIv(m!vh7=qLP z9NOYu?xzrv4}T6JWuWnGUyf&Ndjjn2-I3-|ocPGm^;KZG@(k)Z1^MX%R*y?jb(hQS z);w;n$2ZMCKQJdaw<=U!RbzzolTJF>H&dNu%vR^y+vzP zZ`Ho2-EQ3B{omSOTz}PG)yI5y9Xxd9)t?LRI`7J>uABcqs%y^L^p{tfnoqyz;{NB3 zUwzH>ANt~#zwylnANu|ee)0SZV~R2Dq@^wGUA-$-Zanki)rY*&zjk_+q=#u`pb@laMM3D!-|I6oJc&TdI zx{YzGaQrJLzJ1?QKY8i*$KHG8EnoQdeGh*3(Z_!F^D{p2tsg%0=wlleVsD?5{ieOXKKT?>xgj z?Z}ppCeY#io=o%JG&~WJiw^}{J zwb?Vzv&*BoXI5=B*65A8YD{z21bdAIr}Ud6#-39O-*X-Pl0Mgc^soB)o|(SczUjf~ z!98xjd#?L@&vMs#e}fS;RJ|q8V9a#~^unD;YHm4OFWlliO|Q{U^K^TcyN-@co9%6$ z)~MIk)YcTPGLC+HPGH6rA8|FiR(Q1P*}lTJ>vF-ukLLzmg)vv*m%;zILGSV%xoCRf zzk3T0yZp0P=ze#%cfB|0&IK0g7Z~UJ3dd&8_s{fgG72Ab-*HQDmeF#vapY&G;$1(k z!WTkEUiPTwGB;AMHVWU?=jk<7iW^5P@!Bev$D?_@KF#k6Xw^nYou-}SI(gc3b%r)e zn^QI4wZOYr-DB+4?$J+Zk7-Y6PX?dz{aE{n_A~Vv*R$HMj2E@vnlBmusR2>d;F1-q zHgCE1#v4ETo-056vCnA(8* z@5UZ{$S~h^%Bl5j-Mwd=xoPWm7&d`)12Jo8Z}#A&mw)h<+wb|({g2;$Pb&T4OX}X^ z(v3!aNLQPi3P%^{Ej9Cv#lD5E<*v0x^|He4?#0Gpqu$#d*u3UQmv5%uJA1{t9zEvu zg=e~I^?5FJb+>VrtJ&~-e4f?j5+msA)O%fXJx0*8bz@gsRhy^D>pybpw$1h4Wi#iV zI)C~s-)1zhwrY;Y?>@u3#Fr189$DsI;qtrBajUM7?kZe4xbO_Gzwm`i>edDP?y8e} z-Tux7V^-nor^UAi&+z%zubX#wBcApC1^R}KU3#_G@9y#Vk95u{+^g2KRvr8F zP(Dz2;DeiDRmYpJed6ebo4#EXyp3sK|Hu!R<75?PUdPirhFMMixaF=gR;r&N8=P6FfUFz{?3V&X@$?zN6v1w~Jtt|Z0X?WM=PS?D4?MQWl z5f7g0FWlX|psK;}0q@;~PaS(2gRatZ!Sg*>MKwXA8-uC$)@?qrBRE5M=^oz#J>YWt z{cbO)YT@Bi{Kwr>5@?%H_tRTP(&!_-Awip|Ukd*Z_-0avESHb=Ax+5nMS&k1)QNb1 zezZTA7WzRyB%w-~iaLR!E6Op$RIYaoC>Ni6lXB85b5YP7SoFJwo0cyNn+@qNJky}v zHqf~6F9S`=t7hkoV*{OkRiEut{k2_-tDfz;qdMBtJp1OJ@cd^t{9$43rkD0SyJbtd zcIyo%Zr-Xq7Cpy$;^uRdpVe+to_ThA_}S>ryPv!H+{a&h_FPj*?RrTa+XaEnqclR$ z!K)8c^^8DxMo6_l$TUqg-lZ;_cVVE{=Tm1Jst@blwOl{VyKJ^<;=60A;RV6+__YNp z-W05A20kL7`n9>LruBe87#awqx=_<`jvH|oGN{wFnIIp?jk@vm9^J1kR9B#E5GCtT zJ!-{dsfGtfr&%kzghn;S=W9LapVP_$^$eA-$5U0WdXB1jg5E*C@6>&!HV^fwYFD+2 z7F_{#u}>W`R5v=M&Cv`!WZ<=onp?%LlCJ0rw1xP$T2nn+QcALy&K&^LA}?jX`j&5D%HaVb?u?miu#>e zMZa1dFco(~Qw$X^TH30C!=vwWG?)5uZSF}`>Z#s2fhIkSv1!^8bqye|;f45KwOMUL zt(xY-xR+^O^|u6@3gIafqROK_r+(C>;H_RRqaN?c{cosW(LNbyG2Wwg)-1&+{dx;( z^r$QK#V*ym3NJTp_hCh;{djM#3K-m^>fRXws;W9ut@h}y?|3%a!}I<#isjdAsEF-vYuZvwCt4}hU=n~9E~mUp|+ z0N@QwV^b=|0p6vkryJ++zDb(}p&MHnUa#g^XnaIhx{Ow@TCL7>sWqr+nyAGEj8#_} pif6>53>02c6lZ;QL9nDONjYtS9rB*n-Ow$s$F&#NI$Voz{U4g-hadm| literal 174306 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 diff --git a/packages/fetchai/contracts/oracle/contract.yaml b/packages/fetchai/contracts/oracle/contract.yaml index fd9e0a4922..e2121f5795 100644 --- a/packages/fetchai/contracts/oracle/contract.yaml +++ b/packages/fetchai/contracts/oracle/contract.yaml @@ -9,7 +9,7 @@ fingerprint: README.md: QmWgKLF6Fe4tESTdhStxYJrEVKP2xSthd2fcMm2LSfkygL __init__.py: QmZ3tqWJFLxkJapkC8T2Wd2Jos1CPd5LnrycCs2bGPyLKb build/FetchOracle.json: QmfEMai1yxPtWoshFahBk2EyVHd9Mo8pSp1SAE83rRvQgH - build/oracle.wasm: QmZaZJcpbkGuX9JXXHnjMVVCnzc5VnoFKrCbPJbbRmi9YD + build/oracle.wasm: QmPkM6EDcizaV39AhqynLSu7bFpy27Kda27r1bJ61W73AA contract.py: QmUoSU1a8P6rUFcxxxrpvS1BkR2bCtrz3EcwjfnHhL9UVn contracts/FetchOracle.sol: QmadnUCtsVobBGMxiWAkqMptC9acSMBGj5x4Z4V2UhnFx8 fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/contracts/oracle_client/build/oracle_client.wasm b/packages/fetchai/contracts/oracle_client/build/oracle_client.wasm index 5227a9e320f169252a01553e8e63c1d94d685676..2983cfdaf0c539ab2c92fad97d097f1200acf002 100755 GIT binary patch literal 178539 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 literal 161202 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%0Dj)9x0*jBh!icNHbuwKw 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

@@ -257,14 +257,14 @@ Finally run **Alice_AEA**: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.1 -u public_uri` to retrieve the address.) We will refer to this as **Alice_AEA's P2P address**. +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.2 -u public_uri` to retrieve the address.) We will refer to this as **Alice_AEA's P2P address**. ### Faber_AEA In the fourth terminal, fetch **Faber_AEA** and move into its project folder: ``` bash -aea fetch fetchai/aries_faber:0.32.1 +aea fetch fetchai/aries_faber:0.32.2 cd aries_faber ``` @@ -275,11 +275,11 @@ The following steps create Faber_AEA from scratch: ``` bash aea create aries_faber cd aries_faber -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/http_client:0.24.2 -aea add connection fetchai/webhook:0.20.2 -aea add skill fetchai/aries_faber:0.24.1 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/http_client:0.24.3 +aea add connection fetchai/webhook:0.20.3 +aea add skill fetchai/aries_faber:0.24.2 ```

diff --git a/docs/build-aea-programmatically.md b/docs/build-aea-programmatically.md index 177f1111b3..387fe82184 100644 --- a/docs/build-aea-programmatically.md +++ b/docs/build-aea-programmatically.md @@ -62,7 +62,7 @@ We will use the stub connection to pass envelopes in and out of the AEA. Ensure ``` ## Initialise the AEA -We use the `AEABuilder` to readily build an AEA. By default, the `AEABuilder` adds the `fetchai/default:1.1.2`, `fetchai/state_update:1.1.2` and `fetchai/signing:1.1.2` protocols. +We use the `AEABuilder` to readily build an AEA. By default, the `AEABuilder` adds the `fetchai/default:1.1.3`, `fetchai/state_update:1.1.3` and `fetchai/signing:1.1.3` protocols. ``` python # Instantiate the builder and build the AEA # By default, the default protocol, error skill and stub connection are added diff --git a/docs/car-park-skills.md b/docs/car-park-skills.md index 977c0dcb18..2389e96ad4 100644 --- a/docs/car-park-skills.md +++ b/docs/car-park-skills.md @@ -57,9 +57,9 @@ Install the AEA ManagerDorado block explorer and request some test tokens via `Get Funds`. @@ -97,7 +97,7 @@ Follow the Preliminaries and =1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea install aea build @@ -135,7 +135,7 @@ aea build Then, fetch the car data client AEA: ``` bash -aea fetch fetchai/car_data_buyer:0.33.1 +aea fetch fetchai/car_data_buyer:0.33.2 cd car_data_buyer aea install aea build @@ -148,19 +148,19 @@ The following steps create the car data client from scratch: ``` bash aea create car_data_buyer cd car_data_buyer -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/ledger:0.21.1 -aea add skill fetchai/carpark_client:0.27.2 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/ledger:0.21.2 +aea add skill fetchai/carpark_client:0.27.3 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea install aea build @@ -225,7 +225,7 @@ First, run the car data seller AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.1 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.2 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the car data seller. Then, in the car data buyer, run this command (replace `SOME_ADDRESS` with the correct value as described above): diff --git a/docs/cli-vs-programmatic-aeas.md b/docs/cli-vs-programmatic-aeas.md index fa7f0b5c37..f92f024cfe 100644 --- a/docs/cli-vs-programmatic-aeas.md +++ b/docs/cli-vs-programmatic-aeas.md @@ -33,7 +33,7 @@ If you want to create the weather station AEA step by step you can follow this g Fetch the weather station AEA with the following command : ``` bash -aea fetch fetchai/weather_station:0.32.1 +aea fetch fetchai/weather_station:0.32.2 cd weather_station aea install aea build diff --git a/docs/config.md b/docs/config.md index 253681caec..3e498fd02e 100644 --- a/docs/config.md +++ b/docs/config.md @@ -24,10 +24,10 @@ connections: # The list of connection public - fetchai/stub:0.21.1 contracts: [] # The list of contract public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). protocols: # The list of protocol public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). -- fetchai/default:1.1.2 +- fetchai/default:1.1.3 skills: # The list of skill public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). -- fetchai/error:0.18.2 -default_connection: fetchai/p2p_libp2p:0.27.1 # The default connection used for envelopes sent by the AEA (must satisfy PUBLIC_ID_REGEX). +- fetchai/error:0.18.3 +default_connection: fetchai/p2p_libp2p:0.27.2 # The default connection used for envelopes sent by the AEA (must satisfy PUBLIC_ID_REGEX). default_ledger: fetchai # The default ledger identifier the AEA project uses (must satisfy LEDGER_ID_REGEX) required_ledgers: [fetchai] # the list of identifiers of ledgers that the AEA project requires key pairs for (each item must satisfy LEDGER_ID_REGEX) default_routing: {} # The default routing scheme applied to envelopes sent by the AEA, it maps from protocol public ids to connection public ids (both keys and values must satisfy PUBLIC_ID_REGEX) diff --git a/docs/connect-a-frontend.md b/docs/connect-a-frontend.md index 60c81f4846..2842e6690a 100644 --- a/docs/connect-a-frontend.md +++ b/docs/connect-a-frontend.md @@ -3,7 +3,7 @@ This page lays out two options for connecting a front-end to an AEA. The followi How to connect front-end to your AEA ## Case 1 -The first option is to create a `HTTP Server` connection that handles incoming requests from a REST API. In this scenario, the REST API communicates with the AEA and requests are handled by the `HTTP Server` connection package. The REST API should send CRUD requests to the `HTTP Server` connection (`fetchai/http_server:0.23.2`) which translates these into Envelopes to be consumed by the correct skill. +The first option is to create a `HTTP Server` connection that handles incoming requests from a REST API. In this scenario, the REST API communicates with the AEA and requests are handled by the `HTTP Server` connection package. The REST API should send CRUD requests to the `HTTP Server` connection (`fetchai/http_server:0.23.3`) which translates these into Envelopes to be consumed by the correct skill. ## Case 2 -The second option is to create a front-end comprising a stand-alone `Multiplexer` with a `P2P` connection (`fetchai/p2p_libp2p:0.27.1`). In this scenario the Agent Communication Network can be used to send Envelopes from the AEA to the front-end. \ No newline at end of file +The second option is to create a front-end comprising a stand-alone `Multiplexer` with a `P2P` connection (`fetchai/p2p_libp2p:0.27.2`). In this scenario the Agent Communication Network can be used to send Envelopes from the AEA to the front-end. \ No newline at end of file diff --git a/docs/connection.md b/docs/connection.md index 109ccf71e9..b1fe507bae 100644 --- a/docs/connection.md +++ b/docs/connection.md @@ -36,7 +36,7 @@ The developer needs to implement four public coroutines: - The `receive` coroutine is continuously called by the AEA framework. It either returns `None` or an envelope. The `receive` coroutine must implement the logic of data being received by the agent, and if necessary, its translation into a relevant protocol. -The framework provides a demo `stub` connection which implements an I/O reader and writer to send and receive messages between the agent and a local file. To gain inspiration and become familiar with the structure of connection packages, you may find it useful to check out `fetchai/stub:0.21.1`, `fetchai/http_server:0.23.2` or `fetchai/http_client:0.24.2` connections. The latter two connections are for external clients to connect with an agent, and for the agent to connect with external servers, respectively. +The framework provides a demo `stub` connection which implements an I/O reader and writer to send and receive messages between the agent and a local file. To gain inspiration and become familiar with the structure of connection packages, you may find it useful to check out `fetchai/stub:0.21.1`, `fetchai/http_server:0.23.3` or `fetchai/http_client:0.24.3` connections. The latter two connections are for external clients to connect with an agent, and for the agent to connect with external servers, respectively. ### Primary methods to develop - sync connection interface diff --git a/docs/contract.md b/docs/contract.md index 8bdda15625..477d0cb33f 100644 --- a/docs/contract.md +++ b/docs/contract.md @@ -18,16 +18,16 @@ Interacting with contracts in almost all cases requires network access. Therefor Message flow for contract and ledger interactions -In particular, the `fetchai/ledger:0.21.1` connection can be used to execute contract related logic. The skills communicate with the `fetchai/ledger:0.21.1` connection via the `fetchai/contract_api:1.0.0` protocol. This protocol implements a request-response pattern to serve the four types of methods listed above: +In particular, the `fetchai/ledger:0.21.2` connection can be used to execute contract related logic. The skills communicate with the `fetchai/ledger:0.21.2` connection via the `fetchai/contract_api:1.0.0` protocol. This protocol implements a request-response pattern to serve the four types of methods listed above: -- the `get_deploy_transaction` message is used to request a deploy transaction for a specific contract. For instance, to request a deploy transaction for the deployment of the smart contract wrapped in the `fetchai/erc1155:0.23.1` package, we send the following message to the `fetchai/ledger:0.21.1`: +- the `get_deploy_transaction` message is used to request a deploy transaction for a specific contract. For instance, to request a deploy transaction for the deployment of the smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.2`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.1", + contract_id="fetchai/erc1155:0.23.2", callable="get_deploy_transaction", kwargs=ContractApiMessage.Kwargs( {"deployer_address": self.context.agent_address} @@ -37,22 +37,22 @@ contract_api_msg = ContractApiMessage( Any additional arguments needed by the contract's constructor method should be added to `kwargs`. -This message will be handled by the `fetchai/ledger:0.21.1` connection and then a `raw_transaction` message will be returned with the matching raw transaction. To send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.1` connection using the `fetchai/ledger_api:1.0.0` protocol. For details on how to implement the message handling, see the handlers in the `erc1155_deploy` skill. +This message will be handled by the `fetchai/ledger:0.21.2` connection and then a `raw_transaction` message will be returned with the matching raw transaction. To send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.2` connection using the `fetchai/ledger_api:1.0.0` protocol. For details on how to implement the message handling, see the handlers in the `erc1155_deploy` skill.

CosmWasm based smart contract deployments

-

When using CosmWasm based smart contracts two types of deployment transactions exist. The first transaction stores the code on the chain. The second transaction initialises the code. This way, the same contract code can be initialised many times.
Both the store and init messages use the ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION performative. The ledger API automatically detects the type of transactions based on the provided keyword arguments. In particular, an init transaction requires the keyword arguments code_id (integer), label (string), amount (integer) and init_msg (JSON).
For an example look at the fetchai/erc1155:0.23.1 package. +

When using CosmWasm based smart contracts two types of deployment transactions exist. The first transaction stores the code on the chain. The second transaction initialises the code. This way, the same contract code can be initialised many times.
Both the store and init messages use the ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION performative. The ledger API automatically detects the type of transactions based on the provided keyword arguments. In particular, an init transaction requires the keyword arguments code_id (integer), label (string), amount (integer) and init_msg (JSON).
For an example look at the fetchai/erc1155:0.23.2 package.

-- the `get_raw_transaction` message is used to request any transaction for a specific contract which changes state in the contract. For instance, to request a transaction for the creation of token in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.1` package, we send the following message to the `fetchai/ledger:0.21.1`: +- the `get_raw_transaction` message is used to request any transaction for a specific contract which changes state in the contract. For instance, to request a transaction for the creation of token in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.2`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.1", + contract_id="fetchai/erc1155:0.23.2", contract_address=strategy.contract_address, callable="get_create_batch_transaction", kwargs=ContractApiMessage.Kwargs( @@ -64,16 +64,16 @@ contract_api_msg = ContractApiMessage( ) ``` -This message will be handled by the `fetchai/ledger:0.21.1` connection and then a `raw_transaction` message will be returned with the matching raw transaction. For this to be executed correctly, the `fetchai/erc1155:0.23.1` contract package needs to implement the `get_create_batch_transaction` method with the specified key word arguments (see example in *Deploy your own*, below). Similarly to above, to send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.1` connection using the `fetchai/ledger_api:1.0.0` protocol. +This message will be handled by the `fetchai/ledger:0.21.2` connection and then a `raw_transaction` message will be returned with the matching raw transaction. For this to be executed correctly, the `fetchai/erc1155:0.23.2` contract package needs to implement the `get_create_batch_transaction` method with the specified key word arguments (see example in *Deploy your own*, below). Similarly to above, to send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.2` connection using the `fetchai/ledger_api:1.0.0` protocol. -- the `get_raw_message` message is used to request any contract method call for a specific contract which does not change state in the contract. For instance, to request a call to get a hash from some input data in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.1` package, we send the following message to the `fetchai/ledger:0.21.1`: +- the `get_raw_message` message is used to request any contract method call for a specific contract which does not change state in the contract. For instance, to request a call to get a hash from some input data in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.2`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_RAW_MESSAGE, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.1", + contract_id="fetchai/erc1155:0.23.2", contract_address=strategy.contract_address, callable="get_hash_single", kwargs=ContractApiMessage.Kwargs( @@ -89,17 +89,17 @@ contract_api_msg = ContractApiMessage( ), ) ``` -This message will be handled by the `fetchai/ledger:0.21.1` connection and then a `raw_message` message will be returned with the matching raw message. For this to be executed correctly, the `fetchai/erc1155:0.23.1` contract package needs to implement the `get_hash_single` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.1` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. +This message will be handled by the `fetchai/ledger:0.21.2` connection and then a `raw_message` message will be returned with the matching raw message. For this to be executed correctly, the `fetchai/erc1155:0.23.2` contract package needs to implement the `get_hash_single` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.2` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. -- the `get_state` message is used to request any contract method call to query state in the deployed contract. For instance, to request a call to get the balances in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.1` package, we send the following message to the `fetchai/ledger:0.21.1`: +- the `get_state` message is used to request any contract method call to query state in the deployed contract. For instance, to request a call to get the balances in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.2`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_STATE, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.1", + contract_id="fetchai/erc1155:0.23.2", contract_address=strategy.contract_address, callable="get_balance", kwargs=ContractApiMessage.Kwargs( @@ -107,7 +107,7 @@ contract_api_msg = ContractApiMessage( ), ) ``` -This message will be handled by the `fetchai/ledger:0.21.1` connection and then a `state` message will be returned with the matching state. For this to be executed correctly, the `fetchai/erc1155:0.23.1` contract package needs to implement the `get_balance` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.1` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. +This message will be handled by the `fetchai/ledger:0.21.2` connection and then a `state` message will be returned with the matching state. For this to be executed correctly, the `fetchai/erc1155:0.23.2` contract package needs to implement the `get_balance` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.2` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. ## Developing your own @@ -180,6 +180,6 @@ class MyContract(Contract): tx = cls._try_estimate_gas(ledger_api, tx) return tx ``` -Above, we implement a method to create a transaction, in this case a transaction to create a batch of tokens. The method will be called by the framework, specifically the `fetchai/ledger:0.21.1` connection once it receives a message (see bullet point 2 above). The method first gets the latest transaction nonce of the `deployer_address`, then constructs the contract instance, then uses the instance to build the transaction and finally updates the gas on the transaction. +Above, we implement a method to create a transaction, in this case a transaction to create a batch of tokens. The method will be called by the framework, specifically the `fetchai/ledger:0.21.2` connection once it receives a message (see bullet point 2 above). The method first gets the latest transaction nonce of the `deployer_address`, then constructs the contract instance, then uses the instance to build the transaction and finally updates the gas on the transaction. -It helps to look at existing contract packages, like `fetchai/erc1155:0.23.1`, and skills using them, like `fetchai/erc1155_client:0.11.0` and `fetchai/erc1155_deploy:0.31.2`, for inspiration and guidance. +It helps to look at existing contract packages, like `fetchai/erc1155:0.23.2`, and skills using them, like `fetchai/erc1155_client:0.11.0` and `fetchai/erc1155_deploy:0.31.3`, for inspiration and guidance. diff --git a/docs/core-components-1.md b/docs/core-components-1.md index ccbf040e23..fd9727eb79 100644 --- a/docs/core-components-1.md +++ b/docs/core-components-1.md @@ -34,7 +34,7 @@ An `Envelope` is the core object * `Dialogues`, which define rules over `Message` sequences. -The framework provides one default `Protocol`, called `default` (current version `fetchai/default:1.1.2`). This `Protocol` provides a bare-bones implementation for an AEA `Protocol` which includes a `DefaultMessage` class and associated `DefaultSerializer` and `DefaultDialogue` classes. +The framework provides one default `Protocol`, called `default` (current version `fetchai/default:1.1.3`). This `Protocol` provides a bare-bones implementation for an AEA `Protocol` which includes a `DefaultMessage` class and associated `DefaultSerializer` and `DefaultDialogue` classes. Additional `Protocols`, for new types of interactions, can be added as packages. For more details on `Protocols` you can read the protocol guide. To learn how you can easily automate protocol definition, head to the guide for the protocol generator. diff --git a/docs/erc1155-skills.md b/docs/erc1155-skills.md index fd4a62b234..7e1b841921 100644 --- a/docs/erc1155-skills.md +++ b/docs/erc1155-skills.md @@ -25,7 +25,7 @@ The scope of this guide is demonstrating how you can deploy a smart contract and Fetch the AEA that will deploy the contract: ``` bash -aea fetch fetchai/erc1155_deployer:0.34.1 +aea fetch fetchai/erc1155_deployer:0.34.2 cd erc1155_deployer aea install aea build @@ -39,22 +39,22 @@ Create the AEA that will deploy the contract. ``` bash aea create erc1155_deployer cd erc1155_deployer -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/ledger:0.21.1 -aea add skill fetchai/erc1155_deploy:0.31.2 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/ledger:0.21.2 +aea add skill fetchai/erc1155_deploy:0.31.3 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/contract_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' @@ -95,7 +95,7 @@ aea issue-certificates In another terminal, fetch the client AEA which will receive some tokens from the deployer. ``` bash -aea fetch fetchai/erc1155_client:0.34.1 +aea fetch fetchai/erc1155_client:0.34.2 cd erc1155_client aea install aea build @@ -109,22 +109,22 @@ Create the AEA that will get some tokens from the deployer. ``` bash aea create erc1155_client cd erc1155_client -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/ledger:0.21.1 -aea add skill fetchai/erc1155_client:0.29.2 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/ledger:0.21.2 +aea add skill fetchai/erc1155_client:0.29.3 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/contract_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' @@ -199,7 +199,7 @@ aea run Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. -Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.1 -u public_uri` to retrieve the address. The output will be something like `/dns4/127.0.0.1/tcp/9000/p2p/16Uiu2HAm2JPsUX1Su59YVDXJQizYkNSe8JCusqRpLeeTbvY76fE5`. +Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.2 -u public_uri` to retrieve the address. The output will be something like `/dns4/127.0.0.1/tcp/9000/p2p/16Uiu2HAm2JPsUX1Su59YVDXJQizYkNSe8JCusqRpLeeTbvY76fE5`. This is the entry peer address for the local agent communication network created by the deployer. diff --git a/docs/generic-skills-step-by-step.md b/docs/generic-skills-step-by-step.md index dc9fb661a8..eaa982b83d 100644 --- a/docs/generic-skills-step-by-step.md +++ b/docs/generic-skills-step-by-step.md @@ -11,16 +11,16 @@ Follow the Preliminaries and Preliminaries and =1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea install aea build @@ -96,7 +96,7 @@ aea build Then, in another terminal fetch the buyer AEA: ``` bash -aea fetch fetchai/generic_buyer:0.30.1 --alias my_buyer_aea +aea fetch fetchai/generic_buyer:0.30.2 --alias my_buyer_aea cd my_buyer_aea aea install aea build @@ -109,19 +109,19 @@ The following steps create the buyer from scratch: ``` bash aea create my_buyer_aea cd my_buyer_aea -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/ledger:0.21.1 -aea add skill fetchai/generic_buyer:0.27.2 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/ledger:0.21.2 +aea add skill fetchai/generic_buyer:0.27.3 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea install aea build @@ -252,7 +252,7 @@ First, run the seller AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.1 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.2 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the seller. Then, configure the buyer to connect to this same local ACN by running the following command in the buyer terminal, replacing `SOME_ADDRESS` with the value you noted above: diff --git a/docs/gym-skill.md b/docs/gym-skill.md index edfd7d9ba8..91c149f710 100644 --- a/docs/gym-skill.md +++ b/docs/gym-skill.md @@ -1,4 +1,4 @@ -The AEA gym skill demonstrates how a custom Reinforcement Learning agent, that uses OpenAI's gym library, may be embedded into an AEA skill and connection. +The AEA gym skill demonstrates how a custom Reinforcement Learning agent, that uses OpenAI's gym library, may be embedded into an AEA skill and connection. ### Discussion @@ -32,7 +32,7 @@ pip install numpy gym First, fetch the gym AEA: ``` bash -aea fetch fetchai/gym_aea:0.26.1 --alias my_gym_aea +aea fetch fetchai/gym_aea:0.26.2 --alias my_gym_aea cd my_gym_aea aea install ``` @@ -49,12 +49,12 @@ cd my_gym_aea ### Add the gym skill ``` bash -aea add skill fetchai/gym:0.21.2 +aea add skill fetchai/gym:0.21.3 ``` ### Set gym connection as default ``` bash -aea config set agent.default_connection fetchai/gym:0.20.2 +aea config set agent.default_connection fetchai/gym:0.20.3 ``` ### Install the skill dependencies diff --git a/docs/http-connection-and-skill.md b/docs/http-connection-and-skill.md index 44d9f55075..9127a0e9d1 100644 --- a/docs/http-connection-and-skill.md +++ b/docs/http-connection-and-skill.md @@ -8,7 +8,7 @@ The HTTP server connection allows you to run a server inside the connection itse ## HTTP Client -The `fetchai/simple_data_request:0.14.2` skill demonstrates a simple use case of the HTTP Client connection. +The `fetchai/simple_data_request:0.14.3` skill demonstrates a simple use case of the HTTP Client connection. The `HttpRequestBehaviour` in `behaviours.py` periodically sends HTTP envelops to the HTTP client connection. Its `act()` method, periodically called, simply calls `_generate_http_request` which contains the logic for enqueueing an HTTP request envelop. @@ -26,13 +26,13 @@ cd my_aea Add the http server connection package: ``` bash -aea add connection fetchai/http_server:0.23.2 +aea add connection fetchai/http_server:0.23.3 ``` Update the default connection: ``` bash -aea config set agent.default_connection fetchai/http_server:0.23.2 +aea config set agent.default_connection fetchai/http_server:0.23.3 ``` Modify the `api_spec_path`: @@ -317,7 +317,7 @@ models: Run the fingerprinter (note, you will have to replace the author name with your author handle): ``` bash -aea fingerprint skill fetchai/http_echo:0.21.2 +aea fingerprint skill fetchai/http_echo:0.21.3 ``` diff --git a/docs/language-agnostic-definition.md b/docs/language-agnostic-definition.md index 1f3664c17f..aa85e1ad4f 100644 --- a/docs/language-agnostic-definition.md +++ b/docs/language-agnostic-definition.md @@ -27,7 +27,7 @@ The format for the above fields are as follows:
  • to and sender: an address derived from the private key of a secp256k1-compatible elliptic curve
  • -
  • protocol_id: this must match a defined regular expression (see below) +
  • protocol_id: this must match a defined regular expression (see below)
  • message: a bytes string representing a serialized message in the specified protocol
  • URI: follows this syntax
@@ -71,7 +71,7 @@ message Envelope{
  • It MUST implement protocols according to their specification (see here for details). -
  • It SHOULD implement the fetchai/default:1.1.2 protocol which satisfies the following protobuf schema: +
  • It SHOULD implement the fetchai/default:1.1.3 protocol which satisfies the following protobuf schema: ``` proto syntax = "proto3"; @@ -121,7 +121,7 @@ message DefaultMessage{
  • It MUST have an identity in the form of, at a minimum, an address derived from a public key and its associated private key (where the elliptic curve must be of type SECP256k1).
  • -
  • It SHOULD implement handling of errors using the fetchai/default:1.1.2 protocol. The protobuf schema is given above. +
  • It SHOULD implement handling of errors using the fetchai/default:1.1.3 protocol. The protobuf schema is given above.
  • It MUST implement the following principles when handling messages:
      diff --git a/docs/ledger-integration.md b/docs/ledger-integration.md index f33975d8c2..755c096077 100644 --- a/docs/ledger-integration.md +++ b/docs/ledger-integration.md @@ -146,7 +146,7 @@ Stargate World is our stable, public testnet for the Fetch Ledger v2. As such, m You can access more details on docs section. -The configurations can be specified for the `fetchai/ledger:0.21.1` connection. +The configurations can be specified for the `fetchai/ledger:0.21.2` connection. ## CosmWasm supporting chains diff --git a/docs/logging.md b/docs/logging.md index 039c24dbf9..35ac27615f 100644 --- a/docs/logging.md +++ b/docs/logging.md @@ -25,9 +25,9 @@ connections: - fetchai/stub:0.21.1 contracts: [] protocols: -- fetchai/default:1.1.2 +- fetchai/default:1.1.3 skills: -- fetchai/error:0.18.2 +- fetchai/error:0.18.3 default_connection: fetchai/stub:0.21.1 default_ledger: fetchai required_ledgers: diff --git a/docs/ml-skills.md b/docs/ml-skills.md index 3312a4b883..a69f5cf55f 100644 --- a/docs/ml-skills.md +++ b/docs/ml-skills.md @@ -106,7 +106,7 @@ Follow this approach when using the `aea` CLI. First, fetch the data provider AEA: ``` bash -aea fetch fetchai/ml_data_provider:0.32.1 +aea fetch fetchai/ml_data_provider:0.32.2 cd ml_data_provider aea install aea build @@ -119,19 +119,19 @@ The following steps create the data provider from scratch: ``` bash aea create ml_data_provider cd ml_data_provider -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/ledger:0.21.1 -aea add skill fetchai/ml_data_provider:0.27.2 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/ledger:0.21.2 +aea add skill fetchai/ml_data_provider:0.27.3 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea install aea build @@ -144,7 +144,7 @@ aea build Then, fetch the model trainer AEA: ``` bash -aea fetch fetchai/ml_model_trainer:0.33.1 +aea fetch fetchai/ml_model_trainer:0.33.2 cd ml_model_trainer aea install aea build @@ -157,19 +157,19 @@ The following steps create the model trainer from scratch: ``` bash aea create ml_model_trainer cd ml_model_trainer -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/ledger:0.21.1 -aea add skill fetchai/ml_train:0.29.2 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/ledger:0.21.2 +aea add skill fetchai/ml_train:0.29.3 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.2": "fetchai/ledger:0.21.1", - "fetchai/oef_search:1.1.2": "fetchai/soef:0.27.2" + "fetchai/ledger_api:1.1.3": "fetchai/ledger:0.21.2", + "fetchai/oef_search:1.1.3": "fetchai/soef:0.27.3" }' aea install aea build @@ -234,7 +234,7 @@ First, run the data provider AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.1 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.2 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the ML data provider.
  • 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 SPdCDsya=fmsS%0%$^QY=z$_{N diff --git a/packages/fetchai/contracts/oracle_client/contract.yaml b/packages/fetchai/contracts/oracle_client/contract.yaml index 9f79d1e2ab..c71e3b86ca 100644 --- a/packages/fetchai/contracts/oracle_client/contract.yaml +++ b/packages/fetchai/contracts/oracle_client/contract.yaml @@ -9,7 +9,7 @@ fingerprint: README.md: QmUBEziYn29b61higYFNsSxtnKcSNq7CRFpsQ68WjmTCcN __init__.py: QmZ3tqWJFLxkJapkC8T2Wd2Jos1CPd5LnrycCs2bGPyLKb build/FetchOracleTestClient.json: QmbqwQiYs8Tb2DKB1BDiigqmXxVt1BmfM5RVXHwkvysdqf - build/oracle_client.wasm: Qma3VejBXgP6ssR2Pv8uYqLDfuRXAMpC7uYRhCuyFqxbGB + build/oracle_client.wasm: QmXE7H9JqjJFNEzjUiMv5Sv6NyaMqB4eYDwSVym66L52xU contract.py: QmQdMniiGUPNwZCGQhvTrUxxh17CmFFM7Gpq3X46TtmEVv contracts/FetchOracleTestClient.sol: QmWpUJ4aBrNreiyuXe6EgfSfE7T7hWz3xHDdT7fFye3WCG fingerprint_ignore_patterns: [] diff --git a/packages/hashes.csv b/packages/hashes.csv index b58b664c63..d2d00a44f6 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -55,8 +55,8 @@ fetchai/connections/webhook,QmRdL1XPRVf6KSHrAPDeAhut15LPDoN87dvpNLvpHL6EC7 fetchai/connections/yoti,QmNu6tR2j4ckteG8SREzMw559s5rQhPXEMQwM6CtvFtggb fetchai/contracts/erc1155,Qme5dDrqaKYJkDEJ5ophkFtZuXkiB8BvpU1AB5RvBt2dxG fetchai/contracts/fet_erc20,QmSjyBQzzxHTwydFDhEQgqoPBynP9VrDuqeTr6b6ARxkf7 -fetchai/contracts/oracle,QmZXQpBT28vwiy7fcwDZ5gz5LW9hFB5vNruaqzaKa6rSNc -fetchai/contracts/oracle_client,QmNmYzD6bWfKwoinr41rwAJKVGHgjNbgWzhE5rBtU2x8ga +fetchai/contracts/oracle,QmPmGkrathfNmMWHt2TPXbKp1s2MPq2oBysLtb5MM6Rx3Q +fetchai/contracts/oracle_client,QmapJ3BWEWwimMWXtk1x8DNgCVRjcECd9FPkyCw1vnJGsX fetchai/contracts/scaffold,QmQcsrXKtEkPsxnzxJgDVopq6Su2fGAzJ1Vzs2DYqkWjWt fetchai/contracts/staking_erc20,QmTqEBBh349LYb8atTAZP6MGQWFjxBLGBXTJwh62Sb555R fetchai/protocols/acn,QmR8tTn2zAWynfpN4ZiZkdC1yaPatCdo6nbQJzbddE2Syj From 3e5cf65264e7614c65240d15644c6fae69f9676e Mon Sep 17 00:00:00 2001 From: Yuri Turchenkov Date: Fri, 23 Sep 2022 18:03:51 +0300 Subject: [PATCH 2/7] fix: golang linting and ci checks (#2775) --- .github/workflows/workflow.yml | 12 ++-- .../libp2p_node/dht/dhtpeer/dhtpeer_test.go | 59 +++++++++---------- .../connections/p2p_libp2p/connection.yaml | 2 +- .../libp2p_node/dht/dhtpeer/dhtpeer_test.go | 59 +++++++++---------- packages/hashes.csv | 2 +- 5 files changed, 66 insertions(+), 68 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index e83727fd4d..c6e220240a 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -86,14 +86,14 @@ jobs: env: ACTIONS_ALLOW_UNSECURE_COMMANDS: true with: - version: v1.45.2 + version: v1.48.0 working-directory: libs/go/libp2p_node - name: Golang code style check (aealite) uses: golangci/golangci-lint-action@v3.1.0 env: ACTIONS_ALLOW_UNSECURE_COMMANDS: true with: - version: v1.45.2 + version: v1.48.0 working-directory: libs/go/aealite common_checks_3: @@ -510,7 +510,7 @@ jobs: python-version: ${{ matrix.python-version }} - uses: actions/setup-go@v3 with: - go-version: '^1.14.0' + go-version: '^1.17.0' - if: matrix.os == 'macos-latest' working-directory: ./libs/go/libp2p_node run: | @@ -531,10 +531,10 @@ jobs: name: libp2p_coverage runs-on: ubuntu-latest steps: - - name: Set up Go 1.14 + - name: Set up Go 1.17 uses: actions/setup-go@v1 with: - go-version: 1.14 + go-version: 1.17 id: go - name: Check out code into the Go module directory uses: actions/checkout@v1 @@ -573,7 +573,7 @@ jobs: python-version: 3.7 - uses: actions/setup-go@v3 with: - go-version: '^1.14.0' + go-version: '^1.17.0' - name: Install dependencies (ubuntu-latest) run: | sudo apt-get update --fix-missing diff --git a/libs/go/libp2p_node/dht/dhtpeer/dhtpeer_test.go b/libs/go/libp2p_node/dht/dhtpeer/dhtpeer_test.go index a1b86ccd86..deb4d4be21 100644 --- a/libs/go/libp2p_node/dht/dhtpeer/dhtpeer_test.go +++ b/libs/go/libp2p_node/dht/dhtpeer/dhtpeer_test.go @@ -25,7 +25,6 @@ import ( "crypto/ecdsa" "crypto/elliptic" "crypto/tls" - "fmt" "log" "math/rand" "net" @@ -46,7 +45,7 @@ import ( ) /* - DHTPeer and DHT network routing tests + DHTPeer and DHT network routing tests */ const ( @@ -115,7 +114,7 @@ var ( ) /* - DHT Network: DHTPeer-to-DHTPeer + DHT Network: DHTPeer-to-DHTPeer */ // TestRoutingDHTPeerToSelf dht peer with agent attached @@ -420,7 +419,7 @@ func TestRoutingDHTPeerToDHTPeerFullConnectivity(t *testing.T) { } /* - DHT network: DHTClient + DHT network: DHTClient */ // TestRoutingDHTClientToDHTPeer dht client to its bootstrap peer @@ -654,7 +653,7 @@ func TestRoutingDHTClientToDHTClientIndirect(t *testing.T) { } /* - DHT network: DelegateClient + DHT network: DelegateClient */ // TestRoutingDelegateClientToDHTPeer @@ -1282,19 +1281,19 @@ func TestRoutingDelegateClientToDHTClientIndirect(t *testing.T) { } /* - DHT network: all-to-all + DHT network: all-to-all */ /* - Network topology - - DHTClient ------- -- DelegateClient - | | - DHTClient ------- -- DelegateClient - | | - |-- DHTPeer --- DHTPeeer -- DHTPeer --- DHTPeer --| - | | - DelegateClient -- ------- DHTClient + Network topology + + DHTClient ------- -- DelegateClient + | | + DHTClient ------- -- DelegateClient + | | + |-- DHTPeer --- DHTPeeer -- DHTPeer --- DHTPeer --| + | | + DelegateClient -- ------- DHTClient */ // TestRoutingAlltoAll @@ -1623,9 +1622,9 @@ func TestRoutingAllToAll(t *testing.T) { } /* - Helpers - TOFIX(LR) how to share test helpers between packages tests - without having circular dependencies + Helpers + TOFIX(LR) how to share test helpers between packages tests + without having circular dependencies */ func randSeq(n int) string { @@ -1937,7 +1936,7 @@ func expectEnvelopeOrdered(t *testing.T, rx chan *aea.Envelope, counter int) { } message, _ := strconv.Atoi(string(envel.Message)) if message != counter { - log.Fatal(fmt.Sprintf("Expected counter %d received counter %d", counter, message)) + log.Fatalf("Expected counter %d received counter %d", counter, message) } case <-timeout: t.Error("Failed to receive envelope before timeout") @@ -2009,17 +2008,17 @@ func TestEthereumCrypto(t *testing.T) { } /* - ethSig, err := secp256k1.Sign(hashedPublicKey, hexutil.MustDecode(privateKey)) - if err != nil { - t.Error(err.Error()) - } - println(hexutil.Encode(ethSig)) - hash := sha3.NewLegacyKeccak256() - _, err = hash.Write([]byte(publicKey)) - if err != nil { - t.Error(err.Error()) - } - sha3KeccakHash := hash.Sum(nil) + ethSig, err := secp256k1.Sign(hashedPublicKey, hexutil.MustDecode(privateKey)) + if err != nil { + t.Error(err.Error()) + } + println(hexutil.Encode(ethSig)) + hash := sha3.NewLegacyKeccak256() + _, err = hash.Write([]byte(publicKey)) + if err != nil { + t.Error(err.Error()) + } + sha3KeccakHash := hash.Sum(nil) */ valid, err := utils.VerifyEthereumSignatureETH([]byte(publicKey), publicKeySignature, publicKey) diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index 883a1a2eb4..aa7b12c7cc 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -33,7 +33,7 @@ fingerprint: libp2p_node/dht/dhtnode/utils.go: QmUabTTyRXixEEfksTzSNiHsqF9GcQ9qXpfwVY3VNsXBYK libp2p_node/dht/dhtpeer/benchmarks_test.go: QmeXZbWBxwGY33oRRogFPv61qJu28ufmoprGkmZVrQ9kEV libp2p_node/dht/dhtpeer/dhtpeer.go: Qme7jvbR5JLnxvnRxaPxZ76Pq2Pece1C95ZkJxoY9a4YwE - libp2p_node/dht/dhtpeer/dhtpeer_test.go: QmT9SyDFBgDQKPLxtNn2qw3kwLzctCh4MrQWJ1HnERMPu9 + libp2p_node/dht/dhtpeer/dhtpeer_test.go: QmegkzZpi9vpFHTDxrSUKFDWQhBviL63AYMRNgcHpe5wcu libp2p_node/dht/dhtpeer/mailbox.go: QmSgWxkVVQQSrMux8WNvvLbWRfZCb7ZChr6PjumyoW5vdT libp2p_node/dht/dhtpeer/notifee.go: Qmes2KPbWecKZu6Bh3mThEsPs74W3LwD6y3Mzrai1fV7zi libp2p_node/dht/dhtpeer/options.go: QmXiQ1iKHWCGZLKu2YTRkkLkJ7opR7LzsWxiwktKYHc3Va diff --git a/packages/fetchai/connections/p2p_libp2p/libp2p_node/dht/dhtpeer/dhtpeer_test.go b/packages/fetchai/connections/p2p_libp2p/libp2p_node/dht/dhtpeer/dhtpeer_test.go index a1b86ccd86..deb4d4be21 100644 --- a/packages/fetchai/connections/p2p_libp2p/libp2p_node/dht/dhtpeer/dhtpeer_test.go +++ b/packages/fetchai/connections/p2p_libp2p/libp2p_node/dht/dhtpeer/dhtpeer_test.go @@ -25,7 +25,6 @@ import ( "crypto/ecdsa" "crypto/elliptic" "crypto/tls" - "fmt" "log" "math/rand" "net" @@ -46,7 +45,7 @@ import ( ) /* - DHTPeer and DHT network routing tests + DHTPeer and DHT network routing tests */ const ( @@ -115,7 +114,7 @@ var ( ) /* - DHT Network: DHTPeer-to-DHTPeer + DHT Network: DHTPeer-to-DHTPeer */ // TestRoutingDHTPeerToSelf dht peer with agent attached @@ -420,7 +419,7 @@ func TestRoutingDHTPeerToDHTPeerFullConnectivity(t *testing.T) { } /* - DHT network: DHTClient + DHT network: DHTClient */ // TestRoutingDHTClientToDHTPeer dht client to its bootstrap peer @@ -654,7 +653,7 @@ func TestRoutingDHTClientToDHTClientIndirect(t *testing.T) { } /* - DHT network: DelegateClient + DHT network: DelegateClient */ // TestRoutingDelegateClientToDHTPeer @@ -1282,19 +1281,19 @@ func TestRoutingDelegateClientToDHTClientIndirect(t *testing.T) { } /* - DHT network: all-to-all + DHT network: all-to-all */ /* - Network topology - - DHTClient ------- -- DelegateClient - | | - DHTClient ------- -- DelegateClient - | | - |-- DHTPeer --- DHTPeeer -- DHTPeer --- DHTPeer --| - | | - DelegateClient -- ------- DHTClient + Network topology + + DHTClient ------- -- DelegateClient + | | + DHTClient ------- -- DelegateClient + | | + |-- DHTPeer --- DHTPeeer -- DHTPeer --- DHTPeer --| + | | + DelegateClient -- ------- DHTClient */ // TestRoutingAlltoAll @@ -1623,9 +1622,9 @@ func TestRoutingAllToAll(t *testing.T) { } /* - Helpers - TOFIX(LR) how to share test helpers between packages tests - without having circular dependencies + Helpers + TOFIX(LR) how to share test helpers between packages tests + without having circular dependencies */ func randSeq(n int) string { @@ -1937,7 +1936,7 @@ func expectEnvelopeOrdered(t *testing.T, rx chan *aea.Envelope, counter int) { } message, _ := strconv.Atoi(string(envel.Message)) if message != counter { - log.Fatal(fmt.Sprintf("Expected counter %d received counter %d", counter, message)) + log.Fatalf("Expected counter %d received counter %d", counter, message) } case <-timeout: t.Error("Failed to receive envelope before timeout") @@ -2009,17 +2008,17 @@ func TestEthereumCrypto(t *testing.T) { } /* - ethSig, err := secp256k1.Sign(hashedPublicKey, hexutil.MustDecode(privateKey)) - if err != nil { - t.Error(err.Error()) - } - println(hexutil.Encode(ethSig)) - hash := sha3.NewLegacyKeccak256() - _, err = hash.Write([]byte(publicKey)) - if err != nil { - t.Error(err.Error()) - } - sha3KeccakHash := hash.Sum(nil) + ethSig, err := secp256k1.Sign(hashedPublicKey, hexutil.MustDecode(privateKey)) + if err != nil { + t.Error(err.Error()) + } + println(hexutil.Encode(ethSig)) + hash := sha3.NewLegacyKeccak256() + _, err = hash.Write([]byte(publicKey)) + if err != nil { + t.Error(err.Error()) + } + sha3KeccakHash := hash.Sum(nil) */ valid, err := utils.VerifyEthereumSignatureETH([]byte(publicKey), publicKeySignature, publicKey) diff --git a/packages/hashes.csv b/packages/hashes.csv index d2d00a44f6..3b723114dc 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -42,7 +42,7 @@ fetchai/connections/http_server,QmUKYzJ98L14QNZR98iCamWo5fre5fUKortfFsXGeJ7ExM fetchai/connections/ledger,Qme46D3DjGTAyirQzdki1oqtQ1WPkqz15FonnVjWBmBoVN fetchai/connections/local,QmWgiNXeK5EA8HhAP6rkKA3BHMdFuD1BF9o3AY4vaD2DkX fetchai/connections/oef,QmUWY1DVmmj6zhUnSNCcPcGeTGidjKutRB6fPoVr5nVYYR -fetchai/connections/p2p_libp2p,QmUf28kGiK3C4EAwNdyaqGExnjPePREqfvcRf9ta1HmMVZ +fetchai/connections/p2p_libp2p,QmRKVuLzbE5BnGqWkyTtyyeeZz75iWTXge1uPfQ8pKu6gX fetchai/connections/p2p_libp2p_client,QmQhVAGXKMrHTLP4FZSqgpZ99QUzD14S6oiiYij4x7Z3gj fetchai/connections/p2p_libp2p_mailbox,QmPHzGp76fxD5N2op2NrAobX9g9GHx25XRBVMG2AqHgq8X fetchai/connections/p2p_stub,QmSbe7XWCrPuiUNYfjug1axMbrHjHbfV5eLueLNtwrv1DM From 43997da761c5d0d06fd989e58573159bd10d896d Mon Sep 17 00:00:00 2001 From: Yuri Turchenkov Date: Mon, 17 Oct 2022 13:17:20 +0300 Subject: [PATCH 3/7] Feature/poetry deps management and deps update: black,click,mypy (#2768) * ripemd160 fix * poetry dependencies management * web3 version fix: typo * poetry setup fixes * chore: black and mypy updated (#2785) Co-authored-by: S Ali Hosseini <38721653+5A11@users.noreply.github.com> --- .github/workflows/workflow.yml | 84 +- Makefile | 26 +- Pipfile | 82 - aea/aea.py | 8 +- aea/aea_builder.py | 32 +- aea/agent_loop.py | 5 +- aea/cli/add.py | 5 +- aea/cli/add_key.py | 5 +- aea/cli/build.py | 3 +- aea/cli/config.py | 5 +- aea/cli/delete.py | 4 +- aea/cli/fetch.py | 5 +- aea/cli/fingerprint.py | 4 +- aea/cli/generate_key.py | 4 +- aea/cli/get_multiaddress.py | 24 +- aea/cli/get_wealth.py | 2 +- aea/cli/interact.py | 15 +- aea/cli/publish.py | 5 +- aea/cli/push.py | 5 +- aea/cli/registry/fetch.py | 3 +- aea/cli/remove.py | 4 +- aea/cli/remove_key.py | 4 +- aea/cli/transfer.py | 10 +- aea/cli/utils/click_utils.py | 6 +- aea/cli/utils/decorators.py | 5 +- aea/cli/utils/package_utils.py | 26 +- aea/components/base.py | 2 + aea/components/loader.py | 4 +- aea/configurations/base.py | 48 +- aea/configurations/data_types.py | 15 +- aea/configurations/manager.py | 8 +- aea/configurations/utils.py | 23 +- aea/connections/base.py | 3 +- aea/context/base.py | 2 +- aea/crypto/base.py | 6 +- aea/crypto/helpers.py | 17 +- aea/crypto/ledger_apis.py | 7 +- aea/crypto/registries/base.py | 2 +- aea/decision_maker/base.py | 5 +- aea/decision_maker/default.py | 13 +- aea/decision_maker/gop.py | 11 +- aea/decision_maker/scaffold.py | 5 +- aea/helpers/async_utils.py | 16 +- aea/helpers/base.py | 18 +- aea/helpers/constants.py | 8 +- aea/helpers/file_io.py | 3 +- aea/helpers/file_lock.py | 2 - aea/helpers/http_requests.py | 4 +- aea/helpers/install_dependency.py | 4 +- aea/helpers/ipfs/pb/unixfs_pb2.py | 4 +- aea/helpers/logging.py | 4 +- aea/helpers/pipe.py | 3 +- aea/helpers/profiling.py | 5 +- aea/helpers/search/models.py | 28 +- aea/helpers/search/models_pb2.py | 16 +- aea/helpers/transaction/base.py | 56 +- aea/launcher.py | 2 +- aea/mail/base.py | 9 +- aea/mail/base_pb2.py | 4 +- aea/manager/manager.py | 26 +- aea/manager/project.py | 5 +- aea/multiplexer.py | 13 +- aea/protocols/base.py | 5 +- aea/protocols/dialogue/base.py | 18 +- aea/protocols/generator/base.py | 33 +- aea/protocols/generator/common.py | 6 +- .../generator/extract_specification.py | 6 +- aea/protocols/generator/validate.py | 6 +- aea/registries/filter.py | 3 +- aea/runner.py | 2 +- aea/skills/base.py | 6 +- aea/skills/behaviours.py | 2 +- aea/test_tools/click_testing.py | 8 +- aea/test_tools/test_cases.py | 17 +- aea/test_tools/test_contract.py | 9 +- aea/test_tools/test_skill.py | 13 +- .../checks/check_agent_construction_time.py | 6 +- benchmark/checks/check_decision_maker.py | 13 +- .../checks/check_dialogues_memory_usage.py | 6 +- benchmark/checks/check_mem_usage.py | 6 +- .../checks/check_messages_memory_usage.py | 8 +- benchmark/checks/check_multiagent.py | 8 +- benchmark/checks/check_proactive.py | 6 +- benchmark/checks/check_reactive.py | 16 +- benchmark/checks/utils.py | 16 +- benchmark/framework/aea_test_wrapper.py | 5 +- docs/cli-vs-programmatic-aeas.md | 24 +- docs/generic-skills-step-by-step.md | 63 +- docs/http-connection-and-skill.md | 4 +- examples/gym_ex/gyms/env.py | 2 +- examples/gym_ex/proxy/env.py | 26 +- examples/gym_ex/rl/agent.py | 2 +- install_packages.py | 61 + .../fetchai/connections/gym/connection.py | 6 +- .../fetchai/connections/gym/connection.yaml | 2 +- .../connections/http_client/connection.py | 15 +- .../connections/http_client/connection.yaml | 2 +- .../connections/http_server/connection.py | 11 +- .../connections/http_server/connection.yaml | 2 +- packages/fetchai/connections/ledger/base.py | 6 +- .../connections/ledger/connection.yaml | 6 +- .../connections/ledger/contract_dispatcher.py | 11 +- .../connections/ledger/ledger_dispatcher.py | 31 +- .../fetchai/connections/local/connection.py | 24 +- .../fetchai/connections/local/connection.yaml | 2 +- .../fetchai/connections/oef/connection.py | 20 +- .../fetchai/connections/oef/connection.yaml | 2 +- .../p2p_libp2p/check_dependencies.py | 3 +- .../connections/p2p_libp2p/connection.yaml | 2 +- .../p2p_libp2p_client/connection.py | 8 +- .../p2p_libp2p_client/connection.yaml | 2 +- .../p2p_libp2p_mailbox/connection.py | 11 +- .../p2p_libp2p_mailbox/connection.yaml | 2 +- .../fetchai/connections/soef/connection.py | 18 +- .../fetchai/connections/soef/connection.yaml | 2 +- .../fetchai/connections/webhook/connection.py | 4 +- .../connections/webhook/connection.yaml | 2 +- .../fetchai/connections/yoti/connection.py | 4 +- .../fetchai/connections/yoti/connection.yaml | 2 +- .../fetchai/contracts/erc1155/contract.py | 4 +- .../fetchai/contracts/erc1155/contract.yaml | 2 +- .../contracts/staking_erc20/contract.py | 5 +- .../contracts/staking_erc20/contract.yaml | 2 +- .../contract_api/contract_api_pb2.py | 24 +- .../protocols/contract_api/custom_types.py | 3 +- .../protocols/contract_api/protocol.yaml | 4 +- .../protocols/cosm_trade/cosm_trade_pb2.py | 12 +- .../protocols/cosm_trade/protocol.yaml | 2 +- .../fetchai/protocols/default/default_pb2.py | 6 +- .../fetchai/protocols/default/protocol.yaml | 2 +- packages/fetchai/protocols/fipa/fipa_pb2.py | 18 +- packages/fetchai/protocols/fipa/protocol.yaml | 2 +- packages/fetchai/protocols/gym/gym_pb2.py | 6 +- packages/fetchai/protocols/gym/protocol.yaml | 2 +- .../protocols/ledger_api/custom_types.py | 3 +- .../protocols/ledger_api/ledger_api_pb2.py | 30 +- .../protocols/ledger_api/protocol.yaml | 4 +- .../protocols/oef_search/oef_search_pb2.py | 18 +- .../protocols/oef_search/protocol.yaml | 2 +- .../protocols/prometheus/prometheus_pb2.py | 12 +- .../protocols/prometheus/protocol.yaml | 2 +- .../fetchai/protocols/register/protocol.yaml | 2 +- .../protocols/register/register_pb2.py | 18 +- .../protocols/state_update/protocol.yaml | 2 +- .../state_update/state_update_pb2.py | 48 +- packages/fetchai/protocols/tac/protocol.yaml | 2 +- packages/fetchai/protocols/tac/tac_pb2.py | 98 +- packages/fetchai/protocols/yoti/protocol.yaml | 2 +- packages/fetchai/protocols/yoti/yoti_pb2.py | 6 +- .../advanced_data_request/behaviours.py | 6 +- .../skills/advanced_data_request/handlers.py | 6 +- .../skills/advanced_data_request/skill.yaml | 4 +- .../fetchai/skills/aries_alice/handlers.py | 14 +- .../fetchai/skills/aries_alice/skill.yaml | 4 +- .../fetchai/skills/aries_alice/strategy.py | 24 +- .../fetchai/skills/aries_faber/handlers.py | 3 +- .../fetchai/skills/aries_faber/skill.yaml | 4 +- .../fetchai/skills/aries_faber/strategy.py | 9 +- .../confirmation_aw1/registration_db.py | 4 +- .../skills/confirmation_aw1/skill.yaml | 4 +- .../skills/confirmation_aw1/strategy.py | 3 +- .../confirmation_aw2/registration_db.py | 5 +- .../skills/confirmation_aw2/skill.yaml | 2 +- .../confirmation_aw3/registration_db.py | 5 +- .../skills/confirmation_aw3/skill.yaml | 2 +- .../fetchai/skills/erc1155_client/handlers.py | 21 +- .../fetchai/skills/erc1155_client/skill.yaml | 4 +- .../fetchai/skills/erc1155_client/strategy.py | 4 +- .../skills/erc1155_deploy/behaviours.py | 5 +- .../fetchai/skills/erc1155_deploy/handlers.py | 15 +- .../fetchai/skills/erc1155_deploy/skill.yaml | 6 +- .../fetchai/skills/erc1155_deploy/strategy.py | 18 +- .../fetchai/skills/fetch_block/handlers.py | 3 +- .../fetchai/skills/fetch_block/skill.yaml | 2 +- .../fetchai/skills/generic_buyer/handlers.py | 18 +- .../fetchai/skills/generic_buyer/skill.yaml | 4 +- .../fetchai/skills/generic_buyer/strategy.py | 4 +- .../fetchai/skills/generic_seller/handlers.py | 21 +- .../fetchai/skills/generic_seller/skill.yaml | 4 +- .../fetchai/skills/generic_seller/strategy.py | 18 +- packages/fetchai/skills/gym/helpers.py | 6 +- packages/fetchai/skills/gym/skill.yaml | 2 +- packages/fetchai/skills/http_echo/handlers.py | 4 +- packages/fetchai/skills/http_echo/skill.yaml | 2 +- .../skills/ml_data_provider/handlers.py | 9 +- .../skills/ml_data_provider/skill.yaml | 4 +- .../skills/ml_data_provider/strategy.py | 18 +- packages/fetchai/skills/ml_train/handlers.py | 12 +- packages/fetchai/skills/ml_train/skill.yaml | 4 +- packages/fetchai/skills/ml_train/strategy.py | 4 +- .../skills/simple_aggregation/behaviours.py | 5 +- .../skills/simple_aggregation/handlers.py | 9 +- .../skills/simple_aggregation/skill.yaml | 6 +- .../skills/simple_aggregation/strategy.py | 19 +- .../skills/simple_oracle/behaviours.py | 13 +- .../fetchai/skills/simple_oracle/handlers.py | 12 +- .../fetchai/skills/simple_oracle/skill.yaml | 4 +- .../skills/simple_oracle_client/behaviours.py | 5 +- .../skills/simple_oracle_client/handlers.py | 9 +- .../skills/simple_oracle_client/skill.yaml | 4 +- .../simple_service_registration/handlers.py | 9 +- .../simple_service_registration/skill.yaml | 4 +- .../simple_service_registration/strategy.py | 15 +- .../skills/simple_service_search/handlers.py | 3 +- .../skills/simple_service_search/skill.yaml | 2 +- packages/fetchai/skills/tac_control/game.py | 3 +- .../fetchai/skills/tac_control/handlers.py | 13 +- .../fetchai/skills/tac_control/helpers.py | 9 +- .../fetchai/skills/tac_control/skill.yaml | 6 +- .../skills/tac_control_contract/behaviours.py | 8 +- .../skills/tac_control_contract/handlers.py | 9 +- .../skills/tac_control_contract/helpers.py | 9 +- .../skills/tac_control_contract/skill.yaml | 6 +- .../skills/tac_negotiation/handlers.py | 48 +- .../fetchai/skills/tac_negotiation/helpers.py | 5 +- .../fetchai/skills/tac_negotiation/skill.yaml | 8 +- .../skills/tac_negotiation/strategy.py | 33 +- .../skills/tac_negotiation/transactions.py | 14 +- .../fetchai/skills/tac_participation/game.py | 4 +- .../skills/tac_participation/handlers.py | 3 +- .../skills/tac_participation/skill.yaml | 4 +- packages/hashes.csv | 100 +- plugins/aea-cli-ipfs/aea_cli_ipfs/core.py | 12 +- .../aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py | 4 +- plugins/aea-cli-ipfs/setup.py | 2 +- .../aea_ledger_cosmos/cosmos.py | 34 +- .../aea_ledger_ethereum/ethereum.py | 13 +- plugins/aea-ledger-ethereum/setup.py | 5 +- .../tests/test_ethereum.py | 3 +- .../tests/test_ethereum_contract.py | 7 +- .../aea_ledger_fetchai/_cosmos.py | 34 +- .../aea-ledger-fetchai/tests/test_fetchai.py | 29 +- poetry.lock | 5150 +++++++++++++++++ pyproject.toml | 152 +- scripts/acn/run_acn_node_standalone.py | 5 +- scripts/bump_aea_version.py | 3 +- scripts/check_copyright_notice.py | 3 +- scripts/check_imports_and_dependencies.py | 5 +- scripts/check_packages.py | 6 +- scripts/check_pipfile_and_toxini.py | 4 +- scripts/deploy_to_registry.py | 14 +- scripts/generate_all_protocols.py | 7 +- scripts/generate_ipfs_hashes.py | 15 +- scripts/ledger_network_update.py | 5 +- scripts/update_package_versions.py | 51 +- setup.cfg | 3 + setup.py | 132 - strategy.ini | 3 + tests/common/docker_image.py | 5 +- tests/common/mocks.py | 3 +- tests/common/pexpect_popen.py | 2 +- tests/conftest.py | 23 +- tests/data/custom_crypto.py | 2 +- tests/data/generator/t_protocol/protocol.yaml | 2 +- .../generator/t_protocol/t_protocol_pb2.py | 184 +- .../generator/t_protocol_no_ct/protocol.yaml | 2 +- .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 166 +- tests/data/hashes.csv | 4 +- .../t_protocol/__init__.py | 19 +- .../t_protocol/custom_types.py | 17 + .../t_protocol/dialogues.py | 17 + .../reference_protocols/t_protocol/message.py | 17 + .../t_protocol/protocol.yaml | 11 +- .../t_protocol/serialization.py | 17 + .../t_protocol/t_protocol_pb2.py | 3544 ++---------- .../t_protocol_no_ct/__init__.py | 19 +- .../t_protocol_no_ct/dialogues.py | 17 + .../t_protocol_no_ct/message.py | 17 + .../t_protocol_no_ct/protocol.yaml | 10 +- .../t_protocol_no_ct/serialization.py | 17 + .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 3200 ++-------- tests/test_act_storage.py | 26 +- tests/test_aea.py | 47 +- tests/test_agent.py | 5 +- tests/test_agent_loop.py | 3 +- tests/test_cli/test_add/test_connection.py | 12 +- tests/test_cli/test_add/test_protocol.py | 4 +- tests/test_cli/test_add/test_skill.py | 4 +- tests/test_cli/test_add_key.py | 5 +- tests/test_cli/test_eject.py | 5 +- tests/test_cli/test_fetch.py | 14 +- .../test_cli/test_generate/test_protocols.py | 18 +- tests/test_cli/test_init.py | 9 +- tests/test_cli/test_issue_certificates.py | 3 +- tests/test_cli/test_launch.py | 9 +- tests/test_cli/test_launch_end_to_end.py | 12 +- tests/test_cli/test_list.py | 4 +- tests/test_cli/test_logout.py | 4 +- tests/test_cli/test_misc.py | 10 +- tests/test_cli/test_publish.py | 19 +- tests/test_cli/test_push.py | 27 +- tests/test_cli/test_registry/test_push.py | 6 +- tests/test_cli/test_reset_password.py | 4 +- tests/test_cli/test_run.py | 10 +- .../test_scaffold/test_error_handler.py | 4 +- tests/test_cli/test_scaffold/test_skills.py | 5 +- tests/test_cli/test_search.py | 22 +- tests/test_cli/test_transfer.py | 2 +- tests/test_cli/test_upgrade.py | 3 +- tests/test_cli/test_utils/test_config.py | 3 +- tests/test_configurations/test_schema.py | 3 +- tests/test_configurations/test_utils.py | 4 +- tests/test_context/test_base.py | 2 +- tests/test_contracts/test_base.py | 9 +- tests/test_crypto/test_ledger_apis.py | 27 +- tests/test_crypto/test_password_end2end.py | 7 +- tests/test_crypto/test_registries.py | 2 +- tests/test_crypto/test_registry/test_misc.py | 2 +- .../test_ownership_state.py | 3 +- tests/test_decision_maker/test_preferences.py | 6 +- .../programmatic_aea.py | 24 +- .../test_cli_vs_programmatic_aea.py | 5 +- .../test_generic_step_by_step_guide.py | 28 +- .../test_orm_integration.py | 13 +- ..._client_connection_to_aries_cloud_agent.py | 12 +- tests/test_helpers/test_async_utils.py | 4 +- tests/test_helpers/test_env_vars.py | 3 +- tests/test_mail/test_base.py | 32 +- tests/test_manager/test_manager.py | 6 +- tests/test_multiplexer.py | 37 +- .../test_connections/test_gym/test_gym.py | 34 +- .../test_http_client/test_http_client.py | 12 +- .../test_http_server/test_http_server.py | 45 +- .../test_ledger/test_contract_api.py | 54 +- .../test_ledger/test_ledger_api.py | 35 +- .../test_connections/test_local/test_misc.py | 36 +- .../test_local/test_search_services.py | 70 +- .../test_oef/test_communication.py | 79 +- .../test_p2p_libp2p/test_build.py | 4 +- .../test_p2p_libp2p/test_communication.py | 44 +- .../test_p2p_libp2p/test_integration.py | 6 +- .../test_p2p_libp2p/test_public_dht.py | 24 +- .../test_p2p_libp2p/test_slow_queue.py | 6 +- .../test_p2p_libp2p_client/test_errors.py | 4 +- .../test_communication.py | 3 +- .../test_p2p_libp2p_mailbox/test_errors.py | 4 +- .../test_p2p_stub/test_p2p_stub.py | 9 +- .../test_prometheus/test_prometheus.py | 27 +- .../test_connections/test_soef/models.py | 6 +- .../test_connections/test_soef/test_soef.py | 81 +- .../test_soef/test_soef_integration.py | 50 +- .../test_connections/test_stub/test_stub.py | 18 +- .../test_tcp/test_communication.py | 67 +- .../test_webhook/test_webhook.py | 10 +- .../test_connections/test_yoti/test_yoti.py | 4 +- .../test_erc1155/test_contract.py | 12 +- .../test_packages/test_protocols/test_acn.py | 3 +- .../test_protocols/test_aggregation.py | 12 +- .../test_protocols/test_contract_api.py | 48 +- .../test_packages/test_protocols/test_fipa.py | 62 +- .../test_packages/test_protocols/test_gym.py | 30 +- .../test_packages/test_protocols/test_http.py | 12 +- .../test_protocols/test_ledger_api.py | 66 +- .../test_protocols/test_ml_trade.py | 24 +- .../test_protocols/test_oef_search.py | 36 +- .../test_protocols/test_prometheus.py | 18 +- .../test_protocols/test_register.py | 7 +- .../test_protocols/test_signing.py | 4 +- .../test_protocols/test_state_update.py | 8 +- .../test_packages/test_protocols/test_tac.py | 65 +- .../test_packages/test_protocols/test_yoti.py | 15 +- .../test_handlers.py | 33 +- .../test_aries_alice/intermediate_class.py | 3 +- .../test_aries_alice/test_handlers.py | 22 +- .../test_aries_faber/intermediate_class.py | 3 +- .../test_aries_faber/test_behaviours.py | 3 +- .../test_aries_faber/test_handlers.py | 30 +- .../test_aries_faber/test_strategy.py | 3 +- .../detection_results.db | Bin 40960 -> 0 bytes .../test_carpark_detection/test_database.py | 16 +- .../test_confirmation_aw1/test_handlers.py | 34 +- .../test_registration_db.py | 8 +- .../test_confirmation_aw1/test_strategy.py | 8 +- .../test_registration_db.py | 18 +- .../test_confirmation_aw2/test_strategy.py | 7 +- .../intermediate_class.py | 2 +- .../test_confirmation_aw3/test_handlers.py | 3 +- .../test_registration_db.py | 33 +- .../test_confirmation_aw3/test_strategy.py | 12 +- .../test_skills/test_echo/test_handlers.py | 12 +- .../test_erc1155_client/test_handlers.py | 25 +- .../test_erc1155_client/test_strategy.py | 6 +- .../test_erc1155_deploy/test_handlers.py | 43 +- .../test_fetch_block/test_handlers.py | 3 +- .../test_generic_buyer/test_behaviours.py | 3 +- .../test_generic_buyer/test_handlers.py | 78 +- .../test_generic_buyer/test_models.py | 6 +- .../test_generic_seller/test_handlers.py | 47 +- .../test_generic_seller/test_models.py | 4 +- .../test_gym/intermediate_class.py | 3 +- .../test_skills/test_gym/test_handlers.py | 46 +- .../test_skills/test_gym/test_helpers.py | 18 +- .../test_http_echo/test_handlers.py | 9 +- .../test_ml_data_provider/test_handlers.py | 21 +- .../test_ml_train/test_behaviours.py | 3 +- .../test_ml_train/test_handlers.py | 74 +- .../test_ml_train/test_strategy.py | 6 +- .../intermediate_class.py | 3 +- .../test_registration_aw1/test_behaviours.py | 3 +- .../test_behaviours.py | 30 +- .../test_simple_aggregation/test_handlers.py | 29 +- .../test_simple_data_request/test_handlers.py | 6 +- .../test_simple_oracle/test_behaviours.py | 6 +- .../test_simple_oracle/test_handlers.py | 23 +- .../test_behaviours.py | 6 +- .../test_handlers.py | 20 +- .../test_handlers.py | 15 +- .../test_strategy.py | 9 +- .../test_handlers.py | 12 +- .../test_strategy.py | 3 +- .../test_tac_control/test_behaviours.py | 5 +- .../test_tac_control/test_handlers.py | 39 +- .../test_tac_control/test_parameters.py | 4 +- .../test_handlers.py | 14 +- .../test_tac_negotiation/test_handlers.py | 80 +- .../test_tac_negotiation/test_transactions.py | 24 +- .../test_tac_participation/test_behaviours.py | 9 +- .../test_tac_participation/test_handlers.py | 42 +- .../test_thermometer/test_strategy.py | 3 +- .../test_registration_db.py | 3 +- .../test_aries_demo.py | 14 +- .../test_skills_integration/test_echo.py | 6 +- .../test_skills_integration/test_ml_skills.py | 6 +- .../test_simple_aggregation.py | 3 +- .../test_simple_oracle.py | 33 +- .../test_skills_integration/test_tac.py | 12 +- .../test_skills_integration/test_weather.py | 10 +- .../test_protocols/test_dialogue/test_base.py | 11 +- .../test_generator/test_common.py | 45 +- .../test_generator/test_generator.py | 51 +- .../test_generator/test_validate.py | 139 +- tests/test_registries/test_base.py | 4 +- tests/test_skills/test_base.py | 3 +- tests/test_skills/test_error.py | 23 +- tests/test_test_tools/test_test_contract.py | 4 +- tests/test_test_tools/test_test_skill.py | 32 +- tox.ini | 296 +- 437 files changed, 10675 insertions(+), 8191 deletions(-) delete mode 100644 Pipfile create mode 100755 install_packages.py create mode 100644 poetry.lock delete mode 100644 setup.py delete mode 100644 tests/test_packages/test_skills/test_carpark_detection/temp_files_placeholder/detection_results.db diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index c6e220240a..4d372ede9d 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@master - uses: actions/setup-python@v3 with: - python-version: 3.9 + python-version: 3.8 - name: Install dependencies (ubuntu-latest) run: | sudo apt-get update --fix-missing @@ -24,14 +24,6 @@ jobs: sudo apt-get autoremove sudo apt-get autoclean sudo pip install pipenv - - name: Pipenv install requirements and check it can be locked - run: | - pipenv install --dev --skip-lock --clear - pipenv run pip install -e .[all] - pipenv run pip install --no-deps file:plugins/aea-ledger-ethereum - pipenv run pip install --no-deps file:plugins/aea-ledger-cosmos - pipenv run pip install --no-deps file:plugins/aea-ledger-fetchai - pipenv lock - name: Check plugin consistency run: | # these two files should not be different; @@ -50,12 +42,12 @@ jobs: common_checks_2: continue-on-error: False runs-on: ubuntu-latest - timeout-minutes: 10 + timeout-minutes: 20 steps: - uses: actions/checkout@master - uses: actions/setup-python@v3 with: - python-version: 3.6 + python-version: 3.8 - uses: actions/setup-go@v3 with: go-version: '^1.17.0' @@ -104,7 +96,7 @@ jobs: - uses: actions/checkout@master - uses: actions/setup-python@v3 with: - python-version: 3.6 + python-version: 3.8 - name: Install dependencies (ubuntu-latest) run: | sudo apt-get update --fix-missing @@ -124,7 +116,7 @@ jobs: - uses: actions/checkout@master - uses: actions/setup-python@v3 with: - python-version: 3.6 + python-version: 3.8 - uses: actions/setup-go@v3 with: go-version: '^1.17.0' @@ -176,7 +168,7 @@ jobs: - uses: actions/checkout@master - uses: actions/setup-python@v3 with: - python-version: 3.7 + python-version: 3.8 - uses: actions/setup-node@v1 with: node-version: 12.x @@ -196,39 +188,6 @@ jobs: - name: Check spelling run: tox -e spell_check - dependencies_checks: - continue-on-error: False - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python_version: [3.7] - timeout-minutes: 10 - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python_version }} - - if: matrix.os == 'ubuntu-latest' - name: Install dependencies (ubuntu-latest) - run: | - sudo apt-get update --fix-missing - sudo apt-get install libmbedtls-dev - sudo apt-get autoremove - sudo apt-get autoclean - - name: Install tox - run : | - pip install tox - - name: Check Pipfile and tox.ini consistency - run : | - python ./scripts/check_pipfile_and_toxini.py - - name: Install current aea - run: | - pip install -e .[all] - - name: Check aea dependenices and imports - run: | - tox -e dependencies_check - plugins_install_check: continue-on-error: False runs-on: ${{ matrix.sys.os }} @@ -238,7 +197,7 @@ jobs: - { os: windows-latest, shell: 'msys2 {0}' } - { os: ubuntu-latest, shell: bash } - { os: macos-latest, shell: bash } - python_version: [3.7] + python_version: [3.8] timeout-minutes: 10 steps: - uses: actions/checkout@master @@ -278,10 +237,10 @@ jobs: - uses: actions/checkout@master - uses: actions/setup-python@v3 with: - python-version: 3.6 + python-version: 3.8 - uses: actions/setup-go@v3 with: - go-version: '^1.14.0' + go-version: '^1.17.0' - name: Install protolint (ubuntu-latest) run: | sudo apt-get update --fix-missing @@ -299,7 +258,6 @@ jobs: - common_checks_2 - common_checks_3 - common_checks_4 - - dependencies_checks - plugins_install_check runs-on: ubuntu-latest timeout-minutes: 60 @@ -310,7 +268,7 @@ jobs: python-version: 3.8 - uses: actions/setup-go@v3 with: - go-version: '^1.14.0' + go-version: '^1.17.0' - name: Setup GCloud - production uses: google-github-actions/setup-gcloud@v0 with: @@ -346,7 +304,6 @@ jobs: - common_checks_2 - common_checks_3 - common_checks_4 - - dependencies_checks - plugins_install_check runs-on: ubuntu-latest timeout-minutes: 60 @@ -382,13 +339,12 @@ jobs: - common_checks_2 - common_checks_3 - common_checks_4 - - dependencies_checks - plugins_install_check runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python_version: [3.7, 3.8, 3.9, '3.10'] + python_version: [3.8, 3.9, '3.10'] timeout-minutes: 90 steps: - uses: actions/checkout@master @@ -397,7 +353,7 @@ jobs: python-version: ${{ matrix.python_version }} - uses: actions/setup-go@v3 with: - go-version: '^1.14.0' + go-version: '^1.17.0' - if: matrix.os == 'ubuntu-latest' name: Install dependencies (ubuntu-latest) run: | @@ -461,7 +417,6 @@ jobs: - common_checks_2 - common_checks_3 - common_checks_4 - - dependencies_checks - plugins_install_check runs-on: ubuntu-latest timeout-minutes: 60 @@ -472,7 +427,7 @@ jobs: python-version: 3.8 - uses: actions/setup-go@v3 with: - go-version: '^1.14.0' + go-version: '^1.17.0' - name: Install dependencies (ubuntu-latest) run: | sudo apt-get update --fix-missing @@ -495,13 +450,12 @@ jobs: - common_checks_2 - common_checks_3 - common_checks_4 - - dependencies_checks - plugins_install_check runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.6] + python-version: [3.8] timeout-minutes: 45 steps: - uses: actions/checkout@master @@ -519,11 +473,11 @@ jobs: sudo cp $LINKPATH ${LINKPATH}_orig sudo cp link $LINKPATH sudo chmod a+x $LINKPATH - - if: matrix.python-version == '3.6' + - if: matrix.python-version == '3.8' name: Golang unit tests (libp2p_node) working-directory: ./libs/go/libp2p_node run: make test - - if: matrix.python-version == '3.6' + - if: matrix.python-version == '3.8' name: Golang unit tests (aealite) working-directory: ./libs/go/aealite run: go test -p 1 -timeout 0 -count 1 -v ./... @@ -570,7 +524,7 @@ jobs: - uses: actions/checkout@master - uses: actions/setup-python@v3 with: - python-version: 3.7 + python-version: 3.8 - uses: actions/setup-go@v3 with: go-version: '^1.17.0' @@ -590,8 +544,8 @@ jobs: # sudo apt-get install -y protobuf-compiler - name: Run all tests run: | - tox -e py3.7-cov -- --ignore=tests/test_docs --ignore=tests/test_examples --ignore=tests/test_packages/test_skills_integration -m 'not unstable' - tox -e plugins-py3.7-cov -- --cov-append -m 'not unstable' + tox -e py3.8-cov -- --ignore=tests/test_docs --ignore=tests/test_examples --ignore=tests/test_packages/test_skills_integration -m 'not unstable' + tox -e plugins-py3.8-cov -- --cov-append -m 'not unstable' continue-on-error: true - name: Show full coverage report run: | diff --git a/Makefile b/Makefile index 7edb845b72..8fd6a98ab0 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,7 @@ security: plugins/aea-ledger-cosmos/aea_ledger_cosmos \ plugins/aea-cli-ipfs/aea_cli_ipfs bandit -s B101 -r tests scripts - safety check -i 37524 -i 38038 -i 37776 -i 38039 -i 39621 -i 40291 -i 39706 + safety check -i 37524 -i 38038 -i 37776 -i 38039 -i 39621 -i 40291 -i 39706 -i 44610 -i 50473 .PHONY: static static: @@ -106,16 +106,12 @@ test-all: .PHONY: install install: clean - python3 setup.py install + pip install .[all] .PHONY: dist dist: clean - python setup.py sdist - WIN_BUILD_WHEEL=1 python setup.py bdist_wheel --plat-name=win_amd64 - WIN_BUILD_WHEEL=1 python setup.py bdist_wheel --plat-name=win32 - python setup.py bdist_wheel --plat-name=manylinux1_x86_64 - python setup.py bdist_wheel --plat-name=manylinux2014_aarch64 - python setup.py bdist_wheel --plat-name=macosx_10_9_x86_64 + poetry build + h := $(shell git rev-parse --abbrev-ref HEAD) @@ -136,14 +132,12 @@ v := $(shell pip -V | grep virtualenvs) new_env: clean if [ -z "$v" ];\ then\ - pipenv --rm;\ - pipenv --python 3.7;\ - pipenv install --dev --skip-lock --clear;\ - pipenv run pip install -e .[all];\ - pipenv run pip install --no-deps file:plugins/aea-ledger-ethereum;\ - pipenv run pip install --no-deps file:plugins/aea-ledger-cosmos;\ - pipenv run pip install --no-deps file:plugins/aea-ledger-fetchai;\ - pipenv run pip install --no-deps file:plugins/aea-cli-ipfs;\ + poetry install --with dev,docs,packages,tools,testing;\ + poetry run pip install -e .[all];\ + poetry run pip install --no-deps file:plugins/aea-ledger-ethereum;\ + poetry run pip install --no-deps file:plugins/aea-ledger-cosmos;\ + poetry run pip install --no-deps file:plugins/aea-ledger-fetchai;\ + poetry run pip install --no-deps file:plugins/aea-cli-ipfs;\ echo "Enter virtual environment with all development dependencies now: 'pipenv shell'.";\ else\ echo "In a virtual environment! Exit first: 'exit'.";\ diff --git a/Pipfile b/Pipfile deleted file mode 100644 index 77ded774f0..0000000000 --- a/Pipfile +++ /dev/null @@ -1,82 +0,0 @@ -[[source]] -name = "pypi" -url = "https://pypi.org/simple" -verify_ssl = true - -[[source]] -url = "https://test.pypi.org/simple" -verify_ssl = true -name = "test-pypi" - -[dev-packages] -# we fix exact versions as it's sufficient to have at least one set of compatible dependencies for development -aiohttp = ">=3.7.4,<3.8" -asn1crypto = "==1.4.0" -aioprometheus = ">=20.0.0,<21.0.0" -bandit = "==1.7.0" -bech32 = "==1.2.0" -black = "==19.10b0" -bs4 = "==0.0.1" -colorlog = "==4.1.0" -darglint = "==1.8.1" -defusedxml = "==0.7.1" -docker = "==4.2.0" -ecdsa = "==0.17.0" -eth-account = "==0.5.2" -flake8 = "==3.7.9" -flake8-bugbear = "==20.1.4" -flake8-docstrings = "==1.6.0" -flake8-eradicate = "==0.4.0" -flake8-isort = "==4.0.0" -gitpython = ">=3.1.14" -gym = "==0.15.6" -ipfshttpclient = "==0.6.1" -jinja2 = "==3.0.3" -liccheck = "==0.6.0" -markdown = "==3.3.6" -matplotlib = ">=3.3.0,<3.4" -memory-profiler = "==0.57.0" -mistune = "==2.0.0a4" -mkdocs = "==1.1" -mkdocs-material = "==6.2.8" -mkdocs-mermaid-plugin = {git = "https://github.com/pugong/mkdocs-mermaid-plugin.git"} -mypy = "==0.761" -numpy = ">=1.18.1" -oef = "==0.8.1" -openapi-core = "==0.13.2" -openapi-spec-validator = "==0.2.8" -packaging = ">=20.4,<=21.5" -pexpect = "==4.8.0" -psutil = "==5.7.0" -pycryptodome = "==3.15.0" -pydoc-markdown = "==3.10.3" -pydocstyle = "==3.0.0" -pygments = "==2.7.4" -pylint = "==2.6.0" -pymdown-extensions = "==9.1" -pytest = "==7.0.0" -pytest-asyncio = "==0.16.0" -pytest-cov = "==3.0.0" -pytest-custom-exit-code = "==0.3.0" -pytest-randomly = "==3.10.3" -pytest-rerunfailures = "==10.2" -requests = ">=2.22.0" -safety = "==1.10.3" -scikit-image = ">=0.17.2" -sqlalchemy = "==1.4.17" -temper-py = "==0.0.3" -tensorflow = "==2.8.1" -tox = "==3.15.1" -vulture = "==2.3" -isort = "==5.7.0" -web3 = "==5.12.0" -yoti = "==2.14.0" -blspy = "==1.0.14" -bip-utils = "==2.5.1" -python-mbedtls = "==2.2.0" -py-sr25519-bindings = "==0.1.4" -cosmpy = ">=0.5.0,<0.6.0" - -[packages] -# we don't specify dependencies for the library here for intallation as per: https://pipenv-fork.readthedocs.io/en/latest/advanced.html#pipfile-vs-setuppy -# aea and plugin dependencies are specified in setup.py diff --git a/aea/aea.py b/aea/aea.py index 10bfd7fd7a..3cfdfc6cb3 100644 --- a/aea/aea.py +++ b/aea/aea.py @@ -131,7 +131,8 @@ def __init__( self._connection_exception_policy = connection_exception_policy aea_logger = AgentLoggerAdapter( - logger=get_logger(__name__, identity.name), agent_name=identity.name, + logger=get_logger(__name__, identity.name), + agent_name=identity.name, ) self._resources = resources @@ -407,7 +408,10 @@ def get_message_handlers(self) -> List[Tuple[Callable[[Any], None], Callable]]: :return: List of tuples of callables: handler and coroutine to get a message """ return super().get_message_handlers() + [ - (self.filter.handle_internal_message, self.filter.get_internal_message,), + ( + self.filter.handle_internal_message, + self.filter.get_internal_message, + ), (self.handle_envelope, self.runtime.agent_loop.skill2skill_queue.get), ] diff --git a/aea/aea_builder.py b/aea/aea_builder.py index 0947afa4ef..1c4d240a11 100644 --- a/aea/aea_builder.py +++ b/aea/aea_builder.py @@ -521,7 +521,9 @@ def _load_decision_maker_handler_class( return _class - def _load_error_handler_class(self,) -> Optional[Type[AbstractErrorHandler]]: + def _load_error_handler_class( + self, + ) -> Optional[Type[AbstractErrorHandler]]: """ Load error handler class. @@ -1110,7 +1112,9 @@ def get_build_root_directory(self) -> str: @classmethod def run_build_for_component_configuration( - cls, config: ComponentConfiguration, logger: Optional[logging.Logger] = None, + cls, + config: ComponentConfiguration, + logger: Optional[logging.Logger] = None, ) -> None: """Run a build entrypoint script for component configuration.""" if not config.build_entrypoint: @@ -1256,7 +1260,8 @@ def _build_identity_from_wallet(self, wallet: Wallet) -> Identity: return identity def _process_connection_ids( # pylint: disable=unsubscriptable-object - self, connection_ids: Optional[Collection[PublicId]] = None, + self, + connection_ids: Optional[Collection[PublicId]] = None, ) -> List[PublicId]: """ Process connection ids. @@ -1437,7 +1442,9 @@ def _get_max_reactions(self) -> int: else self.DEFAULT_MAX_REACTIONS ) - def _get_error_handler_class(self,) -> Optional[Type]: + def _get_error_handler_class( + self, + ) -> Optional[Type]: """ Return the error handler class. @@ -1445,7 +1452,9 @@ def _get_error_handler_class(self,) -> Optional[Type]: """ return self._error_handler_class - def _get_error_handler_config(self,) -> Optional[Dict[str, Any]]: + def _get_error_handler_config( + self, + ) -> Optional[Dict[str, Any]]: """ Return the error handler config. @@ -1463,7 +1472,9 @@ def _get_decision_maker_handler_class( """ return self._decision_maker_handler_class - def _get_decision_maker_handler_config(self,) -> Optional[Dict[str, Any]]: + def _get_decision_maker_handler_config( + self, + ) -> Optional[Dict[str, Any]]: """ Return the decision maker handler config. @@ -1688,10 +1699,12 @@ def _check_valid_entrypoint(build_entrypoint: str, directory: str) -> None: build_entrypoint = cast(str, build_entrypoint) script_path = Path(directory) / build_entrypoint enforce( - script_path.exists(), f"File '{build_entrypoint}' does not exists.", + script_path.exists(), + f"File '{build_entrypoint}' does not exists.", ) enforce( - script_path.is_file(), f"'{build_entrypoint}' is not a file.", + script_path.is_file(), + f"'{build_entrypoint}' is not a file.", ) try: ast.parse(script_path.read_text()) @@ -2016,7 +2029,8 @@ def _preliminary_checks_before_build(self) -> None: def make_component_logger( - configuration: ComponentConfiguration, agent_name: str, + configuration: ComponentConfiguration, + agent_name: str, ) -> Optional[logging.Logger]: """ Make the logger for a component. diff --git a/aea/agent_loop.py b/aea/agent_loop.py index da3acb925e..50294b07f3 100644 --- a/aea/agent_loop.py +++ b/aea/agent_loop.py @@ -234,7 +234,10 @@ def send_to_skill( elif isinstance(message_or_envelope, Message): message = message_or_envelope envelope = Envelope( - to=message.to, sender=message.sender, message=message, context=context, + to=message.to, + sender=message.sender, + message=message, + context=context, ) else: raise ValueError( diff --git a/aea/cli/add.py b/aea/cli/add.py index ad1b747be7..5795207fb0 100644 --- a/aea/cli/add.py +++ b/aea/cli/add.py @@ -210,7 +210,10 @@ def find_item_locally_or_distributed( def fetch_item_mixed( - ctx: Context, item_type: str, item_public_id: PublicId, dest_path: str, + ctx: Context, + item_type: str, + item_public_id: PublicId, + dest_path: str, ) -> Path: """ Find item, mixed mode. diff --git a/aea/cli/add_key.py b/aea/cli/add_key.py index 46c842e74d..30a1b59c99 100644 --- a/aea/cli/add_key.py +++ b/aea/cli/add_key.py @@ -47,7 +47,10 @@ required=True, ) @click.argument( - "file", metavar="FILE", type=key_file_argument, required=False, + "file", + metavar="FILE", + type=key_file_argument, + required=False, ) @password_option() @click.option( diff --git a/aea/cli/build.py b/aea/cli/build.py index 6e08f6672d..3832eae237 100644 --- a/aea/cli/build.py +++ b/aea/cli/build.py @@ -47,7 +47,8 @@ def build_aea(skip_consistency_check: bool) -> None: """ try: builder = AEABuilder.from_aea_project( - Path("."), skip_consistency_check=skip_consistency_check, + Path("."), + skip_consistency_check=skip_consistency_check, ) builder.call_all_build_entrypoints() except Exception as e: diff --git a/aea/cli/config.py b/aea/cli/config.py index aebf4fe7de..e76d4aee5d 100644 --- a/aea/cli/config.py +++ b/aea/cli/config.py @@ -69,7 +69,10 @@ def get(ctx: Context, json_path: str) -> None: @click.argument("VALUE", required=True, type=str) @pass_ctx def set_command( - ctx: Context, json_path: str, value: str, type_: Optional[str], + ctx: Context, + json_path: str, + value: str, + type_: Optional[str], ) -> None: """Set a field.""" try: diff --git a/aea/cli/delete.py b/aea/cli/delete.py index a7556efd86..81ffab264e 100644 --- a/aea/cli/delete.py +++ b/aea/cli/delete.py @@ -31,7 +31,9 @@ @click.command() @click.argument( - "agent_name", type=AgentDirectory(), required=True, + "agent_name", + type=AgentDirectory(), + required=True, ) @click.pass_context def delete(click_context: click.Context, agent_name: str) -> None: diff --git a/aea/cli/fetch.py b/aea/cli/fetch.py index 5daed397a2..a86ed9c863 100644 --- a/aea/cli/fetch.py +++ b/aea/cli/fetch.py @@ -51,7 +51,10 @@ help_remote="For fetching agent from remote registry.", ) @click.option( - "--alias", type=str, required=False, help="Provide a local alias for the agent.", + "--alias", + type=str, + required=False, + help="Provide a local alias for the agent.", ) @click.argument("public-id", type=PublicIdParameter(), required=True) @click.pass_context diff --git a/aea/cli/fingerprint.py b/aea/cli/fingerprint.py index eac813b5b9..77af32c038 100644 --- a/aea/cli/fingerprint.py +++ b/aea/cli/fingerprint.py @@ -46,7 +46,9 @@ @click.group(invoke_without_command=True) @click.pass_context -def fingerprint(click_context: click.core.Context,) -> None: +def fingerprint( + click_context: click.core.Context, +) -> None: """Fingerprint a non-vendor package of the agent.""" if click_context.invoked_subcommand is None: fingerprint_agent(click_context) diff --git a/aea/cli/generate_key.py b/aea/cli/generate_key.py index 9b7a817958..dbf069bdc2 100644 --- a/aea/cli/generate_key.py +++ b/aea/cli/generate_key.py @@ -45,7 +45,9 @@ ) @password_option(confirmation_prompt=True) @click.option( - "--add-key", is_flag=True, help="Add key generated.", + "--add-key", + is_flag=True, + help="Add key generated.", ) @click.option( "--connection", is_flag=True, help="For adding a private key for connections." diff --git a/aea/cli/get_multiaddress.py b/aea/cli/get_multiaddress.py index bdb844f59b..a7adb1d1fa 100644 --- a/aea/cli/get_multiaddress.py +++ b/aea/cli/get_multiaddress.py @@ -50,16 +50,32 @@ @password_option() @click.option("-c", "--connection", is_flag=True) @click.option( - "-i", "--connection-id", type=PublicIdParameter(), required=False, default=None, + "-i", + "--connection-id", + type=PublicIdParameter(), + required=False, + default=None, ) @click.option( - "-h", "--host-field", type=str, required=False, default=None, + "-h", + "--host-field", + type=str, + required=False, + default=None, ) @click.option( - "-p", "--port-field", type=str, required=False, default=None, + "-p", + "--port-field", + type=str, + required=False, + default=None, ) @click.option( - "-u", "--uri-field", type=str, required=False, default="public_uri", + "-u", + "--uri-field", + type=str, + required=False, + default="public_uri", ) @click.pass_context @check_aea_project diff --git a/aea/cli/get_wealth.py b/aea/cli/get_wealth.py index 521b7d1b03..8239ae03eb 100644 --- a/aea/cli/get_wealth.py +++ b/aea/cli/get_wealth.py @@ -38,7 +38,7 @@ @click.argument( "type_", metavar="TYPE", - type=click.Choice(ledger_apis_registry.supported_ids), + type=click.Choice(list(ledger_apis_registry.supported_ids)), required=True, ) @password_option() diff --git a/aea/cli/interact.py b/aea/cli/interact.py index 1e2cebb325..b681633fd1 100644 --- a/aea/cli/interact.py +++ b/aea/cli/interact.py @@ -101,7 +101,10 @@ def _load_packages(agent_identity: Identity) -> None: stub_connection_id = PublicId.from_str(STUB_CONNECTION) Connection.from_dir( os.path.join( - VENDOR, stub_connection_id.author, CONNECTIONS, stub_connection_id.name, + VENDOR, + stub_connection_id.author, + CONNECTIONS, + stub_connection_id.name, ), agent_identity, CryptoStore(), @@ -247,9 +250,15 @@ def _try_construct_envelope( ) message = message_decoded.encode("utf-8") # type: Union[str, bytes] msg, _ = dialogues.create( - counterparty=agent_name, performative=performative, content=message, + counterparty=agent_name, + performative=performative, + content=message, + ) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) except InterruptInputException: click.echo("Interrupting input, checking inbox ...") except KeyboardInterrupt: diff --git a/aea/cli/publish.py b/aea/cli/publish.py index 81f94aa91f..65b8d71e92 100644 --- a/aea/cli/publish.py +++ b/aea/cli/publish.py @@ -306,7 +306,10 @@ def _save_agent_locally( item_type_plural = AGENTS target_dir = try_get_item_target_path( - registry_path, ctx.agent_config.author, item_type_plural, ctx.agent_config.name, + registry_path, + ctx.agent_config.author, + item_type_plural, + ctx.agent_config.name, ) if not os.path.exists(target_dir): os.makedirs(target_dir, exist_ok=True) diff --git a/aea/cli/push.py b/aea/cli/push.py index 6842c0a44b..38e2f5726a 100644 --- a/aea/cli/push.py +++ b/aea/cli/push.py @@ -121,7 +121,10 @@ def _save_item_locally(ctx: Context, item_type: str, item_id: PublicId) -> None: except ValueError as e: # pragma: nocover raise click.ClickException(str(e)) target_path = try_get_item_target_path( - registry_path, item_id.author, item_type_plural, item_id.name, + registry_path, + item_id.author, + item_type_plural, + item_id.name, ) copytree(source_path, target_path) click.echo( diff --git a/aea/cli/registry/fetch.py b/aea/cli/registry/fetch.py index 9a85b03555..e1e1af4409 100644 --- a/aea/cli/registry/fetch.py +++ b/aea/cli/registry/fetch.py @@ -78,7 +78,8 @@ def fetch_agent( if alias or target_dir: shutil.move( - os.path.join(ctx.cwd, name), aea_folder, + os.path.join(ctx.cwd, name), + aea_folder, ) ctx.cwd = aea_folder diff --git a/aea/cli/remove.py b/aea/cli/remove.py index 5eebe8d331..d9b55f06d5 100644 --- a/aea/cli/remove.py +++ b/aea/cli/remove.py @@ -177,7 +177,7 @@ def _get_item_requirements( :yield: package ids: (type, public_id) """ for item_type in map(str, ComponentType): - items = getattr(item, f"{item_type}s", set()) + items: Set[PublicId] = getattr(item, f"{item_type}s", set()) for item_public_id in items: if ignore_non_vendor and is_item_present( self._ctx.cwd, @@ -369,7 +369,7 @@ def remove(self) -> None: @property def agent_items(self) -> Set[PublicId]: """Return items registered with agent of the same type as item.""" - return getattr(self.agent_config, self.item_type_plural, set) + return getattr(self.agent_config, self.item_type_plural, set()) @property def is_required_by(self) -> bool: diff --git a/aea/cli/remove_key.py b/aea/cli/remove_key.py index 54d471c499..3f4871a5f2 100644 --- a/aea/cli/remove_key.py +++ b/aea/cli/remove_key.py @@ -49,7 +49,9 @@ def remove_key(click_context: click.Context, type_: str, connection: bool) -> No def _remove_private_key( - click_context: click.core.Context, type_: str, connection: bool = False, + click_context: click.core.Context, + type_: str, + connection: bool = False, ) -> None: """ Remove private key to the wallet. diff --git a/aea/cli/transfer.py b/aea/cli/transfer.py index 6eb23b29c9..fd18271876 100644 --- a/aea/cli/transfer.py +++ b/aea/cli/transfer.py @@ -44,14 +44,18 @@ @click.argument( "type_", metavar="TYPE", - type=click.Choice(ledger_apis_registry.supported_ids), + type=click.Choice(list(ledger_apis_registry.supported_ids)), required=True, ) @click.argument( - "address", type=str, required=True, + "address", + type=str, + required=True, ) @click.argument( - "amount", type=int, required=True, + "amount", + type=int, + required=True, ) @click.argument("fee", type=int, required=False, default=100) @password_option() diff --git a/aea/cli/utils/click_utils.py b/aea/cli/utils/click_utils.py index a7d49ab5e5..a1737fc0b1 100644 --- a/aea/cli/utils/click_utils.py +++ b/aea/cli/utils/click_utils.py @@ -21,7 +21,7 @@ import os from collections import OrderedDict from pathlib import Path -from typing import Any, Callable, Dict, List, Optional, Tuple +from typing import Any, Callable, List, Mapping, Optional, Tuple import click from click import Context, Option, UsageError, option @@ -182,7 +182,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) def handle_parse_result( - self, ctx: Context, opts: Dict[str, Any], args: List[Any] + self, ctx: Context, opts: Mapping[str, Any], args: List[Any] ) -> Tuple[Any, List[str]]: """ Handle parse result. @@ -198,7 +198,7 @@ def handle_parse_result( f"arguments `{', '.join(self.mutually_exclusive)}`." ) - return super().handle_parse_result(ctx, opts, args) + return super().handle_parse_result(ctx, opts, args) # type: ignore def password_option(confirmation_prompt: bool = False, **kwargs) -> Callable: # type: ignore diff --git a/aea/cli/utils/decorators.py b/aea/cli/utils/decorators.py index 6c0c6640f6..7a2a53e221 100644 --- a/aea/cli/utils/decorators.py +++ b/aea/cli/utils/decorators.py @@ -64,7 +64,10 @@ def _validate_config_consistency(ctx: Context, check_aea_version: bool = True) - packages_public_ids_to_types = dict( [ *map(lambda x: (x, PackageType.PROTOCOL), ctx.agent_config.protocols), - *map(lambda x: (x, PackageType.CONNECTION), ctx.agent_config.connections,), + *map( + lambda x: (x, PackageType.CONNECTION), + ctx.agent_config.connections, + ), *map(lambda x: (x, PackageType.SKILL), ctx.agent_config.skills), *map(lambda x: (x, PackageType.CONTRACT), ctx.agent_config.contracts), ] diff --git a/aea/cli/utils/package_utils.py b/aea/cli/utils/package_utils.py index f82cb642e0..85b53f5956 100644 --- a/aea/cli/utils/package_utils.py +++ b/aea/cli/utils/package_utils.py @@ -21,7 +21,7 @@ import re import shutil from pathlib import Path -from typing import Any, Dict, Optional, Set, Tuple +from typing import Any, Dict, Optional, Set, Tuple, Union import click from jsonschema import ValidationError @@ -77,7 +77,9 @@ def verify_private_keys_ctx( - ctx: Context, aea_project_path: Path = ROOT, password: Optional[str] = None, + ctx: Context, + aea_project_path: Path = ROOT, + password: Optional[str] = None, ) -> None: """ Verify private keys with ctx provided. @@ -94,7 +96,9 @@ def verify_private_keys_ctx( password=password, ).dump_config() agent_config = AgentConfigManager.verify_private_keys( - aea_project_path, private_key_helper=private_key_verify, password=password, + aea_project_path, + private_key_helper=private_key_verify, + password=password, ).agent_config if ctx is not None: ctx.agent_config = agent_config @@ -147,6 +151,18 @@ def _is_permitted_author_handle(author: str) -> bool: return result +# mostly for tests +def is_path_exist(path: Union[str, Path]) -> bool: + """ + Check path provided exists. + + :param path: str or Path + + :return: bool + """ + return os.path.exists(path) + + def try_get_item_source_path( path: str, author_name: Optional[str], item_type_plural: str, item_name: str ) -> str: @@ -164,7 +180,7 @@ def try_get_item_source_path( source_path = os.path.join(path, item_type_plural, item_name) else: source_path = os.path.join(path, author_name, item_type_plural, item_name) - if not os.path.exists(source_path): + if not is_path_exist(source_path): raise click.ClickException( f'Item "{author_name}/{item_name}" not found in source folder "{source_path}".' ) @@ -185,7 +201,7 @@ def try_get_item_target_path( :return: the item target path """ target_path = os.path.join(path, author_name, item_type_plural, item_name) - if os.path.exists(target_path): + if is_path_exist(target_path): path_ = Path(target_path) raise click.ClickException( f'Item "{path_.name}" already exists in target folder "{path_.parent}".' diff --git a/aea/components/base.py b/aea/components/base.py index 178ddb9895..b0c9a43a64 100644 --- a/aea/components/base.py +++ b/aea/components/base.py @@ -177,6 +177,8 @@ def perform_load_aea_package( import_path = prefix_pkg + "." + ".".join(relative_parent_dir.parts) spec = importlib.util.spec_from_file_location(import_path, subpackage_init_file) + if spec is None: + raise RuntimeError(f"Error load module from {subpackage_init_file}") module = importlib.util.module_from_spec(spec) sys.modules[import_path] = module _default_logger.debug(f"loading {import_path}: {module}") diff --git a/aea/components/loader.py b/aea/components/loader.py index 3bca734944..33870a3d60 100644 --- a/aea/components/loader.py +++ b/aea/components/loader.py @@ -158,7 +158,9 @@ def get_new_error_message_with_package_found() -> str: e_str = parse_exception(new_exc) raise AEAPackageLoadingError( "Package loading error: An error occurred while loading {} {}:\n{}".format( - str(configuration.component_type), configuration.public_id, e_str, + str(configuration.component_type), + configuration.public_id, + e_str, ) ) diff --git a/aea/configurations/base.py b/aea/configurations/base.py index c6aa7a58a0..463ba5fab7 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -486,7 +486,9 @@ def __init__( fingerprint_ignore_patterns, build_entrypoint, ) - self.pypi_dependencies: Dependencies = dependencies if dependencies is not None else {} + self.pypi_dependencies: Dependencies = ( + dependencies if dependencies is not None else {} + ) self._build_directory = build_directory @property @@ -610,17 +612,29 @@ def __init__( enforce(version != "", "Version or connection_id must be set.") else: enforce( - name in ("", connection_id.name,), + name + in ( + "", + connection_id.name, + ), "Non matching name in ConnectionConfig name and public id.", ) name = connection_id.name enforce( - author in ("", connection_id.author,), + author + in ( + "", + connection_id.author, + ), "Non matching author in ConnectionConfig author and public id.", ) author = connection_id.author enforce( - version in ("", connection_id.version,), + version + in ( + "", + connection_id.version, + ), "Non matching version in ConnectionConfig version and public id.", ) version = connection_id.version @@ -1500,17 +1514,35 @@ def _create_or_update_from_json( # parse connection public ids agent_config.connections = set( - map(PublicId.from_str, obj.get(CONNECTIONS, []),) + map( + PublicId.from_str, + obj.get(CONNECTIONS, []), + ) ) # parse contracts public ids - agent_config.contracts = set(map(PublicId.from_str, obj.get(CONTRACTS, []),)) + agent_config.contracts = set( + map( + PublicId.from_str, + obj.get(CONTRACTS, []), + ) + ) # parse protocol public ids - agent_config.protocols = set(map(PublicId.from_str, obj.get(PROTOCOLS, []),)) + agent_config.protocols = set( + map( + PublicId.from_str, + obj.get(PROTOCOLS, []), + ) + ) # parse skills public ids - agent_config.skills = set(map(PublicId.from_str, obj.get(SKILLS, []),)) + agent_config.skills = set( + map( + PublicId.from_str, + obj.get(SKILLS, []), + ) + ) # parse component configurations component_configurations = {} diff --git a/aea/configurations/data_types.py b/aea/configurations/data_types.py index 6a6aed5392..601e886f34 100644 --- a/aea/configurations/data_types.py +++ b/aea/configurations/data_types.py @@ -236,10 +236,10 @@ class PublicId(JSONSerializable): AUTHOR_REGEX = SIMPLE_ID_REGEX PACKAGE_NAME_REGEX = SIMPLE_ID_REGEX VERSION_NUMBER_PART_REGEX = r"(0|[1-9]\d*)" - VERSION_REGEX = fr"(any|latest|({VERSION_NUMBER_PART_REGEX})\.({VERSION_NUMBER_PART_REGEX})\.({VERSION_NUMBER_PART_REGEX})(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)" - PUBLIC_ID_REGEX = fr"^({AUTHOR_REGEX})/({PACKAGE_NAME_REGEX})(:({VERSION_REGEX}))?$" + VERSION_REGEX = rf"(any|latest|({VERSION_NUMBER_PART_REGEX})\.({VERSION_NUMBER_PART_REGEX})\.({VERSION_NUMBER_PART_REGEX})(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)" + PUBLIC_ID_REGEX = rf"^({AUTHOR_REGEX})/({PACKAGE_NAME_REGEX})(:({VERSION_REGEX}))?$" PUBLIC_ID_URI_REGEX = ( - fr"^({AUTHOR_REGEX})/({PACKAGE_NAME_REGEX})/({VERSION_REGEX})$" + rf"^({AUTHOR_REGEX})/({PACKAGE_NAME_REGEX})/({VERSION_REGEX})$" ) ANY_VERSION = "any" @@ -392,7 +392,11 @@ def json(self) -> Dict: @classmethod def from_json(cls, obj: Dict) -> "PublicId": """Build from a JSON object.""" - return PublicId(obj["author"], obj["name"], obj["version"],) + return PublicId( + obj["author"], + obj["name"], + obj["version"], + ) def __hash__(self) -> int: """Get the hash.""" @@ -554,7 +558,8 @@ def __hash__(self) -> int: def __str__(self) -> str: """Get the string representation.""" return "({package_type}, {public_id})".format( - package_type=self.package_type.value, public_id=self.public_id, + package_type=self.package_type.value, + public_id=self.public_id, ) def __repr__(self) -> str: diff --git a/aea/configurations/manager.py b/aea/configurations/manager.py index a24e175ab4..cafe229c5e 100644 --- a/aea/configurations/manager.py +++ b/aea/configurations/manager.py @@ -139,7 +139,9 @@ def _try_get_component_id_from_prefix( def handle_dotted_path( - value: str, author: str, aea_project_path: Union[str, Path] = ".", + value: str, + author: str, + aea_project_path: Union[str, Path] = ".", ) -> Tuple[List[str], Path, ConfigLoader, Optional[ComponentId]]: """Separate the path between path to resource and json path to attribute. @@ -309,7 +311,9 @@ def __init__( self.env_vars_friendly = env_vars_friendly def load_component_configuration( - self, component_id: ComponentId, skip_consistency_check: bool = True, + self, + component_id: ComponentId, + skip_consistency_check: bool = True, ) -> ComponentConfiguration: """ Load component configuration from the project directory. diff --git a/aea/configurations/utils.py b/aea/configurations/utils.py index 54b88c8032..9a4dd1c8a3 100644 --- a/aea/configurations/utils.py +++ b/aea/configurations/utils.py @@ -49,7 +49,8 @@ def replace_component_ids( @replace_component_ids.register(AgentConfig) # type: ignore def _( - arg: AgentConfig, replacements: Dict[ComponentType, Dict[PublicId, PublicId]], + arg: AgentConfig, + replacements: Dict[ComponentType, Dict[PublicId, PublicId]], ) -> None: """ Replace references in agent configuration. @@ -105,20 +106,22 @@ def _( component_id.component_type, replacements_by_type[component_id.public_id], ) - old_value = arg.component_configurations.pop(component_id) - arg.component_configurations[new_component_id] = old_value + old_config = arg.component_configurations.pop(component_id) + arg.component_configurations[new_component_id] = old_config @replace_component_ids.register(ProtocolConfig) # type: ignore def _( - _arg: ProtocolConfig, _replacements: Dict[ComponentType, Dict[PublicId, PublicId]], + _arg: ProtocolConfig, + _replacements: Dict[ComponentType, Dict[PublicId, PublicId]], ) -> None: """Do nothing - protocols have no references.""" @replace_component_ids.register(ConnectionConfig) # type: ignore def _( - arg: ConnectionConfig, replacements: Dict[ComponentType, Dict[PublicId, PublicId]], + arg: ConnectionConfig, + replacements: Dict[ComponentType, Dict[PublicId, PublicId]], ) -> None: """Replace references in a connection configuration.""" _replace_component_id( @@ -139,14 +142,16 @@ def _( @replace_component_ids.register(ContractConfig) # type: ignore def _( # type: ignore - _arg: ContractConfig, _replacements: Dict[ComponentType, Dict[PublicId, PublicId]], + _arg: ContractConfig, + _replacements: Dict[ComponentType, Dict[PublicId, PublicId]], ) -> None: """Do nothing - contracts have no references.""" @replace_component_ids.register(SkillConfig) # type: ignore def _( - arg: SkillConfig, replacements: Dict[ComponentType, Dict[PublicId, PublicId]], + arg: SkillConfig, + replacements: Dict[ComponentType, Dict[PublicId, PublicId]], ) -> None: """Replace references in a skill configuration.""" _replace_component_id( @@ -174,7 +179,9 @@ def _replace_component_id( :param replacements: the replacements. """ for component_type in types_to_update: - public_id_set = getattr(config, component_type.to_plural(), set()) + public_id_set: Set[PublicId] = getattr( + config, component_type.to_plural(), set() + ) replacements_given_type = replacements.get(component_type, {}) for old_public_id in list(public_id_set): new_public_id = replacements_given_type.get(old_public_id, old_public_id) diff --git a/aea/connections/base.py b/aea/connections/base.py index 96871a7af0..04e4c463b9 100644 --- a/aea/connections/base.py +++ b/aea/connections/base.py @@ -392,7 +392,8 @@ def _task_done_callback(self, task: asyncio.Task) -> None: # cause task.get_name for python3.8+ task_name = getattr(task, "task_name", "TASK NAME NOT SET") self.logger.exception( - f"in task `{task_name}`, exception occurred", exc_info=task.exception(), + f"in task `{task_name}`, exception occurred", + exc_info=task.exception(), ) async def _run_in_pool(self, fn: Callable, *args: Any) -> Any: diff --git a/aea/context/base.py b/aea/context/base.py index c1f900d2c7..4cd50b84f7 100644 --- a/aea/context/base.py +++ b/aea/context/base.py @@ -71,7 +71,7 @@ def __init__( data_dir: str, storage_callable: Callable[[], Optional[Storage]] = lambda: None, send_to_skill: Optional[Callable] = None, - **kwargs: Any + **kwargs: Any, ) -> None: """ Initialize an agent context. diff --git a/aea/crypto/base.py b/aea/crypto/base.py index b8f8af3a3a..8e4d9c4ab9 100644 --- a/aea/crypto/base.py +++ b/aea/crypto/base.py @@ -207,7 +207,11 @@ def is_transaction_settled(tx_receipt: JSONLike) -> bool: @staticmethod @abstractmethod def is_transaction_valid( - tx: JSONLike, seller: Address, client: Address, tx_nonce: str, amount: int, + tx: JSONLike, + seller: Address, + client: Address, + tx_nonce: str, + amount: int, ) -> bool: """ Check whether a transaction is valid or not. diff --git a/aea/crypto/helpers.py b/aea/crypto/helpers.py index 9e8e893e47..359dc0a747 100644 --- a/aea/crypto/helpers.py +++ b/aea/crypto/helpers.py @@ -36,7 +36,9 @@ def try_validate_private_key_path( - ledger_id: str, private_key_path: str, password: Optional[str] = None, + ledger_id: str, + private_key_path: str, + password: Optional[str] = None, ) -> None: """ Try validate a private key path. @@ -51,8 +53,10 @@ def try_validate_private_key_path( # with private_key_path as parameter make_crypto(ledger_id, private_key_path=private_key_path, password=password) except Exception as e: # pylint: disable=broad-except # thats ok, reraise - error_msg = "This is not a valid private key file: '{}'\n Exception: '{}'".format( - private_key_path, e + error_msg = ( + "This is not a valid private key file: '{}'\n Exception: '{}'".format( + private_key_path, e + ) ) _default_logger.error(error_msg) raise @@ -90,7 +94,9 @@ def try_generate_testnet_wealth( def private_key_verify( - aea_conf: AgentConfig, aea_project_path: Path, password: Optional[str] = None, + aea_conf: AgentConfig, + aea_project_path: Path, + password: Optional[str] = None, ) -> None: """ Check key. @@ -125,7 +131,8 @@ def private_key_verify( except FileNotFoundError: # pragma: no cover raise ValueError( "File {} for private key {} not found.".format( - repr(config_private_key_path), identifier, + repr(config_private_key_path), + identifier, ) ) diff --git a/aea/crypto/ledger_apis.py b/aea/crypto/ledger_apis.py index c8e614abeb..d54ef6e5e0 100644 --- a/aea/crypto/ledger_apis.py +++ b/aea/crypto/ledger_apis.py @@ -138,7 +138,12 @@ def get_transfer_transaction( ) api = make_ledger_api(identifier, **cls.ledger_api_configs[identifier]) tx = api.get_transfer_transaction( - sender_address, destination_address, amount, tx_fee, tx_nonce, **kwargs, + sender_address, + destination_address, + amount, + tx_fee, + tx_nonce, + **kwargs, ) return tx diff --git a/aea/crypto/registries/base.py b/aea/crypto/registries/base.py index 580848eb22..60eb33de6a 100644 --- a/aea/crypto/registries/base.py +++ b/aea/crypto/registries/base.py @@ -31,7 +31,7 @@ """A regex to match a Python identifier (i.e. a module/class name).""" PY_ID_REGEX = r"[^\d\W]\w*" -ITEM_ID_REGEX = fr"({SIMPLE_ID_REGEX})|{PublicId.PUBLIC_ID_REGEX}" +ITEM_ID_REGEX = rf"({SIMPLE_ID_REGEX})|{PublicId.PUBLIC_ID_REGEX}" ItemType = TypeVar("ItemType") diff --git a/aea/decision_maker/base.py b/aea/decision_maker/base.py index b9c1dc2a1a..bc0f79746c 100644 --- a/aea/decision_maker/base.py +++ b/aea/decision_maker/base.py @@ -311,7 +311,10 @@ class DecisionMaker(WithLogger): "_stopped", ) - def __init__(self, decision_maker_handler: DecisionMakerHandler,) -> None: + def __init__( + self, + decision_maker_handler: DecisionMakerHandler, + ) -> None: """ Initialize the decision maker. diff --git a/aea/decision_maker/default.py b/aea/decision_maker/default.py index fbfae68b87..e5f4e65cae 100644 --- a/aea/decision_maker/default.py +++ b/aea/decision_maker/default.py @@ -97,7 +97,10 @@ def __init__( """ kwargs: Dict[str, Any] = {} super().__init__( - identity=identity, wallet=wallet, config=config, **kwargs, + identity=identity, + wallet=wallet, + config=config, + **kwargs, ) self.signing_dialogues = DecisionMakerHandler.SigningDialogues( self.self_address @@ -176,7 +179,9 @@ def _handle_message_signing( signing_msg.raw_message.is_deprecated_mode, ) signing_msg_response = signing_dialogue.reply( - performative=performative, target_message=signing_msg, **kwargs, + performative=performative, + target_message=signing_msg, + **kwargs, ) self.message_out_queue.put(signing_msg_response) @@ -203,6 +208,8 @@ def _handle_transaction_signing( signing_msg.raw_transaction.ledger_id, signed_tx ) signing_msg_response = signing_dialogue.reply( - performative=performative, target_message=signing_msg, **kwargs, + performative=performative, + target_message=signing_msg, + **kwargs, ) self.message_out_queue.put(signing_msg_response) diff --git a/aea/decision_maker/gop.py b/aea/decision_maker/gop.py index 43940741d0..dbeb703d30 100644 --- a/aea/decision_maker/gop.py +++ b/aea/decision_maker/gop.py @@ -347,7 +347,8 @@ def logarithmic_utility(self, quantities_by_good_id: GoodHoldings) -> float: """ enforce(self.is_initialized, "Preferences params not set!") result = logarithmic_utility( - self.utility_params_by_good_id, quantities_by_good_id, + self.utility_params_by_good_id, + quantities_by_good_id, ) return result @@ -695,7 +696,9 @@ def _handle_message_signing( signing_msg.raw_message.is_deprecated_mode, ) signing_msg_response = signing_dialogue.reply( - performative=performative, target_message=signing_msg, **kwargs, + performative=performative, + target_message=signing_msg, + **kwargs, ) self.message_out_queue.put(signing_msg_response) @@ -723,7 +726,9 @@ def _handle_transaction_signing( signing_msg.raw_transaction.ledger_id, signed_tx ) signing_msg_response = signing_dialogue.reply( - performative=performative, target_message=signing_msg, **kwargs, + performative=performative, + target_message=signing_msg, + **kwargs, ) self.message_out_queue.put(signing_msg_response) diff --git a/aea/decision_maker/scaffold.py b/aea/decision_maker/scaffold.py index 33bc9b18ae..30615b47e2 100644 --- a/aea/decision_maker/scaffold.py +++ b/aea/decision_maker/scaffold.py @@ -46,7 +46,10 @@ def __init__( } # type: Dict[str, Any] # You MUST NOT modify the constructor below: super().__init__( - identity=identity, wallet=wallet, config=config, **kwargs, + identity=identity, + wallet=wallet, + config=config, + **kwargs, ) def handle(self, message: Message) -> None: diff --git a/aea/helpers/async_utils.py b/aea/helpers/async_utils.py index a96dee61a6..8c6db9c710 100644 --- a/aea/helpers/async_utils.py +++ b/aea/helpers/async_utils.py @@ -33,6 +33,7 @@ Awaitable, Callable, Container, + Coroutine, Generator, List, Optional, @@ -40,6 +41,7 @@ Set, Tuple, Union, + cast, ) @@ -263,7 +265,7 @@ class AnotherThreadTask: Provides better cancel behaviour: on cancel it will wait till cancelled completely. """ - def __init__(self, coro: Awaitable, loop: AbstractEventLoop) -> None: + def __init__(self, coro: Coroutine[Any, Any, Any], loop: AbstractEventLoop) -> None: """ Init the task. @@ -333,7 +335,7 @@ def run(self) -> None: self._loop.run_forever() _default_logger.debug("Asyncio loop has been stopped.") - def call(self, coro: Awaitable) -> Any: + def call(self, coro: Coroutine[Any, Any, Any]) -> Any: """ Run a coroutine inside the event loop. @@ -480,7 +482,7 @@ async def run(self) -> Any: def wait_completed( self, sync: bool = False, timeout: float = None, force_result: bool = False - ) -> Awaitable: + ) -> Union[Coroutine, Awaitable]: """ Wait runnable execution completed. @@ -520,7 +522,7 @@ def _wait_sync(self, timeout: Optional[float] = None) -> None: self._got_result = True if self._task.exception(): - raise self._task.exception() + raise cast(Exception, self._task.exception()) else: self._loop.run_until_complete( asyncio.wait_for(self._wait(), timeout=timeout) @@ -542,7 +544,7 @@ def done(task: Future) -> None: if fut.done(): # pragma: nocover return if task.exception(): - fut.set_exception(task.exception()) + fut.set_exception(task.exception()) # type: ignore else: # pragma: nocover fut.set_result(None) finally: @@ -593,7 +595,9 @@ def _task_cancel(self, force: bool = False) -> None: self._was_cancelled = True self._task.cancel() - def start_and_wait_completed(self, *args: Any, **kwargs: Any) -> Awaitable: + def start_and_wait_completed( + self, *args: Any, **kwargs: Any + ) -> Union[Coroutine, Awaitable]: """Alias for start and wait methods.""" self.start() return self.wait_completed(*args, **kwargs) diff --git a/aea/helpers/base.py b/aea/helpers/base.py index b011e11568..b51330d25b 100644 --- a/aea/helpers/base.py +++ b/aea/helpers/base.py @@ -62,7 +62,7 @@ STRING_LENGTH_LIMIT = 128 -SIMPLE_ID_REGEX = fr"[a-zA-Z_][a-zA-Z0-9_]{{0,{STRING_LENGTH_LIMIT - 1}}}" +SIMPLE_ID_REGEX = rf"[a-zA-Z_][a-zA-Z0-9_]{{0,{STRING_LENGTH_LIMIT - 1}}}" ISO_8601_DATE_FORMAT = "%Y-%m-%d" _default_logger = logging.getLogger(__name__) @@ -88,10 +88,14 @@ def locate(path: str) -> Any: module_location = os.path.join(file_location, "__init__.py") spec = importlib.util.spec_from_file_location(spec_name, module_location) _default_logger.debug("Trying to import {}".format(module_location)) + if not spec: + raise RuntimeError(f"Error loading module by path {module_location}") nextmodule = _get_module(spec) if nextmodule is None: module_location = file_location + ".py" spec = importlib.util.spec_from_file_location(spec_name, module_location) + if not spec: + raise RuntimeError(f"Error loading module by path {module_location}") _default_logger.debug("Trying to import {}".format(module_location)) nextmodule = _get_module(spec) @@ -122,6 +126,8 @@ def load_module(dotted_path: str, filepath: Path) -> types.ModuleType: :raises Exception: if the execution of the module raises exception. # noqa: DAR402 """ spec = importlib.util.spec_from_file_location(dotted_path, str(filepath)) + if not spec: + raise RuntimeError(f"Error loading module by path {filepath}") module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) # type: ignore return module @@ -152,7 +158,7 @@ def sigint_crossplatform(process: subprocess.Popen) -> None: # pragma: nocover if os.name == "posix": process.send_signal(signal.SIGINT) # pylint: disable=no-member elif os.name == "nt": - process.send_signal(signal.CTRL_C_EVENT) # pylint: disable=no-member + process.send_signal(signal.CTRL_C_EVENT) # type: ignore # pylint: disable=no-member else: raise ValueError("Other platforms not supported.") @@ -189,7 +195,7 @@ def send_control_c( if platform.system() == "Windows": if process.stdin: # cause ctrl-c event will be handled with stdin process.stdin.close() - os.kill(process.pid, signal.CTRL_C_EVENT) # pylint: disable=no-member + os.kill(process.pid, signal.CTRL_C_EVENT) # type: ignore # pylint: disable=no-member elif kill_group: pgid = os.getpgid(process.pid) os.killpg(pgid, signal.SIGINT) @@ -393,7 +399,9 @@ def _is_dict_like(obj: Any) -> bool: def recursive_update( - to_update: Dict, new_values: Dict, allow_new_values: bool = False, + to_update: Dict, + new_values: Dict, + allow_new_values: bool = False, ) -> None: """ Update a dictionary by replacing conflicts with the new values. @@ -490,7 +498,7 @@ def find_topological_order(adjacency_list: Dict[T, Set[T]]) -> List[T]: # compute the topological order queue: Deque[T] = deque() order = [] - queue.extendleft(sorted(roots)) + queue.extendleft(sorted(roots)) # type: ignore while len(queue) > 0: current = queue.pop() order.append(current) diff --git a/aea/helpers/constants.py b/aea/helpers/constants.py index 46decc5a3f..e82b2a1172 100644 --- a/aea/helpers/constants.py +++ b/aea/helpers/constants.py @@ -22,7 +22,13 @@ FALSE_EQUIVALENTS = ["f", "false", "False", "0"] FROM_STRING_TO_TYPE = dict( - str=str, int=int, bool=bool, float=float, dict=dict, list=list, none=None, + str=str, + int=int, + bool=bool, + float=float, + dict=dict, + list=list, + none=None, ) JSON_TYPES = Union[Dict, str, List, None, int, float] diff --git a/aea/helpers/file_io.py b/aea/helpers/file_io.py index da6207bfe5..b5052d6206 100644 --- a/aea/helpers/file_io.py +++ b/aea/helpers/file_io.py @@ -90,7 +90,8 @@ def lock_file( :yield: generator """ with exception_log_and_reraise( - logger.error, f"Couldn't acquire lock for file {file_descriptor.name}: {{}}", + logger.error, + f"Couldn't acquire lock for file {file_descriptor.name}: {{}}", ): file_lock.lock(file_descriptor, file_lock.LOCK_EX) diff --git a/aea/helpers/file_lock.py b/aea/helpers/file_lock.py index e2d2f249d1..29aac82546 100644 --- a/aea/helpers/file_lock.py +++ b/aea/helpers/file_lock.py @@ -49,7 +49,6 @@ def unlock(file: IO) -> None: ) win32file.UnlockFileEx(hfile, 0, 0xFFFF0000, __overlapped) - elif os.name == "posix": # pragma: nocover # cause platform dependent! import fcntl from fcntl import LOCK_EX, LOCK_NB, LOCK_SH # noqa # pylint: disable=unused-import @@ -62,6 +61,5 @@ def unlock(file: IO) -> None: """Unlock a file.""" fcntl.flock(file.fileno(), fcntl.LOCK_UN) - else: # pragma: nocover raise RuntimeError("This module only works for nt and posix platforms") diff --git a/aea/helpers/http_requests.py b/aea/helpers/http_requests.py index 98f4df8e67..f5fb88a4aa 100644 --- a/aea/helpers/http_requests.py +++ b/aea/helpers/http_requests.py @@ -34,7 +34,9 @@ JSONDecodeError, ) except ModuleNotFoundError: # pragma: nocover - from json.decoder import JSONDecodeError # noqa # pylint: disable=unused-import + from json.decoder import ( # type: ignore # noqa # pylint: disable=unused-import + JSONDecodeError, + ) def add_default_timeout(fn: Callable, timeout: float) -> Callable: diff --git a/aea/helpers/install_dependency.py b/aea/helpers/install_dependency.py index 48fc94e73b..a66541dbba 100644 --- a/aea/helpers/install_dependency.py +++ b/aea/helpers/install_dependency.py @@ -53,7 +53,9 @@ def install_dependency( def install_dependencies( - dependencies: List[Dependency], logger: Logger, install_timeout: float = 300, + dependencies: List[Dependency], + logger: Logger, + install_timeout: float = 300, ) -> None: """ Install python dependencies to the current python environment. diff --git a/aea/helpers/ipfs/pb/unixfs_pb2.py b/aea/helpers/ipfs/pb/unixfs_pb2.py index 5e6ccb71c3..2e015d2589 100644 --- a/aea/helpers/ipfs/pb/unixfs_pb2.py +++ b/aea/helpers/ipfs/pb/unixfs_pb2.py @@ -211,7 +211,9 @@ ], extensions=[], nested_types=[], - enum_types=[_DATA_DATATYPE,], + enum_types=[ + _DATA_DATATYPE, + ], serialized_options=None, is_extendable=False, syntax="proto2", diff --git a/aea/helpers/logging.py b/aea/helpers/logging.py index bc92d6bd79..b90bd2d9c4 100644 --- a/aea/helpers/logging.py +++ b/aea/helpers/logging.py @@ -55,7 +55,9 @@ class WithLogger: __slots__ = ("_logger", "_default_logger_name") def __init__( - self, logger: Optional[Logger] = None, default_logger_name: str = "aea", + self, + logger: Optional[Logger] = None, + default_logger_name: str = "aea", ) -> None: """ Initialize the logger. diff --git a/aea/helpers/pipe.py b/aea/helpers/pipe.py index b5cc50acc7..6edb8f3b96 100644 --- a/aea/helpers/pipe.py +++ b/aea/helpers/pipe.py @@ -571,7 +571,8 @@ async def connect(self, timeout: float = PIPE_CONN_TIMEOUT) -> bool: async def _open_connection(self) -> TCPSocketProtocol: reader, writer = await asyncio.open_connection( - self._host, self._port, # pylint: disable=protected-access + self._host, + self._port, # pylint: disable=protected-access ) return TCPSocketProtocol(reader, writer, logger=self.logger, loop=self._loop) diff --git a/aea/helpers/profiling.py b/aea/helpers/profiling.py index f3269eb36f..03e0959394 100644 --- a/aea/helpers/profiling.py +++ b/aea/helpers/profiling.py @@ -47,18 +47,17 @@ def get_current_process_memory_usage() -> float: """Get current process memory usage in MB.""" d = win32process.GetProcessMemoryInfo(win32process.GetCurrentProcess()) # type: ignore - return 1.0 * d["WorkingSetSize"] / 1024 ** 2 + return 1.0 * d["WorkingSetSize"] / 1024**2 def get_current_process_cpu_time() -> float: """Get current process cpu time in seconds.""" d = win32process.GetProcessTimes(win32process.GetCurrentProcess()) # type: ignore return d["UserTime"] / WIN32_PROCESS_TIMES_TICKS_PER_SECOND - else: import resource - _MAC_MEM_STATS_MB = 1024 ** 2 + _MAC_MEM_STATS_MB = 1024**2 _LINUX_MEM_STATS_MB = 1024 def get_current_process_memory_usage() -> float: diff --git a/aea/helpers/search/models.py b/aea/helpers/search/models.py index 70a7d1ac8c..b7bffa1922 100644 --- a/aea/helpers/search/models.py +++ b/aea/helpers/search/models.py @@ -445,7 +445,9 @@ def _check_consistency(self) -> None: # value type matches data model, but it is not an allowed type raise AttributeInconsistencyException( "Attribute {} has unallowed type: {}. Allowed types: {}".format( - attribute.name, type(value), ALLOWED_ATTRIBUTE_TYPES, + attribute.name, + type(value), + ALLOWED_ATTRIBUTE_TYPES, ) ) @@ -1006,19 +1008,23 @@ def decode(cls, constraint_type_pb: Any, category: str) -> "ConstraintType": value_case = constraint_type_pb.values.WhichOneof("values") if value_case == proto_set_values["string"]: decoding = ConstraintType( - set_enum, tuple(constraint_type_pb.values.string.values), + set_enum, + tuple(constraint_type_pb.values.string.values), ) elif value_case == proto_set_values["boolean"]: decoding = ConstraintType( - set_enum, tuple(constraint_type_pb.values.boolean.values), + set_enum, + tuple(constraint_type_pb.values.boolean.values), ) elif value_case == proto_set_values["integer"]: decoding = ConstraintType( - set_enum, tuple(constraint_type_pb.values.integer.values), + set_enum, + tuple(constraint_type_pb.values.integer.values), ) elif value_case == proto_set_values["double"]: decoding = ConstraintType( - set_enum, tuple(constraint_type_pb.values.double.values), + set_enum, + tuple(constraint_type_pb.values.double.values), ) elif value_case == proto_set_values["location"]: locations = [ @@ -1624,7 +1630,10 @@ def _decode(cls, query_pb: Any) -> "Query": ] data_model = DataModel.decode(query_pb.model) - return cls(constraints, data_model if query_pb.HasField("model") else None,) + return cls( + constraints, + data_model if query_pb.HasField("model") else None, + ) @classmethod def decode(cls, query_pb: Any) -> "Query": @@ -1653,7 +1662,12 @@ def haversine(lat1: float, lon1: float, lat2: float, lon2: float) -> float: :param lon2: the longitude of the second location. :return: the Haversine distance. """ - lat1, lon1, lat2, lon2, = map(radians, [lat1, lon1, lat2, lon2]) + ( + lat1, + lon1, + lat2, + lon2, + ) = map(radians, [lat1, lon1, lat2, lon2]) earth_radius = 6372.8 # average earth radius dlat = lat2 - lat1 dlon = lon2 - lon1 diff --git a/aea/helpers/search/models_pb2.py b/aea/helpers/search/models_pb2.py index 16109f809a..6b534d5fa6 100644 --- a/aea/helpers/search/models_pb2.py +++ b/aea/helpers/search/models_pb2.py @@ -259,7 +259,9 @@ ], extensions=[], nested_types=[], - enum_types=[_QUERY_ATTRIBUTE_TYPE,], + enum_types=[ + _QUERY_ATTRIBUTE_TYPE, + ], serialized_options=None, is_extendable=False, syntax="proto3", @@ -1099,7 +1101,9 @@ ], extensions=[], nested_types=[], - enum_types=[_QUERY_RELATION_OPERATOR,], + enum_types=[ + _QUERY_RELATION_OPERATOR, + ], serialized_options=None, is_extendable=False, syntax="proto3", @@ -1488,8 +1492,12 @@ ), ], extensions=[], - nested_types=[_QUERY_SET_VALUES,], - enum_types=[_QUERY_SET_OPERATOR,], + nested_types=[ + _QUERY_SET_VALUES, + ], + enum_types=[ + _QUERY_SET_OPERATOR, + ], serialized_options=None, is_extendable=False, syntax="proto3", diff --git a/aea/helpers/transaction/base.py b/aea/helpers/transaction/base.py index 15511f68f1..7c54d958b8 100644 --- a/aea/helpers/transaction/base.py +++ b/aea/helpers/transaction/base.py @@ -37,7 +37,11 @@ class RawTransaction: __slots__ = ("_ledger_id", "_body") - def __init__(self, ledger_id: str, body: JSONLike,) -> None: + def __init__( + self, + ledger_id: str, + body: JSONLike, + ) -> None: """Initialise an instance of RawTransaction.""" self._ledger_id = ledger_id self._body = body @@ -76,8 +80,8 @@ def encode( "body": raw_transaction_object.body, } - raw_transaction_protobuf_object.raw_transaction = DictProtobufStructSerializer.encode( - raw_transaction_dict + raw_transaction_protobuf_object.raw_transaction = ( + DictProtobufStructSerializer.encode(raw_transaction_dict) ) @classmethod @@ -106,7 +110,8 @@ def __eq__(self, other: Any) -> bool: def __str__(self) -> str: """Get string representation.""" return "RawTransaction: ledger_id={}, body={}".format( - self.ledger_id, self.body, + self.ledger_id, + self.body, ) @@ -116,7 +121,10 @@ class RawMessage: __slots__ = ("_ledger_id", "_body", "_is_deprecated_mode") def __init__( - self, ledger_id: str, body: bytes, is_deprecated_mode: bool = False, + self, + ledger_id: str, + body: bytes, + is_deprecated_mode: bool = False, ) -> None: """Initialise an instance of RawMessage.""" self._ledger_id = ledger_id @@ -201,7 +209,9 @@ def __eq__(self, other: Any) -> bool: def __str__(self) -> str: """Get string representation.""" return "RawMessage: ledger_id={}, body={!r}, is_deprecated_mode={}".format( - self.ledger_id, self.body, self.is_deprecated_mode, + self.ledger_id, + self.body, + self.is_deprecated_mode, ) @@ -210,7 +220,11 @@ class SignedTransaction: __slots__ = ("_ledger_id", "_body") - def __init__(self, ledger_id: str, body: JSONLike,) -> None: + def __init__( + self, + ledger_id: str, + body: JSONLike, + ) -> None: """Initialise an instance of SignedTransaction.""" self._ledger_id = ledger_id self._body = body @@ -249,8 +263,8 @@ def encode( "body": signed_transaction_object.body, } - signed_transaction_protobuf_object.signed_transaction = DictProtobufStructSerializer.encode( - signed_transaction_dict + signed_transaction_protobuf_object.signed_transaction = ( + DictProtobufStructSerializer.encode(signed_transaction_dict) ) @classmethod @@ -281,7 +295,8 @@ def __eq__(self, other: Any) -> bool: def __str__(self) -> str: """Get string representation.""" return "SignedTransaction: ledger_id={}, body={}".format( - self.ledger_id, self.body, + self.ledger_id, + self.body, ) @@ -291,7 +306,10 @@ class SignedMessage: __slots__ = ("_ledger_id", "_body", "_is_deprecated_mode") def __init__( - self, ledger_id: str, body: str, is_deprecated_mode: bool = False, + self, + ledger_id: str, + body: str, + is_deprecated_mode: bool = False, ) -> None: """Initialise an instance of SignedMessage.""" self._ledger_id = ledger_id @@ -341,8 +359,8 @@ def encode( "is_deprecated_mode": signed_message_object.is_deprecated_mode, } - signed_message_protobuf_object.signed_message = DictProtobufStructSerializer.encode( - signed_message_dict + signed_message_protobuf_object.signed_message = ( + DictProtobufStructSerializer.encode(signed_message_dict) ) @classmethod @@ -376,7 +394,9 @@ def __eq__(self, other: Any) -> bool: def __str__(self) -> str: """Get string representation.""" return "SignedMessage: ledger_id={}, body={}, is_deprecated_mode={}".format( - self.ledger_id, self.body, self.is_deprecated_mode, + self.ledger_id, + self.body, + self.is_deprecated_mode, ) @@ -1007,8 +1027,8 @@ def encode( "body": transaction_digest_object.body, } - transaction_digest_protobuf_object.transaction_digest = DictProtobufStructSerializer.encode( - transaction_digest_dict + transaction_digest_protobuf_object.transaction_digest = ( + DictProtobufStructSerializer.encode(transaction_digest_dict) ) @classmethod @@ -1098,8 +1118,8 @@ def encode( "transaction": transaction_receipt_object.transaction, } - transaction_receipt_protobuf_object.transaction_receipt = DictProtobufStructSerializer.encode( - transaction_receipt_dict + transaction_receipt_protobuf_object.transaction_receipt = ( + DictProtobufStructSerializer.encode(transaction_receipt_dict) ) @classmethod diff --git a/aea/launcher.py b/aea/launcher.py index 2df3850e9d..18ca7adc45 100644 --- a/aea/launcher.py +++ b/aea/launcher.py @@ -171,7 +171,7 @@ def create_async_task(self, loop: AbstractEventLoop) -> TaskAwaitable: raise ValueError( "Agent runtime is not async compatible. Please use runtime_mode=async" ) - return loop.create_task(self._agent.runtime.start_and_wait_completed()) + return loop.create_task(self._agent.runtime.start_and_wait_completed()) # type: ignore class AEADirMultiprocessTask(AbstractMultiprocessExecutorTask): diff --git a/aea/mail/base.py b/aea/mail/base.py index eb11e2225b..30e42e6ae3 100644 --- a/aea/mail/base.py +++ b/aea/mail/base.py @@ -123,7 +123,9 @@ class EnvelopeContext: __slots__ = ("_connection_id", "_uri") def __init__( - self, connection_id: Optional[PublicId] = None, uri: Optional[URI] = None, + self, + connection_id: Optional[PublicId] = None, + uri: Optional[URI] = None, ) -> None: """ Initialize the envelope context. @@ -431,7 +433,10 @@ def __eq__(self, other: Any) -> bool: and self.context == other.context ) - def encode(self, serializer: Optional[EnvelopeSerializer] = None,) -> bytes: + def encode( + self, + serializer: Optional[EnvelopeSerializer] = None, + ) -> bytes: """ Encode the envelope. diff --git a/aea/mail/base_pb2.py b/aea/mail/base_pb2.py index 3c819cf87f..5c052c6ea4 100644 --- a/aea/mail/base_pb2.py +++ b/aea/mail/base_pb2.py @@ -22,7 +22,9 @@ serialized_options=None, create_key=_descriptor._internal_create_key, serialized_pb=b'\n\nbase.proto\x12\x0f\x61\x65\x61.base.v0_1_0\x1a\x1cgoogle/protobuf/struct.proto"\x90\x01\n\x0f\x44ialogueMessage\x12\x12\n\nmessage_id\x18\x01 \x01(\x05\x12"\n\x1a\x64ialogue_starter_reference\x18\x02 \x01(\t\x12$\n\x1c\x64ialogue_responder_reference\x18\x03 \x01(\t\x12\x0e\n\x06target\x18\x04 \x01(\x05\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\x0c"{\n\x07Message\x12\'\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12<\n\x10\x64ialogue_message\x18\x02 \x01(\x0b\x32 .aea.base.v0_1_0.DialogueMessageH\x00\x42\t\n\x07message"Y\n\x08\x45nvelope\x12\n\n\x02to\x18\x01 \x01(\t\x12\x0e\n\x06sender\x18\x02 \x01(\t\x12\x13\n\x0bprotocol_id\x18\x03 \x01(\t\x12\x0f\n\x07message\x18\x04 \x01(\x0c\x12\x0b\n\x03uri\x18\x05 \x01(\tb\x06proto3', - dependencies=[google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,], + dependencies=[ + google_dot_protobuf_dot_struct__pb2.DESCRIPTOR, + ], ) diff --git a/aea/manager/manager.py b/aea/manager/manager.py index 0f5968a606..cb50d3a5d7 100644 --- a/aea/manager/manager.py +++ b/aea/manager/manager.py @@ -199,7 +199,9 @@ def start(self) -> None: ) self._thread.start() - def stop(self,) -> None: + def stop( + self, + ) -> None: """Stop the task.""" super().stop() if self._thread is not None: @@ -258,7 +260,9 @@ def wait(self) -> asyncio.Future: @staticmethod def _run_agent( - agent_alias: AgentAlias, stop_event: Event, result_queue: multiprocessing.Queue, + agent_alias: AgentAlias, + stop_event: Event, + result_queue: multiprocessing.Queue, ) -> None: """Start an agent in a child process.""" t: Optional[Thread] = None @@ -515,7 +519,9 @@ def start_manager( def last_start_status( self, ) -> Tuple[ - bool, Dict[PublicId, List[Dict]], List[Tuple[PublicId, List[Dict], Exception]], + bool, + Dict[PublicId, List[Dict]], + List[Tuple[PublicId, List[Dict], Exception]], ]: """Get status of the last agents start loading state.""" if self._last_start_status is None: @@ -725,7 +731,10 @@ def add_agent( return self def add_agent_with_config( - self, public_id: PublicId, config: List[dict], agent_name: Optional[str] = None, + self, + public_id: PublicId, + config: List[dict], + agent_name: Optional[str] = None, ) -> "MultiAgentManager": """ Create new agent configuration based on project with config provided. @@ -1024,7 +1033,9 @@ def _ensure_working_dir(self) -> None: def _load_state( self, local: bool, remote: bool ) -> Tuple[ - bool, Dict[PublicId, List[Dict]], List[Tuple[PublicId, List[Dict], Exception]], + bool, + Dict[PublicId, List[Dict]], + List[Tuple[PublicId, List[Dict], Exception]], ]: """ Load saved state from file. @@ -1063,7 +1074,10 @@ def _load_state( for project_public_id, agents_settings in projects_agents.items(): try: self.add_project( - project_public_id, local=local, remote=remote, restore=True, + project_public_id, + local=local, + remote=remote, + restore=True, ) except ProjectCheckError as e: failed_to_load.append((project_public_id, agents_settings, e)) diff --git a/aea/manager/project.py b/aea/manager/project.py index 052ec2aa69..792e8cb7a5 100644 --- a/aea/manager/project.py +++ b/aea/manager/project.py @@ -223,7 +223,10 @@ def agent_config(self) -> AgentConfig: return self._agent_config def _create_private_key( - self, ledger: str, replace: bool = False, is_connection: bool = False, + self, + ledger: str, + replace: bool = False, + is_connection: bool = False, ) -> str: """ Create new key for agent alias in working dir keys dir. diff --git a/aea/multiplexer.py b/aea/multiplexer.py index cc88fd1820..77885be587 100644 --- a/aea/multiplexer.py +++ b/aea/multiplexer.py @@ -159,7 +159,9 @@ def __init__( self._recv_loop_task = None # type: Optional[asyncio.Task] self._send_loop_task = None # type: Optional[asyncio.Task] - self._loop: asyncio.AbstractEventLoop = loop if loop is not None else asyncio.new_event_loop() + self._loop: asyncio.AbstractEventLoop = ( + loop if loop is not None else asyncio.new_event_loop() + ) self.set_loop(self._loop) @property @@ -966,7 +968,9 @@ def put(self, envelope: Envelope) -> None: self._multiplexer.put(envelope) def put_message( - self, message: Message, context: Optional[EnvelopeContext] = None, + self, + message: Message, + context: Optional[EnvelopeContext] = None, ) -> None: """ Put a message in the outbox. @@ -983,6 +987,9 @@ def put_message( if not message.has_sender: raise ValueError("Provided message has message.sender not set.") envelope = Envelope( - to=message.to, sender=message.sender, message=message, context=context, + to=message.to, + sender=message.sender, + message=message, + context=context, ) self.put(envelope) diff --git a/aea/protocols/base.py b/aea/protocols/base.py index c6133dc40d..c6dc38e871 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -394,7 +394,10 @@ def from_config(cls, configuration: ProtocolConfig, **kwargs: Any) -> "Protocol" ) classes = inspect.getmembers(class_module, inspect.isclass) serializer_classes = list( - filter(lambda x: re.match(f"{name_camel_case}Serializer", x[0]), classes,) + filter( + lambda x: re.match(f"{name_camel_case}Serializer", x[0]), + classes, + ) ) if len(serializer_classes) != 1: # pragma: nocover raise AEAComponentLoadException( diff --git a/aea/protocols/dialogue/base.py b/aea/protocols/dialogue/base.py index 53d472a38a..34ed71cd6f 100644 --- a/aea/protocols/dialogue/base.py +++ b/aea/protocols/dialogue/base.py @@ -213,7 +213,7 @@ class _DialogueMeta(type): def __new__(cls, name: str, bases: Tuple[Type], dct: Dict) -> "_DialogueMeta": """Construct a new type.""" # set class level `_rules` - dialogue_cls: Type[Dialogue] = super().__new__(cls, name, bases, dct) + dialogue_cls = cast(Type["Dialogue"], super().__new__(cls, name, bases, dct)) dialogue_cls._rules = dialogue_cls.Rules( dialogue_cls.INITIAL_PERFORMATIVES, dialogue_cls.TERMINAL_PERFORMATIVES, @@ -614,7 +614,8 @@ def _update(self, message: Message) -> None: if not is_valid_result: raise InvalidDialogueMessage( "Message {} is invalid with respect to this dialogue. Error: {}".format( - message.message_id, validation_message, + message.message_id, + validation_message, ) ) @@ -650,7 +651,9 @@ def _is_belonging_to_dialogue(self, message: Message) -> bool: result = self_initiated_dialogue_label in self.dialogue_labels else: other_initiated_dialogue_label = DialogueLabel( - message.dialogue_reference, opponent, opponent, + message.dialogue_reference, + opponent, + opponent, ) result = other_initiated_dialogue_label in self.dialogue_labels return result @@ -1638,7 +1641,10 @@ def new_self_initiated_dialogue_reference(cls) -> Tuple[str, str]: return cls._generate_dialogue_nonce(), Dialogue.UNASSIGNED_DIALOGUE_REFERENCE def create( - self, counterparty: Address, performative: Message.Performative, **kwargs: Any, + self, + counterparty: Address, + performative: Message.Performative, + **kwargs: Any, ) -> Tuple[Message, Dialogue]: """ Create a dialogue with 'counterparty', with an initial message whose performative is 'performative' and contents are from 'kwargs'. @@ -1807,7 +1813,9 @@ def _complete_dialogue_reference(self, message: Message) -> None: Dialogue.UNASSIGNED_DIALOGUE_REFERENCE, ) incomplete_dialogue_label = DialogueLabel( - incomplete_dialogue_reference, message.sender, self.self_address, + incomplete_dialogue_reference, + message.sender, + self.self_address, ) if self._dialogues_storage.is_dialogue_present( diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index 136b0ea5e2..2f9d0e9c62 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -241,7 +241,9 @@ def _import_from_custom_types_module(self) -> str: else: for custom_class in self.spec.all_custom_types: import_str += "from {}.custom_types import {} as Custom{}\n".format( - self.dotted_path_to_protocol_package, custom_class, custom_class, + self.dotted_path_to_protocol_package, + custom_class, + custom_class, ) import_str = import_str[:-1] return import_str @@ -897,7 +899,8 @@ def _message_class_str(self) -> str: else: cls_str += self.indent + "elif " cls_str += "self.performative == {}Message.Performative.{}:\n".format( - self.protocol_specification_in_camel_case, performative.upper(), + self.protocol_specification_in_camel_case, + performative.upper(), ) self._change_indent(1) nb_of_non_optional_contents = 0 @@ -1299,7 +1302,8 @@ def _custom_types_module_str(self) -> str: cls_str += ( self.indent + 'def decode(cls, {}_protobuf_object) -> "{}":\n'.format( - _camel_case_to_snake_case(custom_type), custom_type, + _camel_case_to_snake_case(custom_type), + custom_type, ) ) self._change_indent(1) @@ -1337,7 +1341,9 @@ def _custom_types_module_str(self) -> str: return cls_str def _encoding_message_content_from_python_to_protobuf( - self, content_name: str, content_type: str, + self, + content_name: str, + content_type: str, ) -> str: """ Produce the encoding of message contents for the serialisation class. @@ -1530,7 +1536,9 @@ def _decoding_message_content_from_protobuf_to_python( variable_name, ) decoding_str += self.indent + "{} = {}.decode(pb2_{})\n".format( - content_name, content_type, variable_name, + content_name, + content_type, + variable_name, ) decoding_str += self.indent + 'performative_content["{}"] = {}\n'.format( content_name, content_name @@ -1567,13 +1575,15 @@ def _serialization_class_str(self) -> str: cls_str += MESSAGE_IMPORT + "\n" cls_str += SERIALIZER_IMPORT + "\n\n" cls_str += self.indent + "from {} import (\n {}_pb2,\n)\n".format( - self.dotted_path_to_protocol_package, self.protocol_specification.name, + self.dotted_path_to_protocol_package, + self.protocol_specification.name, ) for custom_type in self.spec.all_custom_types: cls_str += ( self.indent + "from {}.custom_types import (\n {},\n)\n".format( - self.dotted_path_to_protocol_package, custom_type, + self.dotted_path_to_protocol_package, + custom_type, ) ) cls_str += self.indent + "from {}.message import (\n {}Message,\n)\n".format( @@ -1765,7 +1775,10 @@ def _serialization_class_str(self) -> str: return cls_str def _content_to_proto_field_str( - self, content_name: str, content_type: str, tag_no: int, + self, + content_name: str, + content_type: str, + tag_no: int, ) -> Tuple[str, int]: """ Convert a message content to its representation in a protocol buffer schema. @@ -1969,7 +1982,9 @@ def _init_str(self) -> str: return init_str def generate_protobuf_only_mode( - self, language: str = PROTOCOL_LANGUAGE_PYTHON, run_protolint: bool = True, + self, + language: str = PROTOCOL_LANGUAGE_PYTHON, + run_protolint: bool = True, ) -> Optional[str]: """ Run the generator in "protobuf only" mode: diff --git a/aea/protocols/generator/common.py b/aea/protocols/generator/common.py index 7dd6681878..c0feb726f9 100644 --- a/aea/protocols/generator/common.py +++ b/aea/protocols/generator/common.py @@ -128,7 +128,8 @@ def _match_brackets(text: str, index_of_open_bracket: int) -> int: if text[index_of_open_bracket] != "[": raise SyntaxError( "Index {} in 'text' is not an open bracket '['. It is {}".format( - index_of_open_bracket, text[index_of_open_bracket], + index_of_open_bracket, + text[index_of_open_bracket], ) ) @@ -467,7 +468,8 @@ def try_run_protolint(path_to_generated_protocol_package: str, name: str) -> Non """ # path to proto file path_to_proto_file = os.path.join( - path_to_generated_protocol_package, f"{name}.proto", + path_to_generated_protocol_package, + f"{name}.proto", ) # Dump protolint configuration into a temporary file diff --git a/aea/protocols/generator/extract_specification.py b/aea/protocols/generator/extract_specification.py index 1d33292770..5204b1a2f5 100644 --- a/aea/protocols/generator/extract_specification.py +++ b/aea/protocols/generator/extract_specification.py @@ -234,12 +234,14 @@ def extract( ) ] spec.reply = cast( - Dict[str, List[str]], protocol_specification.dialogue_config["reply"], + Dict[str, List[str]], + protocol_specification.dialogue_config["reply"], ) spec.terminal_performatives = [ terminal_performative.upper() for terminal_performative in cast( - List[str], protocol_specification.dialogue_config["termination"], + List[str], + protocol_specification.dialogue_config["termination"], ) ] roles_set = cast( diff --git a/aea/protocols/generator/validate.py b/aea/protocols/generator/validate.py index bcae8364ba..32c1eb8346 100644 --- a/aea/protocols/generator/validate.py +++ b/aea/protocols/generator/validate.py @@ -336,7 +336,8 @@ def _validate_content_name(content_name: str, performative: str) -> Tuple[bool, return ( False, "Invalid name for content '{}' of performative '{}'. This name is reserved.".format( - content_name, performative, + content_name, + performative, ), ) @@ -364,7 +365,8 @@ def _validate_content_type( return ( False, "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ), ) diff --git a/aea/registries/filter.py b/aea/registries/filter.py index 21c3abb951..4b77e7a03d 100644 --- a/aea/registries/filter.py +++ b/aea/registries/filter.py @@ -147,7 +147,8 @@ def _handle_internal_message(self, message: Message) -> None: ) return handler = self.resources.handler_registry.fetch_by_protocol_and_skill( - message.protocol_id, skill_id, + message.protocol_id, + skill_id, ) if handler is not None: self.logger.debug( diff --git a/aea/runner.py b/aea/runner.py index 5bd49555a9..25c78a19de 100644 --- a/aea/runner.py +++ b/aea/runner.py @@ -78,7 +78,7 @@ def create_async_task(self, loop: AbstractEventLoop) -> TaskAwaitable: raise ValueError( "Agent runtime is not async compatible. Please use runtime_mode=async" ) - return loop.create_task(self._agent.runtime.start_and_wait_completed()) + return loop.create_task(self._agent.runtime.start_and_wait_completed()) # type: ignore class AEARunner(AbstractMultipleRunner): diff --git a/aea/skills/base.py b/aea/skills/base.py index 3ad0b96cdd..793c4ef7fa 100644 --- a/aea/skills/base.py +++ b/aea/skills/base.py @@ -976,7 +976,8 @@ def _get_declared_skill_component_configurations( return result def _get_component_instances( - self, component_loading_items: List[_SkillComponentLoadingItem], + self, + component_loading_items: List[_SkillComponentLoadingItem], ) -> _ComponentsHelperIndex: """ Instantiate classes declared in configuration files. @@ -997,7 +998,8 @@ def _get_component_instances( @classmethod def _get_skill_component_type( - cls, skill_component_type: Type[SkillComponent], + cls, + skill_component_type: Type[SkillComponent], ) -> Type[Union[Handler, Behaviour, Model]]: """Get the concrete skill component type.""" parent_skill_component_types = list( diff --git a/aea/skills/behaviours.py b/aea/skills/behaviours.py index 1a0deac251..9613065667 100644 --- a/aea/skills/behaviours.py +++ b/aea/skills/behaviours.py @@ -110,7 +110,7 @@ def __init__( self, tick_interval: float = 1.0, start_at: Optional[datetime.datetime] = None, - **kwargs: Any + **kwargs: Any, ) -> None: """ Initialize the ticker behaviour. diff --git a/aea/test_tools/click_testing.py b/aea/test_tools/click_testing.py index 73f7d6b796..b99663ecd7 100644 --- a/aea/test_tools/click_testing.py +++ b/aea/test_tools/click_testing.py @@ -33,7 +33,6 @@ import sys from typing import Optional -from click._compat import string_types # type: ignore from click.testing import CliRunner as ClickCliRunner from click.testing import Result @@ -49,7 +48,7 @@ def invoke( # type: ignore env=None, catch_exceptions=True, color=False, - **extra + **extra, ) -> Result: """Call a cli command with click.testing.CliRunner.invoke.""" exc_info = None @@ -57,7 +56,7 @@ def invoke( # type: ignore exit_code = 0 with self.isolation(input=input, env=env, color=color) as outstreams: - if isinstance(args, string_types): + if isinstance(args, str): args = shlex.split(args) try: @@ -104,5 +103,6 @@ def invoke( # type: ignore stderr_bytes=stderr, # type: ignore exit_code=exit_code, exception=exception, - exc_info=exc_info, + exc_info=exc_info, # type: ignore + return_value=None, ) diff --git a/aea/test_tools/test_cases.py b/aea/test_tools/test_cases.py index da93c624d7..9f192a71cb 100644 --- a/aea/test_tools/test_cases.py +++ b/aea/test_tools/test_cases.py @@ -205,7 +205,8 @@ def _run_python_subprocess(cls, *args: str, cwd: str = ".") -> subprocess.Popen: kwargs.update(win_popen_kwargs()) process = subprocess.Popen( # type: ignore # nosec # mypy fails on **kwargs - [sys.executable, *args], **kwargs, + [sys.executable, *args], + **kwargs, ) cls.subprocesses.append(process) return process @@ -432,7 +433,9 @@ def _start_cli_process(cls, *args: str) -> subprocess.Popen: @classmethod def terminate_agents( - cls, *subprocesses: subprocess.Popen, timeout: int = 20, + cls, + *subprocesses: subprocess.Popen, + timeout: int = 20, ) -> None: """ Terminate agent subprocesses. @@ -628,7 +631,9 @@ def add_private_key( @classmethod def remove_private_key( - cls, ledger_api_id: str = DEFAULT_LEDGER, connection: bool = False, + cls, + ledger_api_id: str = DEFAULT_LEDGER, + connection: bool = False, ) -> Result: """ Remove private key with CLI command. @@ -769,6 +774,8 @@ def _join_threads(cls) -> None: def _read_out( cls, process: subprocess.Popen ) -> None: # pragma: nocover # runs in thread! + if process.stdout is None: + raise Exception("Stdout of the process is None") for line in TextIOWrapper(process.stdout, encoding="utf-8"): cls._log_capture("stdout", process.pid, line) cls.stdout[process.pid] += line @@ -990,7 +997,9 @@ class AEATestCaseEmpty(BaseAEATestCase): def setup_class(cls) -> None: """Set up the test class.""" super(AEATestCaseEmpty, cls).setup_class() - cls.agent_name = "agent_" + "".join(random.choices(string.ascii_lowercase, k=5)) + cls.agent_name = "agent_" + "".join( + random.choices(string.ascii_lowercase, k=5) # nosec + ) cls.create_agents(cls.agent_name, is_local=cls.IS_LOCAL, is_empty=cls.IS_EMPTY) cls.set_agent_context(cls.agent_name) diff --git a/aea/test_tools/test_contract.py b/aea/test_tools/test_contract.py index 7dfd4fefbb..3200fc2069 100644 --- a/aea/test_tools/test_contract.py +++ b/aea/test_tools/test_contract.py @@ -116,7 +116,10 @@ def setup(cls, **kwargs: Any) -> None: # deploy contract cls.deployment_tx_receipt = cls._deploy_contract( - cls._contract, cls.ledger_api, cls.deployer_crypto, gas=cls._deployment_gas, + cls._contract, + cls.ledger_api, + cls.deployer_crypto, + gas=cls._deployment_gas, ) cls.contract_address = cls.finish_contract_deployment() @@ -231,7 +234,9 @@ def _deploy_contract( :return: the transaction receipt for initial transaction deployment """ tx = contract.get_deploy_transaction( - ledger_api=ledger_api, deployer_address=deployer_crypto.address, gas=gas, + ledger_api=ledger_api, + deployer_address=deployer_crypto.address, + gas=gas, ) if tx is None: diff --git a/aea/test_tools/test_skill.py b/aea/test_tools/test_skill.py index 4bc403cf05..afbf3514e3 100644 --- a/aea/test_tools/test_skill.py +++ b/aea/test_tools/test_skill.py @@ -111,7 +111,9 @@ def assert_quantity_in_decision_making_queue(self, expected_quantity: int) -> No @staticmethod def message_has_attributes( - actual_message: Message, message_type: Type[Message], **kwargs: Any, + actual_message: Message, + message_type: Type[Message], + **kwargs: Any, ) -> Tuple[bool, str]: """ Evaluates whether a message's attributes match the expected attributes provided. @@ -324,7 +326,10 @@ def _non_initial_incoming_message_dialogue_reference( return dialogue_reference def _extract_message_fields( - self, message: DialogueMessage, index: int, last_is_incoming: bool, + self, + message: DialogueMessage, + index: int, + last_is_incoming: bool, ) -> Tuple[Message.Performative, Dict, int, bool, Optional[int]]: """ Extracts message attributes from a dialogue message. @@ -423,8 +428,8 @@ def prepare_skill_dialogue( target = cast(Message, dialogue.last_message).message_id if is_incoming: # messages from the opponent - dialogue_reference = self._non_initial_incoming_message_dialogue_reference( - dialogue + dialogue_reference = ( + self._non_initial_incoming_message_dialogue_reference(dialogue) ) message_id = dialogue.get_incoming_next_message_id() diff --git a/benchmark/checks/check_agent_construction_time.py b/benchmark/checks/check_agent_construction_time.py index 2856f8ad38..22b60d051d 100755 --- a/benchmark/checks/check_agent_construction_time.py +++ b/benchmark/checks/check_agent_construction_time.py @@ -94,7 +94,11 @@ def main(agents: int, number_of_runs: int, output_format: str) -> Any: parameters = {"Agents": agents, "Number of runs": number_of_runs} def result_fn() -> List[Tuple[str, Any, Any, Any]]: - return multi_run(int(number_of_runs), run, (agents,),) + return multi_run( + int(number_of_runs), + run, + (agents,), + ) return print_results(output_format, parameters, result_fn) diff --git a/benchmark/checks/check_decision_maker.py b/benchmark/checks/check_decision_maker.py index b629134020..6f3454ce05 100755 --- a/benchmark/checks/check_decision_maker.py +++ b/benchmark/checks/check_decision_maker.py @@ -90,7 +90,9 @@ def make_desc_maker_wallet( wallet = Wallet({ledger_id: key_path}) agent_name = "test" identity = Identity( - agent_name, addresses=wallet.addresses, default_address_key=ledger_id, + agent_name, + addresses=wallet.addresses, + default_address_key=ledger_id, ) config = {} # type: ignore decision_maker_handler = DecisionMakerHandler( @@ -222,7 +224,14 @@ def main( } def result_fn() -> List[Tuple[str, Any, Any, Any]]: - return multi_run(int(number_of_runs), run, (ledger_id, amount_of_tx,),) + return multi_run( + int(number_of_runs), + run, + ( + ledger_id, + amount_of_tx, + ), + ) return print_results(output_format, parameters, result_fn) diff --git a/benchmark/checks/check_dialogues_memory_usage.py b/benchmark/checks/check_dialogues_memory_usage.py index fde5e9fb05..d9243f0ac3 100755 --- a/benchmark/checks/check_dialogues_memory_usage.py +++ b/benchmark/checks/check_dialogues_memory_usage.py @@ -126,7 +126,11 @@ def main(messages: str, number_of_runs: int, output_format: str) -> Any: parameters = {"Messages": messages, "Number of runs": number_of_runs} def result_fn() -> List[Tuple[str, Any, Any, Any]]: - return multi_run(int(number_of_runs), run, (int(messages),),) + return multi_run( + int(number_of_runs), + run, + (int(messages),), + ) return print_results(output_format, parameters, result_fn) diff --git a/benchmark/checks/check_mem_usage.py b/benchmark/checks/check_mem_usage.py index 3a74c1d521..17aac12fbf 100755 --- a/benchmark/checks/check_mem_usage.py +++ b/benchmark/checks/check_mem_usage.py @@ -109,7 +109,11 @@ def main( } def result_fn() -> List[Tuple[str, Any, Any, Any]]: - return multi_run(int(number_of_runs), run, (duration, runtime_mode),) + return multi_run( + int(number_of_runs), + run, + (duration, runtime_mode), + ) return print_results(output_format, parameters, result_fn) diff --git a/benchmark/checks/check_messages_memory_usage.py b/benchmark/checks/check_messages_memory_usage.py index b1e9b74eab..4f67d5d82c 100755 --- a/benchmark/checks/check_messages_memory_usage.py +++ b/benchmark/checks/check_messages_memory_usage.py @@ -71,7 +71,7 @@ def run(messages_amount: int) -> List[Tuple[str, Union[int, float]]]: @click.command() -@click.option("--messages", default=10 ** 6, help="Amount of messages.") +@click.option("--messages", default=10**6, help="Amount of messages.") @number_of_runs_deco @output_format_deco def main(messages: int, number_of_runs: int, output_format: str) -> Any: @@ -79,7 +79,11 @@ def main(messages: int, number_of_runs: int, output_format: str) -> Any: parameters = {"Messages": messages, "Number of runs": number_of_runs} def result_fn() -> List[Tuple[str, Any, Any, Any]]: - return multi_run(int(number_of_runs), run, (int(messages),),) + return multi_run( + int(number_of_runs), + run, + (int(messages),), + ) return print_results(output_format, parameters, result_fn) diff --git a/benchmark/checks/check_multiagent.py b/benchmark/checks/check_multiagent.py index ebaecfc4c6..193ae09875 100755 --- a/benchmark/checks/check_multiagent.py +++ b/benchmark/checks/check_multiagent.py @@ -64,10 +64,14 @@ class TestHandler(Handler): def setup(self) -> None: """Noop setup.""" self.count: int = 0 # pylint: disable=attribute-defined-outside-init - self.rtt_total_time: float = 0.0 # pylint: disable=attribute-defined-outside-init + self.rtt_total_time: float = ( # pylint: disable=attribute-defined-outside-init + 0.0 + ) self.rtt_count: int = 0 # pylint: disable=attribute-defined-outside-init - self.latency_total_time: float = 0.0 # pylint: disable=attribute-defined-outside-init + self.latency_total_time: float = ( # pylint: disable=attribute-defined-outside-init + 0.0 + ) self.latency_count: int = 0 # pylint: disable=attribute-defined-outside-init def teardown(self) -> None: diff --git a/benchmark/checks/check_proactive.py b/benchmark/checks/check_proactive.py index ff305cdaee..1dce1be288 100755 --- a/benchmark/checks/check_proactive.py +++ b/benchmark/checks/check_proactive.py @@ -108,7 +108,11 @@ def main( } def result_fn() -> List[Tuple[str, Any, Any, Any]]: - return multi_run(int(number_of_runs), run, (duration, runtime_mode),) + return multi_run( + int(number_of_runs), + run, + (duration, runtime_mode), + ) return print_results(output_format, parameters, result_fn) diff --git a/benchmark/checks/check_reactive.py b/benchmark/checks/check_reactive.py index 6ef9dee6a6..3fde11a1a7 100755 --- a/benchmark/checks/check_reactive.py +++ b/benchmark/checks/check_reactive.py @@ -118,13 +118,21 @@ def run( agent.stop() t.join(5) - latency = mean(map(lambda x: x[1] - x[0], zip(connection.sends, connection.recvs,))) + latency = mean( + map( + lambda x: x[1] - x[0], + zip( + connection.sends, + connection.recvs, + ), + ) + ) total_amount = len(connection.recvs) rate = total_amount / duration return [ ("envelopes received", len(connection.recvs)), ("envelopes sent", len(connection.sends)), - ("latency(ms)", 10 ** 6 * latency), + ("latency(ms)", 10**6 * latency), ("rate(envelopes/second)", rate), ] @@ -156,7 +164,9 @@ def main( def result_fn() -> List[Tuple[str, Any, Any, Any]]: return multi_run( - int(number_of_runs), run, (duration, runtime_mode, connection_mode), + int(number_of_runs), + run, + (duration, runtime_mode, connection_mode), ) return print_results(output_format, parameters, result_fn) diff --git a/benchmark/checks/utils.py b/benchmark/checks/utils.py index d8b9cd2f99..fb02f7d52d 100644 --- a/benchmark/checks/utils.py +++ b/benchmark/checks/utils.py @@ -128,7 +128,11 @@ def make_envelope( ) message.sender = sender message.to = to - return Envelope(to=to, sender=sender, message=message,) + return Envelope( + to=to, + sender=sender, + message=message, + ) class GeneratorConnection(Connection): @@ -174,9 +178,13 @@ async def receive(self, *args: Any, **kwargs: Any) -> Optional["Envelope"]: return envelope @classmethod - def make(cls,) -> "GeneratorConnection": + def make( + cls, + ) -> "GeneratorConnection": """Construct connection instance.""" - configuration = ConnectionConfig(connection_id=cls.connection_id,) + configuration = ConnectionConfig( + connection_id=cls.connection_id, + ) test_connection = cls( configuration=configuration, identity=Identity("name", "address", "public_key"), @@ -241,7 +249,7 @@ def make_skill( def get_mem_usage_in_mb() -> float: """Get memory usage of the current process in megabytes.""" - return 1.0 * psutil.Process(os.getpid()).memory_info().rss / 1024 ** 2 + return 1.0 * psutil.Process(os.getpid()).memory_info().rss / 1024**2 def multi_run( diff --git a/benchmark/framework/aea_test_wrapper.py b/benchmark/framework/aea_test_wrapper.py index 59be795479..4ca4e97251 100644 --- a/benchmark/framework/aea_test_wrapper.py +++ b/benchmark/framework/aea_test_wrapper.py @@ -142,7 +142,10 @@ def dummy_default_message( @classmethod def dummy_envelope( - cls, to: str = "test", sender: str = "test", message: Message = None, + cls, + to: str = "test", + sender: str = "test", + message: Message = None, ) -> Envelope: """ Create envelope, if message is not passed use .dummy_message method. diff --git a/docs/cli-vs-programmatic-aeas.md b/docs/cli-vs-programmatic-aeas.md index d1e8f3e230..fa7f0b5c37 100644 --- a/docs/cli-vs-programmatic-aeas.md +++ b/docs/cli-vs-programmatic-aeas.md @@ -177,19 +177,37 @@ def run(): # Add the ledger_api protocol ledger_api_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "ledger_api",) + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "ledger_api", + ) ) resources.add_protocol(ledger_api_protocol) # Add the oef_search protocol oef_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "oef_search",) + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "oef_search", + ) ) resources.add_protocol(oef_protocol) # Add the fipa protocol fipa_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "fipa",) + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "fipa", + ) ) resources.add_protocol(fipa_protocol) diff --git a/docs/generic-skills-step-by-step.md b/docs/generic-skills-step-by-step.md index 1865affdd9..dc9fb661a8 100644 --- a/docs/generic-skills-step-by-step.md +++ b/docs/generic-skills-step-by-step.md @@ -418,7 +418,8 @@ The next code block handles `CFP` (call-for-proposal) negotiation messages. Past "declined the CFP from sender={}".format(fipa_msg.sender[-5:]) ) decline_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.DECLINE, target_message=fipa_msg, + performative=FipaMessage.Performative.DECLINE, + target_message=fipa_msg, ) self.context.outbox.put_message(message=decline_msg) ``` @@ -477,7 +478,8 @@ Alternatively, we might receive an `ACCEPT` message. In order to handle this opt ) self.context.logger.info( "sending MATCH_ACCEPT_W_INFORM to sender={} with info={}".format( - fipa_msg.sender[-5:], info, + fipa_msg.sender[-5:], + info, ) ) self.context.outbox.put_message(message=match_accept_msg) @@ -543,7 +545,8 @@ Lastly, we must handle an `INFORM` message, which the buyer uses to inform us th ) self.context.logger.info( "transaction confirmed, sending data={} to buyer={}.".format( - fipa_dialogue.data_for_sale, fipa_msg.sender[-5:], + fipa_dialogue.data_for_sale, + fipa_msg.sender[-5:], ) ) else: @@ -636,7 +639,8 @@ class GenericLedgerApiHandler(Handler): """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -679,7 +683,8 @@ class GenericLedgerApiHandler(Handler): ) self.context.logger.info( "transaction confirmed, sending data={} to buyer={}.".format( - fipa_dialogue.data_for_sale, last_message.sender[-5:], + fipa_dialogue.data_for_sale, + last_message.sender[-5:], ) ) else: @@ -715,7 +720,8 @@ class GenericLedgerApiHandler(Handler): """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) @@ -862,7 +868,8 @@ class GenericOefSearchHandler(Handler): """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) ``` @@ -1011,7 +1018,8 @@ The following properties and methods deal with different aspects of the strategy :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -1022,7 +1030,8 @@ The following properties and methods deal with different aspects of the strategy :return: a description of the offered services """ description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + self._set_service_data, + data_model=AGENT_SET_SERVICE_MODEL, ) return description @@ -1033,7 +1042,8 @@ The following properties and methods deal with different aspects of the strategy :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -1044,7 +1054,8 @@ The following properties and methods deal with different aspects of the strategy :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -1055,7 +1066,8 @@ The following properties and methods deal with different aspects of the strategy :return: a description of the offered services """ description = Description( - self._simple_service_data, data_model=SIMPLE_SERVICE_MODEL, + self._simple_service_data, + data_model=SIMPLE_SERVICE_MODEL, ) return description @@ -1066,7 +1078,8 @@ The following properties and methods deal with different aspects of the strategy :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description @@ -1802,7 +1815,8 @@ The above code handles messages referencing unidentified dialogues and responds """ self.context.logger.info( "received proposal={} from sender={}".format( - fipa_msg.proposal.values, fipa_msg.sender[-5:], + fipa_msg.proposal.values, + fipa_msg.sender[-5:], ) ) strategy = cast(GenericStrategy, self.context.strategy) @@ -1815,7 +1829,8 @@ The above code handles messages referencing unidentified dialogues and responds terms = strategy.terms_from_proposal(fipa_msg.proposal, fipa_msg.sender) fipa_dialogue.terms = terms accept_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.ACCEPT, target_message=fipa_msg, + performative=FipaMessage.Performative.ACCEPT, + target_message=fipa_msg, ) self.context.outbox.put_message(message=accept_msg) else: @@ -1823,7 +1838,8 @@ The above code handles messages referencing unidentified dialogues and responds "declining the proposal from sender={}".format(fipa_msg.sender[-5:]) ) decline_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.DECLINE, target_message=fipa_msg, + performative=FipaMessage.Performative.DECLINE, + target_message=fipa_msg, ) self.context.outbox.put_message(message=decline_msg) ``` @@ -1869,7 +1885,7 @@ The above code terminates each dialogue with the specific AEA and stores the sta If `my_generic_seller` AEA wants to move on with the sale, it will send a `MATCH_ACCEPT` message. In order to handle this we add the following code: ``` python - def _handle_match_accept( +def _handle_match_accept( self, fipa_msg: FipaMessage, fipa_dialogue: FipaDialogue ) -> None: """ @@ -2080,7 +2096,8 @@ class GenericOefSearchHandler(Handler): """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) ``` @@ -2277,7 +2294,8 @@ class GenericLedgerApiHandler(Handler): if ledger_api_msg.balance > 0: self.context.logger.info( "starting balance on {} ledger={}.".format( - strategy.ledger_id, ledger_api_msg.balance, + strategy.ledger_id, + ledger_api_msg.balance, ) ) strategy.balance = ledger_api_msg.balance @@ -2419,7 +2437,8 @@ class GenericLedgerApiHandler(Handler): """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) ``` @@ -2570,7 +2589,9 @@ Similar to the seller AEA, we initialize the strategy class by trying to read th self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query def get_service_query(self) -> Query: diff --git a/docs/http-connection-and-skill.md b/docs/http-connection-and-skill.md index c43788d306..44d9f55075 100644 --- a/docs/http-connection-and-skill.md +++ b/docs/http-connection-and-skill.md @@ -149,7 +149,9 @@ class HttpHandler(Handler): """ self.context.logger.info( "received http request with method={}, url={} and body={!r}".format( - http_msg.method, http_msg.url, http_msg.body, + http_msg.method, + http_msg.url, + http_msg.body, ) ) if http_msg.method == "get": diff --git a/examples/gym_ex/gyms/env.py b/examples/gym_ex/gyms/env.py index 33f61e36a9..41cc9d156b 100644 --- a/examples/gym_ex/gyms/env.py +++ b/examples/gym_ex/gyms/env.py @@ -30,7 +30,7 @@ Price = int Action = Tuple[BanditId, Price] -Observation = None +Observation = type(None) Reward = float Done = bool Info = dict diff --git a/examples/gym_ex/proxy/env.py b/examples/gym_ex/proxy/env.py index 919b9aaf9a..d4fc6556c0 100755 --- a/examples/gym_ex/proxy/env.py +++ b/examples/gym_ex/proxy/env.py @@ -41,6 +41,9 @@ ) +from packages.fetchai.connections.gym.connection import ( # noqa: E402 # pylint: disable=wrong-import-position + GymConnection, +) from packages.fetchai.connections.gym.connection import ( # noqa: E402 # pylint: disable=wrong-import-position PUBLIC_ID as GYM_CONNECTION_PUBLIC_ID, ) @@ -105,6 +108,8 @@ def __init__(self, gym_env: gym.Env) -> None: @property def active_dialogue(self) -> GymDialogue: """Get the active dialogue.""" + if self._active_dialogue is None: + raise RuntimeError("active dialogue was not set") return self._active_dialogue def step(self, action: Action) -> Feedback: @@ -136,27 +141,32 @@ def step(self, action: Action) -> Feedback: return observation, reward, done, info - def render(self, mode="human") -> None: + def render(self, mode: str = "human") -> None: """ Render the environment. :param mode: the run mode """ - self._agent.runtime.multiplexer.default_connection.channel.gym_env.render(mode) + if self._agent.runtime.multiplexer.default_connection is None: + raise RuntimeError("Default connection was not set") + cast( + GymConnection, self._agent.runtime.multiplexer.default_connection + ).channel.gym_env.render(mode) def reset(self) -> None: """Reset the environment.""" if not self._agent.runtime.multiplexer.is_connected: self._connect() gym_msg, gym_dialogue = self.gym_dialogues.create( - counterparty=self.gym_address, performative=GymMessage.Performative.RESET, + counterparty=self.gym_address, + performative=GymMessage.Performative.RESET, ) gym_dialogue = cast(GymDialogue, gym_dialogue) self._active_dialogue = gym_dialogue self._agent.outbox.put_message(message=gym_msg) # Wait (blocking!) for the response envelope from the environment - in_envelope = self._queue.get(block=True, timeout=None) # type: GymMessage + in_envelope = self._queue.get(block=True, timeout=None) # type: Envelope self._decode_status(in_envelope) @@ -166,13 +176,14 @@ def close(self) -> None: if last_msg is None: raise ValueError("Cannot retrieve last message.") gym_msg = self.active_dialogue.reply( - performative=GymMessage.Performative.CLOSE, target_message=last_msg, + performative=GymMessage.Performative.CLOSE, + target_message=last_msg, ) self._agent.outbox.put_message(message=gym_msg) self._disconnect() - def _connect(self): + def _connect(self) -> None: """Connect to this proxy environment. It starts a proxy agent that can interact with the framework.""" if self._agent_thread.is_alive(): raise ValueError("Agent already running.") @@ -181,11 +192,10 @@ def _connect(self): while not self._agent.runtime.is_running: # check agent completely running time.sleep(0.01) - def _disconnect(self): + def _disconnect(self) -> None: """Disconnect from this proxy environment. It stops the proxy agent and kills its thread.""" self._agent.stop() self._agent_thread.join() - self._agent_thread = None def _encode_and_send_action(self, action: Action, step_id: int) -> None: """ diff --git a/examples/gym_ex/rl/agent.py b/examples/gym_ex/rl/agent.py index 0e65f561d3..bc85375fbe 100644 --- a/examples/gym_ex/rl/agent.py +++ b/examples/gym_ex/rl/agent.py @@ -30,7 +30,7 @@ Price = int Action = Tuple[BanditId, Price] -Observation = None +Observation = type(None) Reward = float Done = bool Info = dict diff --git a/install_packages.py b/install_packages.py new file mode 100755 index 0000000000..48c9a4fac9 --- /dev/null +++ b/install_packages.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ + +"""The install packages script""" +import re +import subprocess +import sys +from pathlib import Path +from typing import List + +from tomlkit import loads as loads_toml + + +def _load_groups(): + data = loads_toml(Path("pyproject.toml").read_text()) + return list(data["tool"]["poetry"]["group"].keys()) + + +def _load_dependencies() -> List[str]: + groups = ",".join(_load_groups()) + text = subprocess.check_output( + f"poetry export --with {groups}", shell=True, text=True + ) + text = text.replace("\\\n", " ") + lines = text.splitlines() + lines = [i.split(" ")[0] for i in lines] + return lines + + +RE = re.compile("(.*)[=><]") + +if __name__ == "__main__": + packages = sys.argv[1:] + requirements = _load_dependencies() + + to_install = [] + for package in packages: + for requirement in requirements: + if re.match(f"^{package}([<>=].*)?$", requirement): + to_install.append(requirement.strip()) + if not to_install: + raise ValueError("No packages found to install") + print("installing", ", ".join(to_install)) + subprocess.check_call([sys.executable, "-m", "pip", "install", *to_install]) diff --git a/packages/fetchai/connections/gym/connection.py b/packages/fetchai/connections/gym/connection.py index 1dab45dad8..b25a0dd873 100644 --- a/packages/fetchai/connections/gym/connection.py +++ b/packages/fetchai/connections/gym/connection.py @@ -188,7 +188,11 @@ async def handle_gym_message(self, envelope: Envelope) -> None: elif gym_message.performative == GymMessage.Performative.CLOSE: await self._run_in_executor(self.gym_env.close) return - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self._send(envelope) async def _send(self, envelope: Envelope) -> None: diff --git a/packages/fetchai/connections/gym/connection.yaml b/packages/fetchai/connections/gym/connection.yaml index e4454e9bd1..9bbf52fbbc 100644 --- a/packages/fetchai/connections/gym/connection.yaml +++ b/packages/fetchai/connections/gym/connection.yaml @@ -8,7 +8,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmZfj475RFf38NdcQdhkeyzBZSWVzRXb6QqoYKwgyiMaRC __init__.py: QmZJEjVyTn5auLw9VJESKjCVHrz5w5qY2qLyZQXdzxeMkw - connection.py: Qmd82JzJBNNUzARsWiqPeBagvXsWfwkk4AFFB16zteBnGE + connection.py: Qma3rNcK5bRsBSRoYZLzrmA3fEdaFaXYzYjZhumy93qDCh fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/http_client/connection.py b/packages/fetchai/connections/http_client/connection.py index f8ac67830e..133ddfb78b 100644 --- a/packages/fetchai/connections/http_client/connection.py +++ b/packages/fetchai/connections/http_client/connection.py @@ -109,7 +109,11 @@ class HTTPClientAsyncChannel: ) def __init__( - self, agent_address: Address, address: str, port: int, connection_id: PublicId, + self, + agent_address: Address, + address: str, + port: int, + connection_id: PublicId, ): """ Initialize an http client channel. @@ -332,7 +336,9 @@ def to_envelope( version="", ) envelope = Envelope( - to=http_message.to, sender=http_message.sender, message=http_message, + to=http_message.to, + sender=http_message.sender, + message=http_message, ) return envelope @@ -377,7 +383,10 @@ def __init__(self, **kwargs: Any) -> None: if host is None or port is None: # pragma: nocover raise ValueError("host and port must be set!") self.channel = HTTPClientAsyncChannel( - self.address, host, port, connection_id=self.connection_id, + self.address, + host, + port, + connection_id=self.connection_id, ) async def connect(self) -> None: diff --git a/packages/fetchai/connections/http_client/connection.yaml b/packages/fetchai/connections/http_client/connection.yaml index c1ee02ecf0..14c108b803 100644 --- a/packages/fetchai/connections/http_client/connection.yaml +++ b/packages/fetchai/connections/http_client/connection.yaml @@ -9,7 +9,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmP3jXkCYVYkUWxitmd7A6yaMfneBXSLE8hETZh8KXT2gV __init__.py: QmarwVThv7y1RwFT721vRgPFVGnD9Wf9yHQ89FDQ3Unuuq - connection.py: QmTWWcTruxdKp4RVSXuTwjrizZswGM3vAVutaQhBVSpjCR + connection.py: QmPNY7SREDRULq7Es1cjE7KcUxTsvRKac6hxNtK9BbwiXK fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/http_server/connection.py b/packages/fetchai/connections/http_server/connection.py index 5829dd1be6..6352d4d260 100644 --- a/packages/fetchai/connections/http_server/connection.py +++ b/packages/fetchai/connections/http_server/connection.py @@ -168,7 +168,9 @@ async def create(cls, http_request: BaseRequest) -> "Request": return request def to_envelope_and_set_id( - self, dialogues: HttpDialogues, target_skill_id: PublicId, + self, + dialogues: HttpDialogues, + target_skill_id: PublicId, ) -> Envelope: """ Process incoming API request by packaging into Envelope and sending it in-queue. @@ -191,7 +193,9 @@ def to_envelope_and_set_id( dialogue = cast(HttpDialogue, http_dialogue) self.id = dialogue.incomplete_dialogue_label envelope = Envelope( - to=http_message.to, sender=http_message.sender, message=http_message, + to=http_message.to, + sender=http_message.sender, + message=http_message, ) return envelope @@ -454,7 +458,8 @@ async def _http_handler(self, http_request: BaseRequest) -> Response: # wait for response envelope within given timeout window (self.timeout_window) to appear in dispatch_ready_envelopes response_message = await asyncio.wait_for( - self.pending_requests[request.id], timeout=self.timeout_window, + self.pending_requests[request.id], + timeout=self.timeout_window, ) return Response.from_message(response_message) diff --git a/packages/fetchai/connections/http_server/connection.yaml b/packages/fetchai/connections/http_server/connection.yaml index 1dac88a294..5ecd0b6fcf 100644 --- a/packages/fetchai/connections/http_server/connection.yaml +++ b/packages/fetchai/connections/http_server/connection.yaml @@ -9,7 +9,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmXHvGS9iU1oGXQtcmwm9utXqKoB5wrfQHoLdXvE6k322G __init__.py: QmWwXeD7ZNHRNqiUUrvMvHrSsx5PCm786ABRFLYB8UGBDK - connection.py: QmcSJHyQ1wGrjrE4Mrw9CADpMgfD4KuzNrk3CkZc2vNLPg + connection.py: QmVMxdL2RyaxZYg8pyfCQLtHM5NMXJpbtGQ9cf2fyNAfBd fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/ledger/base.py b/packages/fetchai/connections/ledger/base.py index 4733b69675..46b827dbd7 100644 --- a/packages/fetchai/connections/ledger/base.py +++ b/packages/fetchai/connections/ledger/base.py @@ -131,7 +131,11 @@ def get_handler(self, performative: Any) -> Callable[[Any], Task]: @abstractmethod def get_error_message( - self, e: Exception, api: LedgerApi, message: Message, dialogue: Dialogue, + self, + e: Exception, + api: LedgerApi, + message: Message, + dialogue: Dialogue, ) -> Message: """ Build an error message. diff --git a/packages/fetchai/connections/ledger/connection.yaml b/packages/fetchai/connections/ledger/connection.yaml index 84b72ef21c..428f2be9f5 100644 --- a/packages/fetchai/connections/ledger/connection.yaml +++ b/packages/fetchai/connections/ledger/connection.yaml @@ -8,10 +8,10 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmcGVnD75W9DM482Lnp22PoMZK3VtNb1KthYYPG4RT71u5 __init__.py: QmY7cPhXj7suon5jahiWCZgsCtQr5zfwYtR7yu5CJ6y5nD - base.py: QmXqE88p6WcqcausaYP18FNZcS17JaDoDuapzhXjJfWJD7 + base.py: QmVcuVaKYSThDxrNCtT7aH3QFZsrYJpA6TPjCNV3yF14RL connection.py: QmbzG7jcRAashSNcso3reesk3E7jHZanBKm8QTjGT1iijq - contract_dispatcher.py: QmWKkFTskC2ThnLFG3hEXSCksHBeJJa6mkcR2eedeRSk3M - ledger_dispatcher.py: QmfZ9cG99sknPZMB9Dmd7inM1UABdjDi9EUavpqL8aGSvE + contract_dispatcher.py: QmbPSej5n8jxWr9bNCVkN8a6byyDzeAQSuK5VLfdAnAZUw + ledger_dispatcher.py: QmQgwhDiweVaZ51V7Zc1vdsKaP9guKtaeGXq1cehfrttEH fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/ledger/contract_dispatcher.py b/packages/fetchai/connections/ledger/contract_dispatcher.py index 48c1345b5e..b7c39fd7e2 100644 --- a/packages/fetchai/connections/ledger/contract_dispatcher.py +++ b/packages/fetchai/connections/ledger/contract_dispatcher.py @@ -105,7 +105,11 @@ def get_ledger_id(self, message: Message) -> str: return message.ledger_id def get_error_message( - self, e: Exception, api: LedgerApi, message: Message, dialogue: BaseDialogue, + self, + e: Exception, + api: LedgerApi, + message: Message, + dialogue: BaseDialogue, ) -> ContractApiMessage: """ Build an error message. @@ -289,7 +293,10 @@ def build_response( return self.dispatch_request(ledger_api, message, dialogue, build_response) def _get_data( - self, api: LedgerApi, message: ContractApiMessage, contract: Contract, + self, + api: LedgerApi, + message: ContractApiMessage, + contract: Contract, ) -> Union[bytes, JSONLike]: """Get the data from the contract method, either from the stub or from the callable specified by the message.""" # first, check if the custom handler for this type of request has been implemented. diff --git a/packages/fetchai/connections/ledger/ledger_dispatcher.py b/packages/fetchai/connections/ledger/ledger_dispatcher.py index 6c6e43d332..5de207d2e3 100644 --- a/packages/fetchai/connections/ledger/ledger_dispatcher.py +++ b/packages/fetchai/connections/ledger/ledger_dispatcher.py @@ -109,7 +109,10 @@ def dialogues(self) -> BaseDialogues: return self._ledger_api_dialogues def get_balance( - self, api: LedgerApi, message: LedgerApiMessage, dialogue: LedgerApiDialogue, + self, + api: LedgerApi, + message: LedgerApiMessage, + dialogue: LedgerApiDialogue, ) -> LedgerApiMessage: """ Send the request 'get_balance'. @@ -137,7 +140,10 @@ def get_balance( return response def get_state( - self, api: LedgerApi, message: LedgerApiMessage, dialogue: LedgerApiDialogue, + self, + api: LedgerApi, + message: LedgerApiMessage, + dialogue: LedgerApiDialogue, ) -> LedgerApiMessage: """ Send the request 'get_state'. @@ -165,7 +171,10 @@ def get_state( return response def get_raw_transaction( - self, api: LedgerApi, message: LedgerApiMessage, dialogue: LedgerApiDialogue, + self, + api: LedgerApi, + message: LedgerApiMessage, + dialogue: LedgerApiDialogue, ) -> LedgerApiMessage: """ Send the request 'get_raw_transaction'. @@ -201,7 +210,10 @@ def get_raw_transaction( return response def get_transaction_receipt( - self, api: LedgerApi, message: LedgerApiMessage, dialogue: LedgerApiDialogue, + self, + api: LedgerApi, + message: LedgerApiMessage, + dialogue: LedgerApiDialogue, ) -> LedgerApiMessage: """ Send the request 'get_transaction_receipt'. @@ -266,7 +278,10 @@ def get_transaction_receipt( return response def send_signed_transaction( - self, api: LedgerApi, message: LedgerApiMessage, dialogue: LedgerApiDialogue, + self, + api: LedgerApi, + message: LedgerApiMessage, + dialogue: LedgerApiDialogue, ) -> LedgerApiMessage: """ Send the request 'send_signed_tx'. @@ -297,7 +312,11 @@ def send_signed_transaction( return response def get_error_message( - self, e: Exception, api: LedgerApi, message: Message, dialogue: BaseDialogue, + self, + e: Exception, + api: LedgerApi, + message: Message, + dialogue: BaseDialogue, ) -> LedgerApiMessage: """ Build an error message. diff --git a/packages/fetchai/connections/local/connection.py b/packages/fetchai/connections/local/connection.py index bb0b260dbd..17d4dbddea 100644 --- a/packages/fetchai/connections/local/connection.py +++ b/packages/fetchai/connections/local/connection.py @@ -253,7 +253,9 @@ async def _handle_agent_message(self, envelope: Envelope) -> None: error_data={}, ) error_envelope = Envelope( - to=envelope.sender, sender=OEF_LOCAL_NODE_ADDRESS, message=msg, + to=envelope.sender, + sender=OEF_LOCAL_NODE_ADDRESS, + message=msg, ) await self._send(error_envelope) return @@ -272,7 +274,9 @@ async def _register_service( self.services[address].append(service_description) async def _unregister_service( - self, oef_search_msg: OefSearchMessage, dialogue: OefSearchDialogue, + self, + oef_search_msg: OefSearchMessage, + dialogue: OefSearchDialogue, ) -> None: """ Unregister a service agent. @@ -289,7 +293,11 @@ async def _unregister_service( target_message=oef_search_msg, oef_error_operation=OefSearchMessage.OefErrorOperation.UNREGISTER_SERVICE, ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self._send(envelope) else: self.services[address].remove(service_description) @@ -297,7 +305,9 @@ async def _unregister_service( self.services.pop(address) async def _search_services( - self, oef_search_msg: OefSearchMessage, dialogue: OefSearchDialogue, + self, + oef_search_msg: OefSearchMessage, + dialogue: OefSearchDialogue, ) -> None: """ Search the agents in the local Service Directory, and send back the result. @@ -325,7 +335,11 @@ async def _search_services( agents=tuple(sorted(set(result))), ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self._send(envelope) def _get_message_and_dialogue( diff --git a/packages/fetchai/connections/local/connection.yaml b/packages/fetchai/connections/local/connection.yaml index 724a9f567a..cd6d2c6797 100644 --- a/packages/fetchai/connections/local/connection.yaml +++ b/packages/fetchai/connections/local/connection.yaml @@ -8,7 +8,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmbK7MtyAVqh2LmSh9TY6yBZqfWaAXURP4rQGATyP2hTKC __init__.py: QmRFPAntprRgDCzKzcfV3gJCkovSPQcnVQLprML693qeBW - connection.py: QmaZgZPBBnr7AxAxmHiR7vQxyuP1Hs4gHaF3buLfkL69Ms + connection.py: QmaZAqPVJdfrfHRYz5KHFEgPetGmayaMUZQRFkR6LDw7X1 fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/oef/connection.py b/packages/fetchai/connections/oef/connection.py index 328b1cce24..4050954aae 100644 --- a/packages/fetchai/connections/oef/connection.py +++ b/packages/fetchai/connections/oef/connection.py @@ -133,7 +133,7 @@ def __init__( self.aea_logger = logger - async def _run_in_executor(self, fn: Callable, *args: Any) -> None: + async def _run_in_executor(self, fn: Callable, *args: Any) -> Any: if not self._loop: # pragma: nocover raise ValueError("Channel not connected!") return await self._loop.run_in_executor(self._threaded_pool, fn, *args) @@ -276,7 +276,11 @@ def on_search_result(self, search_id: int, agents: List[Address]) -> None: target_message=last_msg, agents=tuple(agents), ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) asyncio.run_coroutine_threadsafe(self.in_queue.put(envelope), self.loop) def on_oef_error( @@ -308,7 +312,11 @@ def on_oef_error( target_message=last_msg, oef_error_operation=operation, ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) asyncio.run_coroutine_threadsafe(self.in_queue.put(envelope), self.loop) def on_dialogue_error( # pylint: disable=unused-argument @@ -331,7 +339,11 @@ def on_dialogue_error( # pylint: disable=unused-argument error_msg="Destination not available", error_data={}, ) - envelope = Envelope(to=self.address, sender=DEFAULT_OEF, message=msg,) + envelope = Envelope( + to=self.address, + sender=DEFAULT_OEF, + message=msg, + ) asyncio.run_coroutine_threadsafe(self.in_queue.put(envelope), self.loop) def send(self, envelope: Envelope) -> None: diff --git a/packages/fetchai/connections/oef/connection.yaml b/packages/fetchai/connections/oef/connection.yaml index 6f2e1d0b61..b260569565 100644 --- a/packages/fetchai/connections/oef/connection.yaml +++ b/packages/fetchai/connections/oef/connection.yaml @@ -9,7 +9,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmZ37ztec9wg3VSrviEuRjfihYj7jYjMYFrbZAoTf1va3J __init__.py: Qmd6emotQtJCuiN5P6peqzyhNJx9ZzHcqBXmkrLXy4BdBX - connection.py: QmTtqr2WJTsFCDUTVhHgK5gwVghgfoZYcfLBP8gZL8j57m + connection.py: QmR3KpCR6QES6rX23QhdPHkCGVF9Y9mLpdvxKKcNDCybty object_translator.py: QmYab37Q97PFHtq6tJViEq1jYbdLZ2fDYSqrDfjZMLCrvR fingerprint_ignore_patterns: [] connections: [] diff --git a/packages/fetchai/connections/p2p_libp2p/check_dependencies.py b/packages/fetchai/connections/p2p_libp2p/check_dependencies.py index b26c4d5ebc..c302262730 100644 --- a/packages/fetchai/connections/p2p_libp2p/check_dependencies.py +++ b/packages/fetchai/connections/p2p_libp2p/check_dependencies.py @@ -188,7 +188,8 @@ def main() -> None: # pragma: nocover def _golang_module_build( - path: str, timeout: float = LIBP2P_NODE_DEPS_DOWNLOAD_TIMEOUT, + path: str, + timeout: float = LIBP2P_NODE_DEPS_DOWNLOAD_TIMEOUT, ) -> Optional[str]: """ Builds go module located at `path`, downloads necessary dependencies diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index aa7b12c7cc..8f991f2289 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -10,7 +10,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: Qmcovq8w58f3D948tuoNcXk5ThcYWtNAXewy8roU6jdKYW __init__.py: QmcibHXQV8uZnMRJe7jNGEFeUKns1ZF2QR9c6mxKMbV4oa - check_dependencies.py: QmWt5a3svTV4VRGbr2tRW9dZoSENnTzi344mDwoMDA9jww + check_dependencies.py: QmUGeuH2RArEi21m3aYEmawsYZrz9Pr9NeinQsqRBoSnRc connection.py: QmehiDZMur9JVKVeCXUhWqKXwoAiwWR7h5XH8uvwdkRFf8 consts.py: QmNbua6EsorAf3FS4fCmCHBZ9TRZ6ENkZoHTyA9TEJZqpy libp2p_node/.dockerignore: QmVwyNjya468nRTxSjFP73dSzQdSffp74osz5dGEAHHweA diff --git a/packages/fetchai/connections/p2p_libp2p_client/connection.py b/packages/fetchai/connections/p2p_libp2p_client/connection.py index 663b4509e4..c6280c5f4c 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/connection.py +++ b/packages/fetchai/connections/p2p_libp2p_client/connection.py @@ -221,7 +221,9 @@ async def _read(self) -> Optional[bytes]: """ return await self.pipe.read() - async def register(self,) -> None: + async def register( + self, + ) -> None: """Register agent on the remote node.""" agent_record = self.make_agent_record() acn_msg = acn_pb2.AcnMessage() @@ -663,7 +665,9 @@ async def _open_tls_connection(self) -> TCPSocketProtocol: ssl_ctx.check_hostname = False ssl_ctx.verify_mode = ssl.CERT_REQUIRED reader, writer = await asyncio.open_connection( - self._host, self._port, ssl=ssl_ctx, + self._host, + self._port, + ssl=ssl_ctx, ) return TCPSocketProtocol(reader, writer, logger=self.logger, loop=self._loop) diff --git a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml index ffc8b569c7..ff0ba74b30 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml @@ -10,7 +10,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmWjPfv3yWt3i9bLEWBppSh7voP8KRBw9zrULrUppkNR8o __init__.py: QmQKLUSEPVm59e3JC78zQTebbo8AKf4SBRhz1AKuV7bmCB - connection.py: Qmc9YJWvj8KeTBE7sLFfxuCwbgrueYUi8acqDQjSPQxjrQ + connection.py: Qmbjm2vJ9HbWwkhqojwpNNB6daYmipfnmrfvUytUi7XLTB fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py index 031f91476e..aa13d8f58f 100644 --- a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py +++ b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py @@ -496,7 +496,10 @@ class SSLValidator: """Interprocess communication channel client using tcp sockets with TLS.""" def __init__( - self, url: str, server_pub_key: str, logger: logging.Logger = _default_logger, + self, + url: str, + server_pub_key: str, + logger: logging.Logger = _default_logger, ) -> None: """ Check ssl certificate with server pub key. @@ -560,7 +563,11 @@ async def get_ssl_ctx_and_session_pub_key( ssl_ctx = ssl.create_default_context(cadata=cadata) ssl_ctx.check_hostname = False ssl_ctx.verify_mode = ssl.CERT_REQUIRED - _, writer = await asyncio.open_connection(self.host, self.port, ssl=ssl_ctx,) + _, writer = await asyncio.open_connection( + self.host, + self.port, + ssl=ssl_ctx, + ) session_pub_key = self._get_session_pub_key(writer) writer.close() return ssl_ctx, session_pub_key diff --git a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml index eb2ec83660..46d765182c 100644 --- a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml @@ -10,7 +10,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmWjPfv3yWt3i9bLEWBppSh7voP8KRBw9zrULrUppkNR8o __init__.py: QmQKLUSEPVm59e3JC78zQTebbo8AKf4SBRhz1AKuV7bmCB - connection.py: QmWSqoFJyeVJmg9pW2QpuQHAQ54oqkHqnbUA8WxBJawfX8 + connection.py: QmcFNsLvm3WufuDATnZxhHvvTU7TkFPGtpmGicvS5wYqqd fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/soef/connection.py b/packages/fetchai/connections/soef/connection.py index 5567d6be63..6202126ddb 100644 --- a/packages/fetchai/connections/soef/connection.py +++ b/packages/fetchai/connections/soef/connection.py @@ -388,7 +388,8 @@ def _is_compatible_query(query: Query) -> bool: return True def _construct_personality_filter_params( - self, equality_constraints: List[Constraint], + self, + equality_constraints: List[Constraint], ) -> Dict[str, List[str]]: """ Construct a dictionary of personality filters. @@ -864,7 +865,8 @@ async def _set_location( if disclosure_accuracy: params = {"accuracy": disclosure_accuracy} await self._generic_oef_command( - "set_find_position_disclosure_accuracy", params, + "set_find_position_disclosure_accuracy", + params, ) self.agent_location = agent_location @@ -981,7 +983,11 @@ async def _send_error_response( target_message=oef_search_message, oef_error_operation=oef_error_operation, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) await self.in_queue.put(envelope) async def unregister_service( @@ -1244,7 +1250,11 @@ async def _find_around_me_handle_request( agents=tuple(agents.keys()), agents_info=AgentsInfo(agents), ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) await self.in_queue.put(envelope) diff --git a/packages/fetchai/connections/soef/connection.yaml b/packages/fetchai/connections/soef/connection.yaml index 54dafaff4b..e038b19e27 100644 --- a/packages/fetchai/connections/soef/connection.yaml +++ b/packages/fetchai/connections/soef/connection.yaml @@ -8,7 +8,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: Qmbx3jMbqAew5TTyC1GN5dPpDxw4mS383k3C2gPhGm43Ac __init__.py: QmQNy17gZ5rHXFy7v8fqKBQuR7aR6pFaHBmmDxisq8Syi2 - connection.py: Qmf36jKMjv8x4J6jfGU8zLwQqLbVzUBycVdqBTomMcHB66 + connection.py: QmfTULfjWCbLKVy6HFDbP9Cv3pR76mKB3jePdvAc7ggkH9 fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/webhook/connection.py b/packages/fetchai/connections/webhook/connection.py index adc3b4f103..164b17fef3 100644 --- a/packages/fetchai/connections/webhook/connection.py +++ b/packages/fetchai/connections/webhook/connection.py @@ -208,7 +208,9 @@ async def to_envelope(self, request: web.Request) -> Envelope: body=payload_bytes if payload_bytes is not None else b"", ) envelope = Envelope( - to=http_message.to, sender=http_message.sender, message=http_message, + to=http_message.to, + sender=http_message.sender, + message=http_message, ) return envelope diff --git a/packages/fetchai/connections/webhook/connection.yaml b/packages/fetchai/connections/webhook/connection.yaml index 1255da51eb..55facf2715 100644 --- a/packages/fetchai/connections/webhook/connection.yaml +++ b/packages/fetchai/connections/webhook/connection.yaml @@ -8,7 +8,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmcSPjcjavkPvY9LpcqB6xSpCb7TbDtWPN2FwF8wEWvRzp __init__.py: QmYVwjb5jTf46hMNVajEPVjDCBfDFHi6uJYob9xfkXdTmW - connection.py: QmZcKbcm8v6D8niRmFMGjUfnWq1ECtv3FPc2hmJKsDwa2h + connection.py: QmTmjUUuutF4jjf9GqVmjc6QUmx6KjYYuiQRo6TYisdSWw fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/connections/yoti/connection.py b/packages/fetchai/connections/yoti/connection.py index 5b8708cffd..493aa3888a 100644 --- a/packages/fetchai/connections/yoti/connection.py +++ b/packages/fetchai/connections/yoti/connection.py @@ -217,7 +217,9 @@ def get_profile(self, message: YotiMessage, dialogue: YotiDialogue) -> YotiMessa @staticmethod def get_error_message( - e: Exception, message: YotiMessage, dialogue: YotiDialogue, + e: Exception, + message: YotiMessage, + dialogue: YotiDialogue, ) -> YotiMessage: """ Build an error message. diff --git a/packages/fetchai/connections/yoti/connection.yaml b/packages/fetchai/connections/yoti/connection.yaml index dd2fb313f7..1de5c06346 100644 --- a/packages/fetchai/connections/yoti/connection.yaml +++ b/packages/fetchai/connections/yoti/connection.yaml @@ -9,7 +9,7 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmZJYfyacuUnAKrYrNBJUX6kzQdzk4PL3EaXcVopWspxSP __init__.py: QmY7cPhXj7suon5jahiWCZgsCtQr5zfwYtR7yu5CJ6y5nD - connection.py: QmPXbAbiD2xzpX7R9RDZxcUj4G2tYFFq7hFahzM9tqvnr5 + connection.py: QmVsrHibPUaSaKUUJJPee2Edfg7va6eBuesBSyE6HUqRp3 fingerprint_ignore_patterns: [] connections: [] protocols: diff --git a/packages/fetchai/contracts/erc1155/contract.py b/packages/fetchai/contracts/erc1155/contract.py index 0542a37633..704d9985d5 100644 --- a/packages/fetchai/contracts/erc1155/contract.py +++ b/packages/fetchai/contracts/erc1155/contract.py @@ -499,7 +499,7 @@ def get_atomic_swap_single_transaction( # from_address sends tokens if from_supply > 0: - contract_msg = { + contract_msg: JSONLike = { "transfer_single": { "operator": str(from_address), "from_address": str(from_address), @@ -730,7 +730,7 @@ def get_atomic_swap_batch_transaction( # First direction of swap if len(from_tokens) != 0: - contract_msg = { + contract_msg: JSONLike = { "transfer_batch": { "operator": str(from_address), "from_address": str(from_address), diff --git a/packages/fetchai/contracts/erc1155/contract.yaml b/packages/fetchai/contracts/erc1155/contract.yaml index cea7763bf6..3b40375c90 100644 --- a/packages/fetchai/contracts/erc1155/contract.yaml +++ b/packages/fetchai/contracts/erc1155/contract.yaml @@ -11,7 +11,7 @@ fingerprint: build/Migrations.json: QmfFYYWoq1L1Ni6YPBWWoRPvCZKBLZ7qzN3UDX537mCeuE build/erc1155.json: Qma5n7au2NDCg1nLwYfYnmFNwWChFuXtu65w5DV7wAZRvw build/erc1155.wasm: QmVWAjvDT1qQFyZ8GxVkCm4gzR4KgE93BM5KrqfbDtwp2v - contract.py: QmPWNZnESty7C4sbkxwnsqZ4uuMaommFjybwxEbjorizPg + contract.py: Qmad5wMntoyZdyRuYkFu6G1qqhvyxGs6mQuBCjJfVL239o contracts/Migrations.sol: QmbW34mYrj3uLteyHf3S46pnp9bnwovtCXHbdBHfzMkSZx contracts/erc1155.vy: QmXwob8G1uX7fDvtuuKW139LALWtQmGw2vvaTRBVAWRxTx migrations/1_initial_migration.js: QmcxaWKQ2yPkQBmnpXmcuxPZQUMuUudmPmX3We8Z9vtAf7 diff --git a/packages/fetchai/contracts/staking_erc20/contract.py b/packages/fetchai/contracts/staking_erc20/contract.py index d2a69e35e7..142cb64cc0 100644 --- a/packages/fetchai/contracts/staking_erc20/contract.py +++ b/packages/fetchai/contracts/staking_erc20/contract.py @@ -43,7 +43,10 @@ class StakingERC20(Contract): @classmethod def get_stake( - cls, ledger_api: LedgerApi, contract_address: Address, address: Address, + cls, + ledger_api: LedgerApi, + contract_address: Address, + address: Address, ) -> JSONLike: """ Get the balance for a specific token id. diff --git a/packages/fetchai/contracts/staking_erc20/contract.yaml b/packages/fetchai/contracts/staking_erc20/contract.yaml index 4fc6372261..05b921646d 100644 --- a/packages/fetchai/contracts/staking_erc20/contract.yaml +++ b/packages/fetchai/contracts/staking_erc20/contract.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmPfhJLDQWX5duox6j89xmEeBmh5c5uGixZSEJVLRjrKgG build/Migrations.json: QmfFYYWoq1L1Ni6YPBWWoRPvCZKBLZ7qzN3UDX537mCeuE build/staking_erc20.json: QmVf2BuDDJPoCHDwEQKHdgfph4CbTFpqJJvcDLaM9tyoQq - contract.py: QmNk933qwfvhAvk2m9xJ53PExJLgUucLvdDSFoRzuW87YB + contract.py: Qmagm8EdBLfhnyWCytNu94cRrmbZeu4LSr1Xx1GNTfRFoc fingerprint_ignore_patterns: [] class_name: StakingERC20 contract_interface_paths: diff --git a/packages/fetchai/protocols/contract_api/contract_api_pb2.py b/packages/fetchai/protocols/contract_api/contract_api_pb2.py index 7059f0b8e1..dda7b25a08 100644 --- a/packages/fetchai/protocols/contract_api/contract_api_pb2.py +++ b/packages/fetchai/protocols/contract_api/contract_api_pb2.py @@ -25,24 +25,24 @@ "RawTransaction" ] _CONTRACTAPIMESSAGE_STATE = _CONTRACTAPIMESSAGE.nested_types_by_name["State"] -_CONTRACTAPIMESSAGE_GET_DEPLOY_TRANSACTION_PERFORMATIVE = _CONTRACTAPIMESSAGE.nested_types_by_name[ - "Get_Deploy_Transaction_Performative" -] -_CONTRACTAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = _CONTRACTAPIMESSAGE.nested_types_by_name[ - "Get_Raw_Transaction_Performative" -] -_CONTRACTAPIMESSAGE_GET_RAW_MESSAGE_PERFORMATIVE = _CONTRACTAPIMESSAGE.nested_types_by_name[ - "Get_Raw_Message_Performative" -] +_CONTRACTAPIMESSAGE_GET_DEPLOY_TRANSACTION_PERFORMATIVE = ( + _CONTRACTAPIMESSAGE.nested_types_by_name["Get_Deploy_Transaction_Performative"] +) +_CONTRACTAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = ( + _CONTRACTAPIMESSAGE.nested_types_by_name["Get_Raw_Transaction_Performative"] +) +_CONTRACTAPIMESSAGE_GET_RAW_MESSAGE_PERFORMATIVE = ( + _CONTRACTAPIMESSAGE.nested_types_by_name["Get_Raw_Message_Performative"] +) _CONTRACTAPIMESSAGE_GET_STATE_PERFORMATIVE = _CONTRACTAPIMESSAGE.nested_types_by_name[ "Get_State_Performative" ] _CONTRACTAPIMESSAGE_STATE_PERFORMATIVE = _CONTRACTAPIMESSAGE.nested_types_by_name[ "State_Performative" ] -_CONTRACTAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE = _CONTRACTAPIMESSAGE.nested_types_by_name[ - "Raw_Transaction_Performative" -] +_CONTRACTAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE = ( + _CONTRACTAPIMESSAGE.nested_types_by_name["Raw_Transaction_Performative"] +) _CONTRACTAPIMESSAGE_RAW_MESSAGE_PERFORMATIVE = _CONTRACTAPIMESSAGE.nested_types_by_name[ "Raw_Message_Performative" ] diff --git a/packages/fetchai/protocols/contract_api/custom_types.py b/packages/fetchai/protocols/contract_api/custom_types.py index 6ebd3857cc..1e672fdd47 100644 --- a/packages/fetchai/protocols/contract_api/custom_types.py +++ b/packages/fetchai/protocols/contract_api/custom_types.py @@ -40,7 +40,8 @@ class Kwargs: __slots__ = ("_body",) def __init__( - self, body: JSONLike, + self, + body: JSONLike, ): """Initialise an instance of RawTransaction.""" self._body = body diff --git a/packages/fetchai/protocols/contract_api/protocol.yaml b/packages/fetchai/protocols/contract_api/protocol.yaml index 51828c21ba..6b453a2564 100644 --- a/packages/fetchai/protocols/contract_api/protocol.yaml +++ b/packages/fetchai/protocols/contract_api/protocol.yaml @@ -10,8 +10,8 @@ fingerprint: README.md: QmX5o5Fjfghmxr8hZR5thnJXn8g1X5L7T8zLNP7DyX8uE6 __init__.py: QmdQYkY6yTpKVwhtZmDMvsd6uTuLJqzHVJLLcdsx3TqBmh contract_api.proto: QmXP6TkLcQcsFWE66Z7ffgNcW3p6xAB63GXh4UsnEbHd9D - contract_api_pb2.py: QmXaSGbcs1B9KmNpAcJLoR4WizHWqTAtQpyW2c5ZiM3DMX - custom_types.py: QmPYC3GTtPZZ1tu7e635BJpLiXu5qJsBF38LUFQiyJZPJh + contract_api_pb2.py: QmXqZFRTtRZeLytmmWKRxExKGua1Be3Ux5Eq1qLabsbe2Y + custom_types.py: QmZZpzjayYBLzNXdsk2DtXV85DfYhu73RWMowuzKA7sgbU dialogues.py: QmR6S7Lxh4uFQnvCrj42CZvbz5pPpT3RYsMAPmgWUzrocb message.py: QmUrgA2j5HrgKdsdc8fnDNNJUZc4LUpDtvcfMJr84HyC73 serialization.py: QmNdMyF2mTXheBUG4n5Qxb9V5CvC1AdT5PkJHTNwWC5So8 diff --git a/packages/fetchai/protocols/cosm_trade/cosm_trade_pb2.py b/packages/fetchai/protocols/cosm_trade/cosm_trade_pb2.py index ff874ae0eb..08bbf3c21b 100644 --- a/packages/fetchai/protocols/cosm_trade/cosm_trade_pb2.py +++ b/packages/fetchai/protocols/cosm_trade/cosm_trade_pb2.py @@ -22,12 +22,12 @@ _COSMTRADEMESSAGE_SIGNEDTRANSACTION = _COSMTRADEMESSAGE.nested_types_by_name[ "SignedTransaction" ] -_COSMTRADEMESSAGE_INFORM_PUBLIC_KEY_PERFORMATIVE = _COSMTRADEMESSAGE.nested_types_by_name[ - "Inform_Public_Key_Performative" -] -_COSMTRADEMESSAGE_INFORM_SIGNED_TRANSACTION_PERFORMATIVE = _COSMTRADEMESSAGE.nested_types_by_name[ - "Inform_Signed_Transaction_Performative" -] +_COSMTRADEMESSAGE_INFORM_PUBLIC_KEY_PERFORMATIVE = ( + _COSMTRADEMESSAGE.nested_types_by_name["Inform_Public_Key_Performative"] +) +_COSMTRADEMESSAGE_INFORM_SIGNED_TRANSACTION_PERFORMATIVE = ( + _COSMTRADEMESSAGE.nested_types_by_name["Inform_Signed_Transaction_Performative"] +) _COSMTRADEMESSAGE_ERROR_PERFORMATIVE = _COSMTRADEMESSAGE.nested_types_by_name[ "Error_Performative" ] diff --git a/packages/fetchai/protocols/cosm_trade/protocol.yaml b/packages/fetchai/protocols/cosm_trade/protocol.yaml index 29463bd060..a99c96bb11 100644 --- a/packages/fetchai/protocols/cosm_trade/protocol.yaml +++ b/packages/fetchai/protocols/cosm_trade/protocol.yaml @@ -11,7 +11,7 @@ fingerprint: README.md: QmVyco7jZ7HryTUys1e92qj8VQZi7jwXyjKKebZw3tCzp9 __init__.py: QmVGXy9T5jXrcqPq5rAX9UUi8ddXnmVnoUX3jxjf6LzeTe cosm_trade.proto: QmWJZbNWJD8Qz1A1ju89wWoxFjMhC7RHn1pkeVPW3s3CPT - cosm_trade_pb2.py: QmYemym9eR1FxFbdxVLGAWNoLKLoBLeMzDVPgP2YM4336P + cosm_trade_pb2.py: Qma3GnRA8g9t6RADbYyagW747CcDmuNUEqahpjHvsroTTx custom_types.py: QmS4h6s3ZnbzrDrud9ZPfaUesN3CczZHC4LPqFX8VGFPcj dialogues.py: QmNWYxmPJJEuqyc8NS5zxXMB3w2avNxZwBVdvX1Fms6oDD message.py: QmSpcJoWw9fYemaRHyTf3aFYVfhtmzktcyfdCP67bBoYK4 diff --git a/packages/fetchai/protocols/default/default_pb2.py b/packages/fetchai/protocols/default/default_pb2.py index 218da5160a..423f18f99c 100644 --- a/packages/fetchai/protocols/default/default_pb2.py +++ b/packages/fetchai/protocols/default/default_pb2.py @@ -26,9 +26,9 @@ _DEFAULTMESSAGE_ERROR_PERFORMATIVE = _DEFAULTMESSAGE.nested_types_by_name[ "Error_Performative" ] -_DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY = _DEFAULTMESSAGE_ERROR_PERFORMATIVE.nested_types_by_name[ - "ErrorDataEntry" -] +_DEFAULTMESSAGE_ERROR_PERFORMATIVE_ERRORDATAENTRY = ( + _DEFAULTMESSAGE_ERROR_PERFORMATIVE.nested_types_by_name["ErrorDataEntry"] +) _DEFAULTMESSAGE_END_PERFORMATIVE = _DEFAULTMESSAGE.nested_types_by_name[ "End_Performative" ] diff --git a/packages/fetchai/protocols/default/protocol.yaml b/packages/fetchai/protocols/default/protocol.yaml index 9d2e74eda8..3684f1fd1c 100644 --- a/packages/fetchai/protocols/default/protocol.yaml +++ b/packages/fetchai/protocols/default/protocol.yaml @@ -11,7 +11,7 @@ fingerprint: __init__.py: QmPgwXo6Q7EEhyaVVSsbQih7bX8RRGhg6DNreXQb5mY6Nn custom_types.py: QmSgwoNvSK11m8wjCRQaGsw5srG5b8pWzvjRKwLGAcZ1ho default.proto: QmWYzTSHVbz7FBS84iKFMhGSXPxay2mss29vY7ufz2BFJ8 - default_pb2.py: QmRjBnFfnHHPygYmSdXfVp6A2FZ7PtrYKpdwTXxMYLwEGK + default_pb2.py: QmPX9tm18ddM5Q928JLd1HmdUZKp2ssKhCJzhZ53FJmjxM dialogues.py: QmZhspQD1MV1Cv49DN1uQti8YVjV6sA78v8gD1fobabEUu message.py: QmVRW9y1bbBUj9r4CRFmPFz1T5L5fah4qRbSbgrW3m7UKy serialization.py: QmRdfN4CZovYR1jukwb2RkQDHVjQqha9Wu9PmVLSao1o5j diff --git a/packages/fetchai/protocols/fipa/fipa_pb2.py b/packages/fetchai/protocols/fipa/fipa_pb2.py index c81dc723e9..d01328b723 100644 --- a/packages/fetchai/protocols/fipa/fipa_pb2.py +++ b/packages/fetchai/protocols/fipa/fipa_pb2.py @@ -28,21 +28,21 @@ _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE = _FIPAMESSAGE.nested_types_by_name[ "Accept_W_Inform_Performative" ] -_FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = ( + _FIPAMESSAGE_ACCEPT_W_INFORM_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE = _FIPAMESSAGE.nested_types_by_name[ "Match_Accept_W_Inform_Performative" ] -_FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE_INFOENTRY = ( + _FIPAMESSAGE_MATCH_ACCEPT_W_INFORM_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _FIPAMESSAGE_INFORM_PERFORMATIVE = _FIPAMESSAGE.nested_types_by_name[ "Inform_Performative" ] -_FIPAMESSAGE_INFORM_PERFORMATIVE_INFOENTRY = _FIPAMESSAGE_INFORM_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_FIPAMESSAGE_INFORM_PERFORMATIVE_INFOENTRY = ( + _FIPAMESSAGE_INFORM_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _FIPAMESSAGE_ACCEPT_PERFORMATIVE = _FIPAMESSAGE.nested_types_by_name[ "Accept_Performative" ] diff --git a/packages/fetchai/protocols/fipa/protocol.yaml b/packages/fetchai/protocols/fipa/protocol.yaml index 4543cca4d6..ade13e1977 100644 --- a/packages/fetchai/protocols/fipa/protocol.yaml +++ b/packages/fetchai/protocols/fipa/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: custom_types.py: QmaYgpGGoEiVRyjaSK7JCUj8bveA7azyCQeK2E4R7e86ZG dialogues.py: QmVLKtuTwgCLK9jMWvHdJEnprd5nkdM4GAs5mowNkxL7r4 fipa.proto: QmS7aXZ2JoG3oyMHWiPYoP9RJ7iChsoTC9KQLsj6vi3ejR - fipa_pb2.py: QmdWGLjJodWABWvEokcX1gE6aXbZsncqFtbdHQ3LdGtNj7 + fipa_pb2.py: QmT6CxDiwyz3ucsNxZSxtNZXE9NThshV68zvXEYtiWjEUP message.py: QmW3MUX4g6md9RaUHSBQtGhdDCEjfFL7EkVLFknckDwVfx serialization.py: QmbkVSdDye2oEfVV8aySeddKu9gqAJnYqMavyGoVxz3oWg fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/gym/gym_pb2.py b/packages/fetchai/protocols/gym/gym_pb2.py index c376e49d1c..77f8a74cee 100644 --- a/packages/fetchai/protocols/gym/gym_pb2.py +++ b/packages/fetchai/protocols/gym/gym_pb2.py @@ -27,9 +27,9 @@ _GYMMESSAGE_STATUS_PERFORMATIVE = _GYMMESSAGE.nested_types_by_name[ "Status_Performative" ] -_GYMMESSAGE_STATUS_PERFORMATIVE_CONTENTENTRY = _GYMMESSAGE_STATUS_PERFORMATIVE.nested_types_by_name[ - "ContentEntry" -] +_GYMMESSAGE_STATUS_PERFORMATIVE_CONTENTENTRY = ( + _GYMMESSAGE_STATUS_PERFORMATIVE.nested_types_by_name["ContentEntry"] +) _GYMMESSAGE_RESET_PERFORMATIVE = _GYMMESSAGE.nested_types_by_name["Reset_Performative"] _GYMMESSAGE_CLOSE_PERFORMATIVE = _GYMMESSAGE.nested_types_by_name["Close_Performative"] GymMessage = _reflection.GeneratedProtocolMessageType( diff --git a/packages/fetchai/protocols/gym/protocol.yaml b/packages/fetchai/protocols/gym/protocol.yaml index 5c96f37314..ea3d59d3db 100644 --- a/packages/fetchai/protocols/gym/protocol.yaml +++ b/packages/fetchai/protocols/gym/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: custom_types.py: QmVSJWU8rj7ksBVbhUkgm936njcgC5Tx5iFR456YytmSSj dialogues.py: QmRUL12bcdYFUDeA3fV8ifaxqApp3WhBPGhMzXgKhVXN8f gym.proto: QmdCRYrHpG1AGzGfGAisbDZEJA2gdgJvhivtHqttTsQeYE - gym_pb2.py: QmcUfmV7WDCB65T6fmukz2NvTVWjqb3D9mD9Aucw5hJaLQ + gym_pb2.py: QmXhaUyFbsLoKbHBK83SR6a9zvAGAsvWGu7tA2BTTyw26W message.py: QmPhN95FEjzY2ZtHJbMzP4JKZpFv9MmotAzpsWeWN1fLr5 serialization.py: QmZnchBgxAGpXzHktWSA45QUAX6wdQbQPirFK8tFd5tS1R fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/ledger_api/custom_types.py b/packages/fetchai/protocols/ledger_api/custom_types.py index d4717364bf..63da77e4f1 100644 --- a/packages/fetchai/protocols/ledger_api/custom_types.py +++ b/packages/fetchai/protocols/ledger_api/custom_types.py @@ -46,7 +46,8 @@ class Kwargs: __slots__ = ("_body",) def __init__( - self, body: JSONLike, + self, + body: JSONLike, ): """Initialise an instance of RawTransaction.""" self._body = body diff --git a/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py b/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py index b0bd40132d..563f036fdd 100644 --- a/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py +++ b/packages/fetchai/protocols/ledger_api/ledger_api_pb2.py @@ -37,27 +37,27 @@ _LEDGERAPIMESSAGE_GET_BALANCE_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ "Get_Balance_Performative" ] -_LEDGERAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ - "Get_Raw_Transaction_Performative" -] -_LEDGERAPIMESSAGE_SEND_SIGNED_TRANSACTION_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ - "Send_Signed_Transaction_Performative" -] -_LEDGERAPIMESSAGE_GET_TRANSACTION_RECEIPT_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ - "Get_Transaction_Receipt_Performative" -] +_LEDGERAPIMESSAGE_GET_RAW_TRANSACTION_PERFORMATIVE = ( + _LEDGERAPIMESSAGE.nested_types_by_name["Get_Raw_Transaction_Performative"] +) +_LEDGERAPIMESSAGE_SEND_SIGNED_TRANSACTION_PERFORMATIVE = ( + _LEDGERAPIMESSAGE.nested_types_by_name["Send_Signed_Transaction_Performative"] +) +_LEDGERAPIMESSAGE_GET_TRANSACTION_RECEIPT_PERFORMATIVE = ( + _LEDGERAPIMESSAGE.nested_types_by_name["Get_Transaction_Receipt_Performative"] +) _LEDGERAPIMESSAGE_BALANCE_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ "Balance_Performative" ] _LEDGERAPIMESSAGE_RAW_TRANSACTION_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ "Raw_Transaction_Performative" ] -_LEDGERAPIMESSAGE_TRANSACTION_DIGEST_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ - "Transaction_Digest_Performative" -] -_LEDGERAPIMESSAGE_TRANSACTION_RECEIPT_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ - "Transaction_Receipt_Performative" -] +_LEDGERAPIMESSAGE_TRANSACTION_DIGEST_PERFORMATIVE = ( + _LEDGERAPIMESSAGE.nested_types_by_name["Transaction_Digest_Performative"] +) +_LEDGERAPIMESSAGE_TRANSACTION_RECEIPT_PERFORMATIVE = ( + _LEDGERAPIMESSAGE.nested_types_by_name["Transaction_Receipt_Performative"] +) _LEDGERAPIMESSAGE_GET_STATE_PERFORMATIVE = _LEDGERAPIMESSAGE.nested_types_by_name[ "Get_State_Performative" ] diff --git a/packages/fetchai/protocols/ledger_api/protocol.yaml b/packages/fetchai/protocols/ledger_api/protocol.yaml index 3afc0bed92..9acdbc4ffc 100644 --- a/packages/fetchai/protocols/ledger_api/protocol.yaml +++ b/packages/fetchai/protocols/ledger_api/protocol.yaml @@ -9,10 +9,10 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmUpNxEJGSXFBqsSoBr5abhtLo1kafpknpPsQb4VbWrK9f __init__.py: QmT4zkRf9Ub5aeV1NDWhVVW9DZXoJjvMYLrvnSjGe3DXKk - custom_types.py: QmTfPnqw6E8okjWXqFpbS7P4ri8qXZxZyss8RLykppmmw9 + custom_types.py: Qmf4krChNQ3GF8zrp6bsZCfyGGMLM3t5i1cxdMvikM6EWs dialogues.py: QmUkhFxEAJ4YKPXddit7rWZ13r78MM3suZJ1uAAgTbuLwH ledger_api.proto: QmR92cmoxSxKANTvCmm9skftvgzYobNwcWCUanNkduJjyh - ledger_api_pb2.py: QmQjpsb6yPfzwrFW8LJ2HTTCj3iZmbD9aFNxj1p4tdkEme + ledger_api_pb2.py: QmNt9mSa71PcXDHFDwEWb3ay4RAE11KURX8hzZmFj8voEo message.py: QmVY49iJkynU38fHwHmzcfgT42DgKGsSDuk7JVUN7pNr8L serialization.py: Qmd1HVCps97Y2Dy1wRs344YdYD1SeJtNe5ybfzFPbzJinV fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/oef_search/oef_search_pb2.py b/packages/fetchai/protocols/oef_search/oef_search_pb2.py index d110386258..0d652c58c5 100644 --- a/packages/fetchai/protocols/oef_search/oef_search_pb2.py +++ b/packages/fetchai/protocols/oef_search/oef_search_pb2.py @@ -25,12 +25,12 @@ "OefErrorOperation" ] _OEFSEARCHMESSAGE_QUERY = _OEFSEARCHMESSAGE.nested_types_by_name["Query"] -_OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE = _OEFSEARCHMESSAGE.nested_types_by_name[ - "Register_Service_Performative" -] -_OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE = _OEFSEARCHMESSAGE.nested_types_by_name[ - "Unregister_Service_Performative" -] +_OEFSEARCHMESSAGE_REGISTER_SERVICE_PERFORMATIVE = ( + _OEFSEARCHMESSAGE.nested_types_by_name["Register_Service_Performative"] +) +_OEFSEARCHMESSAGE_UNREGISTER_SERVICE_PERFORMATIVE = ( + _OEFSEARCHMESSAGE.nested_types_by_name["Unregister_Service_Performative"] +) _OEFSEARCHMESSAGE_SEARCH_SERVICES_PERFORMATIVE = _OEFSEARCHMESSAGE.nested_types_by_name[ "Search_Services_Performative" ] @@ -43,9 +43,9 @@ _OEFSEARCHMESSAGE_OEF_ERROR_PERFORMATIVE = _OEFSEARCHMESSAGE.nested_types_by_name[ "Oef_Error_Performative" ] -_OEFSEARCHMESSAGE_OEFERROROPERATION_OEFERRORENUM = _OEFSEARCHMESSAGE_OEFERROROPERATION.enum_types_by_name[ - "OefErrorEnum" -] +_OEFSEARCHMESSAGE_OEFERROROPERATION_OEFERRORENUM = ( + _OEFSEARCHMESSAGE_OEFERROROPERATION.enum_types_by_name["OefErrorEnum"] +) OefSearchMessage = _reflection.GeneratedProtocolMessageType( "OefSearchMessage", (_message.Message,), diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index 69d614ec4a..92b182e7f0 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -13,7 +13,7 @@ fingerprint: dialogues.py: QmR4Bam6eLDkbZ6dkcuLhpVwCqmtmnxfg6Bnpd5ttzbJcf message.py: QmXoPS4T5Vg4abwLMJtMM3MyQwVhAPMD9HmhMnHXG8rMu7 oef_search.proto: QmaYkawAXEeeNuCcjmwcvdsttnE3owtuP9ouAYVyRu7M2J - oef_search_pb2.py: QmaSXn3irhKQH7cVT4A1F38dNTwB9XhF41y5gZqA52ANGd + oef_search_pb2.py: QmSCvcwkLmwWESqiAs2Vj2yioUwLmdzMGaCDRo3sHT1ByL serialization.py: QmW1wJmEYax9eaxMUEQZKTxnMhodwArrNSMvNXho9UWCTJ fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/prometheus/prometheus_pb2.py b/packages/fetchai/protocols/prometheus/prometheus_pb2.py index a740fcba03..d3292666db 100644 --- a/packages/fetchai/protocols/prometheus/prometheus_pb2.py +++ b/packages/fetchai/protocols/prometheus/prometheus_pb2.py @@ -22,15 +22,15 @@ _PROMETHEUSMESSAGE_ADD_METRIC_PERFORMATIVE = _PROMETHEUSMESSAGE.nested_types_by_name[ "Add_Metric_Performative" ] -_PROMETHEUSMESSAGE_ADD_METRIC_PERFORMATIVE_LABELSENTRY = _PROMETHEUSMESSAGE_ADD_METRIC_PERFORMATIVE.nested_types_by_name[ - "LabelsEntry" -] +_PROMETHEUSMESSAGE_ADD_METRIC_PERFORMATIVE_LABELSENTRY = ( + _PROMETHEUSMESSAGE_ADD_METRIC_PERFORMATIVE.nested_types_by_name["LabelsEntry"] +) _PROMETHEUSMESSAGE_UPDATE_METRIC_PERFORMATIVE = _PROMETHEUSMESSAGE.nested_types_by_name[ "Update_Metric_Performative" ] -_PROMETHEUSMESSAGE_UPDATE_METRIC_PERFORMATIVE_LABELSENTRY = _PROMETHEUSMESSAGE_UPDATE_METRIC_PERFORMATIVE.nested_types_by_name[ - "LabelsEntry" -] +_PROMETHEUSMESSAGE_UPDATE_METRIC_PERFORMATIVE_LABELSENTRY = ( + _PROMETHEUSMESSAGE_UPDATE_METRIC_PERFORMATIVE.nested_types_by_name["LabelsEntry"] +) _PROMETHEUSMESSAGE_RESPONSE_PERFORMATIVE = _PROMETHEUSMESSAGE.nested_types_by_name[ "Response_Performative" ] diff --git a/packages/fetchai/protocols/prometheus/protocol.yaml b/packages/fetchai/protocols/prometheus/protocol.yaml index affeabe242..0f1e6ba66c 100644 --- a/packages/fetchai/protocols/prometheus/protocol.yaml +++ b/packages/fetchai/protocols/prometheus/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmVNNWsEzorKdYWxGSW1yUKd8PNXYjcRprtJijuuFSepkQ message.py: QmdwHwyaJTuiyUY1uoETCHRbgw1gTLqAeiwEeF3rFa7979 prometheus.proto: QmXzFWmrWVqQuxtVgaZwuMgbrEvSRrRVU63htURUsFJ1wv - prometheus_pb2.py: QmbEkf4cAqEMAJjgpADA8tCq46aL6wLg3zswmat6h6GjXy + prometheus_pb2.py: QmNuDYT7RWNRmRKSMgsLqD76gmmNSNm88uTCSPcvoxTdHr serialization.py: QmYXXhfSkq4Xo93Yah4QhtriFpGZjr97sW8nozA6LpxzaQ fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/register/protocol.yaml b/packages/fetchai/protocols/register/protocol.yaml index ad10c46d43..ce37bbe81f 100644 --- a/packages/fetchai/protocols/register/protocol.yaml +++ b/packages/fetchai/protocols/register/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: dialogues.py: QmPBn3aiw9oc1QhkehdghEoBkhjreMmLnw6rZCr84cimJH message.py: QmWv28u7hMKkeNXSMqEAc8c9HVhNyzBQwhxDQtRFjySGSs register.proto: QmarDZqqxezQX3XLLxWigC32S5Aiu367XjHVMKCjXcpfeN - register_pb2.py: QmTDWKfzwrVv5KUfTcfMQFLXpYMFnU1Vp9kTNaGRT2q83e + register_pb2.py: QmRisHAzYZK38NFaW4kfhYQx6VpTQnKN7hepxV83LgFW91 serialization.py: QmVbsLQJRgaErNxyEtED6GFVQgubzkgNmxu4MpSczTHX3k fingerprint_ignore_patterns: [] dependencies: diff --git a/packages/fetchai/protocols/register/register_pb2.py b/packages/fetchai/protocols/register/register_pb2.py index e75188d782..01e75cb2d6 100644 --- a/packages/fetchai/protocols/register/register_pb2.py +++ b/packages/fetchai/protocols/register/register_pb2.py @@ -22,21 +22,21 @@ _REGISTERMESSAGE_REGISTER_PERFORMATIVE = _REGISTERMESSAGE.nested_types_by_name[ "Register_Performative" ] -_REGISTERMESSAGE_REGISTER_PERFORMATIVE_INFOENTRY = _REGISTERMESSAGE_REGISTER_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_REGISTERMESSAGE_REGISTER_PERFORMATIVE_INFOENTRY = ( + _REGISTERMESSAGE_REGISTER_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _REGISTERMESSAGE_SUCCESS_PERFORMATIVE = _REGISTERMESSAGE.nested_types_by_name[ "Success_Performative" ] -_REGISTERMESSAGE_SUCCESS_PERFORMATIVE_INFOENTRY = _REGISTERMESSAGE_SUCCESS_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_REGISTERMESSAGE_SUCCESS_PERFORMATIVE_INFOENTRY = ( + _REGISTERMESSAGE_SUCCESS_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _REGISTERMESSAGE_ERROR_PERFORMATIVE = _REGISTERMESSAGE.nested_types_by_name[ "Error_Performative" ] -_REGISTERMESSAGE_ERROR_PERFORMATIVE_INFOENTRY = _REGISTERMESSAGE_ERROR_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_REGISTERMESSAGE_ERROR_PERFORMATIVE_INFOENTRY = ( + _REGISTERMESSAGE_ERROR_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) RegisterMessage = _reflection.GeneratedProtocolMessageType( "RegisterMessage", (_message.Message,), diff --git a/packages/fetchai/protocols/state_update/protocol.yaml b/packages/fetchai/protocols/state_update/protocol.yaml index 0904bc388c..d581e45f7d 100644 --- a/packages/fetchai/protocols/state_update/protocol.yaml +++ b/packages/fetchai/protocols/state_update/protocol.yaml @@ -13,7 +13,7 @@ fingerprint: message.py: Qmf2fwXX97uUkYLZaQRf4C4rBzquEWaFrzGnW54JmVMqs2 serialization.py: QmNv9xW4jStebRqVEyhfEMcbDBA4wajBDMtNJfsKe6GtQ7 state_update.proto: QmdLQpu2jpJUuUFhF34hBeh64Gfv5V1JxLTKCTgY93qduR - state_update_pb2.py: QmcAtuQptov3QdmGwr2zv1VnuR2BATSVF6UvpiKcVVhGGr + state_update_pb2.py: QmXmaUALXJ4zV2CuADrGsFpNmy8RhWLSYpm7dXXogfgrw3 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/state_update/state_update_pb2.py b/packages/fetchai/protocols/state_update/state_update_pb2.py index 1e613a4864..27336ed4b2 100644 --- a/packages/fetchai/protocols/state_update/state_update_pb2.py +++ b/packages/fetchai/protocols/state_update/state_update_pb2.py @@ -22,27 +22,39 @@ _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE = _STATEUPDATEMESSAGE.nested_types_by_name[ "Initialize_Performative" ] -_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ - "ExchangeParamsByCurrencyIdEntry" -] -_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ - "UtilityParamsByGoodIdEntry" -] -_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ - "AmountByCurrencyIdEntry" -] -_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ - "QuantitiesByGoodIdEntry" -] +_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = ( + _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ + "ExchangeParamsByCurrencyIdEntry" + ] +) +_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = ( + _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ + "UtilityParamsByGoodIdEntry" + ] +) +_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = ( + _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ + "AmountByCurrencyIdEntry" + ] +) +_STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = ( + _STATEUPDATEMESSAGE_INITIALIZE_PERFORMATIVE.nested_types_by_name[ + "QuantitiesByGoodIdEntry" + ] +) _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE = _STATEUPDATEMESSAGE.nested_types_by_name[ "Apply_Performative" ] -_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE.nested_types_by_name[ - "AmountByCurrencyIdEntry" -] -_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE.nested_types_by_name[ - "QuantitiesByGoodIdEntry" -] +_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = ( + _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE.nested_types_by_name[ + "AmountByCurrencyIdEntry" + ] +) +_STATEUPDATEMESSAGE_APPLY_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = ( + _STATEUPDATEMESSAGE_APPLY_PERFORMATIVE.nested_types_by_name[ + "QuantitiesByGoodIdEntry" + ] +) _STATEUPDATEMESSAGE_END_PERFORMATIVE = _STATEUPDATEMESSAGE.nested_types_by_name[ "End_Performative" ] diff --git a/packages/fetchai/protocols/tac/protocol.yaml b/packages/fetchai/protocols/tac/protocol.yaml index 84bbe51484..d5965c7d36 100644 --- a/packages/fetchai/protocols/tac/protocol.yaml +++ b/packages/fetchai/protocols/tac/protocol.yaml @@ -15,7 +15,7 @@ fingerprint: message.py: QmUDn43J7x4a5ecQVRXacsJ4TWSDXAWFpjowpEGqcSyzvC serialization.py: QmcoX3JNxsnia3AtA53Peb13jonKgtzRDM1ZfZEtEmcbCh tac.proto: QmVLyb1hc9SmouyhBXT2g8RYHsyitqxqDMssnMnPj5AhCx - tac_pb2.py: QmWxAhDWbPKFmDMcPPTaurwLqjDePutUDCh46SESTNV6Wn + tac_pb2.py: QmdzW9DyYGaEA6evnb4mVHQRkxRyzmgiN1LdiFrck9T6Ai fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/tac/tac_pb2.py b/packages/fetchai/protocols/tac/tac_pb2.py index efed4e067e..d6cba1d61b 100644 --- a/packages/fetchai/protocols/tac/tac_pb2.py +++ b/packages/fetchai/protocols/tac/tac_pb2.py @@ -29,63 +29,71 @@ _TACMESSAGE_TRANSACTION_PERFORMATIVE = _TACMESSAGE.nested_types_by_name[ "Transaction_Performative" ] -_TACMESSAGE_TRANSACTION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _TACMESSAGE_TRANSACTION_PERFORMATIVE.nested_types_by_name[ - "AmountByCurrencyIdEntry" -] -_TACMESSAGE_TRANSACTION_PERFORMATIVE_FEEBYCURRENCYIDENTRY = _TACMESSAGE_TRANSACTION_PERFORMATIVE.nested_types_by_name[ - "FeeByCurrencyIdEntry" -] -_TACMESSAGE_TRANSACTION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _TACMESSAGE_TRANSACTION_PERFORMATIVE.nested_types_by_name[ - "QuantitiesByGoodIdEntry" -] +_TACMESSAGE_TRANSACTION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = ( + _TACMESSAGE_TRANSACTION_PERFORMATIVE.nested_types_by_name["AmountByCurrencyIdEntry"] +) +_TACMESSAGE_TRANSACTION_PERFORMATIVE_FEEBYCURRENCYIDENTRY = ( + _TACMESSAGE_TRANSACTION_PERFORMATIVE.nested_types_by_name["FeeByCurrencyIdEntry"] +) +_TACMESSAGE_TRANSACTION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = ( + _TACMESSAGE_TRANSACTION_PERFORMATIVE.nested_types_by_name["QuantitiesByGoodIdEntry"] +) _TACMESSAGE_CANCELLED_PERFORMATIVE = _TACMESSAGE.nested_types_by_name[ "Cancelled_Performative" ] _TACMESSAGE_GAME_DATA_PERFORMATIVE = _TACMESSAGE.nested_types_by_name[ "Game_Data_Performative" ] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "AmountByCurrencyIdEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "ExchangeParamsByCurrencyIdEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "QuantitiesByGoodIdEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "UtilityParamsByGoodIdEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_FEEBYCURRENCYIDENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "FeeByCurrencyIdEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_AGENTADDRTONAMEENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "AgentAddrToNameEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_CURRENCYIDTONAMEENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "CurrencyIdToNameEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_GOODIDTONAMEENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "GoodIdToNameEntry" -] -_TACMESSAGE_GAME_DATA_PERFORMATIVE_INFOENTRY = _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_TACMESSAGE_GAME_DATA_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name["AmountByCurrencyIdEntry"] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_EXCHANGEPARAMSBYCURRENCYIDENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ + "ExchangeParamsByCurrencyIdEntry" + ] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name["QuantitiesByGoodIdEntry"] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_UTILITYPARAMSBYGOODIDENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name[ + "UtilityParamsByGoodIdEntry" + ] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_FEEBYCURRENCYIDENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name["FeeByCurrencyIdEntry"] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_AGENTADDRTONAMEENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name["AgentAddrToNameEntry"] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_CURRENCYIDTONAMEENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name["CurrencyIdToNameEntry"] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_GOODIDTONAMEENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name["GoodIdToNameEntry"] +) +_TACMESSAGE_GAME_DATA_PERFORMATIVE_INFOENTRY = ( + _TACMESSAGE_GAME_DATA_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE = _TACMESSAGE.nested_types_by_name[ "Transaction_Confirmation_Performative" ] -_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE.nested_types_by_name[ - "AmountByCurrencyIdEntry" -] -_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE.nested_types_by_name[ - "QuantitiesByGoodIdEntry" -] +_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_AMOUNTBYCURRENCYIDENTRY = ( + _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE.nested_types_by_name[ + "AmountByCurrencyIdEntry" + ] +) +_TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE_QUANTITIESBYGOODIDENTRY = ( + _TACMESSAGE_TRANSACTION_CONFIRMATION_PERFORMATIVE.nested_types_by_name[ + "QuantitiesByGoodIdEntry" + ] +) _TACMESSAGE_TAC_ERROR_PERFORMATIVE = _TACMESSAGE.nested_types_by_name[ "Tac_Error_Performative" ] -_TACMESSAGE_TAC_ERROR_PERFORMATIVE_INFOENTRY = _TACMESSAGE_TAC_ERROR_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_TACMESSAGE_TAC_ERROR_PERFORMATIVE_INFOENTRY = ( + _TACMESSAGE_TAC_ERROR_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _TACMESSAGE_ERRORCODE_ERRORCODEENUM = _TACMESSAGE_ERRORCODE.enum_types_by_name[ "ErrorCodeEnum" ] diff --git a/packages/fetchai/protocols/yoti/protocol.yaml b/packages/fetchai/protocols/yoti/protocol.yaml index 32b9fcc809..43953d9d46 100644 --- a/packages/fetchai/protocols/yoti/protocol.yaml +++ b/packages/fetchai/protocols/yoti/protocol.yaml @@ -13,7 +13,7 @@ fingerprint: message.py: QmVxuAKanNeNfHBEJLAsQVNht7ML2kkiFZwYeTKbvyvxty serialization.py: QmSu7FYEc5qcKSnBkTSviGenh4a2HbEq2QyqTxqwqyKo67 yoti.proto: QmY9KxWcQBsUjP9KhRwM9jSkLEoJZjRVSHbQkg1yg6HVYm - yoti_pb2.py: QmdG6Y8joN8Cb2NEWiEWkWdwXHSAGGu9xoCopAnuy81r4P + yoti_pb2.py: QmcdiGpSnaCxqEH3uL3Z8Dtc77hVbpThLpv6Qjz3YPF1Ko fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/yoti/yoti_pb2.py b/packages/fetchai/protocols/yoti/yoti_pb2.py index d0b97f34d4..8b108860ab 100644 --- a/packages/fetchai/protocols/yoti/yoti_pb2.py +++ b/packages/fetchai/protocols/yoti/yoti_pb2.py @@ -25,9 +25,9 @@ _YOTIMESSAGE_PROFILE_PERFORMATIVE = _YOTIMESSAGE.nested_types_by_name[ "Profile_Performative" ] -_YOTIMESSAGE_PROFILE_PERFORMATIVE_INFOENTRY = _YOTIMESSAGE_PROFILE_PERFORMATIVE.nested_types_by_name[ - "InfoEntry" -] +_YOTIMESSAGE_PROFILE_PERFORMATIVE_INFOENTRY = ( + _YOTIMESSAGE_PROFILE_PERFORMATIVE.nested_types_by_name["InfoEntry"] +) _YOTIMESSAGE_ERROR_PERFORMATIVE = _YOTIMESSAGE.nested_types_by_name[ "Error_Performative" ] diff --git a/packages/fetchai/skills/advanced_data_request/behaviours.py b/packages/fetchai/skills/advanced_data_request/behaviours.py index 91ab6639af..2400f8fbde 100644 --- a/packages/fetchai/skills/advanced_data_request/behaviours.py +++ b/packages/fetchai/skills/advanced_data_request/behaviours.py @@ -104,7 +104,11 @@ def add_prometheus_metric( self.context.outbox.put_message(message=message) def update_prometheus_metric( - self, metric_name: str, update_func: str, value: float, labels: Dict[str, str], + self, + metric_name: str, + update_func: str, + value: float, + labels: Dict[str, str], ) -> None: """ Update a prometheus metric. diff --git a/packages/fetchai/skills/advanced_data_request/handlers.py b/packages/fetchai/skills/advanced_data_request/handlers.py index 89a2f1a373..0d7eef1cbc 100644 --- a/packages/fetchai/skills/advanced_data_request/handlers.py +++ b/packages/fetchai/skills/advanced_data_request/handlers.py @@ -131,7 +131,7 @@ def _handle_response(self, http_msg: HttpMessage) -> None: # if value is a numeric type, store it as fixed-point with number of decimals if is_number(value): float_value = float(value) - int_value = int(float_value * 10 ** model.decimals) + int_value = int(float_value * 10**model.decimals) observation = { output["name"]: {"value": int_value, "decimals": model.decimals} } @@ -163,7 +163,9 @@ def _handle_request( """ self.context.logger.info( "received http request with method={}, url={} and body={!r}".format( - http_msg.method, http_msg.url, http_msg.body, + http_msg.method, + http_msg.url, + http_msg.body, ) ) diff --git a/packages/fetchai/skills/advanced_data_request/skill.yaml b/packages/fetchai/skills/advanced_data_request/skill.yaml index 782a41d742..5baa247264 100644 --- a/packages/fetchai/skills/advanced_data_request/skill.yaml +++ b/packages/fetchai/skills/advanced_data_request/skill.yaml @@ -9,9 +9,9 @@ fingerprint: README.md: QmQEKGxJfUy6vg3aPg6jRNHQ4vzr4rUHYVac5eYG5C6Uxb __init__.py: QmX9EjHAFipDjHi3xbocdPcViMam6ekoEN8oA6HexTBJbk api_spec.yaml: QmUPhCYr6tWDMysdMCQxT67oAKRdMbGpgqDfAA5wpei12s - behaviours.py: QmQgXDd1M3eoE29Y1UDsGFy72PkkY2TQyKoduDQ1EZFxNK + behaviours.py: QmYnYzA3mPgpBy4X7JrVWPhymtu9TkLHs9T3qaKsBpYaxw dialogues.py: QmU6ct3u9jvbSQ1YMfh72K4HRuUKYiSyw4wVmjEf73A3Y1 - handlers.py: QmWLyFt7PVMig2KwtQDXBVL2YZ7zY4SyVR7Bij42uUjY8Q + handlers.py: QmWvKrrb6khn9MYmNvLaDy39Xkyu3rdq7wwjYcuNmk7f8w models.py: Qmdr4CjeVCc9AdQAdkAGEcb6XRtLyEwxNMbrvGLAghvmBo fingerprint_ignore_patterns: [] contracts: [] diff --git a/packages/fetchai/skills/aries_alice/handlers.py b/packages/fetchai/skills/aries_alice/handlers.py index 3e3776da8e..14c9d56c3e 100644 --- a/packages/fetchai/skills/aries_alice/handlers.py +++ b/packages/fetchai/skills/aries_alice/handlers.py @@ -414,7 +414,8 @@ def _handle_success( description = target_message.service_description data_model_name = description.data_model.name registration_behaviour = cast( - AliceBehaviour, self.context.behaviours.alice, + AliceBehaviour, + self.context.behaviours.alice, ) if "location_agent" in data_model_name: registration_behaviour.register_service() @@ -460,7 +461,8 @@ def _handle_search(self, oef_search_msg: OefSearchMessage) -> None: # send invitations for addr in strategy.aea_addresses: self.context.behaviours.alice.send_http_request_message( - method="POST", url=strategy.admin_url + ADMIN_COMMAND_CREATE_INVITATION, + method="POST", + url=strategy.admin_url + ADMIN_COMMAND_CREATE_INVITATION, ) self.context.logger.info(f"created an invitation for {addr}.") @@ -488,7 +490,10 @@ def _handle_error( target_message.performative == OefSearchMessage.Performative.REGISTER_SERVICE ): - alice_behaviour = cast(AliceBehaviour, self.context.behaviours.alice,) + alice_behaviour = cast( + AliceBehaviour, + self.context.behaviours.alice, + ) alice_behaviour.failed_registration_msg = target_message def _handle_invalid( @@ -502,6 +507,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/aries_alice/skill.yaml b/packages/fetchai/skills/aries_alice/skill.yaml index 1bc51d199d..a2329e0afa 100644 --- a/packages/fetchai/skills/aries_alice/skill.yaml +++ b/packages/fetchai/skills/aries_alice/skill.yaml @@ -11,8 +11,8 @@ fingerprint: __init__.py: Qmb9RKbqZZpycpvycqS4o13WgqqVqhiFZZFnztoedpcqhU behaviours.py: QmdweWFwQsRpYT62x6agikommGMY75p8obsZr4VDmTbM35 dialogues.py: QmVgfF5LR7269g6ffhH56dWq6U11YygUaKZfYvk3tY21mu - handlers.py: QmUhygCzBn9g4CxkhBVyCQHYqwn61rvec4z9FbmUQKdYQ1 - strategy.py: QmWhDYoKp49VnQVGyZWCaCoXcphhF5BpCtByqM9uQ4BB86 + handlers.py: QmWXWCPNc7721ZD2WqCcajMDH1uyTZYghiPsNB7ZtU8WFp + strategy.py: QmeWoCwsReoZn4SXHPkoSy4qsYUyePusiVZKsNRCkXCzYA fingerprint_ignore_patterns: [] connections: - fetchai/http_client:0.24.2 diff --git a/packages/fetchai/skills/aries_alice/strategy.py b/packages/fetchai/skills/aries_alice/strategy.py index 04810cb56c..44317f16c0 100644 --- a/packages/fetchai/skills/aries_alice/strategy.py +++ b/packages/fetchai/skills/aries_alice/strategy.py @@ -83,7 +83,10 @@ def __init__(self, **kwargs: Any) -> None: self._admin_url = f"http://{self.admin_host}:{self.admin_port}" self._seed = ( - kwargs.pop("seed", None,) + kwargs.pop( + "seed", + None, + ) or ( "my_seed_000000000000000000000000" + str(random.randint(100_000, 999_999)) # nosec @@ -171,7 +174,9 @@ def get_location_and_service_query(self) -> Query: self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query def get_location_description(self) -> Description: @@ -181,7 +186,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -192,7 +198,8 @@ def get_register_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + self._set_service_data, + data_model=AGENT_SET_SERVICE_MODEL, ) return description @@ -203,7 +210,8 @@ def get_register_personality_description(self) -> Description: :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -214,7 +222,8 @@ def get_register_classification_description(self) -> Description: :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -225,6 +234,7 @@ def get_unregister_service_description(self) -> Description: :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description diff --git a/packages/fetchai/skills/aries_faber/handlers.py b/packages/fetchai/skills/aries_faber/handlers.py index 30f7d83e9e..98aaff14b6 100644 --- a/packages/fetchai/skills/aries_faber/handlers.py +++ b/packages/fetchai/skills/aries_faber/handlers.py @@ -418,6 +418,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/aries_faber/skill.yaml b/packages/fetchai/skills/aries_faber/skill.yaml index ce0def6aaa..5d021be631 100644 --- a/packages/fetchai/skills/aries_faber/skill.yaml +++ b/packages/fetchai/skills/aries_faber/skill.yaml @@ -11,8 +11,8 @@ fingerprint: __init__.py: QmbaxqAq2NWmPeYsTiXPen36UyMQ1r8Wi9FqzuumEA3YBM behaviours.py: QmZs34mLXAxJfwHa68k4cUMBudrbgHtVnt5o9dXyWbK1P2 dialogues.py: QmS2ERq7Vb3v3VZTkcM8CupbkAoT74Cn4YQH3RbiW6qDoi - handlers.py: QmWENcBW5NjN1bD7B4h28MjrtUhMLwfzHDQNRfTa9SLCp3 - strategy.py: QmUBgu4gYqgw9hXkHNEAy3AyHifpDub5AwFmLkp8feaDWh + handlers.py: QmXBrxkvsSk7qzDLPZvgzAzRVoT2VjDWAa6V8FVrq3nDrr + strategy.py: QmQ3XiBQPuY3jk9zAaUUxX45jUw4huFTiLoWf8KKkeEE5d fingerprint_ignore_patterns: [] connections: - fetchai/http_client:0.24.2 diff --git a/packages/fetchai/skills/aries_faber/strategy.py b/packages/fetchai/skills/aries_faber/strategy.py index 475867cc39..6b21c0f9f6 100644 --- a/packages/fetchai/skills/aries_faber/strategy.py +++ b/packages/fetchai/skills/aries_faber/strategy.py @@ -67,7 +67,10 @@ def __init__(self, **kwargs: Any) -> None: self._ledger_url = kwargs.pop("ledger_url", DEFAULT_LEDGER_URL) self._seed = ( - kwargs.pop("seed", None,) + kwargs.pop( + "seed", + None, + ) or ( "my_seed_000000000000000000000000" + str(random.randint(100_000, 999_999)) # nosec @@ -150,5 +153,7 @@ def get_location_and_service_query(self) -> Query: self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query diff --git a/packages/fetchai/skills/confirmation_aw1/registration_db.py b/packages/fetchai/skills/confirmation_aw1/registration_db.py index 5db924dd2f..4767668600 100644 --- a/packages/fetchai/skills/confirmation_aw1/registration_db.py +++ b/packages/fetchai/skills/confirmation_aw1/registration_db.py @@ -81,7 +81,9 @@ def set_registered( self._execute_single_sql(command, variables) def set_registered_developer_only( - self, address: str, developer_handle: str, + self, + address: str, + developer_handle: str, ) -> None: """Record a registration.""" command = "INSERT OR REPLACE INTO registered_table(address, developer_handle) values(?, ?)" diff --git a/packages/fetchai/skills/confirmation_aw1/skill.yaml b/packages/fetchai/skills/confirmation_aw1/skill.yaml index 13b2b2e3b4..836885507c 100644 --- a/packages/fetchai/skills/confirmation_aw1/skill.yaml +++ b/packages/fetchai/skills/confirmation_aw1/skill.yaml @@ -12,8 +12,8 @@ fingerprint: behaviours.py: QmcJp8utQMCpumxTc4maq3wSF26QTGNTXpREJqDgp5mgBY dialogues.py: QmRxYEHjtqufhnt8ZjKCKTrbXhtMb2H6zjqe44Y7Ce89AD handlers.py: QmTZprqCCRZDPLHzuxMdQtfWnfmqAedY6wbCUhfB4uPqyb - registration_db.py: QmPRV3SAb7cUmskXES9mfBVFrTFCTnzKzKdESKMaLj7E16 - strategy.py: Qmb94tjGaEmrBAtKcCTxuVVw8Nm6rYFj47u3aiQNwueJq4 + registration_db.py: QmWXJV77CLYmuV3YMEozAgmDbXqA4DZpWuowNhbpKyhtsU + strategy.py: QmWEPot73KkyxgFdGaqNr915NKwrFcZ7V3F4MMs4f1B9fi fingerprint_ignore_patterns: [] connections: - fetchai/ledger:0.21.1 diff --git a/packages/fetchai/skills/confirmation_aw1/strategy.py b/packages/fetchai/skills/confirmation_aw1/strategy.py index f40441bfeb..ab9ed1af40 100644 --- a/packages/fetchai/skills/confirmation_aw1/strategy.py +++ b/packages/fetchai/skills/confirmation_aw1/strategy.py @@ -127,7 +127,8 @@ def finalize_registration(self, address: str) -> None: registration_db = cast(RegistrationDB, self.context.registration_db) if self.developer_handle_only: registration_db.set_registered_developer_only( - address=address, developer_handle=info["developer_handle"], + address=address, + developer_handle=info["developer_handle"], ) else: registration_db.set_registered( diff --git a/packages/fetchai/skills/confirmation_aw2/registration_db.py b/packages/fetchai/skills/confirmation_aw2/registration_db.py index deaf9e9979..c81faf4807 100644 --- a/packages/fetchai/skills/confirmation_aw2/registration_db.py +++ b/packages/fetchai/skills/confirmation_aw2/registration_db.py @@ -64,7 +64,10 @@ def _initialise_backend(self) -> None: ) def set_trade( - self, address: str, timestamp: datetime.datetime, data: Dict[str, str], + self, + address: str, + timestamp: datetime.datetime, + data: Dict[str, str], ) -> None: """Record a registration.""" record = self.get_trade_table(address) diff --git a/packages/fetchai/skills/confirmation_aw2/skill.yaml b/packages/fetchai/skills/confirmation_aw2/skill.yaml index 27601ad4a2..f78efe825c 100644 --- a/packages/fetchai/skills/confirmation_aw2/skill.yaml +++ b/packages/fetchai/skills/confirmation_aw2/skill.yaml @@ -12,7 +12,7 @@ fingerprint: behaviours.py: QmNxVQanY9hn7Cp9tfTvJhF7ghLpUBDd8XUVjhfQ5xCsnj dialogues.py: QmXsn6zXQoqTMQaq86CAEyMJcyN9TQtKH7a5531t3y4x8J handlers.py: QmZWWcnX8LfACWBhYe3UAVKoXuFbbqXAM5aw2ZY9NpZiFL - registration_db.py: QmU2PuHKoTL26H2d3YicAsqEqCnZ8uRdtuxVjQ4QYQ7DsY + registration_db.py: QmNkLosYVGuxkaybMCuAbMXtaEBXZHRdsVFSvreUiSWjCG strategy.py: QmUfyuL7qLAWBEaPdzUoREVpYBES4JJEbT6cJ2tpwz5uPS fingerprint_ignore_patterns: [] connections: diff --git a/packages/fetchai/skills/confirmation_aw3/registration_db.py b/packages/fetchai/skills/confirmation_aw3/registration_db.py index 33f3d44c9b..ebeb385d45 100644 --- a/packages/fetchai/skills/confirmation_aw3/registration_db.py +++ b/packages/fetchai/skills/confirmation_aw3/registration_db.py @@ -64,7 +64,10 @@ def _initialise_backend(self) -> None: ) def set_trade( - self, address: str, timestamp: datetime.datetime, data: Dict[str, str], + self, + address: str, + timestamp: datetime.datetime, + data: Dict[str, str], ) -> None: """Record a registration.""" command = "INSERT INTO trades_table(address, created_at, data) values(?, ?, ?)" diff --git a/packages/fetchai/skills/confirmation_aw3/skill.yaml b/packages/fetchai/skills/confirmation_aw3/skill.yaml index 3627a6e7c0..973b84171d 100644 --- a/packages/fetchai/skills/confirmation_aw3/skill.yaml +++ b/packages/fetchai/skills/confirmation_aw3/skill.yaml @@ -12,7 +12,7 @@ fingerprint: behaviours.py: QmWiYyLUczqz1AXx5iV16nHAqG9hAJ1j9Hupcym7b8eYvY dialogues.py: QmeB3PdnEK5Zfb7TBh2rLZ63azwwHeNGaNH2G5vg6FkewT handlers.py: QmP7tP5BicHvVNKm1ejSi1Z6ZpTL9YubeS9yMCGqgro4wx - registration_db.py: QmVndoyPAEUrqJxMfVNrtiuCwfNSjg5DzomtnyExJFAaYp + registration_db.py: QmX4jTkKq1gW3q4rTphGYE8B2HK9hQ8Avuor76EPFW8ch8 strategy.py: QmYtFuuv1SevjmsdcvZTGszTS92wuA4RP5StJJaieEtWmi fingerprint_ignore_patterns: [] connections: diff --git a/packages/fetchai/skills/erc1155_client/handlers.py b/packages/fetchai/skills/erc1155_client/handlers.py index c20c2eaf8d..96b87180f0 100644 --- a/packages/fetchai/skills/erc1155_client/handlers.py +++ b/packages/fetchai/skills/erc1155_client/handlers.py @@ -133,7 +133,8 @@ def _handle_propose( # accept any proposal with the correct keys self.context.logger.info( "received valid PROPOSE from sender={}: proposal={}".format( - fipa_msg.sender[-5:], fipa_msg.proposal.values, + fipa_msg.sender[-5:], + fipa_msg.proposal.values, ) ) strategy = cast(Strategy, self.context.strategy) @@ -183,7 +184,8 @@ def _handle_propose( else: self.context.logger.info( "received invalid PROPOSE from sender={}: proposal={}".format( - fipa_msg.sender[-5:], fipa_msg.proposal.values, + fipa_msg.sender[-5:], + fipa_msg.proposal.values, ) ) @@ -316,7 +318,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) @@ -434,7 +437,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle contract_api message of performative={} in dialogue={}.".format( - contract_api_msg.performative, contract_api_dialogue, + contract_api_msg.performative, + contract_api_dialogue, ) ) @@ -509,7 +513,8 @@ def _handle_signed_message( ) self.context.logger.info( "sending ACCEPT_W_INFORM to agent={}: tx_signature={}".format( - last_fipa_msg.sender[-5:], signing_msg.signed_message, + last_fipa_msg.sender[-5:], + signing_msg.signed_message, ) ) self.context.outbox.put_message(message=inform_msg) @@ -603,7 +608,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -633,6 +639,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) diff --git a/packages/fetchai/skills/erc1155_client/skill.yaml b/packages/fetchai/skills/erc1155_client/skill.yaml index d05b5379ec..60cfca2384 100644 --- a/packages/fetchai/skills/erc1155_client/skill.yaml +++ b/packages/fetchai/skills/erc1155_client/skill.yaml @@ -11,8 +11,8 @@ fingerprint: __init__.py: Qmbwz43BLTgNkoDqVziWW45M486yD6G9Pqzy51H5GaKoKZ behaviours.py: QmcnYqEA9r9XtofBKw16JWgjdaUBZMysDhvB1bzWvwqTfr dialogues.py: Qmf4EVwfeExPBPPpZoiNZKBHdLbefcJgYPkRobKv66AFAz - handlers.py: QmXvuAv6vykGavaGAJ8urMFAzxmZF4VAxf5PEwS8TjRqBg - strategy.py: QmWRb59JMgKmHvbnFvb5T171hzqzXmgz52Weu2hayP3JXD + handlers.py: QmQ6LBDKT9tvCHqCFmWv4mcu84RaAME878acCY7b3UYodb + strategy.py: QmdVRFdLtzU9i7DFLDqPMAV3RYb3nbRjBXMyp96d9pDGhj fingerprint_ignore_patterns: [] connections: - fetchai/ledger:0.21.1 diff --git a/packages/fetchai/skills/erc1155_client/strategy.py b/packages/fetchai/skills/erc1155_client/strategy.py index 7698516e5d..00d960d9ed 100644 --- a/packages/fetchai/skills/erc1155_client/strategy.py +++ b/packages/fetchai/skills/erc1155_client/strategy.py @@ -87,7 +87,9 @@ def get_location_and_service_query(self) -> Query: self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query def get_service_query(self) -> Query: diff --git a/packages/fetchai/skills/erc1155_deploy/behaviours.py b/packages/fetchai/skills/erc1155_deploy/behaviours.py index 2c2ef0e11d..f1ecf362c5 100644 --- a/packages/fetchai/skills/erc1155_deploy/behaviours.py +++ b/packages/fetchai/skills/erc1155_deploy/behaviours.py @@ -153,7 +153,10 @@ def _request_contract_deploy_transaction(self) -> None: {"deployer_address": self.context.agent_address, "gas": strategy.gas} ), ) - contract_api_dialogue = cast(ContractApiDialogue, contract_api_dialogue,) + contract_api_dialogue = cast( + ContractApiDialogue, + contract_api_dialogue, + ) contract_api_dialogue.terms = strategy.get_deploy_terms() self.context.outbox.put_message(message=contract_api_msg) self.context.logger.info("requesting contract deployment transaction...") diff --git a/packages/fetchai/skills/erc1155_deploy/handlers.py b/packages/fetchai/skills/erc1155_deploy/handlers.py index 4c9229258a..a370315561 100644 --- a/packages/fetchai/skills/erc1155_deploy/handlers.py +++ b/packages/fetchai/skills/erc1155_deploy/handlers.py @@ -137,7 +137,8 @@ def _handle_cfp(self, fipa_msg: FipaMessage, fipa_dialogue: FipaDialogue) -> Non ) self.context.logger.info( "sending PROPOSE to agent={}: proposal={}".format( - fipa_msg.sender[-5:], fipa_dialogue.proposal.values, + fipa_msg.sender[-5:], + fipa_dialogue.proposal.values, ) ) self.context.outbox.put_message(message=proposal_msg) @@ -285,7 +286,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -384,7 +386,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) @@ -501,7 +504,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle contract_api message of performative={} in dialogue={}.".format( - contract_api_msg.performative, contract_api_dialogue, + contract_api_msg.performative, + contract_api_dialogue, ) ) @@ -752,6 +756,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/erc1155_deploy/skill.yaml b/packages/fetchai/skills/erc1155_deploy/skill.yaml index 738f244bd0..f0f8fa04ec 100644 --- a/packages/fetchai/skills/erc1155_deploy/skill.yaml +++ b/packages/fetchai/skills/erc1155_deploy/skill.yaml @@ -9,10 +9,10 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmNg45JuqfVzDmvgpWLeaR861LSEvf9pishDKSPihtQnLE __init__.py: QmT4mDv3nod2Coet9bkGvdGt87dvwto3kso4NFDqxTZDjt - behaviours.py: QmbeGv81ytu5CFWqoFqoYACzB5NexGKiYGr8CoQJE8fNSQ + behaviours.py: QmQtMjETXT5REA6EiCxh1SmDFJrcCT9P7s3XyNS3mxXgqv dialogues.py: QmYwMGDxdnspe7CsnQQ6GfyctfunqmvJqjkAB5PrYFwsm4 - handlers.py: QmNfyUajQ5osm1HjokRgeDr2vVJNihbTSHYi5ecPQ3hJuE - strategy.py: QmVQTC9D2M6h3dirfPT1dC2dgwGTs8XNj82AqjRDh8Mzq6 + handlers.py: QmPixbfoZiXu6kpTPy2ZbJjEcvzPqu6PEyeuDq56gCThBd + strategy.py: QmaXBe9v7MJ4RpUwJ3jN6Y2Np1vXdAkgK5ZChPGtqHfJPk fingerprint_ignore_patterns: [] connections: - fetchai/ledger:0.21.1 diff --git a/packages/fetchai/skills/erc1155_deploy/strategy.py b/packages/fetchai/skills/erc1155_deploy/strategy.py index b9968c6205..8d43e6f85c 100644 --- a/packages/fetchai/skills/erc1155_deploy/strategy.py +++ b/packages/fetchai/skills/erc1155_deploy/strategy.py @@ -222,7 +222,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -233,7 +234,8 @@ def get_register_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + self._set_service_data, + data_model=AGENT_SET_SERVICE_MODEL, ) return description @@ -244,7 +246,8 @@ def get_register_personality_description(self) -> Description: :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -255,7 +258,8 @@ def get_register_classification_description(self) -> Description: :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -266,7 +270,8 @@ def get_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._simple_service_data, data_model=SIMPLE_SERVICE_MODEL, + self._simple_service_data, + data_model=SIMPLE_SERVICE_MODEL, ) return description @@ -277,7 +282,8 @@ def get_unregister_service_description(self) -> Description: :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description diff --git a/packages/fetchai/skills/fetch_block/handlers.py b/packages/fetchai/skills/fetch_block/handlers.py index def61eeb12..5d954b536e 100644 --- a/packages/fetchai/skills/fetch_block/handlers.py +++ b/packages/fetchai/skills/fetch_block/handlers.py @@ -138,6 +138,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) diff --git a/packages/fetchai/skills/fetch_block/skill.yaml b/packages/fetchai/skills/fetch_block/skill.yaml index 0791381098..9c209357a5 100644 --- a/packages/fetchai/skills/fetch_block/skill.yaml +++ b/packages/fetchai/skills/fetch_block/skill.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: QmXwc1J2DpXv3NM1NdDnv4KCkRGvKpM3e1npBH3yuEqSTA behaviours.py: QmeoEs3jpFy5y8EDeSMyTfdKZ7rS1p9NfzWf9iuSoRw4pc dialogues.py: Qmb1oXK3xhZtGNdeNi63wrJFvJjVKo3kSWiC4BDWvhEeHS - handlers.py: QmSFjiEtd4NTaK6oaMbw6N7Z4MtBxv2qXxU3rvSVHaSy2U + handlers.py: QmaGtGdeZDLSU6GY8vTY5HYSawkucAtEJzBgAdNiikGrYG fingerprint_ignore_patterns: [] connections: - fetchai/ledger:0.21.1 diff --git a/packages/fetchai/skills/generic_buyer/handlers.py b/packages/fetchai/skills/generic_buyer/handlers.py index 06834d11e9..60d511eab4 100644 --- a/packages/fetchai/skills/generic_buyer/handlers.py +++ b/packages/fetchai/skills/generic_buyer/handlers.py @@ -121,7 +121,8 @@ def _handle_propose( """ self.context.logger.info( "received proposal={} from sender={}".format( - fipa_msg.proposal.values, fipa_msg.sender[-5:], + fipa_msg.proposal.values, + fipa_msg.sender[-5:], ) ) strategy = cast(GenericStrategy, self.context.strategy) @@ -134,7 +135,8 @@ def _handle_propose( terms = strategy.terms_from_proposal(fipa_msg.proposal, fipa_msg.sender) fipa_dialogue.terms = terms accept_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.ACCEPT, target_message=fipa_msg, + performative=FipaMessage.Performative.ACCEPT, + target_message=fipa_msg, ) self.context.outbox.put_message(message=accept_msg) else: @@ -142,7 +144,8 @@ def _handle_propose( "declining the proposal from sender={}".format(fipa_msg.sender[-5:]) ) decline_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.DECLINE, target_message=fipa_msg, + performative=FipaMessage.Performative.DECLINE, + target_message=fipa_msg, ) self.context.outbox.put_message(message=decline_msg) @@ -379,7 +382,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) @@ -572,7 +576,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: if ledger_api_msg.balance > 0: self.context.logger.info( "starting balance on {} ledger={}.".format( - strategy.ledger_id, ledger_api_msg.balance, + strategy.ledger_id, + ledger_api_msg.balance, ) ) strategy.balance = ledger_api_msg.balance @@ -714,6 +719,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) diff --git a/packages/fetchai/skills/generic_buyer/skill.yaml b/packages/fetchai/skills/generic_buyer/skill.yaml index d0bcda9921..e04fdc3d27 100644 --- a/packages/fetchai/skills/generic_buyer/skill.yaml +++ b/packages/fetchai/skills/generic_buyer/skill.yaml @@ -10,8 +10,8 @@ fingerprint: __init__.py: QmdNsFvxVhmtSwd5S7TDrXNuqfrQELsJdSjZqmhhK3njHV behaviours.py: QmephYoPF78rWrwqBwpKWKSJhKUV6pe5GpEm4fgoR3BpPx dialogues.py: QmaZsSYcxyjNJ4FQz4gTxYjW5qYi4hfkv3Aky5eCXNLbfc - handlers.py: QmUrPrqGB2aW8ZWv1NLPsNCAgjZbMw83g1yk5qGEGsZ8SE - strategy.py: QmUGFUoiif8qtGCG7BQiomQL48erPQydWPWm5FbguDpeC1 + handlers.py: Qmee6K1NvwqiXCM5x1ycAmTp2iS7JbuQxLsytZpckmoMPa + strategy.py: QmY84D8JwXJxLSWTZNBZeHoyJjmuRsj2U7Dya6EhYSw1ny fingerprint_ignore_patterns: [] connections: - fetchai/ledger:0.21.1 diff --git a/packages/fetchai/skills/generic_buyer/strategy.py b/packages/fetchai/skills/generic_buyer/strategy.py index b358366aaf..86173c5892 100644 --- a/packages/fetchai/skills/generic_buyer/strategy.py +++ b/packages/fetchai/skills/generic_buyer/strategy.py @@ -156,7 +156,9 @@ def get_location_and_service_query(self) -> Query: self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query def get_service_query(self) -> Query: diff --git a/packages/fetchai/skills/generic_seller/handlers.py b/packages/fetchai/skills/generic_seller/handlers.py index a2371c7691..edfd16a3ee 100644 --- a/packages/fetchai/skills/generic_seller/handlers.py +++ b/packages/fetchai/skills/generic_seller/handlers.py @@ -144,7 +144,8 @@ def _handle_cfp(self, fipa_msg: FipaMessage, fipa_dialogue: FipaDialogue) -> Non "declined the CFP from sender={}".format(fipa_msg.sender[-5:]) ) decline_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.DECLINE, target_message=fipa_msg, + performative=FipaMessage.Performative.DECLINE, + target_message=fipa_msg, ) self.context.outbox.put_message(message=decline_msg) @@ -192,7 +193,8 @@ def _handle_accept( ) self.context.logger.info( "sending MATCH_ACCEPT_W_INFORM to sender={} with info={}".format( - fipa_msg.sender[-5:], info, + fipa_msg.sender[-5:], + info, ) ) self.context.outbox.put_message(message=match_accept_msg) @@ -252,7 +254,8 @@ def _handle_inform( ) self.context.logger.info( "transaction confirmed, sending data={} to buyer={}.".format( - fipa_dialogue.data_for_sale, fipa_msg.sender[-5:], + fipa_dialogue.data_for_sale, + fipa_msg.sender[-5:], ) ) else: @@ -341,7 +344,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -384,7 +388,8 @@ def _handle_transaction_receipt( ) self.context.logger.info( "transaction confirmed, sending data={} to buyer={}.".format( - fipa_dialogue.data_for_sale, last_message.sender[-5:], + fipa_dialogue.data_for_sale, + last_message.sender[-5:], ) ) else: @@ -420,7 +425,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) @@ -567,6 +573,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/generic_seller/skill.yaml b/packages/fetchai/skills/generic_seller/skill.yaml index 146320f47c..0a37e7af4d 100644 --- a/packages/fetchai/skills/generic_seller/skill.yaml +++ b/packages/fetchai/skills/generic_seller/skill.yaml @@ -11,8 +11,8 @@ fingerprint: __init__.py: QmTMQFH6gJH3nWRHZ7JFitxpZeLcBAs1Kq8bWm2ECe5MZv behaviours.py: Qma28yLbE65GZuhXuTFQgqBxeTntYoZor5iXHPC562ffwv dialogues.py: QmX6eAjvCiaZ1kT6VYBoLxwNw8zFuP5YKjrbaSuQQdQ2CY - handlers.py: QmREY2Dx7Tmza9kQDe1BWzFfCbPXBc68rwpnavJ6nFjMq9 - strategy.py: QmfFfSsyXbgg8fwYJYTovdjudkpxDVDTgAV58pDScxXAzz + handlers.py: QmT6HZ25cS3mrq4tKW7AukVPRXzTkZLHTacNVt2kico2Bb + strategy.py: QmNngz46Ewx7kqAi3mqbmtF7PUBF7qYHbgG4vjpMKuLggR fingerprint_ignore_patterns: [] connections: - fetchai/ledger:0.21.1 diff --git a/packages/fetchai/skills/generic_seller/strategy.py b/packages/fetchai/skills/generic_seller/strategy.py index b13fcb38d6..65bd367196 100644 --- a/packages/fetchai/skills/generic_seller/strategy.py +++ b/packages/fetchai/skills/generic_seller/strategy.py @@ -150,7 +150,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -161,7 +162,8 @@ def get_register_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + self._set_service_data, + data_model=AGENT_SET_SERVICE_MODEL, ) return description @@ -172,7 +174,8 @@ def get_register_personality_description(self) -> Description: :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -183,7 +186,8 @@ def get_register_classification_description(self) -> Description: :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -194,7 +198,8 @@ def get_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._simple_service_data, data_model=SIMPLE_SERVICE_MODEL, + self._simple_service_data, + data_model=SIMPLE_SERVICE_MODEL, ) return description @@ -205,7 +210,8 @@ def get_unregister_service_description(self) -> Description: :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description diff --git a/packages/fetchai/skills/gym/helpers.py b/packages/fetchai/skills/gym/helpers.py index 8992aa5034..f002668176 100644 --- a/packages/fetchai/skills/gym/helpers.py +++ b/packages/fetchai/skills/gym/helpers.py @@ -138,7 +138,8 @@ def reset(self) -> None: self._step_count = 0 self._is_rl_agent_trained = False gym_msg, gym_dialogue = self.gym_dialogues.create( - counterparty=self.gym_address, performative=GymMessage.Performative.RESET, + counterparty=self.gym_address, + performative=GymMessage.Performative.RESET, ) gym_dialogue = cast(GymDialogue, gym_dialogue) self._active_dialogue = gym_dialogue @@ -161,7 +162,8 @@ def close(self) -> None: if last_msg is None: # pragma: nocover raise ValueError("Cannot retrieve last message.") gym_msg = self.active_gym_dialogue.reply( - performative=GymMessage.Performative.CLOSE, target_message=last_msg, + performative=GymMessage.Performative.CLOSE, + target_message=last_msg, ) self._skill_context.outbox.put_message(message=gym_msg) diff --git a/packages/fetchai/skills/gym/skill.yaml b/packages/fetchai/skills/gym/skill.yaml index 651c07d959..d0b093b933 100644 --- a/packages/fetchai/skills/gym/skill.yaml +++ b/packages/fetchai/skills/gym/skill.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: QmVqyXtKbeyeGTZHaAP4bbfoUVFq3UyM278itZEvHDZQS6 dialogues.py: QmbYTMFd2KPK1enx2AxDDr8ERbEPHb3FDhRbd8cr9ZFXxT handlers.py: QmP8shGqcc2o1W47nBtdUCPP2PrRxdTPCZ1hxeeaWvdTi2 - helpers.py: QmcbsnRVSs2td1mzSFiqqtRpxWNQpw592ZDnL3zWHMCSfQ + helpers.py: QmV9AsiWfbMjN3QBZAxy8Y4TBL4PL9sBXDd2xKm3br5QBx rl_agent.py: QmWtbsgPD6r39aGefT7BRFM7vBG2YvmVdeY8iMGLyswtZa tasks.py: QmWhwUQdsC3gD71VS51bsvmPiCr2WZPCHcfv7AbWqU717y fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/skills/http_echo/handlers.py b/packages/fetchai/skills/http_echo/handlers.py index 0f48829831..6b19e85088 100644 --- a/packages/fetchai/skills/http_echo/handlers.py +++ b/packages/fetchai/skills/http_echo/handlers.py @@ -93,7 +93,9 @@ def _handle_request( """ self.context.logger.info( "received http request with method={}, url={} and body={!r}".format( - http_msg.method, http_msg.url, http_msg.body, + http_msg.method, + http_msg.url, + http_msg.body, ) ) if http_msg.method == "get": diff --git a/packages/fetchai/skills/http_echo/skill.yaml b/packages/fetchai/skills/http_echo/skill.yaml index b043db0b81..f2651cf1b8 100644 --- a/packages/fetchai/skills/http_echo/skill.yaml +++ b/packages/fetchai/skills/http_echo/skill.yaml @@ -10,7 +10,7 @@ fingerprint: README.md: QmYC2Y95Mg327LyHzQ3WbxZA8g1NfSHasmDTRcvrGCXmiR __init__.py: QmZeRhxJciQUxdwSc4Jb5fZXWFsU9oRFgQJSRxXuqP5DXH dialogues.py: QmUSbxe3nGmPYWsV2uL4KXSFFiMyHdr96UhDwTyJn88wWm - handlers.py: QmZNner2UogvSm97VJyCLZuFL5ihHJcSbwp9fHk1qprjeD + handlers.py: QmRmvkeEAUPDESDsPT1rhU5kRH3QqPdSyMc8vqeU43zZwi fingerprint_ignore_patterns: [] connections: - fetchai/http_server:0.23.2 diff --git a/packages/fetchai/skills/ml_data_provider/handlers.py b/packages/fetchai/skills/ml_data_provider/handlers.py index 0b8f6fdb31..5560f5d0c2 100644 --- a/packages/fetchai/skills/ml_data_provider/handlers.py +++ b/packages/fetchai/skills/ml_data_provider/handlers.py @@ -237,7 +237,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -267,7 +268,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) @@ -414,6 +416,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/ml_data_provider/skill.yaml b/packages/fetchai/skills/ml_data_provider/skill.yaml index 1d43571ec9..0bdab37926 100644 --- a/packages/fetchai/skills/ml_data_provider/skill.yaml +++ b/packages/fetchai/skills/ml_data_provider/skill.yaml @@ -11,8 +11,8 @@ fingerprint: __init__.py: QmeiKVXdPPR7w3uiaAtAAnZFVYC9khKdLACFoT5nssGudx behaviours.py: QmU6DnhfLsYNGoJMrW9jeQ9CknpJG5cp2WjCFwPQfuJkiV dialogues.py: QmTWTeidShLf6Pg5pxrYTxAFMYWQ5rRdgLrXLcXMJS8vYn - handlers.py: Qmda9SU3rhoMQFiWFfpFRJ9dEwDtqopsYFGnNFydRrQ8ms - strategy.py: QmVbxMMFCzwdJKf4Toyfd4Qpqn9tMVy4x4JVUqc6GEPYzb + handlers.py: QmYoipDR88wvdgvNxK4xaEpiugpWAtgcKr6dsp1kxtDm4N + strategy.py: QmNRXuKuuLw1LS7qneCEmfTguviQpG67DDSxxCbBzEwiZ6 fingerprint_ignore_patterns: [] connections: [] contracts: [] diff --git a/packages/fetchai/skills/ml_data_provider/strategy.py b/packages/fetchai/skills/ml_data_provider/strategy.py index 65503cd1a8..df90da483a 100644 --- a/packages/fetchai/skills/ml_data_provider/strategy.py +++ b/packages/fetchai/skills/ml_data_provider/strategy.py @@ -146,7 +146,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -157,7 +158,8 @@ def get_register_personality_description(self) -> Description: :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -168,7 +170,8 @@ def get_register_classification_description(self) -> Description: :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -179,7 +182,8 @@ def get_register_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + self._set_service_data, + data_model=AGENT_SET_SERVICE_MODEL, ) return description @@ -190,7 +194,8 @@ def get_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._simple_service_data, data_model=SIMPLE_DATA_MODEL, + self._simple_service_data, + data_model=SIMPLE_DATA_MODEL, ) return description @@ -201,7 +206,8 @@ def get_unregister_service_description(self) -> Description: :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description diff --git a/packages/fetchai/skills/ml_train/handlers.py b/packages/fetchai/skills/ml_train/handlers.py index 4719f30543..624422ef0a 100644 --- a/packages/fetchai/skills/ml_train/handlers.py +++ b/packages/fetchai/skills/ml_train/handlers.py @@ -309,7 +309,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) @@ -388,7 +389,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: if ledger_api_msg.balance > 0: self.context.logger.info( "starting balance on {} ledger={}.".format( - strategy.ledger_id, ledger_api_msg.balance, + strategy.ledger_id, + ledger_api_msg.balance, ) ) strategy.is_searching = True @@ -488,7 +490,8 @@ def _handle_transaction_receipt( self.context.outbox.put_message(message=ml_accept) self.context.logger.info( "informing counterparty={} of transaction digest={}.".format( - ml_trade_msg.sender[-5:], ledger_api_msg_.transaction_digest, + ml_trade_msg.sender[-5:], + ledger_api_msg_.transaction_digest, ) ) else: @@ -537,7 +540,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) diff --git a/packages/fetchai/skills/ml_train/skill.yaml b/packages/fetchai/skills/ml_train/skill.yaml index 13341ef2c9..b2c24056c2 100644 --- a/packages/fetchai/skills/ml_train/skill.yaml +++ b/packages/fetchai/skills/ml_train/skill.yaml @@ -11,8 +11,8 @@ fingerprint: __init__.py: QmXprsonoqw46z91v5g1YUTRLKaGpSJSEzExZiUPZ4aH9R behaviours.py: QmeKKwsRGKfW6Lw6UVDZigyrcJpnQ9eLLUR4jWb4kJJuWt dialogues.py: QmRnu5pRsV9jXMxYu81W4Z5Hp8v7RE2zz4yXKJHi8UNYTS - handlers.py: QmPnor8sPHxXrL2TWj246zpibhUkUABqB2cWmjb8akY3fn - strategy.py: QmaNbwuQoRqRkDK14PxcPcYsN2SpT9JXx1HwhcxuKdAbTq + handlers.py: QmZAi3BRs83ysokRy1WkheS8dQccdBVfxWW6sW1AsoA5y3 + strategy.py: QmefdhfAVrqTKXw519z29NcPq4ZW7Ru4SYXkLKRHo5yDJR tasks.py: QmaxqQ4hBbd2eFAiSzxv66GLpWCpkN7AydQWFFPHQWUsuf fingerprint_ignore_patterns: [] connections: diff --git a/packages/fetchai/skills/ml_train/strategy.py b/packages/fetchai/skills/ml_train/strategy.py index 8e8031a6cf..bb7bd243a2 100644 --- a/packages/fetchai/skills/ml_train/strategy.py +++ b/packages/fetchai/skills/ml_train/strategy.py @@ -173,7 +173,9 @@ def get_location_and_service_query(self) -> Query: self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query def get_service_query(self) -> Query: diff --git a/packages/fetchai/skills/simple_aggregation/behaviours.py b/packages/fetchai/skills/simple_aggregation/behaviours.py index f19fd1e5a4..7bbea4577d 100644 --- a/packages/fetchai/skills/simple_aggregation/behaviours.py +++ b/packages/fetchai/skills/simple_aggregation/behaviours.py @@ -199,7 +199,10 @@ def act(self) -> None: value = quantity.get("value", None) if value: strategy.make_observation( - value, str(time()), source=DEFAULT_SOURCE, signature=DEFAULT_SIGNATURE, + value, + str(time()), + source=DEFAULT_SOURCE, + signature=DEFAULT_SIGNATURE, ) self.broadcast_observation() diff --git a/packages/fetchai/skills/simple_aggregation/handlers.py b/packages/fetchai/skills/simple_aggregation/handlers.py index 1a39cf1076..c7f17ced08 100644 --- a/packages/fetchai/skills/simple_aggregation/handlers.py +++ b/packages/fetchai/skills/simple_aggregation/handlers.py @@ -245,7 +245,8 @@ def _handle_success( description = target_message.service_description data_model_name = description.data_model.name registration_behaviour = cast( - SearchBehaviour, self.context.behaviours.search, + SearchBehaviour, + self.context.behaviours.search, ) if "location_agent" in data_model_name: registration_behaviour.register_service() @@ -293,7 +294,8 @@ def _handle_error( == OefSearchMessage.Performative.REGISTER_SERVICE ): registration_behaviour = cast( - SearchBehaviour, self.context.behaviours.search, + SearchBehaviour, + self.context.behaviours.search, ) registration_behaviour.failed_registration_msg = target_message @@ -330,6 +332,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/simple_aggregation/skill.yaml b/packages/fetchai/skills/simple_aggregation/skill.yaml index 39a464c683..a7c94af19c 100644 --- a/packages/fetchai/skills/simple_aggregation/skill.yaml +++ b/packages/fetchai/skills/simple_aggregation/skill.yaml @@ -8,10 +8,10 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmSFsC6K217XxwuH5fXGQYU29J44VvW9Qim5yNPAbXLegV __init__.py: Qmd7J4iDtLq2K8WwNTkG93odCfmSd5yrTMHYio6fE7eKyJ - behaviours.py: QmXLXWgyMh9tkNJtrX7NgqQMwDmQqtWsgobXLTpazPJw2h + behaviours.py: QmRVGGihhrds2ASPUK1bsPQVLQR1ZcsAEjnWAqNqhMCQRg dialogues.py: QmPBSUmeve76gRwrDuYCdJrLMgwgrrCKYbo6Btepd9SZbm - handlers.py: QmZn43P6YPZqg9bRApkGTJfFuW4VjfKJwSEzXZchdJJGky - strategy.py: QmSgjb9UTWX5RVcvwDtvW64ykLb8P4L3z9i7LuajjiSQmj + handlers.py: QmVKtuaGE37ZTAx75mshgwofrcfYBizYBtUjeU9hyJhRjf + strategy.py: QmSDixuL3kHAhBkvHudQTUZLH2bN27vF6BwM1iJVukDRP3 fingerprint_ignore_patterns: [] contracts: [] protocols: diff --git a/packages/fetchai/skills/simple_aggregation/strategy.py b/packages/fetchai/skills/simple_aggregation/strategy.py index eaae21a58a..07f60a0a7c 100644 --- a/packages/fetchai/skills/simple_aggregation/strategy.py +++ b/packages/fetchai/skills/simple_aggregation/strategy.py @@ -198,7 +198,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -209,7 +210,8 @@ def get_register_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + self._set_service_data, + data_model=AGENT_SET_SERVICE_MODEL, ) return description @@ -220,7 +222,8 @@ def get_register_personality_description(self) -> Description: :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -231,7 +234,8 @@ def get_register_classification_description(self) -> Description: :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -242,7 +246,8 @@ def get_unregister_service_description(self) -> Description: :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description @@ -265,5 +270,7 @@ def get_location_and_service_query(self) -> Query: self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query diff --git a/packages/fetchai/skills/simple_oracle/behaviours.py b/packages/fetchai/skills/simple_oracle/behaviours.py index 1b8361d54d..95a507138b 100644 --- a/packages/fetchai/skills/simple_oracle/behaviours.py +++ b/packages/fetchai/skills/simple_oracle/behaviours.py @@ -122,7 +122,10 @@ def _request_contract_deploy_transaction(self) -> None: callable="get_deploy_transaction", kwargs=strategy.get_deploy_kwargs(), ) - contract_api_dialogue = cast(ContractApiDialogue, contract_api_dialogue,) + contract_api_dialogue = cast( + ContractApiDialogue, + contract_api_dialogue, + ) contract_api_dialogue.terms = strategy.get_deploy_terms() self.context.outbox.put_message(message=contract_api_msg) self.context.logger.info("requesting contract deployment transaction...") @@ -157,7 +160,7 @@ def _request_grant_role_transaction(self) -> None: @staticmethod def _get_tx_expriration_block() -> int: """Return max block number for no expiration.""" - return 2 ** 256 - 1 + return 2**256 - 1 def _request_update_transaction(self, update_kwargs: Dict[str, Any]) -> None: """Request transaction that updates value in Fetch oracle contract.""" @@ -238,7 +241,11 @@ def add_prometheus_metric( self.context.outbox.put_message(message=message) def update_prometheus_metric( - self, metric_name: str, update_func: str, value: float, labels: Dict[str, str], + self, + metric_name: str, + update_func: str, + value: float, + labels: Dict[str, str], ) -> None: """ Update a prometheus metric. diff --git a/packages/fetchai/skills/simple_oracle/handlers.py b/packages/fetchai/skills/simple_oracle/handlers.py index ae9e1db7b7..31f7845a2b 100644 --- a/packages/fetchai/skills/simple_oracle/handlers.py +++ b/packages/fetchai/skills/simple_oracle/handlers.py @@ -119,7 +119,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "Balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) if self.context.prometheus_dialogues.enabled: @@ -213,7 +214,8 @@ def _handle_transaction_receipt( tx_receipt = cast(JSONLike, ledger_api_msg.transaction_receipt.receipt) is_transaction_successful = LedgerApis.is_transaction_settled( - ledger_id, tx_receipt, + ledger_id, + tx_receipt, ) if is_transaction_successful: self.context.logger.info( @@ -299,7 +301,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) @@ -419,7 +422,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle contract_api message of performative={} in dialogue={}.".format( - contract_api_msg.performative, contract_api_dialogue, + contract_api_msg.performative, + contract_api_dialogue, ) ) diff --git a/packages/fetchai/skills/simple_oracle/skill.yaml b/packages/fetchai/skills/simple_oracle/skill.yaml index 26a6b280b6..662af9a1d4 100644 --- a/packages/fetchai/skills/simple_oracle/skill.yaml +++ b/packages/fetchai/skills/simple_oracle/skill.yaml @@ -8,9 +8,9 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmcvyraEedZd5PEnmbijkkcsDrQQKDVJxPDUXVrwP3Ni3J __init__.py: QmbJfFuivf8xHH5n5m6ifQPG5k3BV95pfUEzPZgGZTDsVR - behaviours.py: QmPBeA3inwVs4DWBdaUVA23uQUbq5rrXgLxvvKiokUywCm + behaviours.py: QmQ5vHdb7hgvSYTR7gtenMF21u5GNTNhLvQMC3cxLpnohG dialogues.py: Qme9GGuPFfGMNPiwtnXDK8rUuGEN7PHgKnhoZU2ehfipq2 - handlers.py: QmYBdKPjBj4K7UUhsQr4fcEzkFukmWR3vC2Cy9rnRkFp1o + handlers.py: QmY4jsSQrKAvPrYR6q83AadUXg4awH344AYBrzjcEufkSf strategy.py: QmbgMqaB3nqy3RQS5acEVi6iJTeMaCSyYLZfvTQ2qPP3cZ fingerprint_ignore_patterns: [] contracts: diff --git a/packages/fetchai/skills/simple_oracle_client/behaviours.py b/packages/fetchai/skills/simple_oracle_client/behaviours.py index 1b863cd505..f404071926 100644 --- a/packages/fetchai/skills/simple_oracle_client/behaviours.py +++ b/packages/fetchai/skills/simple_oracle_client/behaviours.py @@ -101,7 +101,10 @@ def _request_contract_deploy_transaction(self) -> None: callable="get_deploy_transaction", kwargs=strategy.get_deploy_kwargs(), ) - contract_api_dialogue = cast(ContractApiDialogue, contract_api_dialogue,) + contract_api_dialogue = cast( + ContractApiDialogue, + contract_api_dialogue, + ) contract_api_dialogue.terms = strategy.get_deploy_terms() self.context.outbox.put_message(message=contract_api_msg) self.context.logger.info("requesting contract deployment transaction...") diff --git a/packages/fetchai/skills/simple_oracle_client/handlers.py b/packages/fetchai/skills/simple_oracle_client/handlers.py index 240b2835a0..0cbc2623e1 100644 --- a/packages/fetchai/skills/simple_oracle_client/handlers.py +++ b/packages/fetchai/skills/simple_oracle_client/handlers.py @@ -118,7 +118,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -284,7 +285,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) @@ -404,7 +406,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle contract_api message of performative={} in dialogue={}.".format( - contract_api_msg.performative, contract_api_dialogue, + contract_api_msg.performative, + contract_api_dialogue, ) ) diff --git a/packages/fetchai/skills/simple_oracle_client/skill.yaml b/packages/fetchai/skills/simple_oracle_client/skill.yaml index 18504908cf..2833395369 100644 --- a/packages/fetchai/skills/simple_oracle_client/skill.yaml +++ b/packages/fetchai/skills/simple_oracle_client/skill.yaml @@ -9,9 +9,9 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmRqzw2aTE6rsUnoB8XvvWoF4sg4ZUpvgQwStZpAVG5sUj __init__.py: QmdmiJEGVgmeBQbMsTJjHoCm4mWfeg7vd9PWMJyxzVaoVy - behaviours.py: QmX4RdaY9pETMdTntiHtM97KKEzZLQaGZebNiE4eoWiguK + behaviours.py: QmQNPAdfDjZKCsXhS3tWgeXN3gbNNdhZuxRAgdRnMvaLu5 dialogues.py: QmbbaQXAXr8cUc9YB927pnZYdx6SqFfxc4LQV1iWyFUvGX - handlers.py: QmU4dvTXLW4csxXvhDYkaborf65ax5XD1RTXdf5vjoHq3a + handlers.py: QmcHGeTueHdNaB18QB65sso3AMtVQ3EaG2fggf6fd1r23d strategy.py: QmdcSExPito4H3eRR6j9D2hP75eKxTfg2kX4qWNk83ctHT fingerprint_ignore_patterns: [] contracts: diff --git a/packages/fetchai/skills/simple_service_registration/handlers.py b/packages/fetchai/skills/simple_service_registration/handlers.py index 58b9f6b02b..b02da98d2c 100644 --- a/packages/fetchai/skills/simple_service_registration/handlers.py +++ b/packages/fetchai/skills/simple_service_registration/handlers.py @@ -112,7 +112,8 @@ def _handle_success( description = target_message.service_description data_model_name = description.data_model.name registration_behaviour = cast( - ServiceRegistrationBehaviour, self.context.behaviours.service, + ServiceRegistrationBehaviour, + self.context.behaviours.service, ) if "location_agent" in data_model_name: registration_behaviour.register_service() @@ -160,7 +161,8 @@ def _handle_error( == OefSearchMessage.Performative.REGISTER_SERVICE ): registration_behaviour = cast( - ServiceRegistrationBehaviour, self.context.behaviours.service, + ServiceRegistrationBehaviour, + self.context.behaviours.service, ) registration_behaviour.failed_registration_msg = target_message @@ -175,6 +177,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/simple_service_registration/skill.yaml b/packages/fetchai/skills/simple_service_registration/skill.yaml index bbf29c35c6..f8ef49e213 100644 --- a/packages/fetchai/skills/simple_service_registration/skill.yaml +++ b/packages/fetchai/skills/simple_service_registration/skill.yaml @@ -10,8 +10,8 @@ fingerprint: __init__.py: Qmc5eRDocBdf5csZ9vjon4JHp8vGyyCjWdjLoq1YWeygAz behaviours.py: QmeHRYpWwbXVt5TikSGDaZHv34ouu3uCGBv2Xw2K17mBsc dialogues.py: QmW3VCm1q3xUvr11APWvRQo4z64rs2eUp9svg8zWSqk2Zi - handlers.py: QmRpXr5HZyrBhRDr3bsmfsaZCuUR6R3TR13Z326dt7LBmT - strategy.py: QmWEsxWuPmpWSGM5DUKNsnZTiX8CVM6Ep7m3QZ4ynUHWus + handlers.py: QmX3bdLbmZtMwzU3u7NAc8q3NuwERV9xohLrCNZyvey2VL + strategy.py: QmXcRCe5herdhFEqPyF7rbzLY7UeFGnkjrDsEnyUC12dwv fingerprint_ignore_patterns: [] connections: [] contracts: [] diff --git a/packages/fetchai/skills/simple_service_registration/strategy.py b/packages/fetchai/skills/simple_service_registration/strategy.py index 2b17d5ab7b..9b09a52f94 100644 --- a/packages/fetchai/skills/simple_service_registration/strategy.py +++ b/packages/fetchai/skills/simple_service_registration/strategy.py @@ -86,7 +86,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -97,7 +98,8 @@ def get_register_service_description(self) -> Description: :return: a description of the offered services """ description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + self._set_service_data, + data_model=AGENT_SET_SERVICE_MODEL, ) return description @@ -108,7 +110,8 @@ def get_register_personality_description(self) -> Description: :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -119,7 +122,8 @@ def get_register_classification_description(self) -> Description: :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -130,6 +134,7 @@ def get_unregister_service_description(self) -> Description: :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description diff --git a/packages/fetchai/skills/simple_service_search/handlers.py b/packages/fetchai/skills/simple_service_search/handlers.py index 18f72ff619..36b152a244 100644 --- a/packages/fetchai/skills/simple_service_search/handlers.py +++ b/packages/fetchai/skills/simple_service_search/handlers.py @@ -128,7 +128,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/simple_service_search/skill.yaml b/packages/fetchai/skills/simple_service_search/skill.yaml index 6df8a0beb6..4fe34315fd 100644 --- a/packages/fetchai/skills/simple_service_search/skill.yaml +++ b/packages/fetchai/skills/simple_service_search/skill.yaml @@ -10,7 +10,7 @@ fingerprint: __init__.py: QmYbMuWgQhpYm8BUaLzmS7VQTbWpHDuWvKDKBHccvkvSLq behaviours.py: QmY9bp1Wsrr5i3cnQF2o6tzk1N5UGHRm2qG9tFmCx8s4cP dialogues.py: QmQjau19pqHZj3iLrEsoT4uAtsYdXiAznesmrG49G8EUg8 - handlers.py: QmREK5gZhvVyf8gxdqJJSAVYf6CAQp4nry1Zoh4T5dNyj5 + handlers.py: QmYuMqoUZNN84kEiobg3z78c9CjbtgkMpYhTJu3Mf5woTf strategy.py: Qma5RcctMzNjvhHcQ1aJ3X1A4Qj3sztRjRZmqFMZEomzta fingerprint_ignore_patterns: [] connections: [] diff --git a/packages/fetchai/skills/tac_control/game.py b/packages/fetchai/skills/tac_control/game.py index 5ae6d24c0d..4f50d62365 100644 --- a/packages/fetchai/skills/tac_control/game.py +++ b/packages/fetchai/skills/tac_control/game.py @@ -1023,7 +1023,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self.context.parameters.agent_location, data_model=AGENT_LOCATION_MODEL, + self.context.parameters.agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description diff --git a/packages/fetchai/skills/tac_control/handlers.py b/packages/fetchai/skills/tac_control/handlers.py index a833e407cc..a4e56d7568 100644 --- a/packages/fetchai/skills/tac_control/handlers.py +++ b/packages/fetchai/skills/tac_control/handlers.py @@ -398,7 +398,10 @@ def _handle_success( ): description = target_message.service_description data_model_name = description.data_model.name - registration_behaviour = cast(TacBehaviour, self.context.behaviours.tac,) + registration_behaviour = cast( + TacBehaviour, + self.context.behaviours.tac, + ) if "location_agent" in data_model_name: registration_behaviour.register_genus() elif ( @@ -444,7 +447,10 @@ def _handle_error( target_message.performative == OefSearchMessage.Performative.REGISTER_SERVICE ): - registration_behaviour = cast(TacBehaviour, self.context.behaviours.tac,) + registration_behaviour = cast( + TacBehaviour, + self.context.behaviours.tac, + ) registration_behaviour.failed_registration_msg = target_message def _handle_invalid( @@ -458,6 +464,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/tac_control/helpers.py b/packages/fetchai/skills/tac_control/helpers.py index 44549da4dd..591161c332 100644 --- a/packages/fetchai/skills/tac_control/helpers.py +++ b/packages/fetchai/skills/tac_control/helpers.py @@ -240,7 +240,8 @@ def generate_currency_endowments( def generate_exchange_params( - agent_addresses: List[str], currency_ids: List[str], + agent_addresses: List[str], + currency_ids: List[str], ) -> Dict[str, Dict[str, float]]: """ Compute the exchange parameters for each agent. @@ -313,9 +314,9 @@ def generate_equilibrium_prices_and_holdings( # pylint: disable=unused-argument utility_params_l.append(temp_u_p) # maths - endowments_a = np.array(good_endowments_l, dtype=np.int) - scaled_utility_params_a = np.array( - utility_params_l, dtype=np.float + endowments_a = np.array(good_endowments_l, dtype=np.int) # type: ignore + scaled_utility_params_a = np.array( # type: ignore + utility_params_l, dtype=np.float # type: ignore ) # note, they are already scaled endowments_by_good = np.sum(endowments_a, axis=0) scaled_params_by_good = np.sum(scaled_utility_params_a, axis=0) diff --git a/packages/fetchai/skills/tac_control/skill.yaml b/packages/fetchai/skills/tac_control/skill.yaml index 1e46aa9f19..7c00693c55 100644 --- a/packages/fetchai/skills/tac_control/skill.yaml +++ b/packages/fetchai/skills/tac_control/skill.yaml @@ -11,9 +11,9 @@ fingerprint: __init__.py: QmTUhk3GzH5B5SXHBeJqbm9Dt8dbaENeHt3sZadzs75tjL behaviours.py: QmcuWLHYBAE8gM9AwrfPmaucgJsnctqmhNj38mH5H6Tbst dialogues.py: QmU2S3AvctrMNKTspSm8f3CGgKpZKQ6tWhuZsqv62LeZ5e - game.py: QmVciVXNp4HSYBzENrMBWFs31SmympvALrPjZ9JZ64TxHz - handlers.py: QmYeW1SejgZJx941DUD7Ti18GzEajX1cC7cQn8tZMSCkp3 - helpers.py: QmR51Bt18pdAofTrhdrUtH222qfSQtpYwiqRWDJNEtUxcm + game.py: QmUotGmD8qwdb8j7uwMqNfTnSrKiPubyRvffgzjEvKoH17 + handlers.py: QmQ71eC6osB1RX4MXfEJQ9QkqEfDqHKNetiJLoeqcT3QW7 + helpers.py: Qmf11rS9J6ezmB9QBi9AdxEsdQiMZXD1z3pSQRaaUtoB9V parameters.py: QmZuXLsLVncd53KPemCvSwG16Ft7ff613yAi8uk7Nz6Qcp fingerprint_ignore_patterns: [] connections: [] diff --git a/packages/fetchai/skills/tac_control_contract/behaviours.py b/packages/fetchai/skills/tac_control_contract/behaviours.py index b97c24b348..7f70f160f4 100644 --- a/packages/fetchai/skills/tac_control_contract/behaviours.py +++ b/packages/fetchai/skills/tac_control_contract/behaviours.py @@ -72,7 +72,10 @@ def _request_contract_deploy_transaction(self) -> None: callable=ContractApiDialogue.Callable.GET_DEPLOY_TRANSACTION.value, kwargs=ContractApiMessage.Kwargs(kwargs), # type: ignore ) - contract_api_dialogue = cast(ContractApiDialogue, contract_api_dialogue,) + contract_api_dialogue = cast( + ContractApiDialogue, + contract_api_dialogue, + ) contract_api_dialogue.terms = parameters.get_deploy_terms() contract_api_dialogue.callable = ( ContractApiDialogue.Callable.GET_DEPLOY_TRANSACTION @@ -106,7 +109,8 @@ def act(self) -> None: if game.registration.nb_agents < parameters.min_nb_agents: self.context.logger.info( "registered agents={}, minimum agents required={}".format( - game.registration.nb_agents, parameters.min_nb_agents, + game.registration.nb_agents, + parameters.min_nb_agents, ) ) self._cancel_tac(game) diff --git a/packages/fetchai/skills/tac_control_contract/handlers.py b/packages/fetchai/skills/tac_control_contract/handlers.py index b948a3da1c..af25a8da98 100644 --- a/packages/fetchai/skills/tac_control_contract/handlers.py +++ b/packages/fetchai/skills/tac_control_contract/handlers.py @@ -172,7 +172,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle contract_api message of performative={} in dialogue={}.".format( - contract_api_msg.performative, contract_api_dialogue, + contract_api_msg.performative, + contract_api_dialogue, ) ) @@ -347,7 +348,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -525,6 +527,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) diff --git a/packages/fetchai/skills/tac_control_contract/helpers.py b/packages/fetchai/skills/tac_control_contract/helpers.py index c5591e4685..fc50e5854d 100644 --- a/packages/fetchai/skills/tac_control_contract/helpers.py +++ b/packages/fetchai/skills/tac_control_contract/helpers.py @@ -216,7 +216,8 @@ def generate_currency_endowments( def generate_exchange_params( - agent_addresses: List[str], currency_ids: List[str], + agent_addresses: List[str], + currency_ids: List[str], ) -> Dict[str, Dict[str, float]]: """ Compute the exchange parameters for each agent. @@ -287,9 +288,9 @@ def generate_equilibrium_prices_and_holdings( # pylint: disable=unused-argument utility_params_l.append(temp_u_p) # maths - endowments_a = np.array(good_endowments_l, dtype=np.int) - scaled_utility_params_a = np.array( - utility_params_l, dtype=np.float + endowments_a = np.array(good_endowments_l, dtype=np.int) # type: ignore + scaled_utility_params_a = np.array( # type: ignore + utility_params_l, dtype=np.float # type: ignore ) # note, they are already scaled endowments_by_good = np.sum(endowments_a, axis=0) scaled_params_by_good = np.sum(scaled_utility_params_a, axis=0) diff --git a/packages/fetchai/skills/tac_control_contract/skill.yaml b/packages/fetchai/skills/tac_control_contract/skill.yaml index 0a23118ad5..8838a75b76 100644 --- a/packages/fetchai/skills/tac_control_contract/skill.yaml +++ b/packages/fetchai/skills/tac_control_contract/skill.yaml @@ -9,11 +9,11 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmX9HuMvkRptLc4QnuagUGmN4HzxH5jnxXJYtw565dMnXg __init__.py: QmZbqix1H5WKfsFhEbhoGxRWVDCgjSyEsqSJNotQscoWxh - behaviours.py: QmekFp4Y2ssXxsPRzNZ8Dx2euAppUeKT8LScYQBPavgbEu + behaviours.py: QmckJcxgpL3AbyDahg7PArzT46ZUFsXbyqezQJaL6GyBhr dialogues.py: QmV4V7MxSHQaAsN3MA3ybQkfZ8WYgoymqQkf6byz1GkiBe game.py: QmSFZKLLqSjcoWqF9skD8zjd1SwDvUwNro77zk4QWEY49J - handlers.py: QmXoh3h5Xj2A3iFC4ur3CQethP3EYphG2x2U7AzWHvjQBy - helpers.py: QmS7SVagLtusYtL5b6cWRGq34V6AuSLyeqFb9Fz6BCrfzr + handlers.py: QmeyAguBbjSfEjXRpUzkMm271xf6ibmMm75imHyfyVL73B + helpers.py: QmPov2VdtXWBPTypkB2BHDXEmZhJcFF64PpRt7dA6dvWEE parameters.py: QmQDgHpapxWQgLRza1dNgi79z5dBxhWsnTgnznTf1zmjPR fingerprint_ignore_patterns: [] connections: diff --git a/packages/fetchai/skills/tac_negotiation/handlers.py b/packages/fetchai/skills/tac_negotiation/handlers.py index 4ee317d37c..50c562136e 100644 --- a/packages/fetchai/skills/tac_negotiation/handlers.py +++ b/packages/fetchai/skills/tac_negotiation/handlers.py @@ -147,7 +147,8 @@ def _on_cfp(self, cfp: FipaMessage, fipa_dialogue: FipaDialogue) -> None: ) if proposal is None: fipa_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.DECLINE, target_message=cfp, + performative=FipaMessage.Performative.DECLINE, + target_message=cfp, ) fipa_dialogues = cast(FipaDialogues, self.context.fipa_dialogues) fipa_dialogues.dialogue_stats.add_dialogue_endstate( @@ -195,7 +196,8 @@ def _on_propose(self, propose: FipaMessage, fipa_dialogue: FipaDialogue) -> None fipa_dialogue.terms, role=cast(FipaDialogue.Role, fipa_dialogue.role) ): fipa_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.ACCEPT, target_message=propose, + performative=FipaMessage.Performative.ACCEPT, + target_message=propose, ) transactions.add_locked_tx( fipa_dialogue.terms, role=cast(FipaDialogue.Role, fipa_dialogue.role) @@ -205,7 +207,8 @@ def _on_propose(self, propose: FipaMessage, fipa_dialogue: FipaDialogue) -> None ) else: fipa_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.DECLINE, target_message=propose, + performative=FipaMessage.Performative.DECLINE, + target_message=propose, ) fipa_dialogues = cast(FipaDialogues, self.context.fipa_dialogues) fipa_dialogues.dialogue_stats.add_dialogue_endstate( @@ -345,13 +348,15 @@ def _on_accept(self, accept: FipaMessage, fipa_dialogue: FipaDialogue) -> None: signing_dialogue.associated_fipa_dialogue = fipa_dialogue self.context.logger.info( "requesting signature, sending {} to decision_maker, message={}".format( - signing_msg.performative, signing_msg, + signing_msg.performative, + signing_msg, ) ) self.context.decision_maker_message_queue.put(signing_msg) else: fipa_msg = fipa_dialogue.reply( - performative=FipaMessage.Performative.DECLINE, target_message=accept, + performative=FipaMessage.Performative.DECLINE, + target_message=accept, ) dialogues = cast(FipaDialogues, self.context.fipa_dialogues) dialogues.dialogue_stats.add_dialogue_endstate( @@ -441,7 +446,8 @@ def _on_match_accept( callable="get_atomic_swap_batch_transaction", kwargs=ContractApiMessage.Kwargs( strategy.kwargs_from_terms( - fipa_dialogue.terms, signature=counterparty_signature, + fipa_dialogue.terms, + signature=counterparty_signature, ) ), ) @@ -483,7 +489,8 @@ def _on_match_accept( signing_dialogue.associated_fipa_dialogue = fipa_dialogue self.context.logger.info( "requesting signature, sending {} to decision_maker, message={}".format( - signing_msg.performative, signing_msg, + signing_msg.performative, + signing_msg, ) ) self.context.decision_maker_message_queue.put(signing_msg) @@ -691,7 +698,8 @@ def handle(self, message: Message) -> None: self.context.logger.info( "received {} from decision_maker, message={}".format( - signing_msg.performative.value, signing_msg, + signing_msg.performative.value, + signing_msg, ) ) # handle message @@ -797,7 +805,9 @@ def _handle_signed_transaction( # pylint: disable=unused-argument ledger_api_dialogue.associated_signing_dialogue = signing_dialogue self.context.logger.info( "sending {} to ledger {}, message={}".format( - ledger_api_msg.performative, strategy.ledger_id, ledger_api_msg, + ledger_api_msg.performative, + strategy.ledger_id, + ledger_api_msg, ) ) self.context.outbox.put_message(message=ledger_api_msg) @@ -838,7 +848,9 @@ def _handle_signed_transaction( # pylint: disable=unused-argument ledger_api_dialogue.associated_signing_dialogue = signing_dialogue self.context.logger.info( "sending {} to ledger {}, message={}".format( - ledger_api_msg.performative, strategy.ledger_id, ledger_api_msg, + ledger_api_msg.performative, + strategy.ledger_id, + ledger_api_msg, ) ) self.context.outbox.put_message(message=ledger_api_msg) @@ -967,7 +979,8 @@ def _handle_balance(self, ledger_api_msg: LedgerApiMessage) -> None: """ self.context.logger.info( "starting balance on {} ledger={}.".format( - ledger_api_msg.ledger_id, ledger_api_msg.balance, + ledger_api_msg.ledger_id, + ledger_api_msg.balance, ) ) @@ -1042,7 +1055,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle ledger_api message of performative={} in dialogue={}.".format( - ledger_api_msg.performative, ledger_api_dialogue, + ledger_api_msg.performative, + ledger_api_dialogue, ) ) @@ -1216,7 +1230,9 @@ def _handle_search( if len(agents) > 0: self.context.logger.info( "found potential {} agents={} on search_id={}.".format( - searched_for, list(map(lambda x: x[-5:], agents)), search_id, + searched_for, + list(map(lambda x: x[-5:], agents)), + search_id, ) ) strategy = cast(Strategy, self.context.strategy) @@ -1251,7 +1267,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) @@ -1404,6 +1421,7 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle contract_api message of performative={} in dialogue={}.".format( - contract_api_msg.performative, contract_api_dialogue, + contract_api_msg.performative, + contract_api_dialogue, ) ) diff --git a/packages/fetchai/skills/tac_negotiation/helpers.py b/packages/fetchai/skills/tac_negotiation/helpers.py index 12f1702884..9817d4f0b1 100644 --- a/packages/fetchai/skills/tac_negotiation/helpers.py +++ b/packages/fetchai/skills/tac_negotiation/helpers.py @@ -60,7 +60,10 @@ def _build_goods_datamodel(good_ids: List[str], is_supply: bool) -> DataModel: "price", int, False, "The price of the goods in the currency." ) fee_attribute = Attribute( - "fee", int, False, "The transaction fee payable by the buyer in the currency.", + "fee", + int, + False, + "The transaction fee payable by the buyer in the currency.", ) nonce_attribute = Attribute( "nonce", str, False, "The nonce to distinguish identical descriptions." diff --git a/packages/fetchai/skills/tac_negotiation/skill.yaml b/packages/fetchai/skills/tac_negotiation/skill.yaml index 21d9587ed7..183feb8b9c 100644 --- a/packages/fetchai/skills/tac_negotiation/skill.yaml +++ b/packages/fetchai/skills/tac_negotiation/skill.yaml @@ -11,10 +11,10 @@ fingerprint: __init__.py: QmS8cSmKuUP3Ya67J8APmfxCKyPj8YaXLek1v3poG6r1tV behaviours.py: QmRYUEG3Xh6D53BcWwhepTaXHTsz5Ag2ZghETLfc37AvsB dialogues.py: Qme98nNXajpA42LcZY6r1QARtycYkovnJWvJdfUoV6dtgB - handlers.py: QmW2ecyFu65x7Yk9VWaDMEJ1Yzgi6zDzEKg9reb6rE8g5C - helpers.py: QmXPzdgo8yHsa8H4YT8cNjZ8gN2K8qQNyAynNp6VnaehGe - strategy.py: QmbyNaAv67SYp7PFEoNmxedJxnn6FxNZScwyghakt4LRsm - transactions.py: QmXLunaZALbzA2jQJ2NFd7PHqM25Hu2GYmB8tcNGYQQDZW + handlers.py: QmXLa466taabMV97G5ZiVxNBtjeBumoS2N4hxr5RrGLsKm + helpers.py: QmaziekDk2Zg1NtKFXRe6WAd1xUm5sFoboJThe4YTX21fM + strategy.py: QmYtojBvPCKwGEfAzQDZQcNgJmBxz8p9kERVH5wunbfZxk + transactions.py: Qmch1rpN7L9dFDvZ2yg2udHtV4Ljy9yUKQHhNGVLBfYi4K fingerprint_ignore_patterns: [] connections: - fetchai/ledger:0.21.1 diff --git a/packages/fetchai/skills/tac_negotiation/strategy.py b/packages/fetchai/skills/tac_negotiation/strategy.py index e4318bff1e..e2d5dfeca6 100644 --- a/packages/fetchai/skills/tac_negotiation/strategy.py +++ b/packages/fetchai/skills/tac_negotiation/strategy.py @@ -189,7 +189,8 @@ def get_location_description(self) -> Description: :return: a description of the agent's location """ description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, + self._agent_location, + data_model=AGENT_LOCATION_MODEL, ) return description @@ -203,7 +204,10 @@ def get_register_service_description(self) -> Description: "key": f"{self.service_key}_{self.tac_version_id}", "value": self._register_as.value, } - description = Description(service_data, data_model=AGENT_SET_SERVICE_MODEL,) + description = Description( + service_data, + data_model=AGENT_SET_SERVICE_MODEL, + ) return description def get_register_personality_description(self) -> Description: @@ -213,7 +217,8 @@ def get_register_personality_description(self) -> Description: :return: a description of the personality """ description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + self._set_personality_data, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -224,7 +229,8 @@ def get_register_classification_description(self) -> Description: :return: a description of the classification """ description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + self._set_classification, + data_model=AGENT_PERSONALITY_MODEL, ) return description @@ -235,7 +241,8 @@ def get_unregister_service_description(self) -> Description: :return: a description of the to be removed service """ description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + self._remove_service_data, + data_model=AGENT_REMOVE_SERVICE_MODEL, ) return description @@ -259,10 +266,13 @@ def get_location_and_service_query(self) -> Query: service_key_filter = Constraint( search_query["search_key"], ConstraintType( - search_query["constraint_type"], search_query["search_value"], + search_query["constraint_type"], + search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query def get_own_service_description(self, is_supply: bool) -> Description: @@ -318,7 +328,10 @@ def _demanded_goods(good_holdings: Dict[str, int]) -> Dict[str, int]: demand[good_id] = 1 return demand - def get_own_services_query(self, is_searching_for_sellers: bool,) -> Query: + def get_own_services_query( + self, + is_searching_for_sellers: bool, + ) -> Query: """ Build a query. @@ -384,7 +397,9 @@ def get_proposal_for_query( """ is_seller = role == FipaDialogue.Role.SELLER - own_service_description = self.get_own_service_description(is_supply=is_seller,) + own_service_description = self.get_own_service_description( + is_supply=is_seller, + ) if not query.check(own_service_description): # pragma: nocover self.context.logger.debug("current holdings do not satisfy CFP query.") return None diff --git a/packages/fetchai/skills/tac_negotiation/transactions.py b/packages/fetchai/skills/tac_negotiation/transactions.py index 9d6df1f7fa..6eb464f9ae 100644 --- a/packages/fetchai/skills/tac_negotiation/transactions.py +++ b/packages/fetchai/skills/tac_negotiation/transactions.py @@ -61,7 +61,9 @@ def __init__(self, **kwargs: Any) -> None: self._nonce = 0 @property - def pending_proposals(self,) -> Dict[DialogueLabel, Dict[MessageId, Terms]]: + def pending_proposals( + self, + ) -> Dict[DialogueLabel, Dict[MessageId, Terms]]: """Get the pending proposals.""" return self._pending_proposals @@ -120,7 +122,10 @@ def cleanup_pending_transactions(self) -> None: next_date, next_item = queue[0] # pragma: no cover def add_pending_proposal( - self, dialogue_label: DialogueLabel, proposal_id: int, terms: Terms, + self, + dialogue_label: DialogueLabel, + proposal_id: int, + terms: Terms, ) -> None: """ Add a proposal (in the form of a transaction) to the pending list. @@ -155,7 +160,10 @@ def pop_pending_proposal( return terms def add_pending_initial_acceptance( - self, dialogue_label: DialogueLabel, proposal_id: int, terms: Terms, + self, + dialogue_label: DialogueLabel, + proposal_id: int, + terms: Terms, ) -> None: """ Add an acceptance (in the form of a transaction) to the pending list. diff --git a/packages/fetchai/skills/tac_participation/game.py b/packages/fetchai/skills/tac_participation/game.py index e01f8ba93f..8f571d8929 100644 --- a/packages/fetchai/skills/tac_participation/game.py +++ b/packages/fetchai/skills/tac_participation/game.py @@ -337,5 +337,7 @@ def get_game_query(self) -> Query: self._search_query["search_value"], ), ) - query = Query([close_to_my_service, service_key_filter],) + query = Query( + [close_to_my_service, service_key_filter], + ) return query diff --git a/packages/fetchai/skills/tac_participation/handlers.py b/packages/fetchai/skills/tac_participation/handlers.py index d78c3e1cbb..eddb63ff56 100644 --- a/packages/fetchai/skills/tac_participation/handlers.py +++ b/packages/fetchai/skills/tac_participation/handlers.py @@ -133,7 +133,8 @@ def _handle_invalid( """ self.context.logger.warning( "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + oef_search_msg.performative, + oef_search_dialogue, ) ) diff --git a/packages/fetchai/skills/tac_participation/skill.yaml b/packages/fetchai/skills/tac_participation/skill.yaml index 1943272fd0..b241d05ab7 100644 --- a/packages/fetchai/skills/tac_participation/skill.yaml +++ b/packages/fetchai/skills/tac_participation/skill.yaml @@ -11,8 +11,8 @@ fingerprint: __init__.py: QmW25dKPtjWoA8zdEfqC3CkV44N7mQvWBCxvwUWCwVouom behaviours.py: QmRWqVzd8jCX6WwG8W3yY3c8J23ygCy9rZEtKebyee8o54 dialogues.py: Qmc9moXyoYeRoz9xixNT9fuhtBbGx71Mn87yBGBuxu711F - game.py: QmcTToXLet9ugde2mL5oweTbEZkJZd2369Cqp98G4hvo8H - handlers.py: QmQWZ93pt5mD3PmM1VirLMsviEooP3EYe36s2Nm4U4j1cv + game.py: Qmas2ztJL4tapAePMWdWzgLBdcCfkvtA7xuMKpm3NEMQT4 + handlers.py: QmZJYXU6EV5T4BmfygXQwqHPSCPTquNtnQXw3WaQAuDHwc fingerprint_ignore_patterns: [] connections: [] contracts: diff --git a/packages/hashes.csv b/packages/hashes.csv index 3b723114dc..70b2a96cfe 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -36,82 +36,82 @@ fetchai/agents/thermometer_aea,QmbPFkPZdHnx8nhYWRnbN5hzCQPFgh9WKE4BddmxVkUUjd fetchai/agents/thermometer_client,QmPNh1CrycQLa3S78UPZZqpsQhqu1FjS5A8DFyeBFTFQn5 fetchai/agents/weather_client,QmZtA9Y1kUQxyXSBeejs8g6kexj4HtekREPfP7QrJ2Uv7g fetchai/agents/weather_station,QmQmw5BmCnt9hGokqA5ooR5czsxMLRYa87AQaxLwnJ4uHk -fetchai/connections/gym,QmXGpX8Yv7o3QdG6i6oxaqSd7qzrwgLY5tES3FKPwACNJR -fetchai/connections/http_client,QmVz3Exa7NYBjbPkUXmTrBF328R9NXkVU8Pa2HDHRoznBL -fetchai/connections/http_server,QmUKYzJ98L14QNZR98iCamWo5fre5fUKortfFsXGeJ7ExM -fetchai/connections/ledger,Qme46D3DjGTAyirQzdki1oqtQ1WPkqz15FonnVjWBmBoVN -fetchai/connections/local,QmWgiNXeK5EA8HhAP6rkKA3BHMdFuD1BF9o3AY4vaD2DkX -fetchai/connections/oef,QmUWY1DVmmj6zhUnSNCcPcGeTGidjKutRB6fPoVr5nVYYR -fetchai/connections/p2p_libp2p,QmRKVuLzbE5BnGqWkyTtyyeeZz75iWTXge1uPfQ8pKu6gX -fetchai/connections/p2p_libp2p_client,QmQhVAGXKMrHTLP4FZSqgpZ99QUzD14S6oiiYij4x7Z3gj -fetchai/connections/p2p_libp2p_mailbox,QmPHzGp76fxD5N2op2NrAobX9g9GHx25XRBVMG2AqHgq8X +fetchai/connections/gym,QmRtKN23epSsuMMm3BAcNMTQw9HJBo3BYMbTsKeRGRdjJU +fetchai/connections/http_client,QmSPdDUWXzDvWTemJEJGtkfoYUQMhLq1UN6veaphb5nikR +fetchai/connections/http_server,QmZWtYMkjvPCya5tagBkxW94YGAb5Wu4f8xHg4q8ozQm6j +fetchai/connections/ledger,QmRUg1vkHbJuT9keRAc6q34VbKahQuqx4gcX5uT9SQhrGx +fetchai/connections/local,QmT564Yxn1YxNHrkgYf8U8LKm2Bdy8U5uYBWrCHdG9VN4d +fetchai/connections/oef,QmdQoCJjvP3NHxYYRP8mtZKoQKHcr8taq2KT5dkSpN4BYU +fetchai/connections/p2p_libp2p,QmeQBk8zuUFUkwWWdMCSzRdEynxFHLGbDuLjVV5zsKAs1J +fetchai/connections/p2p_libp2p_client,QmfQeAEzsCU9N8oFLMUvbr9K55JEy5KDScQCY76ghGo6tP +fetchai/connections/p2p_libp2p_mailbox,QmQ5MZKs2y26776BMDEFedaMg5hCn3F3zuJAorJpfdtLof fetchai/connections/p2p_stub,QmSbe7XWCrPuiUNYfjug1axMbrHjHbfV5eLueLNtwrv1DM fetchai/connections/prometheus,QmacZ4QWnKwNDaNULgZKybpLcDqKxVUPDTpFee8qYPsXaA fetchai/connections/scaffold,QmPgH9YEPE7hvWwvcpNASt9UtPc3qzFChjVvLdpuP2LpZJ -fetchai/connections/soef,QmTQaurAtodtfP1QLK3nXhL3PAY1ikspFWpxEWVdM7TRB9 +fetchai/connections/soef,QmSPDYDSWYVm9iiCja9TC8VetVvpSL7ohEgcncUYY4qRPu fetchai/connections/stub,QmWHPQzi7Ge9Pr69w1E88kWjSZDXmSBpmm5XE1iGTjJKnF fetchai/connections/tcp,QmXf4dn1KuwMVSLVtoGkS3ZaCJYX7b2FJYWcGGpW4om3nQ -fetchai/connections/webhook,QmRdL1XPRVf6KSHrAPDeAhut15LPDoN87dvpNLvpHL6EC7 -fetchai/connections/yoti,QmNu6tR2j4ckteG8SREzMw559s5rQhPXEMQwM6CtvFtggb -fetchai/contracts/erc1155,Qme5dDrqaKYJkDEJ5ophkFtZuXkiB8BvpU1AB5RvBt2dxG +fetchai/connections/webhook,QmT3W1b5tyQboxL9aNRPVi6a4kFBpEFRnQaG8ZtbTmswzd +fetchai/connections/yoti,QmNrnbyiGxp8h77eBRwdAToj2pQfnYFRfY4nJzrNXopEmH +fetchai/contracts/erc1155,QmZGqqVndC1e6giHz6fDPnnCLYiUGVBq43Sk9eJGGfng5u fetchai/contracts/fet_erc20,QmSjyBQzzxHTwydFDhEQgqoPBynP9VrDuqeTr6b6ARxkf7 fetchai/contracts/oracle,QmPmGkrathfNmMWHt2TPXbKp1s2MPq2oBysLtb5MM6Rx3Q fetchai/contracts/oracle_client,QmapJ3BWEWwimMWXtk1x8DNgCVRjcECd9FPkyCw1vnJGsX fetchai/contracts/scaffold,QmQcsrXKtEkPsxnzxJgDVopq6Su2fGAzJ1Vzs2DYqkWjWt -fetchai/contracts/staking_erc20,QmTqEBBh349LYb8atTAZP6MGQWFjxBLGBXTJwh62Sb555R +fetchai/contracts/staking_erc20,QmQnFiLpbNH4fNGEfcG5ZBB4aNSeWy6dVfeufNCGjoBXZT fetchai/protocols/acn,QmR8tTn2zAWynfpN4ZiZkdC1yaPatCdo6nbQJzbddE2Syj fetchai/protocols/aggregation,Qmc9JfMfrBhqzj6ER8GPv1uvzYVqWXMo7qKfASQihr1PJ6 -fetchai/protocols/contract_api,QmXUAbPFofAPLDmvWUsyXLkw2AkKwbnfbBpwkYxB8nWhkw -fetchai/protocols/cosm_trade,Qmbyip1wjmn9BRvg8RADNPtQDynet3UMmJq6E9yiFq6mii -fetchai/protocols/default,QmNiAxH2bkQ5Nqri5UyrQZchojH4jQafVFkJnWTsHABHzr -fetchai/protocols/fipa,QmaqVVJkt6oEVzTYhwm5LuqxZUwiyh1o1rFA2ckyxGHq4E -fetchai/protocols/gym,QmYGgVz4qE9JhARR8NJrhaRBGgr91Da6E2zWtKe3ueoepv +fetchai/protocols/contract_api,QmXnxjgBTT7K3vyMaf4MYHmsRzBNfNQa67rQV5DRQ2FUTX +fetchai/protocols/cosm_trade,QmS76aWy7gHVGRHnjAGk6Veu2rk1NXeYmr58W1cSoWN2v4 +fetchai/protocols/default,QmRqUedRdNH1sQ7uarqSE4dwD7zLuK2k7Xidq9f4vz49Dd +fetchai/protocols/fipa,QmWof1MYC3gX9CiYjhaHwYHBGnFo6jnzdHWVToQSonSn5S +fetchai/protocols/gym,QmTUd13doFfP2WVUumfei4UNF6MYuiCH3bgzwMoHJUZyq4 fetchai/protocols/http,QmQbADvmiJEbT1muMK3et9Ebknn5ccHq7Mum2TBDH8cTWL -fetchai/protocols/ledger_api,QmS7kPvaKA4ho7k1CYiH8qXXSfQ3KXmuBTG7MHwcekZwZB +fetchai/protocols/ledger_api,Qmb12DV7v28Mosyoi5ArQXewcH6VKkbMJX4u6qtbRoP3Hf fetchai/protocols/ml_trade,QmUTmM6y2GJr3XTB9GoxamyyAMNMUkQtS5m9Yy4WGuWSvR -fetchai/protocols/oef_search,QmStju6mAw6HFWkpB4c3K6H7W8HwN3yxZs5Gqr47kS7WsJ -fetchai/protocols/prometheus,QmRGRqcgi47CBmEnSgc76DhmBSqaSgnpGidAztTSYPYSUR -fetchai/protocols/register,Qmd8i9v1Wm7u29q6nuaUTF2YBLJ8e4UoNtZy1xg7EWqDEF +fetchai/protocols/oef_search,QmR91Po5yMFihRNdE2jsPt7uhtmAENUGh4jn3DhHyMZrEK +fetchai/protocols/prometheus,QmTNutJQ2cZESizgbZgV3EoPCeWMifAXkZZtmsc528ktWA +fetchai/protocols/register,QmbZJxA1W7RgzyM7XMxxtYRWu37GiaepnNAoyKuW6c6W7C fetchai/protocols/scaffold,QmVWbfATDgeerXzM1zBGZcruiWb9gbSf69PwmqbVKU7MXV fetchai/protocols/signing,QmNv38BC8beS9pLuQDt6DRJcrAK5EQs8ANNsgoGqXFcVJt -fetchai/protocols/state_update,QmYe4dijBkGxsRGkj7eJSEAmqXR2YYwmV77u9W34CzbRfq -fetchai/protocols/tac,QmW9W9Py6kJuLpAd3nDJEkK8Gse8jhJ1BrpRG8t1tffFDd -fetchai/protocols/yoti,Qmf9mdMXLFwPakx7mE5fM37kwepBzRxLJhdc4JuEX6ShU4 -fetchai/skills/advanced_data_request,QmecSttq17z4tc6rMrBjcoeR1wE98RTuuZEiGpm3Uk6kJL -fetchai/skills/aries_alice,Qmc6pZq4LJKPTQs3iz6Lu7WasDEhCtnTRAZHQ9vXE1euSx -fetchai/skills/aries_faber,QmYNnZpXkuKaV767qphyzJWmtF4PRaw3DxyejVsELJ3HGP +fetchai/protocols/state_update,QmfYJ2QiFcFg7FYjiPUGvXv7ijR1icQs8qadGddoGGrGs3 +fetchai/protocols/tac,QmeNe3J96rhyHvVMhpVci8psm6zpibbcyJfpkdtFXiU8aQ +fetchai/protocols/yoti,Qmf9N5HzPgL4NsBDnQzpEfbEZZX7SWpCY55CXPn6D44gWb +fetchai/skills/advanced_data_request,QmasYDmVwTxb8rENWh274EwW5yGWeouYdpdRJo3zPS2o3E +fetchai/skills/aries_alice,Qmd5DK1JQeUTPyaC5wXuEJT5eKTC31JoURyuFVhabxUwbU +fetchai/skills/aries_faber,QmPaDSqvCr4NG84u7viZjjoEzyt5aKWG13o1NMzsCLDk8v fetchai/skills/carpark_client,QmVAJD1hjzDPXPc1SW6bjNCrTg1Wo4yK4W34d6aH3BFKEo fetchai/skills/carpark_detection,QmWoZ9siojRopiC6Ko3Pcosa59n3cJpSFjiTYn1u8EHwhr -fetchai/skills/confirmation_aw1,QmSHvRUh7pUZwVsXn4nZi75ZZw5DJvoyLu8hYU1p65inhk -fetchai/skills/confirmation_aw2,QmPdL6aWo1KreApB4tNoYZ2XExQUSdSofqp9ePoNYpUGbS -fetchai/skills/confirmation_aw3,QmXnGEPonFRE9gbBThYyi5rktY6Eo1P7pJzP5AxiuUF7G6 +fetchai/skills/confirmation_aw1,QmUtpyNAWt3DE3uV3vAh8F3nVNffe4b6dKNfMnh3uKAGLm +fetchai/skills/confirmation_aw2,QmVE7GsaacWKrommXGcoYhWjQ5S9UzLiSdHdokjbreTNWZ +fetchai/skills/confirmation_aw3,Qma84en2gg6SsMa2DrNRfor67j5d7FHVJ6MrpSHw6sPKzf fetchai/skills/echo,QmckrN4zBaH72ppKxXt5Vux3sHHVhopCBtViPKR5Nx2kTp -fetchai/skills/erc1155_client,QmSznTqAMoV7yVRyDukfogZkakaVVVX7YrpwKDQu44B9c3 -fetchai/skills/erc1155_deploy,QmaZi66JcyiRqHP6amkPGxSepDZy6wu3tGyQhc7davEasZ +fetchai/skills/erc1155_client,QmRz4Zeh4RimsLzha1eM6pY2fRsxPqaWV4UAoSxRzaSnMV +fetchai/skills/erc1155_deploy,QmY3XHE7xBReWapGxsBrmfBA3h8kwTirgWN4e7Vz8sYotp fetchai/skills/error,QmUaGYxeXv39QEN3Hc2YuJcFz6dXPWC9ht3sNHQrbeg4ZQ fetchai/skills/error_test_skill,QmUnaKbqJsfaG7mthrcViSoh28PPLtH74zt64fgYie3oL6 -fetchai/skills/fetch_block,QmYAbCRDpym9wo3BeSuJS69hHGTvS8jodEQk9fecDPadZQ +fetchai/skills/fetch_block,QmQxcpaFaRaSrf3vopo1DebP1tdcbDm4UrGnwDqgwURr51 fetchai/skills/fipa_dummy_buyer,QmQU91ydU1AYTQsGJwYtWJVbcJCjiPKSeYRNeY95LfZB1N -fetchai/skills/generic_buyer,QmWUqKkeLvm7j3pGfmpnJtZrPm33oDY6WjNN4fHQgKgt1F -fetchai/skills/generic_seller,QmcCtwiAR2Xq4eqHZuanHaYaZkHaWAJZsS8X4h9fx9fo3o -fetchai/skills/gym,QmSqeUwHjHHnmqEoTw6TsEAeh5pUrC6Mc2G2hGfA1BVRUZ -fetchai/skills/http_echo,QmZc9dBKkXvjMW927r9nVr3fowZS75Xe7ifBsSr7FaN6Tp -fetchai/skills/ml_data_provider,QmPThgTirdBnwUhB7LQ5ARtC7st4AZuZrrqXRBr9EN4D24 -fetchai/skills/ml_train,QmaMHx5mePk686arF2Uxtvk5k2MKng8vBge6rLNXvPzdd3 +fetchai/skills/generic_buyer,QmTzte69G5W5UzyBp8Y6Ce7mCj8QzSSArXhhr1Si27GR5d +fetchai/skills/generic_seller,QmRUxPvAWbJacUuJQQruuTgBj7faJCqM3D21fNoWHWS578 +fetchai/skills/gym,QmQtN5Y7FV1GmyYX5hggWeUK7tsfZc942UvuVoT5ynGDtM +fetchai/skills/http_echo,QmY1ShXbfTToAeHG6M9voYkmsUBX22Dgdv6TJtp2Kf5nvz +fetchai/skills/ml_data_provider,Qmao6DT2NBmgcJF7eWQVcea7nr8W3NY1bJETn1uQo7enYT +fetchai/skills/ml_train,Qme1YR2W2AS4xBrq66nNEUQPkxTtH7b7P5prGtV11JPTbJ fetchai/skills/registration_aw1,QmdPRYK9iNDMV6WQbPX7VcVnrjadBrMDvD3dTfARdYPdPq fetchai/skills/scaffold,QmbiJHvKtBqGYBNiKcgdVnubGSAXDfSjknMH1Fngzqe5WR -fetchai/skills/simple_aggregation,QmbhYTDdy64AgJgsPqkD2WLYczfeHfo8UhvcQmsMjiMhz4 +fetchai/skills/simple_aggregation,Qmb6nmEawwMksapAXyhe7x5cPv2k4hQhLrACkWinJPhqfb fetchai/skills/simple_buyer,QmQ6RE4kdaNwhTBYhgzWpbL94qvn7JrTFHDEM5bNmBvT6Q fetchai/skills/simple_data_request,QmQxk7TA5pyvW7ZdJDAMCsAvMSgnQPTWDgxB26XCdpkSpk -fetchai/skills/simple_oracle,QmTDGo9mbT39v3u8HgB2BdFnpf6AgW51bSDeM7SGMgYdRk -fetchai/skills/simple_oracle_client,QmarVNxeh4XV3ZRaM2A4zP5Ar7aNFCcnWwFab2Hq1QfJLG +fetchai/skills/simple_oracle,QmQyLLED9Cfnsu9S2RPU98qAeAVbte1x34PggkxT4XP5Kp +fetchai/skills/simple_oracle_client,QmdjiLfhX1m38LLH9Wwf5bFXw8pQ6K2B2EVZi1euKntbYY fetchai/skills/simple_seller,QmexMgGrf2oaEbSqsDrUzgYk6miYyEgvvhpx2ySqCuVjob -fetchai/skills/simple_service_registration,QmURrBtwd1Ujv55dek7w21tqZAnbgZ6sXY8SwnYDyzs8Gz -fetchai/skills/simple_service_search,QmZ4EeUo18KbhDrNdbddBuv5zVbGLmeLy28cbmxY2SrG7J -fetchai/skills/tac_control,QmcfinHSCGjdTCkb4tNm2cegzgJd82sAhodzZ5wH8UAM1k -fetchai/skills/tac_control_contract,QmTe6WLH4cREgv5DZk8JGbBxfrTD6SiBewxq1tx31HdgM4 -fetchai/skills/tac_negotiation,QmWStaCBjuvL3MRJHgE5E8xMfaJG14uu9JShE3xyxfAnZW -fetchai/skills/tac_participation,QmRDLRcsfAtcwt9uUmzfirrxJcKosiYLVBvge3Y8VQKUPw +fetchai/skills/simple_service_registration,QmNwwWhmCiz4RHSoKj3BGAysQCdLk8CVSfaF1sHo2oDMpC +fetchai/skills/simple_service_search,QmcNdkktJfw4vBtjZzk1j2bb4ccMhRiG1uRT5zZWN5kCnm +fetchai/skills/tac_control,QmYbWDqwHhJ9kEnRszh9k5v6Crf6ZduwnGduA4BxFXfpvN +fetchai/skills/tac_control_contract,QmWPsUy2LWfBw3LHiCoPGnYKX7nmegEXzc1Q5qefm18M1J +fetchai/skills/tac_negotiation,QmaehpCWtETD8VZzaKKh8hMFHuFuW9YxqQrf5RYncHDnGk +fetchai/skills/tac_participation,QmXoyrncmzYiCnP6N1gX2k1Ez8vAhtVAp7CB1wtrSYmZD4 fetchai/skills/task_test_skill,QmRuZXLQq4aW6EWgxnXbZRZZgG7JygAcNiCUBegXWwT2Lj fetchai/skills/thermometer,Qmdbt4SXdQiHVAjHUKWa82NpTyjMKiEctTct35FzgnJ5zn fetchai/skills/thermometer_client,QmSTGR62bTtEmGDpwrPMHUAuP1zYtjm22jZMf4Lq8GcErK diff --git a/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py b/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py index 204cab6a2d..00c2612d64 100644 --- a/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py +++ b/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py @@ -55,7 +55,7 @@ def ipfs(click_context: click.Context) -> None: ) from e -@ipfs.resultcallback() +@ipfs.result_callback() @click.pass_context def process_result(click_context: click.Context, *_: Any) -> None: """Tear down command group.""" @@ -100,7 +100,10 @@ def add( @ipfs.command() @click.argument( - "hash_", metavar="hash", type=str, required=True, + "hash_", + metavar="hash", + type=str, + required=True, ) @click.pass_context def remove(click_context: click.Context, hash_: str) -> None: @@ -115,7 +118,10 @@ def remove(click_context: click.Context, hash_: str) -> None: @ipfs.command() @click.argument( - "hash_", metavar="hash", type=str, required=True, + "hash_", + metavar="hash", + type=str, + required=True, ) @click.argument( "target_dir", diff --git a/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py b/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py index d1c8007008..1dd3a42b94 100644 --- a/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py +++ b/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py @@ -46,7 +46,9 @@ def is_started(self) -> bool: def start(self) -> None: """Run the ipfs daemon.""" self.process = subprocess.Popen( # nosec - ["ipfs", "daemon"], stdout=subprocess.PIPE, env=os.environ.copy(), + ["ipfs", "daemon"], + stdout=subprocess.PIPE, + env=os.environ.copy(), ) def stop(self) -> None: # pragma: nocover diff --git a/plugins/aea-cli-ipfs/setup.py b/plugins/aea-cli-ipfs/setup.py index 405680c499..457f97a3ee 100755 --- a/plugins/aea-cli-ipfs/setup.py +++ b/plugins/aea-cli-ipfs/setup.py @@ -33,7 +33,7 @@ description="CLI extension for AEA framework wrapping IPFS functionality.", packages=["aea_cli_ipfs"], entry_points={"aea.cli": ["ipfs_cli_command = aea_cli_ipfs.core:ipfs"]}, - install_requires=["aea>=1.0.0, <2.0.0", "ipfshttpclient>=0.6.1,<0.8.0"], + install_requires=["aea>=1.0.0, <2.0.0", "ipfshttpclient==0.8.0a2"], classifiers=[ "Environment :: Console", "Environment :: Web Environment", diff --git a/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py b/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py index 8716ce741a..ffdb65ece1 100644 --- a/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py +++ b/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py @@ -41,6 +41,7 @@ from cosmpy.bank.rest_client import BankRestClient, QueryBalanceRequest from cosmpy.common.rest_client import RestClient from cosmpy.cosmwasm.rest_client import CosmWasmRestClient +from cosmpy.crypto.hashfuncs import ripemd160 from cosmpy.protos.cosmos.auth.v1beta1.auth_pb2 import BaseAccount from cosmpy.protos.cosmos.auth.v1beta1.query_pb2 import QueryAccountRequest from cosmpy.protos.cosmos.bank.v1beta1.tx_pb2 import MsgSend @@ -127,7 +128,7 @@ def _password_to_key_and_salt( password: str, salt: Optional[bytes] = None ) -> Tuple[bytes, bytes]: salt = salt or get_random_bytes(16) - key = scrypt(password, salt, 16, N=2 ** 14, r=8, p=1) # type: ignore + key = scrypt(password, salt, 16, N=2**14, r=8, p=1) # type: ignore return key, salt # type: ignore @classmethod @@ -255,7 +256,7 @@ def get_event_attributes(tx_receipt: JSONLike) -> Dict: """ return { i["key"]: i["value"] - for i in chain(*[i["attributes"] for i in tx_receipt["logs"][0]["events"]]) + for i in chain(*[i["attributes"] for i in tx_receipt["logs"][0]["events"]]) # type: ignore } @classmethod @@ -276,7 +277,11 @@ def get_contract_address(cls, tx_receipt: JSONLike) -> Optional[str]: @staticmethod def is_transaction_valid( - tx: JSONLike, seller: Address, client: Address, tx_nonce: str, amount: int, + tx: JSONLike, + seller: Address, + client: Address, + tx_nonce: str, + amount: int, ) -> bool: """ Check whether a transaction is valid or not. @@ -328,7 +333,7 @@ def get_address_from_public_key(cls, public_key: str) -> str: """ public_key_bytes = bytes.fromhex(public_key) s = hashlib.new("sha256", public_key_bytes).digest() - r = hashlib.new("ripemd160", s).digest() + r = ripemd160(s) five_bit_r = convertbits(r, 8, 5) if five_bit_r is None: # pragma: nocover raise AEAEnforceError("Unsuccessful bech32.convertbits call") @@ -367,7 +372,10 @@ def recover_public_keys_from_message( """ signature_b64 = base64.b64decode(signature) verifying_keys = VerifyingKey.from_public_key_recovery( - signature_b64, message, SECP256k1, hashfunc=hashlib.sha256, + signature_b64, + message, + SECP256k1, + hashfunc=hashlib.sha256, ) public_keys = [ verifying_key.to_string("compressed").hex() @@ -501,7 +509,9 @@ def sign_message( :return: signature of the message in string form """ signature_compact = self.entity.sign_deterministic( - message, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize, + message, + hashfunc=hashlib.sha256, + sigencode=sigencode_string_canonize, ) signature_base64_str = base64.b64encode(signature_compact).decode("utf-8") return signature_base64_str @@ -1223,7 +1233,9 @@ def _get_transaction( single = ModeInfo.Single(mode=SignMode.SIGN_MODE_DIRECT) mode_info = ModeInfo(single=single) signer_info = SignerInfo( - public_key=from_pub_key_packed, mode_info=mode_info, sequence=sequence, + public_key=from_pub_key_packed, + mode_info=mode_info, + sequence=sequence, ) signer_infos.append(signer_info) @@ -1234,7 +1246,8 @@ def _get_transaction( # Prepare auth info auth_info = AuthInfo( - signer_infos=signer_infos, fee=Fee(amount=tx_fee, gas_limit=gas), + signer_infos=signer_infos, + fee=Fee(amount=tx_fee, gas_limit=gas), ) # Prepare Tx body @@ -1501,7 +1514,10 @@ def _try_check_faucet_claim( if "txStatus" in data["claim"]: tx_digest = data["claim"]["txStatus"]["hash"] - return CosmosFaucetStatus(tx_digest=tx_digest, status=data["claim"]["status"],) + return CosmosFaucetStatus( + tx_digest=tx_digest, + status=data["claim"]["status"], + ) @classmethod def _faucet_request_uri(cls, url: Optional[str] = None) -> str: diff --git a/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py b/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py index dda3c73c00..cbcd2e2fa6 100644 --- a/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py +++ b/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py @@ -107,7 +107,7 @@ def gas_station_gas_price_strategy( # pylint: disable=redefined-outer-name,unus raise ValueError(f"Invalid return value for `{gas_price_strategy}`!") gwei_result = result / 10 # adjustment (see api documentation) wei_result = web3.toWei(gwei_result, "gwei") - return wei_result + return Wei(wei_result) return gas_station_gas_price_strategy @@ -393,7 +393,11 @@ def get_contract_address(tx_receipt: JSONLike) -> Optional[str]: @staticmethod def is_transaction_valid( - tx: dict, seller: Address, client: Address, tx_nonce: str, amount: int, + tx: dict, + seller: Address, + client: Address, + tx_nonce: str, + amount: int, ) -> bool: """ Check whether a transaction is valid or not. @@ -769,11 +773,12 @@ def get_contract_instance( """ if contract_address is None: instance = self.api.eth.contract( - abi=contract_interface[_ABI], bytecode=contract_interface[_BYTECODE], + abi=contract_interface[_ABI], + bytecode=contract_interface[_BYTECODE], ) else: _contract_address = self.api.toChecksumAddress(contract_address) - instance = self.api.eth.contract( + instance = self.api.eth.contract( # type: ignore address=_contract_address, abi=contract_interface[_ABI], bytecode=contract_interface[_BYTECODE], diff --git a/plugins/aea-ledger-ethereum/setup.py b/plugins/aea-ledger-ethereum/setup.py index 18f31ddf9c..3ef26f03a5 100644 --- a/plugins/aea-ledger-ethereum/setup.py +++ b/plugins/aea-ledger-ethereum/setup.py @@ -32,9 +32,8 @@ packages=find_packages(include=["aea_ledger_ethereum*"]), install_requires=[ "aea>=1.0.0, <2.0.0", - "web3==5.12.0", - "ipfshttpclient==0.6.1", - "eth-account==0.5.2", + "web3>=5.31.0,<6.0.0", + "ipfshttpclient==0.8.0a2", ], tests_require=["pytest"], entry_points={ diff --git a/plugins/aea-ledger-ethereum/tests/test_ethereum.py b/plugins/aea-ledger-ethereum/tests/test_ethereum.py index 8c40b36e41..90204d139f 100644 --- a/plugins/aea-ledger-ethereum/tests/test_ethereum.py +++ b/plugins/aea-ledger-ethereum/tests/test_ethereum.py @@ -267,7 +267,8 @@ def test_get_deploy_transaction(ethereum_testnet_config, ganache): ec2 = EthereumCrypto() interface = {"abi": [], "bytecode": b""} deploy_tx = ethereum_api.get_deploy_transaction( - contract_interface=interface, deployer_address=ec2.address, + contract_interface=interface, + deployer_address=ec2.address, ) assert type(deploy_tx) == dict and len(deploy_tx) == 6 assert all( diff --git a/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py b/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py index 46e666115d..298bd32956 100644 --- a/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py +++ b/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py @@ -47,10 +47,13 @@ def test_get_contract_instance(ethereum_testnet_config, ganache): erc1155_contract_address = cast(Dict, receipt)["contractAddress"] interface = {"abi": [], "bytecode": b""} instance = ethereum_api.get_contract_instance( - contract_interface=interface, contract_address=erc1155_contract_address, + contract_interface=interface, + contract_address=erc1155_contract_address, ) assert str(type(instance)) == "" - instance = ethereum_api.get_contract_instance(contract_interface=interface,) + instance = ethereum_api.get_contract_instance( + contract_interface=interface, + ) assert ( str(type(instance)) == "" ) diff --git a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py index 8716ce741a..ffdb65ece1 100644 --- a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py +++ b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py @@ -41,6 +41,7 @@ from cosmpy.bank.rest_client import BankRestClient, QueryBalanceRequest from cosmpy.common.rest_client import RestClient from cosmpy.cosmwasm.rest_client import CosmWasmRestClient +from cosmpy.crypto.hashfuncs import ripemd160 from cosmpy.protos.cosmos.auth.v1beta1.auth_pb2 import BaseAccount from cosmpy.protos.cosmos.auth.v1beta1.query_pb2 import QueryAccountRequest from cosmpy.protos.cosmos.bank.v1beta1.tx_pb2 import MsgSend @@ -127,7 +128,7 @@ def _password_to_key_and_salt( password: str, salt: Optional[bytes] = None ) -> Tuple[bytes, bytes]: salt = salt or get_random_bytes(16) - key = scrypt(password, salt, 16, N=2 ** 14, r=8, p=1) # type: ignore + key = scrypt(password, salt, 16, N=2**14, r=8, p=1) # type: ignore return key, salt # type: ignore @classmethod @@ -255,7 +256,7 @@ def get_event_attributes(tx_receipt: JSONLike) -> Dict: """ return { i["key"]: i["value"] - for i in chain(*[i["attributes"] for i in tx_receipt["logs"][0]["events"]]) + for i in chain(*[i["attributes"] for i in tx_receipt["logs"][0]["events"]]) # type: ignore } @classmethod @@ -276,7 +277,11 @@ def get_contract_address(cls, tx_receipt: JSONLike) -> Optional[str]: @staticmethod def is_transaction_valid( - tx: JSONLike, seller: Address, client: Address, tx_nonce: str, amount: int, + tx: JSONLike, + seller: Address, + client: Address, + tx_nonce: str, + amount: int, ) -> bool: """ Check whether a transaction is valid or not. @@ -328,7 +333,7 @@ def get_address_from_public_key(cls, public_key: str) -> str: """ public_key_bytes = bytes.fromhex(public_key) s = hashlib.new("sha256", public_key_bytes).digest() - r = hashlib.new("ripemd160", s).digest() + r = ripemd160(s) five_bit_r = convertbits(r, 8, 5) if five_bit_r is None: # pragma: nocover raise AEAEnforceError("Unsuccessful bech32.convertbits call") @@ -367,7 +372,10 @@ def recover_public_keys_from_message( """ signature_b64 = base64.b64decode(signature) verifying_keys = VerifyingKey.from_public_key_recovery( - signature_b64, message, SECP256k1, hashfunc=hashlib.sha256, + signature_b64, + message, + SECP256k1, + hashfunc=hashlib.sha256, ) public_keys = [ verifying_key.to_string("compressed").hex() @@ -501,7 +509,9 @@ def sign_message( :return: signature of the message in string form """ signature_compact = self.entity.sign_deterministic( - message, hashfunc=hashlib.sha256, sigencode=sigencode_string_canonize, + message, + hashfunc=hashlib.sha256, + sigencode=sigencode_string_canonize, ) signature_base64_str = base64.b64encode(signature_compact).decode("utf-8") return signature_base64_str @@ -1223,7 +1233,9 @@ def _get_transaction( single = ModeInfo.Single(mode=SignMode.SIGN_MODE_DIRECT) mode_info = ModeInfo(single=single) signer_info = SignerInfo( - public_key=from_pub_key_packed, mode_info=mode_info, sequence=sequence, + public_key=from_pub_key_packed, + mode_info=mode_info, + sequence=sequence, ) signer_infos.append(signer_info) @@ -1234,7 +1246,8 @@ def _get_transaction( # Prepare auth info auth_info = AuthInfo( - signer_infos=signer_infos, fee=Fee(amount=tx_fee, gas_limit=gas), + signer_infos=signer_infos, + fee=Fee(amount=tx_fee, gas_limit=gas), ) # Prepare Tx body @@ -1501,7 +1514,10 @@ def _try_check_faucet_claim( if "txStatus" in data["claim"]: tx_digest = data["claim"]["txStatus"]["hash"] - return CosmosFaucetStatus(tx_digest=tx_digest, status=data["claim"]["status"],) + return CosmosFaucetStatus( + tx_digest=tx_digest, + status=data["claim"]["status"], + ) @classmethod def _faucet_request_uri(cls, url: Optional[str] = None) -> str: diff --git a/plugins/aea-ledger-fetchai/tests/test_fetchai.py b/plugins/aea-ledger-fetchai/tests/test_fetchai.py index e37bb0009d..3f40d259b8 100644 --- a/plugins/aea-ledger-fetchai/tests/test_fetchai.py +++ b/plugins/aea-ledger-fetchai/tests/test_fetchai.py @@ -444,7 +444,10 @@ def test_get_storage_transaction_cosmwasm(): contract_interface = {"wasm_byte_code": "1234"} deployer_address = cc2.address deploy_transaction = cosmos_api.get_deploy_transaction( - contract_interface, deployer_address, account_number=1, sequence=0, + contract_interface, + deployer_address, + account_number=1, + sequence=0, ) with patch.object( cosmos_api, "_try_get_account_number_and_sequence", return_value=(1, 0) @@ -789,7 +792,11 @@ def test_multiple_signatures_transaction(): coins = [Coin(denom="DENOM", amount="1234")] - msg_send = MsgSend(from_address=str("from"), to_address=str("to"), amount=coins,) + msg_send = MsgSend( + from_address=str("from"), + to_address=str("to"), + amount=coins, + ) send_msg_packed = ProtoAny() send_msg_packed.Pack(msg_send, type_url_prefix="/") @@ -819,7 +826,11 @@ def test_multiple_signatures_transaction_missing_pubkeys(): coins = [Coin(denom="DENOM", amount="1234")] - msg_send = MsgSend(from_address=str("from"), to_address=str("to"), amount=coins,) + msg_send = MsgSend( + from_address=str("from"), + to_address=str("to"), + amount=coins, + ) send_msg_packed = ProtoAny() send_msg_packed.Pack(msg_send, type_url_prefix="/") @@ -847,7 +858,11 @@ def test_multiple_signatures_transaction_wrong_number_of_params(): coins = [Coin(denom="DENOM", amount="1234")] - msg_send = MsgSend(from_address=str("from"), to_address=str("to"), amount=coins,) + msg_send = MsgSend( + from_address=str("from"), + to_address=str("to"), + amount=coins, + ) send_msg_packed = ProtoAny() send_msg_packed.Pack(msg_send, type_url_prefix="/") @@ -994,7 +1009,11 @@ def test_send_signed_tx_failed(): def test_max_gas(): """Test max gas limit set.""" coins = [Coin(denom="DENOM", amount="1234")] - msg_send = MsgSend(from_address=str("from"), to_address=str("to"), amount=coins,) + msg_send = MsgSend( + from_address=str("from"), + to_address=str("to"), + amount=coins, + ) send_msg_packed = ProtoAny() send_msg_packed.Pack(msg_send, type_url_prefix="/") diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000000..593ba7224c --- /dev/null +++ b/poetry.lock @@ -0,0 +1,5150 @@ +[[package]] +name = "absl-py" +version = "1.2.0" +description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "aiohttp" +version = "3.8.3" +description = "Async http client/server framework (asyncio)" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +aiosignal = ">=1.1.2" +async-timeout = ">=4.0.0a3,<5.0" +attrs = ">=17.3.0" +charset-normalizer = ">=2.0,<3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns", "cchardet"] + +[[package]] +name = "aioprometheus" +version = "20.0.2" +description = "A Prometheus Python client library for asyncio-based applications" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +quantile-python = ">=1.1" + +[package.extras] +aiohttp = ["aiohttp (>=3.3.2)"] +binary = ["prometheus-metrics-proto (>=18.1.1)"] + +[[package]] +name = "aiosignal" +version = "1.2.0" +description = "aiosignal: a list of registered asynchronous callbacks" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "asn1" +version = "2.2.0" +description = "Python-ASN1 is a simple ASN.1 encoder and decoder for Python 2.6+ and 3.3+." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "asn1crypto" +version = "1.5.1" +description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "astroid" +version = "2.4.2" +description = "An abstract syntax tree for Python with inference support." +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +lazy-object-proxy = ">=1.4.0,<1.5.0" +six = ">=1.12,<2.0" +wrapt = ">=1.11,<2.0" + +[[package]] +name = "astunparse" +version = "1.6.3" +description = "An AST unparser for Python" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +six = ">=1.6.1,<2.0" +wheel = ">=0.23.0,<1.0" + +[[package]] +name = "async-timeout" +version = "4.0.2" +description = "Timeout context manager for asyncio programs" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "attrs" +version = "22.1.0" +description = "Classes Without Boilerplate" +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] + +[[package]] +name = "bandit" +version = "1.7.4" +description = "Security oriented static analyser for python code." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" +PyYAML = ">=5.3.1" +stevedore = ">=1.20.0" + +[package.extras] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] +toml = ["toml"] +yaml = ["PyYAML"] + +[[package]] +name = "base58" +version = "2.1.1" +description = "Base58 and Base58Check implementation." +category = "main" +optional = false +python-versions = ">=3.5" + +[package.extras] +tests = ["PyHamcrest (>=2.0.2)", "mypy", "pytest (>=4.6)", "pytest-benchmark", "pytest-cov", "pytest-flake8"] + +[[package]] +name = "beautifulsoup4" +version = "4.11.1" +description = "Screen-scraping library" +category = "dev" +optional = false +python-versions = ">=3.6.0" + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "bech32" +version = "1.2.0" +description = "Reference implementation for Bech32 and segwit addresses." +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "bip-utils" +version = "2.7.0" +description = "Generation of mnemonics, seeds, private/public keys and addresses for different types of cryptocurrencies" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cbor2 = ">=5.1,<6.0" +coincurve = ">=15.0.1,<18.0.0" +crcmod = ">=1.7,<2.0" +ecdsa = ">=0.15,<1.0" +ed25519-blake2b = ">=1.4,<2.0" +py-sr25519-bindings = ">=0.1.3,<2.0.0" +pycryptodome = ">=3.6,<4.0" +pynacl = ">=1.4,<2.0" + +[package.extras] +develop = ["coverage (>=5.3)", "flake8 (>=3.8)", "isort (>=5.8)", "mypy (>=0.900)", "prospector[with_mypy,with_pyroma] (>=1.7)", "pytest (>=7.0)", "pytest-cov (>=2.10)"] + +[[package]] +name = "bitarray" +version = "2.6.0" +description = "efficient arrays of booleans -- C extension" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "black" +version = "22.10.0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "blspy" +version = "1.0.16" +description = "BLS signatures in c++ (python bindings)" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +wheel = "*" + +[[package]] +name = "cachetools" +version = "5.2.0" +description = "Extensible memoizing collections and decorators" +category = "dev" +optional = false +python-versions = "~=3.7" + +[[package]] +name = "cbor2" +version = "5.4.3" +description = "CBOR (de)serializer with extensive tag support" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +doc = ["sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "certifi" +version = "2022.9.24" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "cffi" +version = "1.15.1" +description = "Foreign Function Interface for Python calling C code." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "2.1.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.6.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "cloudpickle" +version = "1.2.2" +description = "Extended pickling support for Python objects" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "coincurve" +version = "17.0.0" +description = "Cross-platform Python CFFI bindings for libsecp256k1" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +asn1crypto = "*" +cffi = ">=1.3.0" + +[[package]] +name = "colorama" +version = "0.4.5" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "colorlog" +version = "4.1.0" +description = "Log formatting with colors!" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} + +[[package]] +name = "configparser" +version = "5.3.0" +description = "Updated configparser from stdlib for earlier Pythons." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "types-backports"] + +[[package]] +name = "cosmpy" +version = "0.5.1" +description = "A library for interacting with the cosmos networks" +category = "dev" +optional = false +python-versions = ">=3.6, <4" + +[package.dependencies] +bech32 = "*" +bip-utils = "*" +blspy = "*" +click = "*" +ecdsa = "*" +google-api-python-client = "*" +grpcio = "*" +protobuf = ">=3.19.4,<4" +python-mbedtls = "2.2.0" +requests = "*" +types-certifi = "*" + +[package.extras] +dev = ["bandit (==1.7.0)", "black (==22.3)", "check-manifest", "darglint (==1.8.0)", "docker (==5.0.0)", "flake8 (==3.9.2)", "flake8-copyright (==0.2.2)", "grpcio-tools (==1.47.0)", "isort (==5.9.3)", "liccheck (==0.6.2)", "mkdocs (==1.3)", "mkdocs-material (==8.2.11)", "mypy (==0.910)", "pylint (==2.9.6)", "safety (==1.10.3)", "tox (==3.24.1)", "vulture (==2.3)"] +test = ["coverage", "pytest"] + +[[package]] +name = "coverage" +version = "6.5.0" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "crcmod" +version = "1.7" +description = "CRC Generator" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "cryptography" +version = "38.0.1" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.12" + +[package.extras] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +sdist = ["setuptools-rust (>=0.11.4)"] +ssh = ["bcrypt (>=3.1.5)"] +test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] + +[[package]] +name = "cycler" +version = "0.11.0" +description = "Composable style cycles" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "cytoolz" +version = "0.12.0" +description = "Cython implementation of Toolz: High performance functional utilities" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +toolz = ">=0.8.0" + +[package.extras] +cython = ["cython"] + +[[package]] +name = "darglint" +version = "1.8.1" +description = "A utility for ensuring Google-style docstrings stay up to date with the source code." +category = "dev" +optional = false +python-versions = ">=3.6,<4.0" + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "Deprecated" +version = "1.2.10" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest (<5)", "PyTest-Cov", "PyTest-Cov (<2.6)", "bumpversion (<1)", "sphinx (<2)", "tox"] + +[[package]] +name = "distlib" +version = "0.3.6" +description = "Distribution utilities" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "docker" +version = "4.2.0" +description = "A Python library for the Docker Engine API." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +pypiwin32 = {version = "223", markers = "sys_platform == \"win32\" and python_version >= \"3.6\""} +requests = ">=2.14.2,<2.18.0 || >2.18.0" +six = ">=1.4.0" +websocket-client = ">=0.32.0" + +[package.extras] +ssh = ["paramiko (>=2.4.2)"] +tls = ["cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] + +[[package]] +name = "dparse" +version = "0.6.2" +description = "A parser for Python dependency files" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +packaging = "*" +toml = "*" + +[package.extras] +conda = ["pyyaml"] +pipenv = ["pipenv"] + +[[package]] +name = "ecdsa" +version = "0.16.1" +description = "ECDSA cryptographic signature library (pure python)" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[package.dependencies] +six = ">=1.9.0" + +[package.extras] +gmpy = ["gmpy"] +gmpy2 = ["gmpy2"] + +[[package]] +name = "ed25519-blake2b" +version = "1.4" +description = "Ed25519 public-key signatures (BLAKE2b fork)" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "entrypoints" +version = "0.3" +description = "Discover and load entry points from installed packages." +category = "dev" +optional = false +python-versions = ">=2.7" + +[[package]] +name = "eradicate" +version = "1.0" +description = "Removes commented-out code." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "eth-abi" +version = "2.2.0" +description = "eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding" +category = "dev" +optional = false +python-versions = ">=3.6, <4" + +[package.dependencies] +eth-typing = ">=2.0.0,<3.0.0" +eth-utils = ">=1.2.0,<2.0.0" +parsimonious = ">=0.8.0,<0.9.0" + +[package.extras] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "eth-hash[pycryptodome]", "flake8 (==4.0.1)", "hypothesis (>=4.18.2,<5.0.0)", "ipython", "isort (>=4.2.15,<5)", "jinja2 (>=3.0.0,<3.1.0)", "mypy (==0.910)", "pydocstyle (>=3.0.0,<4)", "pytest (==4.4.1)", "pytest-pythonpath (>=0.7.1)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist (==1.22.3)", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=21,<22)", "tox (>=2.9.1,<3)", "twine", "wheel"] +doc = ["Sphinx (>=1.6.5,<2)", "jinja2 (>=3.0.0,<3.1.0)", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=21,<22)"] +lint = ["flake8 (==4.0.1)", "isort (>=4.2.15,<5)", "mypy (==0.910)", "pydocstyle (>=3.0.0,<4)"] +test = ["eth-hash[pycryptodome]", "hypothesis (>=4.18.2,<5.0.0)", "pytest (==4.4.1)", "pytest-pythonpath (>=0.7.1)", "pytest-xdist (==1.22.3)", "tox (>=2.9.1,<3)"] +tools = ["hypothesis (>=4.18.2,<5.0.0)"] + +[[package]] +name = "eth-account" +version = "0.5.9" +description = "eth-account: Sign Ethereum transactions and messages with local private keys" +category = "dev" +optional = false +python-versions = ">=3.6, <4" + +[package.dependencies] +bitarray = ">=1.2.1,<3" +eth-abi = ">=2.0.0b7,<3" +eth-keyfile = ">=0.5.0,<0.6.0" +eth-keys = ">=0.3.4,<0.4.0" +eth-rlp = ">=0.1.2,<2" +eth-utils = ">=1.3.0,<2" +hexbytes = ">=0.1.0,<1" +rlp = ">=1.0.0,<3" + +[package.extras] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "hypothesis (>=4.18.0,<5)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.910)", "pydocstyle (>=5.0.0,<6)", "pytest (>=6.2.5,<7)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=21.9.0)", "tox (==3.14.6)", "twine", "wheel"] +doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=21.9.0)"] +lint = ["flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.910)", "pydocstyle (>=5.0.0,<6)"] +test = ["hypothesis (>=4.18.0,<5)", "pytest (>=6.2.5,<7)", "pytest-xdist", "tox (==3.14.6)"] + +[[package]] +name = "eth-hash" +version = "0.3.3" +description = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" +category = "dev" +optional = false +python-versions = ">=3.5, <4" + +[package.dependencies] +pycryptodome = {version = ">=3.6.6,<4", optional = true, markers = "extra == \"pycryptodome\""} + +[package.extras] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=5.0.0,<6)", "pytest (==5.4.1)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine", "wheel"] +doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=19.2.0,<20)"] +lint = ["flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=5.0.0,<6)"] +pycryptodome = ["pycryptodome (>=3.6.6,<4)"] +pysha3 = ["pysha3 (>=1.0.0,<2.0.0)"] +test = ["pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] + +[[package]] +name = "eth-keyfile" +version = "0.5.1" +description = "A library for handling the encrypted keyfiles used to store ethereum private keys." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +cytoolz = ">=0.9.0,<1.0.0" +eth-keys = ">=0.1.0-beta.4,<1.0.0" +eth-utils = ">=1.0.0-beta.1,<2.0.0" +pycryptodome = ">=3.4.7,<4.0.0" + +[[package]] +name = "eth-keys" +version = "0.3.4" +description = "Common API for Ethereum key operations." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +eth-typing = ">=2.2.1,<3.0.0" +eth-utils = ">=1.8.2,<2.0.0" + +[package.extras] +coincurve = ["coincurve (>=7.0.0,<13.0.0)"] +dev = ["asn1tools (>=0.146.2,<0.147)", "bumpversion (==0.5.3)", "eth-hash[pycryptodome]", "eth-hash[pysha3]", "eth-typing (>=2.2.1,<3.0.0)", "eth-utils (>=1.8.2,<2.0.0)", "factory-boy (>=3.0.1,<3.1)", "flake8 (==3.0.4)", "hypothesis (>=5.10.3,<6.0.0)", "mypy (==0.782)", "pyasn1 (>=0.4.5,<0.5)", "pytest (==5.4.1)", "tox (==3.20.0)", "twine"] +eth-keys = ["eth-typing (>=2.2.1,<3.0.0)", "eth-utils (>=1.8.2,<2.0.0)"] +lint = ["flake8 (==3.0.4)", "mypy (==0.782)"] +test = ["asn1tools (>=0.146.2,<0.147)", "eth-hash[pycryptodome]", "eth-hash[pysha3]", "factory-boy (>=3.0.1,<3.1)", "hypothesis (>=5.10.3,<6.0.0)", "pyasn1 (>=0.4.5,<0.5)", "pytest (==5.4.1)"] + +[[package]] +name = "eth-rlp" +version = "0.2.1" +description = "eth-rlp: RLP definitions for common Ethereum objects in Python" +category = "dev" +optional = false +python-versions = ">=3.6, <4" + +[package.dependencies] +eth-utils = ">=1.0.1,<2" +hexbytes = ">=0.1.0,<1" +rlp = ">=0.6.0,<3" + +[package.extras] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "eth-hash[pycryptodome]", "flake8 (==3.7.9)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=3.0.0,<4)", "pytest (==5.4.1)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine", "wheel"] +doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)", "towncrier (>=19.2.0,<20)"] +lint = ["flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.770)", "pydocstyle (>=3.0.0,<4)"] +test = ["eth-hash[pycryptodome]", "pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] + +[[package]] +name = "eth-typing" +version = "2.3.0" +description = "eth-typing: Common type annotations for ethereum python packages" +category = "dev" +optional = false +python-versions = ">=3.5, <4" + +[package.extras] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.8.3)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.782)", "pydocstyle (>=3.0.0,<4)", "pytest (>=4.4,<4.5)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9)", "tox (>=2.9.1,<3)", "twine", "wheel"] +doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)"] +lint = ["flake8 (==3.8.3)", "isort (>=4.2.15,<5)", "mypy (==0.782)", "pydocstyle (>=3.0.0,<4)"] +test = ["pytest (>=4.4,<4.5)", "pytest-xdist", "tox (>=2.9.1,<3)"] + +[[package]] +name = "eth-utils" +version = "1.10.0" +description = "eth-utils: Common utility functions for python code that interacts with Ethereum" +category = "dev" +optional = false +python-versions = ">=3.5,!=3.5.2,<4" + +[package.dependencies] +cytoolz = {version = ">=0.10.1,<1.0.0", markers = "implementation_name == \"cpython\""} +eth-hash = ">=0.3.1,<0.4.0" +eth-typing = ">=2.2.1,<3.0.0" +toolz = {version = ">0.8.2,<1", markers = "implementation_name == \"pypy\""} + +[package.extras] +dev = ["Sphinx (>=1.6.5,<2)", "black (>=18.6b4,<19)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.7.9)", "hypothesis (>=4.43.0,<5.0.0)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.720)", "pydocstyle (>=5.0.0,<6)", "pytest (==5.4.1)", "pytest (>=3.4.1,<4.0.0)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<2)", "towncrier (>=19.2.0,<20)", "tox (==3.14.6)", "twine (>=1.13,<2)", "wheel (>=0.30.0,<1.0.0)"] +doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9,<2)", "towncrier (>=19.2.0,<20)"] +lint = ["black (>=18.6b4,<19)", "flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.720)", "pydocstyle (>=5.0.0,<6)", "pytest (>=3.4.1,<4.0.0)"] +test = ["hypothesis (>=4.43.0,<5.0.0)", "pytest (==5.4.1)", "pytest-xdist", "tox (==3.14.6)"] + +[[package]] +name = "filelock" +version = "3.8.0" +description = "A platform independent file lock." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] +testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] + +[[package]] +name = "flake8" +version = "3.7.9" +description = "the modular source code checker: pep8, pyflakes and co" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +entrypoints = ">=0.3.0,<0.4.0" +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.5.0,<2.6.0" +pyflakes = ">=2.1.0,<2.2.0" + +[[package]] +name = "flake8-bugbear" +version = "20.1.4" +description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +attrs = ">=19.2.0" +flake8 = ">=3.0.0" + +[[package]] +name = "flake8-docstrings" +version = "1.6.0" +description = "Extension for flake8 which uses pydocstyle to check docstrings" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +flake8 = ">=3" +pydocstyle = ">=2.1" + +[[package]] +name = "flake8-eradicate" +version = "0.4.0" +description = "Flake8 plugin to find commented out code" +category = "dev" +optional = false +python-versions = ">=3.5,<4.0" + +[package.dependencies] +attrs = "*" +eradicate = ">=1.0,<2.0" +flake8 = ">=3.5,<4.0" + +[[package]] +name = "flake8-isort" +version = "4.0.0" +description = "flake8 plugin that integrates isort ." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +flake8 = ">=3.2.1,<4" +isort = ">=4.3.5,<6" +testfixtures = ">=6.8.0,<7" + +[package.extras] +test = ["pytest (>=4.0.2,<6)", "toml"] + +[[package]] +name = "flatbuffers" +version = "22.9.24" +description = "The FlatBuffers serialization format for Python" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "frozenlist" +version = "1.3.1" +description = "A list-like structure which implements collections.abc.MutableSequence" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "future" +version = "0.18.2" +description = "Clean single-source support for Python 3 and 2" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "gast" +version = "0.4.0" +description = "Python AST that abstracts the underlying Python version" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "gitdb" +version = "4.0.9" +description = "Git Object Database" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "GitPython" +version = "3.1.29" +description = "GitPython is a python library used to interact with Git repositories" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[[package]] +name = "google-api-core" +version = "2.8.2" +description = "Google API client core library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +google-auth = ">=1.25.0,<3.0dev" +googleapis-common-protos = ">=1.56.2,<2.0dev" +protobuf = ">=3.15.0,<5.0.0dev" +requests = ">=2.18.0,<3.0.0dev" + +[package.extras] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)"] + +[[package]] +name = "google-api-python-client" +version = "2.64.0" +description = "Google API Client Library for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +google-api-core = ">=1.31.5,<2.0.0 || >2.3.0,<3.0.0dev" +google-auth = ">=1.19.0,<3.0.0dev" +google-auth-httplib2 = ">=0.1.0" +httplib2 = ">=0.15.0,<1dev" +uritemplate = ">=3.0.1,<5" + +[[package]] +name = "google-auth" +version = "2.12.0" +description = "Google Authentication Library" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" + +[package.dependencies] +cachetools = ">=2.0.0,<6.0" +pyasn1-modules = ">=0.2.1" +rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""} +six = ">=1.9.0" + +[package.extras] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] +enterprise_cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] +pyopenssl = ["pyopenssl (>=20.0.0)"] +reauth = ["pyu2f (>=0.1.5)"] + +[[package]] +name = "google-auth-httplib2" +version = "0.1.0" +description = "Google Authentication Library: httplib2 transport" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +google-auth = "*" +httplib2 = ">=0.15.0" +six = "*" + +[[package]] +name = "google-auth-oauthlib" +version = "0.4.6" +description = "Google Authentication Library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +google-auth = ">=1.0.0" +requests-oauthlib = ">=0.7.0" + +[package.extras] +tool = ["click (>=6.0.0)"] + +[[package]] +name = "google-pasta" +version = "0.2.0" +description = "pasta is an AST-based Python refactoring library" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +six = "*" + +[[package]] +name = "googleapis-common-protos" +version = "1.56.4" +description = "Common protobufs used in Google APIs" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +protobuf = ">=3.15.0,<5.0.0dev" + +[package.extras] +grpc = ["grpcio (>=1.0.0,<2.0.0dev)"] + +[[package]] +name = "graphviz" +version = "0.20.1" +description = "Simple Python interface for Graphviz" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] +docs = ["sphinx (>=5)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] +test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=3)"] + +[[package]] +name = "greenlet" +version = "1.1.3.post0" +description = "Lightweight in-process concurrent programming" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" + +[package.extras] +docs = ["Sphinx"] + +[[package]] +name = "grpcio" +version = "1.49.1" +description = "HTTP/2-based RPC framework" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +six = ">=1.5.2" + +[package.extras] +protobuf = ["grpcio-tools (>=1.49.1)"] + +[[package]] +name = "gym" +version = "0.15.6" +description = "The OpenAI Gym: A toolkit for developing and comparing your reinforcement learning agents." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.dependencies] +cloudpickle = ">=1.2.0,<1.3.0" +numpy = ">=1.10.4" +pyglet = ">=1.4.0,<=1.5.0" +scipy = "*" +six = "*" + +[package.extras] +all = ["Pillow", "atari_py (>=0.2.0,<0.3.0)", "box2d-py (>=2.3.5,<2.4.0)", "imageio", "imageio", "mujoco_py (>=1.50,<2.0)", "mujoco_py (>=1.50,<2.0)", "opencv-python"] +atari = ["Pillow", "atari_py (>=0.2.0,<0.3.0)", "opencv-python"] +box2d = ["box2d-py (>=2.3.5,<2.4.0)"] +mujoco = ["imageio", "mujoco_py (>=1.50,<2.0)"] +robotics = ["imageio", "mujoco_py (>=1.50,<2.0)"] + +[[package]] +name = "h5py" +version = "3.7.0" +description = "Read and write HDF5 files from Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +numpy = ">=1.14.5" + +[[package]] +name = "hexbytes" +version = "0.3.0" +description = "hexbytes: Python `bytes` subclass that decodes hex, with a readable console output" +category = "dev" +optional = false +python-versions = ">=3.7, <4" + +[package.extras] +dev = ["Sphinx (>=4.0.0,<5)", "black (>=22,<23)", "bumpversion (>=0.5.3,<1)", "eth-utils (>=1.0.1,<3)", "flake8 (==3.7.9)", "hypothesis (>=3.44.24,<=6.31.6)", "ipython", "isort (>=4.2.15,<5)", "mypy (==0.971)", "pydocstyle (>=5.0.0,<6)", "pytest (>=7,<8)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=21,<22)", "tox (>=3.25.1,<4)", "twine", "wheel"] +doc = ["Sphinx (>=4.0.0,<5)", "sphinx-rtd-theme (>=0.1.9,<1)", "towncrier (>=21,<22)"] +lint = ["black (>=22,<23)", "flake8 (==3.7.9)", "isort (>=4.2.15,<5)", "mypy (==0.971)", "pydocstyle (>=5.0.0,<6)"] +test = ["eth-utils (>=1.0.1,<3)", "hypothesis (>=3.44.24,<=6.31.6)", "pytest (>=7,<8)", "pytest-xdist", "tox (>=3.25.1,<4)"] + +[[package]] +name = "httplib2" +version = "0.20.4" +description = "A comprehensive HTTP client library." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "imageio" +version = "2.22.1" +description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +numpy = "*" +pillow = ">=8.3.2" + +[package.extras] +all-plugins = ["astropy", "av", "imageio-ffmpeg", "opencv-python", "psutil", "tifffile"] +all-plugins-pypy = ["av", "imageio-ffmpeg", "psutil", "tifffile"] +build = ["wheel"] +dev = ["black", "flake8", "fsspec[github]", "invoke", "pytest", "pytest-cov"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx"] +ffmpeg = ["imageio-ffmpeg", "psutil"] +fits = ["astropy"] +full = ["astropy", "av", "black", "flake8", "fsspec[github]", "gdal", "imageio-ffmpeg", "invoke", "itk", "numpydoc", "opencv-python", "psutil", "pydata-sphinx-theme", "pytest", "pytest-cov", "sphinx", "tifffile", "wheel"] +gdal = ["gdal"] +itk = ["itk"] +linting = ["black", "flake8"] +opencv = ["opencv-python"] +pyav = ["av"] +test = ["fsspec[github]", "invoke", "pytest", "pytest-cov"] +tifffile = ["tifffile"] + +[[package]] +name = "importlib-metadata" +version = "4.13.0" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +perf = ["ipython"] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] + +[[package]] +name = "importlib-resources" +version = "5.10.0" +description = "Read resources from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "ipfshttpclient" +version = "0.8.0a2" +description = "Python IPFS HTTP CLIENT library" +category = "dev" +optional = false +python-versions = ">=3.6.2,!=3.7.0,!=3.7.1" + +[package.dependencies] +multiaddr = ">=0.0.7" +requests = ">=2.11" + +[[package]] +name = "iso8601" +version = "0.1.13" +description = "Simple module to parse ISO 8601 dates" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +colors = ["colorama (>=0.4.3,<0.5.0)"] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements_deprecated_finder = ["pip-api", "pipreqs"] + +[[package]] +name = "Jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jsonschema" +version = "4.16.0" +description = "An implementation of JSON Schema validation for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=17.4.0" +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "keras" +version = "2.10.0" +description = "Deep learning for humans." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "Keras-Preprocessing" +version = "1.1.2" +description = "Easy data preprocessing and data augmentation for deep learning models" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = ">=1.9.1" +six = ">=1.9.0" + +[package.extras] +image = ["Pillow (>=5.2.0)", "scipy (>=0.14)"] +pep8 = ["flake8"] +tests = ["Pillow", "keras", "pandas", "pytest", "pytest-cov", "pytest-xdist", "tensorflow"] + +[[package]] +name = "kiwisolver" +version = "1.4.4" +description = "A fast implementation of the Cassowary constraint solver" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "lazy-object-proxy" +version = "1.4.3" +description = "A fast and thorough lazy object proxy." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "libclang" +version = "14.0.6" +description = "Clang Python Bindings, mirrored from the official LLVM repo: https://github.com/llvm/llvm-project/tree/main/clang/bindings/python, to make the installation process easier." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "liccheck" +version = "0.7.2" +description = "Check python packages from requirement.txt and report issues" +category = "dev" +optional = false +python-versions = ">=2.7" + +[package.dependencies] +configparser = {version = "*", markers = "python_version >= \"3.4\""} +semantic-version = ">=2.7.0" +toml = "*" + +[[package]] +name = "lru-dict" +version = "1.1.8" +description = "An Dict like LRU container." +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "Markdown" +version = "3.3.7" +description = "Python implementation of Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} + +[package.extras] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "MarkupSafe" +version = "2.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "matplotlib" +version = "3.3.4" +description = "Python plotting package" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cycler = ">=0.10" +kiwisolver = ">=1.0.1" +numpy = ">=1.15" +pillow = ">=6.2.0" +pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6" +python-dateutil = ">=2.1" + +[[package]] +name = "mccabe" +version = "0.6.1" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "memory-profiler" +version = "0.57.0" +description = "A module for monitoring memory usage of a python program" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +psutil = "*" + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mistune" +version = "2.0.4" +description = "A sane Markdown parser with useful plugins and renderers" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "mkdocs" +version = "1.4.0" +description = "Project documentation with Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +click = ">=7.0" +ghp-import = ">=1.0" +importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +Jinja2 = ">=2.11.1" +Markdown = ">=3.2.1,<3.4" +mergedeep = ">=1.3.4" +packaging = ">=20.5" +PyYAML = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] + +[[package]] +name = "mkdocs-material" +version = "7.1.6" +description = "A Material Design theme for MkDocs" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +markdown = ">=3.2" +mkdocs = ">=1.1" +mkdocs-material-extensions = ">=1.0" +Pygments = ">=2.4" +pymdown-extensions = ">=7.0" + +[[package]] +name = "mkdocs-material-extensions" +version = "1.0.3" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mkdocs-mermaid-plugin" +version = "0.1.1" +description = "A MkDocs plugin that support mermaid graph in markdown file" +category = "dev" +optional = false +python-versions = ">=2.7" +develop = false + +[package.dependencies] +beautifulsoup4 = ">=4.6.3" +mkdocs = ">=1.0.4" +setuptools = ">=18.5" + +[package.source] +type = "git" +url = "https://github.com/pugong/mkdocs-mermaid-plugin.git" +reference = "HEAD" +resolved_reference = "abf14392b0ed0c7022210b32c4e7c9c3e4c5c68a" + +[[package]] +name = "multiaddr" +version = "0.0.9" +description = "Python implementation of jbenet's multiaddr" +category = "dev" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" + +[package.dependencies] +base58 = "*" +netaddr = "*" +six = "*" +varint = "*" + +[[package]] +name = "multidict" +version = "6.0.2" +description = "multidict implementation" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "mypy" +version = "0.982" +description = "Optional static typing for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +mypy-extensions = ">=0.4.3" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "netaddr" +version = "0.8.0" +description = "A network address manipulation library for Python" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "networkx" +version = "2.8.7" +description = "Python package for creating and manipulating graphs and networks" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.extras] +default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=0.981)", "pre-commit (>=2.20)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.4)", "pillow (>=9.1)", "pydata-sphinx-theme (>=0.9)", "sphinx (>=5)", "sphinx-gallery (>=0.10)", "texext (>=0.6.6)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"] +test = ["codecov (>=2.1)", "pytest (>=7.1)", "pytest-cov (>=3.0)"] + +[[package]] +name = "numpy" +version = "1.23.3" +description = "NumPy is the fundamental package for array computing with Python." +category = "dev" +optional = false +python-versions = ">=3.8" + +[[package]] +name = "oauthlib" +version = "3.2.1" +description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +rsa = ["cryptography (>=3.0.0)"] +signals = ["blinker (>=1.4.0)"] +signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] + +[[package]] +name = "oef" +version = "0.8.1" +description = "SDK for OEF Agent development." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +graphviz = "*" +protobuf = "*" + +[[package]] +name = "openapi-spec-validator" +version = "0.2.8" +description = "" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +jsonschema = "*" +PyYAML = ">=5.1" +six = "*" + +[[package]] +name = "opt-einsum" +version = "3.3.0" +description = "Optimizing numpys einsum function" +category = "dev" +optional = false +python-versions = ">=3.5" + +[package.dependencies] +numpy = ">=1.7" + +[package.extras] +docs = ["numpydoc", "sphinx (==1.2.3)", "sphinx-rtd-theme", "sphinxcontrib-napoleon"] +tests = ["pytest", "pytest-cov", "pytest-pep8"] + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "parsimonious" +version = "0.8.1" +description = "(Soon to be) the fastest pure-Python PEG parser I could muster" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +six = ">=1.9.0" + +[[package]] +name = "pathspec" +version = "0.10.1" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "pbr" +version = "5.10.0" +description = "Python Build Reasonableness" +category = "dev" +optional = false +python-versions = ">=2.6" + +[[package]] +name = "pexpect" +version = "4.8.0" +description = "Pexpect allows easy control of interactive console applications." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +name = "Pillow" +version = "9.2.0" +description = "Python Imaging Library (Fork)" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "pkgutil_resolve_name" +version = "1.3.10" +description = "Resolve a name to an object." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "platformdirs" +version = "2.5.2" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "protobuf" +version = "3.19.4" +description = "Protocol Buffers" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "psutil" +version = "5.7.0" +description = "Cross-platform lib for process and system monitoring in Python." +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.extras] +enum = ["enum34"] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "py-sr25519-bindings" +version = "0.1.4" +description = "Python bindings for sr25519 library" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "pyasn1" +version = "0.4.8" +description = "ASN.1 types and codecs" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "pyasn1-modules" +version = "0.2.8" +description = "A collection of ASN.1-based protocols modules." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pyasn1 = ">=0.4.6,<0.5.0" + +[[package]] +name = "pycodestyle" +version = "2.5.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pycryptodome" +version = "3.15.0" +description = "Cryptographic library for Python" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pydoc-markdown" +version = "2.1.3" +description = "Create Python API documentation in Markdown format" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +Markdown = ">=2.6.11" +MkDocs = ">=1.0.0" +PyYAML = ">=3.12" +six = ">=0.11.0" +yapf = ">=0.26.0" + +[[package]] +name = "pydocstyle" +version = "3.0.0" +description = "Python docstring style checker" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +six = "*" +snowballstemmer = "*" + +[[package]] +name = "pyflakes" +version = "2.1.1" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pyglet" +version = "1.5.0" +description = "Cross-platform windowing and multimedia library" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +future = "*" + +[[package]] +name = "Pygments" +version = "2.7.4" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "pylint" +version = "2.6.0" +description = "python code static checker" +category = "dev" +optional = false +python-versions = ">=3.5.*" + +[package.dependencies] +astroid = ">=2.4.0,<=2.5" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +isort = ">=4.2.5,<6" +mccabe = ">=0.6,<0.7" +toml = ">=0.7.1" + +[[package]] +name = "pymdown-extensions" +version = "9.1" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +Markdown = ">=3.2" + +[[package]] +name = "pymultihash" +version = "0.8.2" +description = "Python implementation of the multihash specification" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +blake2 = ["pyblake2"] +sha3 = ["pysha3"] + +[[package]] +name = "PyNaCl" +version = "1.5.0" +description = "Python binding to the Networking and Cryptography (NaCl) library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cffi = ">=1.4.1" + +[package.extras] +docs = ["sphinx (>=1.6.5)", "sphinx_rtd_theme"] +tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] + +[[package]] +name = "pyOpenSSL" +version = "22.1.0" +description = "Python wrapper module around the OpenSSL library" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +cryptography = ">=38.0.0,<39" + +[package.extras] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] +test = ["flaky", "pretend", "pytest (>=3.0.1)"] + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pypiwin32" +version = "223" +description = "" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pywin32 = ">=223" + +[[package]] +name = "pyrsistent" +version = "0.18.1" +description = "Persistent/Functional/Immutable data structures" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "pyserial" +version = "3.5" +description = "Python Serial Port Extension" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +cp2110 = ["hidapi"] + +[[package]] +name = "pytest" +version = "7.1.3" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.16.0" +description = "Pytest support for asyncio." +category = "dev" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +pytest = ">=5.4.0" + +[package.extras] +testing = ["coverage", "hypothesis (>=5.7.1)"] + +[[package]] +name = "pytest-cov" +version = "4.0.0" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-custom-exit-code" +version = "0.3.0" +description = "Exit pytest test session with custom exit code in different scenarios" +category = "dev" +optional = false +python-versions = ">2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +pytest = ">=4.0.2" + +[[package]] +name = "pytest-randomly" +version = "3.12.0" +description = "Pytest plugin to randomly order tests and control random.seed." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} +pytest = "*" + +[[package]] +name = "pytest-rerunfailures" +version = "10.2" +description = "pytest plugin to re-run tests to eliminate flaky failures" +category = "dev" +optional = false +python-versions = ">= 3.6" + +[package.dependencies] +pytest = ">=5.3" +setuptools = ">=40.0" + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "0.17.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "python-mbedtls" +version = "2.2.0" +description = "hash, hmac, RSA, ECC, X.509, TLS, DTLS, handshakes, and secrets with an mbed TLS back end" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +certifi = "*" + +[[package]] +name = "pytz" +version = "2020.4" +description = "World timezone definitions, modern and historical" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "PyWavelets" +version = "1.4.1" +description = "PyWavelets, wavelet transform module" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = ">=1.17.3" + +[[package]] +name = "pywin32" +version = "303" +description = "Python for Window Extensions" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "PyYAML" +version = "5.4.1" +description = "YAML parser and emitter for Python" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[[package]] +name = "pyyaml_env_tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyyaml = "*" + +[[package]] +name = "quantile-python" +version = "1.1" +description = "Python Implementation of Graham Cormode and S. Muthukrishnan's Effective Computation of Biased Quantiles over Data Streams in ICDE'05" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "requests" +version = "2.28.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-oauthlib" +version = "1.3.1" +description = "OAuthlib authentication support for Requests." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +oauthlib = ">=3.0.0" +requests = ">=2.0.0" + +[package.extras] +rsa = ["oauthlib[signedtoken] (>=3.0.0)"] + +[[package]] +name = "rlp" +version = "2.0.1" +description = "A package for Recursive Length Prefix encoding and decoding" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +eth-utils = ">=1.0.2,<2" + +[package.extras] +dev = ["Sphinx (>=1.6.5,<2)", "bumpversion (>=0.5.3,<1)", "flake8 (==3.4.1)", "hypothesis (==5.19.0)", "ipython", "pytest (==5.4.3)", "pytest-watch (>=4.1.0,<5)", "pytest-xdist", "setuptools (>=36.2.0)", "sphinx-rtd-theme (>=0.1.9)", "tox (>=2.9.1,<3)", "twine", "wheel"] +doc = ["Sphinx (>=1.6.5,<2)", "sphinx-rtd-theme (>=0.1.9)"] +lint = ["flake8 (==3.4.1)"] +rust-backend = ["rusty-rlp (>=0.1.15,<0.2)"] +test = ["hypothesis (==5.19.0)", "pytest (==5.4.3)", "tox (>=2.9.1,<3)"] + +[[package]] +name = "rsa" +version = "4.9" +description = "Pure-Python RSA implementation" +category = "dev" +optional = false +python-versions = ">=3.6,<4" + +[package.dependencies] +pyasn1 = ">=0.1.3" + +[[package]] +name = "ruamel.yaml" +version = "0.17.21" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "dev" +optional = false +python-versions = ">=3" + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.6", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.11\""} + +[package.extras] +docs = ["ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel.yaml.clib" +version = "0.2.6" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "safety" +version = "2.3.1" +description = "Checks installed dependencies for known vulnerabilities and licenses." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +Click = ">=8.0.2" +dparse = ">=0.6.2" +packaging = ">=21.0" +requests = "*" +"ruamel.yaml" = ">=0.17.21" +setuptools = ">=19.3" + +[package.extras] +github = ["jinja2 (>=3.1.0)", "pygithub (>=1.43.3)"] +gitlab = ["python-gitlab (>=1.3.0)"] + +[[package]] +name = "scikit-image" +version = "0.19.3" +description = "Image processing in Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +imageio = ">=2.4.1" +networkx = ">=2.2" +numpy = ">=1.17.0" +packaging = ">=20.0" +pillow = ">=6.1.0,<7.1.0 || >7.1.0,<7.1.1 || >7.1.1,<8.3.0 || >8.3.0" +PyWavelets = ">=1.1.1" +scipy = ">=1.4.1" +tifffile = ">=2019.7.26" + +[package.extras] +data = ["pooch (>=1.3.0)"] +docs = ["cloudpickle (>=0.2.1)", "dask[array] (>=0.15.0,!=2.17.0)", "ipywidgets", "kaleido", "matplotlib (>=3.3)", "myst-parser", "numpydoc (>=1.0)", "pandas (>=0.23.0)", "plotly (>=4.14.0)", "pooch (>=1.3.0)", "pytest-runner", "scikit-learn", "seaborn (>=0.7.1)", "sphinx (>=1.8)", "sphinx-copybutton", "sphinx-gallery (>=0.10.1)", "tifffile (>=2020.5.30)"] +optional = ["SimpleITK", "astropy (>=3.1.2)", "cloudpickle (>=0.2.1)", "dask[array] (>=1.0.0,!=2.17.0)", "matplotlib (>=3.0.3)", "pooch (>=1.3.0)", "pyamg", "qtpy"] +test = ["asv", "codecov", "flake8", "matplotlib (>=3.0.3)", "pooch (>=1.3.0)", "pytest (>=5.2.0)", "pytest-cov (>=2.7.0)", "pytest-faulthandler", "pytest-localserver"] + +[[package]] +name = "scipy" +version = "1.9.2" +description = "Fundamental algorithms for scientific computing in Python" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = ">=1.18.5,<1.26.0" + +[package.extras] +dev = ["flake8", "mypy", "pycodestyle", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-panels (>=0.5.2)", "sphinx-tabs"] +test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "semantic-version" +version = "2.10.0" +description = "A library implementing the 'SemVer' scheme." +category = "dev" +optional = false +python-versions = ">=2.7" + +[package.extras] +dev = ["Django (>=1.11)", "check-manifest", "colorama (<=0.4.1)", "coverage", "flake8", "nose2", "readme-renderer (<25.0)", "tox", "wheel", "zest.releaser[recommended]"] +doc = ["Sphinx", "sphinx-rtd-theme"] + +[[package]] +name = "semver" +version = "2.13.0" +description = "Python helper for Semantic Versioning (http://semver.org/)" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "setuptools" +version = "65.4.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "soupsieve" +version = "2.3.2.post1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "SQLAlchemy" +version = "1.4.41" +description = "Database Abstraction Library" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} + +[package.extras] +aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] +mariadb_connector = ["mariadb (>=1.0.1,!=1.1.2)"] +mssql = ["pyodbc"] +mssql_pymssql = ["pymssql"] +mssql_pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] +mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] +mysql_connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql_asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] +postgresql_psycopg2binary = ["psycopg2-binary"] +postgresql_psycopg2cffi = ["psycopg2cffi"] +pymysql = ["pymysql", "pymysql (<1)"] +sqlcipher = ["sqlcipher3_binary"] + +[[package]] +name = "stevedore" +version = "4.0.0" +description = "Manage dynamic plugins for Python applications" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "temper-py" +version = "0.0.3" +description = "Reads temperature data from misc. \"TEMPer\" devices with minimal dependencies" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pyserial = "*" + +[[package]] +name = "tensorboard" +version = "2.10.1" +description = "TensorBoard lets you watch Tensors Flow" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +absl-py = ">=0.4" +google-auth = ">=1.6.3,<3" +google-auth-oauthlib = ">=0.4.1,<0.5" +grpcio = ">=1.24.3" +markdown = ">=2.6.8" +numpy = ">=1.12.0" +protobuf = ">=3.9.2,<3.20" +requests = ">=2.21.0,<3" +setuptools = ">=41.0.0" +tensorboard-data-server = ">=0.6.0,<0.7.0" +tensorboard-plugin-wit = ">=1.6.0" +werkzeug = ">=1.0.1" +wheel = ">=0.26" + +[[package]] +name = "tensorboard-data-server" +version = "0.6.1" +description = "Fast data loading for TensorBoard" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "tensorboard-plugin-wit" +version = "1.8.1" +description = "What-If Tool TensorBoard plugin." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "tensorflow" +version = "2.10.0" +description = "TensorFlow is an open source machine learning framework for everyone." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +absl-py = ">=1.0.0" +astunparse = ">=1.6.0" +flatbuffers = ">=2.0" +gast = ">=0.2.1,<=0.4.0" +google-pasta = ">=0.1.1" +grpcio = ">=1.24.3,<2.0" +h5py = ">=2.9.0" +keras = ">=2.10.0,<2.11" +keras-preprocessing = ">=1.1.1" +libclang = ">=13.0.0" +numpy = ">=1.20" +opt-einsum = ">=2.3.2" +packaging = "*" +protobuf = ">=3.9.2,<3.20" +setuptools = "*" +six = ">=1.12.0" +tensorboard = ">=2.10,<2.11" +tensorflow-estimator = ">=2.10.0,<2.11" +tensorflow-io-gcs-filesystem = ">=0.23.1" +termcolor = ">=1.1.0" +typing-extensions = ">=3.6.6" +wrapt = ">=1.11.0" + +[[package]] +name = "tensorflow-estimator" +version = "2.10.0" +description = "TensorFlow Estimator." +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "tensorflow-io-gcs-filesystem" +version = "0.27.0" +description = "TensorFlow IO" +category = "dev" +optional = false +python-versions = ">=3.7, <3.11" + +[package.extras] +tensorflow = ["tensorflow (>=2.10.0,<2.11.0)"] +tensorflow-aarch64 = ["tensorflow-aarch64 (>=2.10.0,<2.11.0)"] +tensorflow-cpu = ["tensorflow-cpu (>=2.10.0,<2.11.0)"] +tensorflow-gpu = ["tensorflow-gpu (>=2.10.0,<2.11.0)"] +tensorflow-rocm = ["tensorflow-rocm (>=2.10.0,<2.11.0)"] + +[[package]] +name = "termcolor" +version = "2.0.1" +description = "ANSI color formatting for output in terminal" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "testfixtures" +version = "6.18.5" +description = "A collection of helpers and mock objects for unit tests and doc tests." +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +build = ["setuptools-git", "twine", "wheel"] +docs = ["django", "django (<2)", "mock", "sphinx", "sybil", "twisted", "zope.component"] +test = ["django", "django (<2)", "mock", "pytest (>=3.6)", "pytest-cov", "pytest-django", "sybil", "twisted", "zope.component"] + +[[package]] +name = "tifffile" +version = "2022.8.12" +description = "Read and write TIFF files" +category = "dev" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +numpy = ">=1.19.2" + +[package.extras] +all = ["imagecodecs (>=2022.2.22)", "lxml", "matplotlib (>=3.3)"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "toolz" +version = "0.12.0" +description = "List processing tools and functional utilities" +category = "dev" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "tox" +version = "3.25.1" +description = "tox is a generic virtualenv management and test command line tool" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""} +filelock = ">=3.0.0" +packaging = ">=14" +pluggy = ">=0.12.0" +py = ">=1.4.17" +six = ">=1.14.0" +toml = ">=0.9.4" +virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7" + +[package.extras] +docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"] +testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psutil (>=5.6.1)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)"] + +[[package]] +name = "types-certifi" +version = "2021.10.8.3" +description = "Typing stubs for certifi" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "types-click" +version = "7.1.8" +description = "Typing stubs for click" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "types-PyYAML" +version = "6.0.12" +description = "Typing stubs for PyYAML" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "types-requests" +version = "2.28.11.2" +description = "Typing stubs for requests" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +types-urllib3 = "<1.27" + +[[package]] +name = "types-setuptools" +version = "65.4.0.0" +description = "Typing stubs for setuptools" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "types-urllib3" +version = "1.26.25" +description = "Typing stubs for urllib3" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "typing-extensions" +version = "4.4.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "uritemplate" +version = "4.1.1" +description = "Implementation of RFC 6570 URI Templates" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "urllib3" +version = "1.26.12" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "varint" +version = "1.0.2" +description = "Simple python varint implementation" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "virtualenv" +version = "20.16.5" +description = "Virtual Python Environment builder" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +distlib = ">=0.3.5,<1" +filelock = ">=3.4.1,<4" +platformdirs = ">=2.4,<3" + +[package.extras] +docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"] +testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] + +[[package]] +name = "vulture" +version = "2.6" +description = "Find dead code" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +toml = "*" + +[[package]] +name = "watchdog" +version = "2.1.9" +description = "Filesystem events monitoring" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[[package]] +name = "web3" +version = "5.31.0" +description = "Web3.py" +category = "dev" +optional = false +python-versions = ">=3.6,<4" + +[package.dependencies] +aiohttp = ">=3.7.4.post0,<4" +eth-abi = ">=2.0.0b6,<3.0.0" +eth-account = ">=0.5.9,<0.6.0" +eth-hash = {version = ">=0.2.0,<1.0.0", extras = ["pycryptodome"]} +eth-rlp = "<0.3" +eth-typing = ">=2.0.0,<3.0.0" +eth-utils = ">=1.9.5,<2.0.0" +hexbytes = ">=0.1.0,<1.0.0" +ipfshttpclient = "0.8.0a2" +jsonschema = ">=3.2.0,<5" +lru-dict = ">=1.1.6,<2.0.0" +protobuf = ">=3.10.0,<4" +pywin32 = {version = ">=223", markers = "platform_system == \"Windows\""} +requests = ">=2.16.0,<3.0.0" +websockets = ">=9.1,<10" + +[package.extras] +dev = ["Jinja2 (<=3.0.3)", "bumpversion", "click (>=5.1)", "configparser (==3.5.0)", "contextlib2 (>=0.5.4)", "eth-tester[py-evm] (==v0.6.0-beta.6)", "flake8 (==3.8.3)", "flaky (>=3.7.0,<4)", "hypothesis (>=3.31.2,<6)", "isort (>=4.2.15,<4.3.5)", "mock", "mypy (==0.910)", "pluggy (==0.13.1)", "py-geth (>=3.9.1,<4)", "py-solc (>=0.4.0)", "pytest (>=4.4.0,<5.0.0)", "pytest-asyncio (>=0.10.0,<0.11)", "pytest-mock (>=1.10,<2)", "pytest-pythonpath (>=0.3)", "pytest-watch (>=4.2,<5)", "pytest-xdist (>=1.29,<2)", "setuptools (>=38.6.0)", "sphinx (>=3.0,<4)", "sphinx-better-theme (>=0.1.4)", "sphinx-rtd-theme (>=0.1.9)", "toposort (>=1.4)", "towncrier (==18.5.0)", "tox (>=1.8.0)", "tqdm (>4.32,<5)", "twine (>=1.13,<2)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1,<3)", "types-setuptools (>=57.4.4,<58)", "urllib3", "wheel", "when-changed (>=0.3.0,<0.4)"] +docs = ["Jinja2 (<=3.0.3)", "click (>=5.1)", "configparser (==3.5.0)", "contextlib2 (>=0.5.4)", "mock", "py-geth (>=3.9.1,<4)", "py-solc (>=0.4.0)", "pytest (>=4.4.0,<5.0.0)", "sphinx (>=3.0,<4)", "sphinx-better-theme (>=0.1.4)", "sphinx-rtd-theme (>=0.1.9)", "toposort (>=1.4)", "towncrier (==18.5.0)", "urllib3", "wheel"] +linter = ["flake8 (==3.8.3)", "isort (>=4.2.15,<4.3.5)", "mypy (==0.910)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1,<3)", "types-setuptools (>=57.4.4,<58)"] +tester = ["eth-tester[py-evm] (==v0.6.0-beta.6)", "py-geth (>=3.9.1,<4)"] + +[[package]] +name = "websocket-client" +version = "1.4.1" +description = "WebSocket client for Python with low level API options" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "websockets" +version = "9.1" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "dev" +optional = false +python-versions = ">=3.6.1" + +[[package]] +name = "Werkzeug" +version = "2.2.2" +description = "The comprehensive WSGI web application library." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog"] + +[[package]] +name = "wheel" +version = "0.37.1" +description = "A built-package format for Python" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.extras] +test = ["pytest (>=3.0.0)", "pytest-cov"] + +[[package]] +name = "wrapt" +version = "1.14.1" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "yapf" +version = "0.32.0" +description = "A formatter for Python code." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "yarl" +version = "1.8.1" +description = "Yet another URL library" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" + +[[package]] +name = "yoti" +version = "2.14.0" +description = "The Yoti Python SDK, providing API support for Login, Verify (2FA) and Age Verification." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +asn1 = "2.2.0" +cryptography = ">=2.2.1" +deprecated = "1.2.10" +future = ">=0.11.0" +iso8601 = "0.1.13" +protobuf = ">=3.1.0" +pyopenssl = ">=18.0.0" +pytz = "2020.4" +requests = ">=2.11.1" + +[package.extras] +dev = ["coverage (==4.5.4)", "mock (==2.0.0)", "pre-commit (==1.17.0)", "pylint (==1.9.4)", "pylint-exit (>=1.1.0)", "pytest (>=4.6.11)", "pytest-cov (>=2.7.1)", "python-coveralls (==2.9.3)", "virtualenv (==20.1.0)"] +examples = ["Django (>=3.0.7)", "Flask (>=1.0.4)", "Werkzeug (==1.0.1)", "django-sslserver (>=0.22.0)", "python-dotenv (>=0.7.1)"] + +[[package]] +name = "zipp" +version = "3.9.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[extras] +all = ["click"] +cli = ["click"] + +[metadata] +lock-version = "1.1" +python-versions = ">=3.8,<3.11" +content-hash = "eb5dfa00380a5fbe8ac0e7b3b10731faf6ff5f0a73142ac7516f6a21cbbc0e83" + +[metadata.files] +absl-py = [ + {file = "absl-py-1.2.0.tar.gz", hash = "sha256:f568809938c49abbda89826223c992b630afd23c638160ad7840cfe347710d97"}, + {file = "absl_py-1.2.0-py3-none-any.whl", hash = "sha256:5d15f85b8cc859c6245bc9886ba664460ed96a6fee895416caa37d669ee74a9a"}, +] +aiohttp = [ + {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9"}, + {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e"}, + {file = "aiohttp-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b"}, + {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142"}, + {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b"}, + {file = "aiohttp-3.8.3-cp310-cp310-win32.whl", hash = "sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb"}, + {file = "aiohttp-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715"}, + {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008"}, + {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d"}, + {file = "aiohttp-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d"}, + {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73"}, + {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34"}, + {file = "aiohttp-3.8.3-cp311-cp311-win32.whl", hash = "sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697"}, + {file = "aiohttp-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290"}, + {file = "aiohttp-3.8.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85"}, + {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d"}, + {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1"}, + {file = "aiohttp-3.8.3-cp36-cp36m-win32.whl", hash = "sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b"}, + {file = "aiohttp-3.8.3-cp36-cp36m-win_amd64.whl", hash = "sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494"}, + {file = "aiohttp-3.8.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2"}, + {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48"}, + {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0"}, + {file = "aiohttp-3.8.3-cp37-cp37m-win32.whl", hash = "sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033"}, + {file = "aiohttp-3.8.3-cp37-cp37m-win_amd64.whl", hash = "sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091"}, + {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb"}, + {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4"}, + {file = "aiohttp-3.8.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342"}, + {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6"}, + {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937"}, + {file = "aiohttp-3.8.3-cp38-cp38-win32.whl", hash = "sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76"}, + {file = "aiohttp-3.8.3-cp38-cp38-win_amd64.whl", hash = "sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446"}, + {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06"}, + {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba"}, + {file = "aiohttp-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa"}, + {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c"}, + {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403"}, + {file = "aiohttp-3.8.3-cp39-cp39-win32.whl", hash = "sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618"}, + {file = "aiohttp-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7"}, + {file = "aiohttp-3.8.3.tar.gz", hash = "sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269"}, +] +aioprometheus = [ + {file = "aioprometheus-20.0.2-py3-none-any.whl", hash = "sha256:c8d5dd2a771833a3e796b1d81bbdf4e97960fffaed4ae1f184d8b561354a4280"}, +] +aiosignal = [ + {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, + {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, +] +asn1 = [ + {file = "asn1-2.2.0-py2.py3-none-any.whl", hash = "sha256:f856c475719b93a240b89f457c4da8a7f2b6f1cca82acd0fabe6b7e2adfcb3cb"}, + {file = "asn1-2.2.0.tar.gz", hash = "sha256:5a0cc798ae21313260a53fda7d76b45a86d72a93c58eb218b2713765ce8bf3c7"}, +] +asn1crypto = [ + {file = "asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67"}, + {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"}, +] +astroid = [ + {file = "astroid-2.4.2-py3-none-any.whl", hash = "sha256:bc58d83eb610252fd8de6363e39d4f1d0619c894b0ed24603b881c02e64c7386"}, + {file = "astroid-2.4.2.tar.gz", hash = "sha256:2f4078c2a41bf377eea06d71c9d2ba4eb8f6b1af2135bec27bbbb7d8f12bb703"}, +] +astunparse = [ + {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"}, + {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"}, +] +async-timeout = [ + {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, + {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, +] +attrs = [ + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, +] +bandit = [ + {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, + {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, +] +base58 = [ + {file = "base58-2.1.1-py3-none-any.whl", hash = "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2"}, + {file = "base58-2.1.1.tar.gz", hash = "sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c"}, +] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, +] +bech32 = [ + {file = "bech32-1.2.0-py3-none-any.whl", hash = "sha256:990dc8e5a5e4feabbdf55207b5315fdd9b73db40be294a19b3752cde9e79d981"}, + {file = "bech32-1.2.0.tar.gz", hash = "sha256:7d6db8214603bd7871fcfa6c0826ef68b85b0abd90fa21c285a9c5e21d2bd899"}, +] +bip-utils = [ + {file = "bip_utils-2.7.0-py3-none-any.whl", hash = "sha256:b04c0f60628f1ab2792e8946f8547515b72269d8f431f722592f6a71fa7ff9fc"}, + {file = "bip_utils-2.7.0.tar.gz", hash = "sha256:bc6302840a95695609e215ad362ddb42d70d472b3cb1494d1fb2112d08c1c707"}, +] +bitarray = [ + {file = "bitarray-2.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b080eb25811db46306dfce58b4760df32f40bcf5551ebba3b7c8d3ec90d9b988"}, + {file = "bitarray-2.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b0cfca1b5a57b540f4761b57de485196218733153c430d58f9e048e325c98b47"}, + {file = "bitarray-2.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6fa63a86aad0f45a27c7c5a27cd9b787fe9b1aed431f97f49ee8b834fa0780a0"}, + {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15d2a1c060a11fc5508715fef6177937614f9354dd3afe6a00e261775f8b0e8f"}, + {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ffc076a0e22cda949ccd062f37ecc3dc53856c6e8bdfe07e1e81c411cf31621"}, + {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecce266e24b21615a3ed234869be84bef492f6a34bb650d0e25dc3662c59bce4"}, + {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0399886ca8ead7d0f16f94545bda800467d6d9c63fbd4866ee7ede7981166ba8"}, + {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f263b18fdb8bf42cd7cf9849d5863847d215024c68fe74cf33bcd82641d4376a"}, + {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:119d503edf09bef37f2d0dc3b4a23c36c3c1e88e17701ab71388eb4780c046c7"}, + {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:985a937218aa3d1ac7013174bfcbb1cb2f3157e17c6e349e83386f33459be1c0"}, + {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d34673ebaf562347d004a465e16e2930c6568d196bb79d67fc6358f1213a1ac7"}, + {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7126563c86f6b60d87414124f035ff0d29de02ad9e46ea085de2c772b0be1331"}, + {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76c4e3261d6370383b02018cb964b5d9260e3c62dea31949910e9cc3a1c802d2"}, + {file = "bitarray-2.6.0-cp310-cp310-win32.whl", hash = "sha256:346d2c5452cc024c41d267ba99e48d38783c1706c50c4632a4484cc57b152d0e"}, + {file = "bitarray-2.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:b849a6cdd46608e7cc108c75e1265304e79488480a822bae7471e628f971a6f0"}, + {file = "bitarray-2.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d7bec01818c3a9d185f929cd36a82cc7acf13905920f7f595942105c5eef2300"}, + {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a0bb91363041b45523e5bcbc4153a5e1eb1ddb21e46fe1910340c0d095e1a8e"}, + {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7ba4c964a36fe198a8c4b5d08924709d4ed0337b65ae222b6503ed3442a46e8"}, + {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a239313e75da37d1f6548d666d4dd8554c4a92dabed15741612855d186e86e72"}, + {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9c492644f70f80f8266748c18309a0d73c22c47903f4b62f3fb772a15a8fd5f"}, + {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b756e5c771cdceb17622b6a0678fa78364e329d875de73a4f26bbacab8915a8"}, + {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:c24d4a1b5baa46920b801aa55c0e0a640c6e7683a73a941302e102e2bd11a830"}, + {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:f253b9bdf5abd039741a9594a681453c973b09dcb7edac9105961838675b7c6b"}, + {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4849709571b1a53669798d23cc8430e677dcf0eea88610a0412e1911233899a"}, + {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:67c5822f4bb6a419bc2f2dba9fa07b5646f0cda930bafa9e1130af6822e4bdf3"}, + {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:6071d12043300e50a4b7ba9caeeca92aac567bb4ac4a227709e3c77a3d788587"}, + {file = "bitarray-2.6.0-cp36-cp36m-win32.whl", hash = "sha256:12c96dedd6e4584fecc2bf5fbffe1c635bd516eee7ade7b839c35aeba84336b4"}, + {file = "bitarray-2.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d53520b54206d8569b81eee56ccd9477af2f1b3ca355df9c48ee615a11e1a637"}, + {file = "bitarray-2.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7ae3b8b48167579066a17c5ba1631d089f931f4eae8b4359ad123807d5e75c51"}, + {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24331bd2f52cd5410e48c132f486ed02a4ca3b96133fb26e3a8f50a57c354be6"}, + {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:742d43cbbc7267caae6379e2156a1fd8532332920a3d919b68c2982d439a98ba"}, + {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1479f533eaff4080078b6e5d06b467868bd6edd73bb6651a295bf662d40afa62"}, + {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec18a0b97ea6b912ea57dc00a3f8f3ce515d774d00951d30e2ae243589d3d021"}, + {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6bd32e492cdc740ec36b6725457685c9f2aa012dd8cbdae1643fed2b6821895"}, + {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bfda0af4072df6e932ec510b72c461e1ec0ad0820a76df588cdfebf5a07f5b5d"}, + {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d523ffef1927cb686ad787b25b2e98a5bd53e3c40673c394f07bf9b281e69796"}, + {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b0e4a6f5360e5f6c3a2b250c9e9cd539a9aabf0465dbedbaf364203e74ff101b"}, + {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5bd315ac63b62de5eefbfa07969162ffbda8e535c3b7b3d41b565d2a88817b71"}, + {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d697cc38cb6fa9bae3b994dd3ce68552ffe69c453a3b6fd6a4f94bb8a8bfd70b"}, + {file = "bitarray-2.6.0-cp37-cp37m-win32.whl", hash = "sha256:c19e900b6f9df13c7f406f827c5643f83c0839a58d007b35a4d7df827601f740"}, + {file = "bitarray-2.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:878f16daa9c2062e4d29c1928b6f3eb50911726ad6d2006918a29ca6b38b5080"}, + {file = "bitarray-2.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:565c4334cb410f5eb62280dcfb3a52629e60ce430f31dfa4bbef92ec80de4890"}, + {file = "bitarray-2.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6d8ba8065d1b60da24d94078249cbf24a02d869d7dc9eba12db1fb513a375c79"}, + {file = "bitarray-2.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fc635b27939969d53cac53e8b8f860ea69fc98cc9867cac17dd193f41dc2a57f"}, + {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f853589426920d9bb3683f6b6cd11ce48d9d06a62c0b98ea4b82ebd8db3bddec"}, + {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:076a72531bcca99114036c3714bac8124f5529b60fb6a6986067c6f345238c76"}, + {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:874a222ece2100b3a3a8f08c57da3267a4e2219d26474a46937552992fcec771"}, + {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6a4a4bf6fbc42b2674023ca58a47c86ee55c023a8af85420f266e86b10e7065"}, + {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f5df0377f3e7f1366e506c5295f08d3f8761e4a6381918931fc1d9594aa435e"}, + {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:42a071c9db755f267e5d3b9909ea8c22fb071d27860dd940facfacffbde79de8"}, + {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:36802129a3115023700c07725d981c74e23b0914551898f788e5a41aed2d63bf"}, + {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:c774328057a4b1fc48bee2dd5a60ee1e8e0ec112d29c4e6b9c550e1686b6db5c"}, + {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:763cac57692d07aa950b92c20f55ef66801955b71b4a1f4f48d5422d748c6dda"}, + {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:11996c4da9c1ca9f97143e939af75c5b24ad0fdc2fa13aeb0007ebfa3c602caf"}, + {file = "bitarray-2.6.0-cp38-cp38-win32.whl", hash = "sha256:3f238127789c993de937178c3ff836d0fad4f2da08af9f579668873ac1332a42"}, + {file = "bitarray-2.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:7f369872d551708d608e50a9ab8748d3d4f32a697dc5c2c37ff16cb8d7060210"}, + {file = "bitarray-2.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:049e8f017b5b6d1763ababa156ca5cbdea8a01e20a1e80525b0fbe9fb839d695"}, + {file = "bitarray-2.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:035d3e5ab3c1afa2cd88bbc33af595b4875a24b0d037dfef907b41bc4b0dbe2b"}, + {file = "bitarray-2.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:97609495479c5214c7b57173c17206ebb056507a8d26eebc17942d62f8f25944"}, + {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71cc3d1da4f682f27728745f21ed3447ee8f6a0019932126c422dd91278eb414"}, + {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c3d0a4a6061adc3d3128e1e1146940d17df8cbfe3d77cb66a1df69ddcdf27d5"}, + {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c46c2ba24a517f391c3ab9e7a214185f95146d0b664b4b0463ab31e5387669f"}, + {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0302605b3bbc439083a400cf57d7464f1ac098c722309a03abaa7d97cd420b5"}, + {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d42fee0add2114e572b0cd6edefc4c52207874f58b70043f82faa8bb7141620"}, + {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5276c7247d350819d1dae385d8f78ebfb44ee90ff11a775f981d45cb366573e5"}, + {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e76642232db8330589ed1ac1cec0e9c3814c708521c336a5c79d39a5d8d8c206"}, + {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:1d0a2d896bcbcb5f32f60571ebd48349ec322dee5e137b342483108c5cbd0f03"}, + {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:8c811e59c86ce0a8515daf47db9c2484fd42e51bdb44581d7bcc9caad6c9a7a1"}, + {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:febaf00e498230ce2e75dac910056f0e3a91c8631b7ceb6385bb39d448960bc5"}, + {file = "bitarray-2.6.0-cp39-cp39-win32.whl", hash = "sha256:2cfe1661b614314d67e6884e5e19e36957ff6faea5fcea7f25840dff95288248"}, + {file = "bitarray-2.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:f37b5282b029d9f51454f8c580eb6a24e5dc140ef5866290afb20e607d2dce5f"}, + {file = "bitarray-2.6.0.tar.gz", hash = "sha256:56d3f16dd807b1c56732a244ce071c135ee973d3edc9929418c1b24c5439a0fd"}, +] +black = [ + {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, + {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, + {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, + {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, + {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, + {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, + {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, + {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, + {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, + {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, + {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, + {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, + {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, + {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, + {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, + {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, + {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, + {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, + {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, + {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, + {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, +] +blspy = [ + {file = "blspy-1.0.16-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:5c4d31f19df5e6bd2bb84c3f21a43ef3cc80ff9414bb2541a8e49dad111aead6"}, + {file = "blspy-1.0.16-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0107d652f14ea196308eef635862d9ed2c20a2822486653c4f4f27a893aada92"}, + {file = "blspy-1.0.16-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89660ff986d0fd3ba0dbe5f2c0534229177b4c0e6facb18b2af7cb0f7864e02d"}, + {file = "blspy-1.0.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe53d43cdbdd0229b746253dc22453961a07ebec800b09681db81422421932de"}, + {file = "blspy-1.0.16-cp310-cp310-win_amd64.whl", hash = "sha256:fcf254d21bab581cfd0144fd83016a0f2927b593975ece15e0bc844c5adc0071"}, + {file = "blspy-1.0.16-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:8661047adf878c4dc830c661c032b9bc9bcd9d854bd8348f61ea02f470664a35"}, + {file = "blspy-1.0.16-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac1f695938fa1415d3f56e45bf5d0cef62a8242a53b8b276e7eeefd39c42ba9b"}, + {file = "blspy-1.0.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ed4ec6cc7ff44bf03c211cf2a7c3d1e423facb48c892fa534462c1558a378b1"}, + {file = "blspy-1.0.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a274dba827c77547e7bd7100468612b613c5928c4c71803270b908d0434b71d0"}, + {file = "blspy-1.0.16-cp311-cp311-win_amd64.whl", hash = "sha256:3ea1105d1d68e7a4c26d942bd49cc00e04bb7608b9d86af8e6cae8e117b50b3a"}, + {file = "blspy-1.0.16-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b592836f4e1e915dd211797741904de93d64ccfda4ed40d40d2d6f5cc0dec1b9"}, + {file = "blspy-1.0.16-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f387414e519b5499772bd79f478b98c52156870e137351fd3d924520f0c5528f"}, + {file = "blspy-1.0.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:702daf04b5de0027df33b4772ff76ca06af3a707349d1fb1370e4be8a9db3f53"}, + {file = "blspy-1.0.16-cp37-cp37m-win_amd64.whl", hash = "sha256:7f80eea462bd564bb5f6b475811f8951d27e52d827e1a6af279c65051173181b"}, + {file = "blspy-1.0.16-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:7b058d575b316c86217be70fca2ae6151f6847070d31963ce10032f3a839ea7d"}, + {file = "blspy-1.0.16-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f5a12bf7049b529577269da908eb617a8f5fd14c98a23d204285aae4caa837e9"}, + {file = "blspy-1.0.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c3dc4cd9c44698f3888c12ff71574de416461fa1058405ab1160e6619646e06"}, + {file = "blspy-1.0.16-cp38-cp38-win_amd64.whl", hash = "sha256:b3e4fafe4415863c9857b272cf56e7660e2c348bde30ed2db129df89004ca44c"}, + {file = "blspy-1.0.16-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:326216db8bf44a80d4e30d1d72f7817f1837bb8efe84c17f7b1eae42bb64914e"}, + {file = "blspy-1.0.16-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dd6b3ebc418501ee6ae42660f05b1881682840098f2e4edb0835d099a7948c3c"}, + {file = "blspy-1.0.16-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7e7eef70e8f163779e4bd7cc25fb1ea87c9780ab9edd77f97fd18eea77faf8be"}, + {file = "blspy-1.0.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff4c3a6ff76c39c2d9cd0253a63b110b5f38c5b04e9787294339ecc394ea62ac"}, + {file = "blspy-1.0.16-cp39-cp39-win_amd64.whl", hash = "sha256:e0698f4c347c05a2b404367113dd8487c7e50715b6d462ab70deb36f982af359"}, + {file = "blspy-1.0.16.tar.gz", hash = "sha256:5c005d4ba082509a59f4dd55adad3bf15d07a03537daed65df2cfde99287c057"}, +] +cachetools = [ + {file = "cachetools-5.2.0-py3-none-any.whl", hash = "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db"}, + {file = "cachetools-5.2.0.tar.gz", hash = "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757"}, +] +cbor2 = [ + {file = "cbor2-5.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8a643b19ace1584043bbf4e2d0b4fae8bebd6b6ffab14ea6478d3ff07f58e854"}, + {file = "cbor2-5.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e10f2f4fcf5ab6a8b24d22f7109f48cad8143f669795899370170d7b36ed309f"}, + {file = "cbor2-5.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de925608dc6d73cd1aab08800bff38f71f90459c15db3a71a67023b0fc697da"}, + {file = "cbor2-5.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62fc15bfe187e4994c457e6055687514c417d6099de62dd33ae766561f05847e"}, + {file = "cbor2-5.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3843a9bb970343e9c896aa71a34fa80983cd0ddec6eacdb2284b5e83f4ee7511"}, + {file = "cbor2-5.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b35c5d4d14fe804f718d5a5968a528970d2a7046aa87045538f189a98e5c7055"}, + {file = "cbor2-5.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:0a3a1b2f6b83ab4ce806df48360cc16d34cd315f17549dbda9fdd371bea04497"}, + {file = "cbor2-5.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b09ff6148a8cd529512479a1d6521fb7687fb03b448973933c3b03711d00bfc"}, + {file = "cbor2-5.4.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d21ccd1ec802e88dba1c373724a09538a0237116ab589c5301ca4c59478f7c10"}, + {file = "cbor2-5.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07975f956baddb8dfeca4966f1871fd2482cb36af24c461f763732a44675225"}, + {file = "cbor2-5.4.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9538ab1b4207e76ee02a52362d77e312921ec1dc75b6fb42182887d87d0ca53e"}, + {file = "cbor2-5.4.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cbca58220f52fd50d8985e4079e10c71196d538fb6685f157f608a29253409a4"}, + {file = "cbor2-5.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c617c7f94936d65ed9c8e99c6c03e3dc83313d69c6bfea810014ec658e9b1a9d"}, + {file = "cbor2-5.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70789805b9aebd215626188aa05bb09908ed51e3268d4db5ae6a08276efdbcb1"}, + {file = "cbor2-5.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0e4ae67a697c664b579b87c4ef9d60e26c146b95bff443a9a38abb16f6981ff0"}, + {file = "cbor2-5.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab6c934806759d453a9bb5318f2703c831e736be005ac35d5bd5cf2093ba57b1"}, + {file = "cbor2-5.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:981b9ffc4f2947a0f030e71ce5eac31334bc81369dd57c6c1273c94c6cdb0b5a"}, + {file = "cbor2-5.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cbe7cdeed26cd8ec2dcfed2b8876bc137ad8b9e0abb07aa5fb05770148a4b5c7"}, + {file = "cbor2-5.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6bc8c5606aa0ae510bdb3c7d987f92df39ef87d09e0f0588a4d1daffd3cb0453"}, + {file = "cbor2-5.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5c50da4702ac5ca3a8e7cb9f34f62b4ea91bc81b76c2fba03888b366da299cd8"}, + {file = "cbor2-5.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37ae0ce5afe864d1a1c5b05becaf8aaca7b7131cb7b0b935d7e79b29fb1cea28"}, + {file = "cbor2-5.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2f30f7ef329ea6ec630ceabe5a539fed407b9c81e27e2322644e3efbbd1b2a76"}, + {file = "cbor2-5.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d549abea7115c8a0d7c61a31a895c031f902a7b4c875f9efd8ce41e466baf83a"}, + {file = "cbor2-5.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fab0e00c28305db59f7005150447d08dd13da6a82695a2132c28beba590fd2c"}, + {file = "cbor2-5.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:20291dad09cf9c4e5f434d376dd9d60f5ab5e066b308005f50e7c5e22e504214"}, + {file = "cbor2-5.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5aaf3406c9d661d11f87e792edb9a38561dba1441afba7fb883d6d963e67f32c"}, + {file = "cbor2-5.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:4e8590193fcbbb9477010ca0f094f6540a5e723965c90eea7a37edbe75f0ec4d"}, + {file = "cbor2-5.4.3.tar.gz", hash = "sha256:62b863c5ee6ced4032afe948f3c1484f375550995d3b8498145237fe28e546c2"}, +] +certifi = [ + {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, + {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, +] +cffi = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +] +click = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] +cloudpickle = [ + {file = "cloudpickle-1.2.2-py2.py3-none-any.whl", hash = "sha256:f3ef2c9d438f1553ce7795afb18c1f190d8146132496169ef6aa9b7b65caa4c3"}, + {file = "cloudpickle-1.2.2.tar.gz", hash = "sha256:922401d7140e133253ff5fab4faa4a1166416066453a783b00b507dca93f8859"}, +] +coincurve = [ + {file = "coincurve-17.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac8c87d6fd080faa74e7ecf64a6ed20c11a254863238759eb02c3f13ad12b0c4"}, + {file = "coincurve-17.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:25dfa105beba24c8de886f8ed654bb1133866e4e22cfd7ea5ad8438cae6ed924"}, + {file = "coincurve-17.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:698efdd53e4fe1bbebaee9b75cbc851be617974c1c60098e9145cb7198ae97fb"}, + {file = "coincurve-17.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30dd44d1039f1d237aaa2da6d14a455ca88df3bcb00610b41f3253fdca1be97b"}, + {file = "coincurve-17.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d154e2eb5711db8c5ef52fcd80935b5a0e751c057bc6ffb215a7bb409aedef03"}, + {file = "coincurve-17.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c71caffb97dd3d0c243beb62352669b1e5dafa3a4bccdbb27d36bd82f5e65d20"}, + {file = "coincurve-17.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:747215254e51dd4dfbe6dded9235491263da5d88fe372d66541ca16b51ea078f"}, + {file = "coincurve-17.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ad2f6df39ba1e2b7b14bb984505ffa7d0a0ecdd697e8d7dbd19e04bc245c87ed"}, + {file = "coincurve-17.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0503326963916c85b61d16f611ea0545f03c9e418fa8007c233c815429e381e8"}, + {file = "coincurve-17.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1013c1597b65684ae1c3e42497f9ef5a04527fa6136a84a16b34602606428c74"}, + {file = "coincurve-17.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4beef321fd6434448aab03a0c245f31c4e77f43b54b82108c0948d29852ac7e"}, + {file = "coincurve-17.0.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f47806527d3184da3e8b146fac92a8ed567bbd225194f4517943d8cdc85f9542"}, + {file = "coincurve-17.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:51e56373ac79f4ec1cfc5da53d72c55f5e5ac28d848b0849ef5e687ace857888"}, + {file = "coincurve-17.0.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3d694ad194bee9e8792e2e75879dc5238d8a184010cde36c5ad518fcfe2cd8f2"}, + {file = "coincurve-17.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:74cedb3d3a1dc5abe0c9c2396e1b82cc64496babc5b42e007e72e185cb1edad8"}, + {file = "coincurve-17.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:db874c5c1dcb1f3a19379773b5e8cffc777625a7a7a60dd9a67206e31e62e2e9"}, + {file = "coincurve-17.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:896b01941254f0a218cf331a9bddfe2d43892f7f1ba10d6e372e2eb744a744c2"}, + {file = "coincurve-17.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6aec70238dbe7a5d66b5f9438ff45b08eb5e0990d49c32ebb65247c5d5b89d7a"}, + {file = "coincurve-17.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d24284d17162569df917a640f19d9654ba3b43cf560ced8864f270da903f73a5"}, + {file = "coincurve-17.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ea057f777842396d387103c606babeb3a1b4c6126769cc0a12044312fc6c465"}, + {file = "coincurve-17.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b88642edf7f281649b0c0b6ffade051945ccceae4b885e40445634877d0b3049"}, + {file = "coincurve-17.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a80a207131813b038351c5bdae8f20f5f774bbf53622081f208d040dd2b7528f"}, + {file = "coincurve-17.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1ef72574aa423bc33665ef4be859164a478bad24d48442da874ef3dc39a474d"}, + {file = "coincurve-17.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfd4fab857bcd975edc39111cb5f5c104f138dac2e9ace35ea8434d37bcea3be"}, + {file = "coincurve-17.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:73f39579dd651a9fc29da5a8fc0d8153d872bcbc166f876457baced1a1c01501"}, + {file = "coincurve-17.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8852dc01af4f0fe941ffd04069f7e4fecdce9b867a016f823a02286a1a1f07b5"}, + {file = "coincurve-17.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1bef812da1da202cdd601a256825abcf26d86e8634fac3ec3e615e3bb3ff08c"}, + {file = "coincurve-17.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abbefc9ccb170cb255a31df32457c2e43084b9f37589d0694dacc2dea6ddaf7c"}, + {file = "coincurve-17.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:abbd9d017a7638dc38a3b9bb4851f8801b7818d4e5ac22e0c75e373b3c1dbff0"}, + {file = "coincurve-17.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e2c2e8a1f0b1f8e48049c891af4ae3cad65d115d358bde72f6b8abdbb8a23170"}, + {file = "coincurve-17.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8c571445b166c714af4f8155e38a894376c16c0431e88963f2fff474a9985d87"}, + {file = "coincurve-17.0.0-py3-none-win32.whl", hash = "sha256:b956b0b2c85e25a7d00099970ff5d8338254b45e46f0a940f4a2379438ce0dde"}, + {file = "coincurve-17.0.0-py3-none-win_amd64.whl", hash = "sha256:630388080da3026e0b0176cc6762eaabecba857ee3fc85767577dea063ea7c6e"}, + {file = "coincurve-17.0.0.tar.gz", hash = "sha256:68da55aff898702952fda3ee04fd6ed60bb6b91f919c69270786ed766b548b93"}, +] +colorama = [ + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, +] +colorlog = [ + {file = "colorlog-4.1.0-py2.py3-none-any.whl", hash = "sha256:732c191ebbe9a353ec160d043d02c64ddef9028de8caae4cfa8bd49b6afed53e"}, + {file = "colorlog-4.1.0.tar.gz", hash = "sha256:30aaef5ab2a1873dec5da38fd6ba568fa761c9fa10b40241027fa3edea47f3d2"}, +] +configparser = [ + {file = "configparser-5.3.0-py3-none-any.whl", hash = "sha256:b065779fd93c6bf4cee42202fa4351b4bb842e96a3fb469440e484517a49b9fa"}, + {file = "configparser-5.3.0.tar.gz", hash = "sha256:8be267824b541c09b08db124917f48ab525a6c3e837011f3130781a224c57090"}, +] +cosmpy = [ + {file = "cosmpy-0.5.1-py3-none-any.whl", hash = "sha256:cb50a5aa0ca9ab60db0ada2cbf3b81611a5325ab1cb7e0a5f58cfb3832d4f084"}, + {file = "cosmpy-0.5.1.tar.gz", hash = "sha256:08319ecfaab5bfcfad8418be4197625d7bfd2697188e35bd20848f262211bb57"}, +] +coverage = [ + {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, + {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, + {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, + {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, + {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, + {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, + {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, + {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, + {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, + {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, + {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, + {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, + {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, + {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, + {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, +] +crcmod = [ + {file = "crcmod-1.7.tar.gz", hash = "sha256:dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e"}, +] +cryptography = [ + {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f"}, + {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd"}, + {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6"}, + {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a"}, + {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294"}, + {file = "cryptography-38.0.1-cp36-abi3-win32.whl", hash = "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0"}, + {file = "cryptography-38.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9"}, + {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013"}, + {file = "cryptography-38.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a"}, + {file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"}, + {file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"}, +] +cycler = [ + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, +] +cytoolz = [ + {file = "cytoolz-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8237612fed78d4580e94141a74ac0977f5a9614dd7fa8f3d2fcb30e6d04e73aa"}, + {file = "cytoolz-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:798dff7a40adbb3dfa2d50499c2038779061ebc37eccedaf28fa296cb517b84e"}, + {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:336551092eb1cfc2ad5878cc08ef290f744843f84c1dda06f9e4a84d2c440b73"}, + {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79b46cda959f026bd9fc33b4046294b32bd5e7664a4cf607179f80ac93844e7f"}, + {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b716f66b5ee72dbf9a001316ffe72afe0bb8f6ce84e341aec64291c0ff16b9f4"}, + {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ac7758c5c5a66664285831261a9af8e0af504026e0987cd01535045945df6e1"}, + {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:337c9a3ce2929c6361bcc1b304ce81ed675078a34c203dbb7c3e154f7ed1cca8"}, + {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee1fe1a3d0c8c456c3fbf62f28d178f870d14302fcd1edbc240b717ae3ab08de"}, + {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f1f5c1ef04240b323b9e6b87d4b1d7f14b735e284a33b18a509537a10f62715c"}, + {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:25c037a7b4f49730ccc295a03cd2217ba67ff43ac0918299f5f368271433ff0f"}, + {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:38e3386f63ebaea46a4ee0bfefc9a38590c3b78ab86439766b5225443468a76b"}, + {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb072fa81caab93a5892c4b69dfe0d48f52026a7fe83ba2567020a7995a456e7"}, + {file = "cytoolz-0.12.0-cp310-cp310-win32.whl", hash = "sha256:a4acf6cb20f01a5eb5b6d459e08fb92aacfb4de8bc97e25437c1a3e71860b452"}, + {file = "cytoolz-0.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:7fe93ffde090e2867f8ce4369d0c1abf5651817a74a3d0a4da2b1ffd412603ff"}, + {file = "cytoolz-0.12.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d212296e996a70db8d9e1c0622bc8aefa732eb0416b5441624d0fd5b853ea391"}, + {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:231d87ffb5fc468989e35336a2f8da1c9b8d97cfd9300cf2df32e953e4d20cae"}, + {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f26079bc2d0b7aa1a185516ac9f7cda0d7932da6c60589bfed4079e3a5369e83"}, + {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d511dd49eb1263ccb4e5f84ae1478dc2824d66b813cdf700e1ba593faa256ade"}, + {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa5ded9f811c36668239adb4806fca1244b06add4d64af31119c279aab1ef8a6"}, + {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c818a382b828e960fbbedbc85663414edbbba816c2bf8c1bb5651305d79bdb97"}, + {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1c22255e7458feb6f43d99c9578396e91d5934757c552128f6afd3b093b41c00"}, + {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5b7079b3197256ac6bf73f8b9484d514fac68a36d05513b9e5247354d6fc2885"}, + {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:2ee9ca2cfc939607926096c7cc6f298cee125f8ca53a4f46745f8dfbb7fb7ab1"}, + {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:8c0101bb2b2bcc0de2e2eb288a132c261e5fa883b1423799b47d4f0cfd879cd6"}, + {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4b8b1d9764d08782caa8ba0e91d76b95b973a82f4ce2a3f9c7e726bfeaddbdfa"}, + {file = "cytoolz-0.12.0-cp36-cp36m-win32.whl", hash = "sha256:f71b49a41826a8e7fd464d6991134a6d022a666be4e76d517850abbea561c909"}, + {file = "cytoolz-0.12.0-cp36-cp36m-win_amd64.whl", hash = "sha256:ae7f417bb2b4e3906e525b3dbe944791dfa9248faea719c7a9c200aa1a019a4e"}, + {file = "cytoolz-0.12.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b05dc257996c0accf6f877b1f212f74dc134b39c46baac09e1894d9d9c970b6a"}, + {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2cca43caea857e761cc458ffb4f7af397a13824c5e71341ca08035ff5ff0b27"}, + {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd840adfe027d379e7aede973bc0e193e6eef9b33d46d1d42826e26db9b37d7e"}, + {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b067c88de0eaca174211c8422b3f72cbfb63b101a0eeb528c4f21282ca0afe"}, + {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db619f17705067f1f112d3e84a0904b2f04117e50cefc4016f435ff0dc59bc4e"}, + {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e8335998e21205574fc7d8d17844a9cc0dd4cbb25bb7716d90683a935d2c879"}, + {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:46b9f4af719b113c01a4144c52fc4b929f98a47017a5408e3910050f4641126b"}, + {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d29cf7a44a8abaeb00537e3bad7abf823fce194fe707c366f81020d384e22f7"}, + {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02dc4565a8d27c9f3e87b715c0a300890e17c94ba1294af61c4ba97aa8482b22"}, + {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:2bd1c692ab706acb46cfebe7105945b07f7274598097e32c8979d3b22ae62cc6"}, + {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d035805dcdefcdfe64d97d6e1e7603798588d5e1ae08e61a5dae3258c3cb407a"}, + {file = "cytoolz-0.12.0-cp37-cp37m-win32.whl", hash = "sha256:9ecdd6e2be8d59b76c2bd3e2d832e7b3d5b2535c418b13cfa85e3b17de985199"}, + {file = "cytoolz-0.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3a5408a74df84e84aa1c86a2f9f2ffaed51a55f34bbad5b8fae547cb9167e977"}, + {file = "cytoolz-0.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1cf9ae77eed57924becd3ab65ae24487d7b1f9823d3e685d796e58f57424f82a"}, + {file = "cytoolz-0.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dc8df9adfca0da9956589f53764d459389ce86d824663c7217422232f1dfbc9d"}, + {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf460dc6bed081f274cd3d8ae162dd7e382014161d65edcdec832035d93901b"}, + {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f5784adcdb285e70b61efc1a369cd61c6b7f1e0b5d521651f93cde09549681f5"}, + {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09fac69cebcb79a6ed75565fe2de9511be6e3d93f30dad115832cc1a3933b6ce"}, + {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1744217505b835fcf55d82d67addd0d361791c4fd6a2f485f034b343ffc7edb3"}, + {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fa49cfaa0eedad59d8357a482bd10e2cc2a12ad9f41aae53427e82d3eba068a"}, + {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c9f8c9b3cfa20b4ce6a89b7e2e7ffda76bdd81e95b7d20bbb2c47c2b31e72622"}, + {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c9fe89548b1dc7c8b3160758d192791b32bd42b1c244a20809a1053a9d74428"}, + {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:d61bc1713662e7d9aa3e298dad790dfd027c5c0f1342c36be8401aebe3d3d453"}, + {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:69c04ae878d5bcde5462e7290f950bfce11fd139ec4b481687983326658e6dbe"}, + {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:21986f4a970c03ca84806b3a08e89386ac4aeb54c9b79d6a7268e83225331a87"}, + {file = "cytoolz-0.12.0-cp38-cp38-win32.whl", hash = "sha256:e17516a102731bcf86446ce148127a8cd2887cf27ac388990cd63881115b4fdc"}, + {file = "cytoolz-0.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:16748ea2b40c5978190d9acf9aa8fbacbfb440964c1035dc16cb14dbd557edb5"}, + {file = "cytoolz-0.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:02583c9fd4668f9e343ad4fc0e0f9651b1a0c16fe92bd208d07fd07de90fdc99"}, + {file = "cytoolz-0.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee92dadb312e657b9b666a0385fafc6dad073d8a0fbef5cea09e21011554206a"}, + {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12d3d11ceb0fce8be5463f1e363366888c4b71e68fb2f5d536e4790b933cfd7e"}, + {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f87472837c26b3bc91f9767c7adcfb935d0c097937c6744250672cd8c36019d"}, + {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7244fb0d0b87499becc29051b82925e0daf3838e6c352e6b2d62e0f969b090af"}, + {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deb8550f487de756f1c24c56fa2c8451a53c0346868c13899c6b3a39b1f3d2c3"}, + {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f959c1319b7e6ed3367b0f5a54a7b9c59063bd053c74278b27999db013e568df"}, + {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f40897f6f341e03a945759fcdb2208dc7c64dc312386d3088c47b78fca2a3b2"}, + {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:68336dfbe00efebbb1d02b8aa00b570dceec5d03fbd818c620aa246a8f5e5409"}, + {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:886b3bf8fa99510836107097a5e5a2bd81631d3795dedc5684e25bef6538ac39"}, + {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f94b4a3500345de5853d1896b7e770ce4a6577a431f43ff7d8f05f9051aeb7d"}, + {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9dd7dbdfc24ed309af96be170c9030f43713950afab2b4bed1d372a91b37cbb0"}, + {file = "cytoolz-0.12.0-cp39-cp39-win32.whl", hash = "sha256:ed8771e36430fb0e4398030569bdab1419e4e74f7bcd51ea57239aa95441983a"}, + {file = "cytoolz-0.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:a15157f4280f6e5d7c2d0892847a6c4dffbd2c5cefccaf1ac1f1c6c3d2cf9936"}, + {file = "cytoolz-0.12.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ae403cac13c2b9a2a92e56468ca1f822899b64d75d5be8ca802f1c14870d9133"}, + {file = "cytoolz-0.12.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ff74cb0e1a50de7f59e54a156dfd734b6593008f6f804d0726a73b89d170cd"}, + {file = "cytoolz-0.12.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f24e70d29223cde8ce3f5aefa7fd06bda12ae4386dcfbc726773e95b099cde0d"}, + {file = "cytoolz-0.12.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a79658fd264c5f82ea1b5cb45cf3899afabd9ec3e58c333bea042a2b4a94134"}, + {file = "cytoolz-0.12.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ef4a496a3175aec595ae24ad03e0bb2fe76401f8f79e7ef3d344533ba990ec0e"}, + {file = "cytoolz-0.12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb0fc2ed8efa89f31ffa99246b1d434ff3db2b7b7e35147486172da849c8024a"}, + {file = "cytoolz-0.12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59263f296e043d4210dd34f91e6f11c4b20e6195976da23170d5ad056030258a"}, + {file = "cytoolz-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274bc965cd93d6fa0bfe6f770cf6549bbe58d7b0a48dd6893d3f2c4b495d7f95"}, + {file = "cytoolz-0.12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8feb4d056c22983723278160aff8a28c507b0e942768f4e856539a60e7bb874"}, + {file = "cytoolz-0.12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09f5652caeac85e3735bd5aaed49ebf4eeb7c0f15cb9b7c4a5fb6f45308dc2fd"}, + {file = "cytoolz-0.12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8060be3b1fa24a4e3b165ce3c0ee6048f5e181289af57dbd9e3c4d4b8545dd78"}, + {file = "cytoolz-0.12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e32292721f16516a574891a1af6760cba37a0f426a2b2cea6f9d560131a76ea"}, + {file = "cytoolz-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6aade6ebb4507330b0540af58dc2804415945611e90c70bb97360973e487c48a"}, + {file = "cytoolz-0.12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f909760f89a54d860cf960b4cd828f9f6301fb104cd0de5b15b16822c9c4828b"}, + {file = "cytoolz-0.12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8e69c9f3a32e0f9331cf6707a0f159c6dec0ff2a9f41507f6b2d06cd423f0d0"}, + {file = "cytoolz-0.12.0.tar.gz", hash = "sha256:c105b05f85e03fbcd60244375968e62e44fe798c15a3531c922d531018d22412"}, +] +darglint = [ + {file = "darglint-1.8.1-py3-none-any.whl", hash = "sha256:5ae11c259c17b0701618a20c3da343a3eb98b3bc4b5a83d31cdd94f5ebdced8d"}, + {file = "darglint-1.8.1.tar.gz", hash = "sha256:080d5106df149b199822e7ee7deb9c012b49891538f14a11be681044f0bb20da"}, +] +defusedxml = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] +Deprecated = [ + {file = "Deprecated-1.2.10-py2.py3-none-any.whl", hash = "sha256:a766c1dccb30c5f6eb2b203f87edd1d8588847709c78589e1521d769addc8218"}, + {file = "Deprecated-1.2.10.tar.gz", hash = "sha256:525ba66fb5f90b07169fdd48b6373c18f1ee12728ca277ca44567a367d9d7f74"}, +] +distlib = [ + {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, + {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, +] +docker = [ + {file = "docker-4.2.0-py2.py3-none-any.whl", hash = "sha256:1c2ddb7a047b2599d1faec00889561316c674f7099427b9c51e8cb804114b553"}, + {file = "docker-4.2.0.tar.gz", hash = "sha256:ddae66620ab5f4bce769f64bcd7934f880c8abe6aa50986298db56735d0f722e"}, +] +dparse = [ + {file = "dparse-0.6.2-py3-none-any.whl", hash = "sha256:8097076f1dd26c377f30d4745e6ec18fef42f3bf493933b842ac5bafad8c345f"}, + {file = "dparse-0.6.2.tar.gz", hash = "sha256:d45255bda21f998bc7ddf2afd5e62505ba6134756ba2d42a84c56b0826614dfe"}, +] +ecdsa = [ + {file = "ecdsa-0.16.1-py2.py3-none-any.whl", hash = "sha256:881fa5e12bb992972d3d1b3d4dfbe149ab76a89f13da02daa5ea1ec7dea6e747"}, + {file = "ecdsa-0.16.1.tar.gz", hash = "sha256:cfc046a2ddd425adbd1a78b3c46f0d1325c657811c0f45ecc3a0a6236c1e50ff"}, +] +ed25519-blake2b = [ + {file = "ed25519-blake2b-1.4.tar.gz", hash = "sha256:d1a1cb9032ec307ce95b41c619440fd4d3fcecc18f224035cc7d6dc7a7d8ef40"}, +] +entrypoints = [ + {file = "entrypoints-0.3-py2.py3-none-any.whl", hash = "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19"}, + {file = "entrypoints-0.3.tar.gz", hash = "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"}, +] +eradicate = [ + {file = "eradicate-1.0.tar.gz", hash = "sha256:4ffda82aae6fd49dfffa777a857cb758d77502a1f2e0f54c9ac5155a39d2d01a"}, +] +eth-abi = [ + {file = "eth_abi-2.2.0-py3-none-any.whl", hash = "sha256:8d018351b00e304113f50ffded9baf4b9c6ef1c7e4ddec71bd64048c1c5c438c"}, + {file = "eth_abi-2.2.0.tar.gz", hash = "sha256:d1bd16a911dd8fe45f1e6ed02099b4fceb8ae9ea741ab11b135cf288ada74a99"}, +] +eth-account = [ + {file = "eth-account-0.5.9.tar.gz", hash = "sha256:ee62e121d977ca452f600043338af36f9349aa1f8409c5096d75df6576c79f1b"}, + {file = "eth_account-0.5.9-py3-none-any.whl", hash = "sha256:42f9eefbf0e1c84a278bf27a25eccc2e0c20b18c17e2ab6f46044a534479e95a"}, +] +eth-hash = [ + {file = "eth-hash-0.3.3.tar.gz", hash = "sha256:8cde211519ff1a98b46e9057cb909f12ab62e263eb30a0a94e2f7e1f46ac67a0"}, + {file = "eth_hash-0.3.3-py3-none-any.whl", hash = "sha256:3c884e4f788b38cc92cff05c4e43bc6b82686066f04ecfae0e11cdcbe5a283bd"}, +] +eth-keyfile = [ + {file = "eth-keyfile-0.5.1.tar.gz", hash = "sha256:939540efb503380bc30d926833e6a12b22c6750de80feef3720d79e5a79de47d"}, + {file = "eth_keyfile-0.5.1-py3-none-any.whl", hash = "sha256:70d734af17efdf929a90bb95375f43522be4ed80c3b9e0a8bca575fb11cd1159"}, +] +eth-keys = [ + {file = "eth-keys-0.3.4.tar.gz", hash = "sha256:e5590797f5e2930086c705a6dd1ac14397f74f19bdcd1b5f837475554f354ad8"}, + {file = "eth_keys-0.3.4-py3-none-any.whl", hash = "sha256:565bf62179b8143bcbd302a0ec6c49882d9c7678f9e6ab0484a8a5725f5ef10e"}, +] +eth-rlp = [ + {file = "eth-rlp-0.2.1.tar.gz", hash = "sha256:f016f980b0ed42ee7650ba6e4e4d3c4e9aa06d8b9c6825a36d3afe5aa0187a8b"}, + {file = "eth_rlp-0.2.1-py3-none-any.whl", hash = "sha256:cc389ef8d7b6f76a98f90bcdbff1b8684b3a78f53d47e871191b50d4d6aee5a1"}, +] +eth-typing = [ + {file = "eth-typing-2.3.0.tar.gz", hash = "sha256:39cce97f401f082739b19258dfa3355101c64390914c73fe2b90012f443e0dc7"}, + {file = "eth_typing-2.3.0-py3-none-any.whl", hash = "sha256:b7fa58635c1cb0cbf538b2f5f1e66139575ea4853eac1d6000f0961a4b277422"}, +] +eth-utils = [ + {file = "eth-utils-1.10.0.tar.gz", hash = "sha256:bf82762a46978714190b0370265a7148c954d3f0adaa31c6f085ea375e4c61af"}, + {file = "eth_utils-1.10.0-py3-none-any.whl", hash = "sha256:74240a8c6f652d085ed3c85f5f1654203d2f10ff9062f83b3bad0a12ff321c7a"}, +] +filelock = [ + {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, + {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, +] +flake8 = [ + {file = "flake8-3.7.9-py2.py3-none-any.whl", hash = "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca"}, + {file = "flake8-3.7.9.tar.gz", hash = "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb"}, +] +flake8-bugbear = [ + {file = "flake8-bugbear-20.1.4.tar.gz", hash = "sha256:bd02e4b009fb153fe6072c31c52aeab5b133d508095befb2ffcf3b41c4823162"}, + {file = "flake8_bugbear-20.1.4-py36.py37.py38-none-any.whl", hash = "sha256:a3ddc03ec28ba2296fc6f89444d1c946a6b76460f859795b35b77d4920a51b63"}, +] +flake8-docstrings = [ + {file = "flake8-docstrings-1.6.0.tar.gz", hash = "sha256:9fe7c6a306064af8e62a055c2f61e9eb1da55f84bb39caef2b84ce53708ac34b"}, + {file = "flake8_docstrings-1.6.0-py2.py3-none-any.whl", hash = "sha256:99cac583d6c7e32dd28bbfbef120a7c0d1b6dde4adb5a9fd441c4227a6534bde"}, +] +flake8-eradicate = [ + {file = "flake8-eradicate-0.4.0.tar.gz", hash = "sha256:be5ea4521dfd4cb76837635f9ace57e12a7336c4b82054c99fd0394c00eef8ce"}, + {file = "flake8_eradicate-0.4.0-py3-none-any.whl", hash = "sha256:804a39aef145c193e8d77770efc45df82e631b29c4456ecb5ff2e2e5996cf09a"}, +] +flake8-isort = [ + {file = "flake8-isort-4.0.0.tar.gz", hash = "sha256:2b91300f4f1926b396c2c90185844eb1a3d5ec39ea6138832d119da0a208f4d9"}, + {file = "flake8_isort-4.0.0-py2.py3-none-any.whl", hash = "sha256:729cd6ef9ba3659512dee337687c05d79c78e1215fdf921ed67e5fe46cce2f3c"}, +] +flatbuffers = [ + {file = "flatbuffers-22.9.24-py2.py3-none-any.whl", hash = "sha256:fc30f024e2eee55922d610f4d68626002fcd3c8f87d8058ec5ae9edd86993bcb"}, +] +frozenlist = [ + {file = "frozenlist-1.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5f271c93f001748fc26ddea409241312a75e13466b06c94798d1a341cf0e6989"}, + {file = "frozenlist-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c6ef8014b842f01f5d2b55315f1af5cbfde284eb184075c189fd657c2fd8204"}, + {file = "frozenlist-1.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:219a9676e2eae91cb5cc695a78b4cb43d8123e4160441d2b6ce8d2c70c60e2f3"}, + {file = "frozenlist-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b47d64cdd973aede3dd71a9364742c542587db214e63b7529fbb487ed67cddd9"}, + {file = "frozenlist-1.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2af6f7a4e93f5d08ee3f9152bce41a6015b5cf87546cb63872cc19b45476e98a"}, + {file = "frozenlist-1.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a718b427ff781c4f4e975525edb092ee2cdef6a9e7bc49e15063b088961806f8"}, + {file = "frozenlist-1.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c56c299602c70bc1bb5d1e75f7d8c007ca40c9d7aebaf6e4ba52925d88ef826d"}, + {file = "frozenlist-1.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717470bfafbb9d9be624da7780c4296aa7935294bd43a075139c3d55659038ca"}, + {file = "frozenlist-1.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:31b44f1feb3630146cffe56344704b730c33e042ffc78d21f2125a6a91168131"}, + {file = "frozenlist-1.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c3b31180b82c519b8926e629bf9f19952c743e089c41380ddca5db556817b221"}, + {file = "frozenlist-1.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d82bed73544e91fb081ab93e3725e45dd8515c675c0e9926b4e1f420a93a6ab9"}, + {file = "frozenlist-1.3.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49459f193324fbd6413e8e03bd65789e5198a9fa3095e03f3620dee2f2dabff2"}, + {file = "frozenlist-1.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:94e680aeedc7fd3b892b6fa8395b7b7cc4b344046c065ed4e7a1e390084e8cb5"}, + {file = "frozenlist-1.3.1-cp310-cp310-win32.whl", hash = "sha256:fabb953ab913dadc1ff9dcc3a7a7d3dc6a92efab3a0373989b8063347f8705be"}, + {file = "frozenlist-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:eee0c5ecb58296580fc495ac99b003f64f82a74f9576a244d04978a7e97166db"}, + {file = "frozenlist-1.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0bc75692fb3770cf2b5856a6c2c9de967ca744863c5e89595df64e252e4b3944"}, + {file = "frozenlist-1.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086ca1ac0a40e722d6833d4ce74f5bf1aba2c77cbfdc0cd83722ffea6da52a04"}, + {file = "frozenlist-1.3.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b51eb355e7f813bcda00276b0114c4172872dc5fb30e3fea059b9367c18fbcb"}, + {file = "frozenlist-1.3.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74140933d45271c1a1283f708c35187f94e1256079b3c43f0c2267f9db5845ff"}, + {file = "frozenlist-1.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee4c5120ddf7d4dd1eaf079af3af7102b56d919fa13ad55600a4e0ebe532779b"}, + {file = "frozenlist-1.3.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97d9e00f3ac7c18e685320601f91468ec06c58acc185d18bb8e511f196c8d4b2"}, + {file = "frozenlist-1.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e19add867cebfb249b4e7beac382d33215d6d54476bb6be46b01f8cafb4878b"}, + {file = "frozenlist-1.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a027f8f723d07c3f21963caa7d585dcc9b089335565dabe9c814b5f70c52705a"}, + {file = "frozenlist-1.3.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:61d7857950a3139bce035ad0b0945f839532987dfb4c06cfe160254f4d19df03"}, + {file = "frozenlist-1.3.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:53b2b45052e7149ee8b96067793db8ecc1ae1111f2f96fe1f88ea5ad5fd92d10"}, + {file = "frozenlist-1.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bbb1a71b1784e68870800b1bc9f3313918edc63dbb8f29fbd2e767ce5821696c"}, + {file = "frozenlist-1.3.1-cp37-cp37m-win32.whl", hash = "sha256:ab6fa8c7871877810e1b4e9392c187a60611fbf0226a9e0b11b7b92f5ac72792"}, + {file = "frozenlist-1.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f89139662cc4e65a4813f4babb9ca9544e42bddb823d2ec434e18dad582543bc"}, + {file = "frozenlist-1.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4c0c99e31491a1d92cde8648f2e7ccad0e9abb181f6ac3ddb9fc48b63301808e"}, + {file = "frozenlist-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:61e8cb51fba9f1f33887e22488bad1e28dd8325b72425f04517a4d285a04c519"}, + {file = "frozenlist-1.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc2f3e368ee5242a2cbe28323a866656006382872c40869b49b265add546703f"}, + {file = "frozenlist-1.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58fb94a01414cddcdc6839807db77ae8057d02ddafc94a42faee6004e46c9ba8"}, + {file = "frozenlist-1.3.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:022178b277cb9277d7d3b3f2762d294f15e85cd2534047e68a118c2bb0058f3e"}, + {file = "frozenlist-1.3.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:572ce381e9fe027ad5e055f143763637dcbac2542cfe27f1d688846baeef5170"}, + {file = "frozenlist-1.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19127f8dcbc157ccb14c30e6f00392f372ddb64a6ffa7106b26ff2196477ee9f"}, + {file = "frozenlist-1.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42719a8bd3792744c9b523674b752091a7962d0d2d117f0b417a3eba97d1164b"}, + {file = "frozenlist-1.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2743bb63095ef306041c8f8ea22bd6e4d91adabf41887b1ad7886c4c1eb43d5f"}, + {file = "frozenlist-1.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:fa47319a10e0a076709644a0efbcaab9e91902c8bd8ef74c6adb19d320f69b83"}, + {file = "frozenlist-1.3.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52137f0aea43e1993264a5180c467a08a3e372ca9d378244c2d86133f948b26b"}, + {file = "frozenlist-1.3.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:f5abc8b4d0c5b556ed8cd41490b606fe99293175a82b98e652c3f2711b452988"}, + {file = "frozenlist-1.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1e1cf7bc8cbbe6ce3881863671bac258b7d6bfc3706c600008925fb799a256e2"}, + {file = "frozenlist-1.3.1-cp38-cp38-win32.whl", hash = "sha256:0dde791b9b97f189874d654c55c24bf7b6782343e14909c84beebd28b7217845"}, + {file = "frozenlist-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:9494122bf39da6422b0972c4579e248867b6b1b50c9b05df7e04a3f30b9a413d"}, + {file = "frozenlist-1.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:31bf9539284f39ff9398deabf5561c2b0da5bb475590b4e13dd8b268d7a3c5c1"}, + {file = "frozenlist-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e0c8c803f2f8db7217898d11657cb6042b9b0553a997c4a0601f48a691480fab"}, + {file = "frozenlist-1.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da5ba7b59d954f1f214d352308d1d86994d713b13edd4b24a556bcc43d2ddbc3"}, + {file = "frozenlist-1.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74e6b2b456f21fc93ce1aff2b9728049f1464428ee2c9752a4b4f61e98c4db96"}, + {file = "frozenlist-1.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:526d5f20e954d103b1d47232e3839f3453c02077b74203e43407b962ab131e7b"}, + {file = "frozenlist-1.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b499c6abe62a7a8d023e2c4b2834fce78a6115856ae95522f2f974139814538c"}, + {file = "frozenlist-1.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab386503f53bbbc64d1ad4b6865bf001414930841a870fc97f1546d4d133f141"}, + {file = "frozenlist-1.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f63c308f82a7954bf8263a6e6de0adc67c48a8b484fab18ff87f349af356efd"}, + {file = "frozenlist-1.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:12607804084d2244a7bd4685c9d0dca5df17a6a926d4f1967aa7978b1028f89f"}, + {file = "frozenlist-1.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:da1cdfa96425cbe51f8afa43e392366ed0b36ce398f08b60de6b97e3ed4affef"}, + {file = "frozenlist-1.3.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f810e764617b0748b49a731ffaa525d9bb36ff38332411704c2400125af859a6"}, + {file = "frozenlist-1.3.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:35c3d79b81908579beb1fb4e7fcd802b7b4921f1b66055af2578ff7734711cfa"}, + {file = "frozenlist-1.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c92deb5d9acce226a501b77307b3b60b264ca21862bd7d3e0c1f3594022f01bc"}, + {file = "frozenlist-1.3.1-cp39-cp39-win32.whl", hash = "sha256:5e77a8bd41e54b05e4fb2708dc6ce28ee70325f8c6f50f3df86a44ecb1d7a19b"}, + {file = "frozenlist-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:625d8472c67f2d96f9a4302a947f92a7adbc1e20bedb6aff8dbc8ff039ca6189"}, + {file = "frozenlist-1.3.1.tar.gz", hash = "sha256:3a735e4211a04ccfa3f4833547acdf5d2f863bfeb01cfd3edaffbc251f15cec8"}, +] +future = [ + {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, +] +gast = [ + {file = "gast-0.4.0-py3-none-any.whl", hash = "sha256:b7adcdd5adbebf1adf17378da5ba3f543684dbec47b1cda1f3997e573cd542c4"}, + {file = "gast-0.4.0.tar.gz", hash = "sha256:40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1"}, +] +ghp-import = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] +gitdb = [ + {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, + {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, +] +GitPython = [ + {file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"}, + {file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"}, +] +google-api-core = [ + {file = "google-api-core-2.8.2.tar.gz", hash = "sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc"}, + {file = "google_api_core-2.8.2-py3-none-any.whl", hash = "sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50"}, +] +google-api-python-client = [ + {file = "google-api-python-client-2.64.0.tar.gz", hash = "sha256:0dc4c967a5c795e981af01340f1bd22173a986534de968b5456cb208ed6775a6"}, + {file = "google_api_python_client-2.64.0-py2.py3-none-any.whl", hash = "sha256:90545cd71969f8bcf15a6362c2a8c44c38b94ec35a88cfd60cf2c0df68a5eb74"}, +] +google-auth = [ + {file = "google-auth-2.12.0.tar.gz", hash = "sha256:f12d86502ce0f2c0174e2e70ecc8d36c69593817e67e1d9c5e34489120422e4b"}, + {file = "google_auth-2.12.0-py2.py3-none-any.whl", hash = "sha256:98f601773978c969e1769f97265e732a81a8e598da3263895023958d456ee625"}, +] +google-auth-httplib2 = [ + {file = "google-auth-httplib2-0.1.0.tar.gz", hash = "sha256:a07c39fd632becacd3f07718dfd6021bf396978f03ad3ce4321d060015cc30ac"}, + {file = "google_auth_httplib2-0.1.0-py2.py3-none-any.whl", hash = "sha256:31e49c36c6b5643b57e82617cb3e021e3e1d2df9da63af67252c02fa9c1f4a10"}, +] +google-auth-oauthlib = [ + {file = "google-auth-oauthlib-0.4.6.tar.gz", hash = "sha256:a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a"}, + {file = "google_auth_oauthlib-0.4.6-py2.py3-none-any.whl", hash = "sha256:3f2a6e802eebbb6fb736a370fbf3b055edcb6b52878bf2f26330b5e041316c73"}, +] +google-pasta = [ + {file = "google-pasta-0.2.0.tar.gz", hash = "sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e"}, + {file = "google_pasta-0.2.0-py2-none-any.whl", hash = "sha256:4612951da876b1a10fe3960d7226f0c7682cf901e16ac06e473b267a5afa8954"}, + {file = "google_pasta-0.2.0-py3-none-any.whl", hash = "sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed"}, +] +googleapis-common-protos = [ + {file = "googleapis-common-protos-1.56.4.tar.gz", hash = "sha256:c25873c47279387cfdcbdafa36149887901d36202cb645a0e4f29686bf6e4417"}, + {file = "googleapis_common_protos-1.56.4-py2.py3-none-any.whl", hash = "sha256:8eb2cbc91b69feaf23e32452a7ae60e791e09967d81d4fcc7fc388182d1bd394"}, +] +graphviz = [ + {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, + {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, +] +greenlet = [ + {file = "greenlet-1.1.3.post0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:949c9061b8c6d3e6e439466a9be1e787208dec6246f4ec5fffe9677b4c19fcc3"}, + {file = "greenlet-1.1.3.post0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:d7815e1519a8361c5ea2a7a5864945906f8e386fa1bc26797b4d443ab11a4589"}, + {file = "greenlet-1.1.3.post0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:9649891ab4153f217f319914455ccf0b86986b55fc0573ce803eb998ad7d6854"}, + {file = "greenlet-1.1.3.post0-cp27-cp27m-win32.whl", hash = "sha256:11fc7692d95cc7a6a8447bb160d98671ab291e0a8ea90572d582d57361360f05"}, + {file = "greenlet-1.1.3.post0-cp27-cp27m-win_amd64.whl", hash = "sha256:05ae7383f968bba4211b1fbfc90158f8e3da86804878442b4fb6c16ccbcaa519"}, + {file = "greenlet-1.1.3.post0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ccbe7129a282ec5797df0451ca1802f11578be018a32979131065565da89b392"}, + {file = "greenlet-1.1.3.post0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:4a8b58232f5b72973350c2b917ea3df0bebd07c3c82a0a0e34775fc2c1f857e9"}, + {file = "greenlet-1.1.3.post0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:f6661b58412879a2aa099abb26d3c93e91dedaba55a6394d1fb1512a77e85de9"}, + {file = "greenlet-1.1.3.post0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c6e942ca9835c0b97814d14f78da453241837419e0d26f7403058e8db3e38f8"}, + {file = "greenlet-1.1.3.post0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a812df7282a8fc717eafd487fccc5ba40ea83bb5b13eb3c90c446d88dbdfd2be"}, + {file = "greenlet-1.1.3.post0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83a7a6560df073ec9de2b7cb685b199dfd12519bc0020c62db9d1bb522f989fa"}, + {file = "greenlet-1.1.3.post0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:17a69967561269b691747e7f436d75a4def47e5efcbc3c573180fc828e176d80"}, + {file = "greenlet-1.1.3.post0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:60839ab4ea7de6139a3be35b77e22e0398c270020050458b3d25db4c7c394df5"}, + {file = "greenlet-1.1.3.post0-cp310-cp310-win_amd64.whl", hash = "sha256:8926a78192b8b73c936f3e87929931455a6a6c6c385448a07b9f7d1072c19ff3"}, + {file = "greenlet-1.1.3.post0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:c6f90234e4438062d6d09f7d667f79edcc7c5e354ba3a145ff98176f974b8132"}, + {file = "greenlet-1.1.3.post0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:814f26b864ed2230d3a7efe0336f5766ad012f94aad6ba43a7c54ca88dd77cba"}, + {file = "greenlet-1.1.3.post0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8fda1139d87ce5f7bd80e80e54f9f2c6fe2f47983f1a6f128c47bf310197deb6"}, + {file = "greenlet-1.1.3.post0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0643250dd0756f4960633f5359884f609a234d4066686754e834073d84e9b51"}, + {file = "greenlet-1.1.3.post0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cb863057bed786f6622982fb8b2c122c68e6e9eddccaa9fa98fd937e45ee6c4f"}, + {file = "greenlet-1.1.3.post0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8c0581077cf2734569f3e500fab09c0ff6a2ab99b1afcacbad09b3c2843ae743"}, + {file = "greenlet-1.1.3.post0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:695d0d8b5ae42c800f1763c9fce9d7b94ae3b878919379150ee5ba458a460d57"}, + {file = "greenlet-1.1.3.post0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:5662492df0588a51d5690f6578f3bbbd803e7f8d99a99f3bf6128a401be9c269"}, + {file = "greenlet-1.1.3.post0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:bffba15cff4802ff493d6edcf20d7f94ab1c2aee7cfc1e1c7627c05f1102eee8"}, + {file = "greenlet-1.1.3.post0-cp35-cp35m-win32.whl", hash = "sha256:7afa706510ab079fd6d039cc6e369d4535a48e202d042c32e2097f030a16450f"}, + {file = "greenlet-1.1.3.post0-cp35-cp35m-win_amd64.whl", hash = "sha256:3a24f3213579dc8459e485e333330a921f579543a5214dbc935bc0763474ece3"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:64e10f303ea354500c927da5b59c3802196a07468332d292aef9ddaca08d03dd"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:eb6ac495dccb1520667cfea50d89e26f9ffb49fa28496dea2b95720d8b45eb54"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:88720794390002b0c8fa29e9602b395093a9a766b229a847e8d88349e418b28a"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39464518a2abe9c505a727af7c0b4efff2cf242aa168be5f0daa47649f4d7ca8"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0914f02fcaa8f84f13b2df4a81645d9e82de21ed95633765dd5cc4d3af9d7403"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96656c5f7c95fc02c36d4f6ef32f4e94bb0b6b36e6a002c21c39785a4eec5f5d"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4f74aa0092602da2069df0bc6553919a15169d77bcdab52a21f8c5242898f519"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:3aeac044c324c1a4027dca0cde550bd83a0c0fbff7ef2c98df9e718a5086c194"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-win32.whl", hash = "sha256:fe7c51f8a2ab616cb34bc33d810c887e89117771028e1e3d3b77ca25ddeace04"}, + {file = "greenlet-1.1.3.post0-cp36-cp36m-win_amd64.whl", hash = "sha256:70048d7b2c07c5eadf8393e6398595591df5f59a2f26abc2f81abca09610492f"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:66aa4e9a726b70bcbfcc446b7ba89c8cec40f405e51422c39f42dfa206a96a05"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:025b8de2273d2809f027d347aa2541651d2e15d593bbce0d5f502ca438c54136"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:82a38d7d2077128a017094aff334e67e26194f46bd709f9dcdacbf3835d47ef5"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7d20c3267385236b4ce54575cc8e9f43e7673fc761b069c820097092e318e3b"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8ece5d1a99a2adcb38f69af2f07d96fb615415d32820108cd340361f590d128"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2794eef1b04b5ba8948c72cc606aab62ac4b0c538b14806d9c0d88afd0576d6b"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a8d24eb5cb67996fb84633fdc96dbc04f2d8b12bfcb20ab3222d6be271616b67"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0120a879aa2b1ac5118bce959ea2492ba18783f65ea15821680a256dfad04754"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-win32.whl", hash = "sha256:bef49c07fcb411c942da6ee7d7ea37430f830c482bf6e4b72d92fd506dd3a427"}, + {file = "greenlet-1.1.3.post0-cp37-cp37m-win_amd64.whl", hash = "sha256:62723e7eb85fa52e536e516ee2ac91433c7bb60d51099293671815ff49ed1c21"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:d25cdedd72aa2271b984af54294e9527306966ec18963fd032cc851a725ddc1b"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:924df1e7e5db27d19b1359dc7d052a917529c95ba5b8b62f4af611176da7c8ad"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:ec615d2912b9ad807afd3be80bf32711c0ff9c2b00aa004a45fd5d5dde7853d9"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0971d37ae0eaf42344e8610d340aa0ad3d06cd2eee381891a10fe771879791f9"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:325f272eb997916b4a3fc1fea7313a8adb760934c2140ce13a2117e1b0a8095d"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d75afcbb214d429dacdf75e03a1d6d6c5bd1fa9c35e360df8ea5b6270fb2211c"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5c2d21c2b768d8c86ad935e404cc78c30d53dea009609c3ef3a9d49970c864b5"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:467b73ce5dcd89e381292fb4314aede9b12906c18fab903f995b86034d96d5c8"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-win32.whl", hash = "sha256:8149a6865b14c33be7ae760bcdb73548bb01e8e47ae15e013bf7ef9290ca309a"}, + {file = "greenlet-1.1.3.post0-cp38-cp38-win_amd64.whl", hash = "sha256:104f29dd822be678ef6b16bf0035dcd43206a8a48668a6cae4d2fe9c7a7abdeb"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:c8c9301e3274276d3d20ab6335aa7c5d9e5da2009cccb01127bddb5c951f8870"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:8415239c68b2ec9de10a5adf1130ee9cb0ebd3e19573c55ba160ff0ca809e012"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:3c22998bfef3fcc1b15694818fc9b1b87c6cc8398198b96b6d355a7bcb8c934e"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0aa1845944e62f358d63fcc911ad3b415f585612946b8edc824825929b40e59e"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:890f633dc8cb307761ec566bc0b4e350a93ddd77dc172839be122be12bae3e10"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cf37343e43404699d58808e51f347f57efd3010cc7cee134cdb9141bd1ad9ea"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5edf75e7fcfa9725064ae0d8407c849456553a181ebefedb7606bac19aa1478b"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a954002064ee919b444b19c1185e8cce307a1f20600f47d6f4b6d336972c809"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-win32.whl", hash = "sha256:2ccdc818cc106cc238ff7eba0d71b9c77be868fdca31d6c3b1347a54c9b187b2"}, + {file = "greenlet-1.1.3.post0-cp39-cp39-win_amd64.whl", hash = "sha256:91a84faf718e6f8b888ca63d0b2d6d185c8e2a198d2a7322d75c303e7097c8b7"}, + {file = "greenlet-1.1.3.post0.tar.gz", hash = "sha256:f5e09dc5c6e1796969fd4b775ea1417d70e49a5df29aaa8e5d10675d9e11872c"}, +] +grpcio = [ + {file = "grpcio-1.49.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:fd86040232e805b8e6378b2348c928490ee595b058ce9aaa27ed8e4b0f172b20"}, + {file = "grpcio-1.49.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6fd0c9cede9552bf00f8c5791d257d5bf3790d7057b26c59df08be5e7a1e021d"}, + {file = "grpcio-1.49.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:d0d402e158d4e84e49c158cb5204119d55e1baf363ee98d6cb5dce321c3a065d"}, + {file = "grpcio-1.49.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ceec743d42a627e64ea266059a62d214c5a3cdfcd0d7fe2b7a8e4e82527c7"}, + {file = "grpcio-1.49.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2106d9c16527f0a85e2eea6e6b91a74fc99579c60dd810d8690843ea02bc0f5f"}, + {file = "grpcio-1.49.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:52dd02b7e7868233c571b49bc38ebd347c3bb1ff8907bb0cb74cb5f00c790afc"}, + {file = "grpcio-1.49.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:120fecba2ec5d14b5a15d11063b39783fda8dc8d24addd83196acb6582cabd9b"}, + {file = "grpcio-1.49.1-cp310-cp310-win32.whl", hash = "sha256:f1a3b88e3c53c1a6e6bed635ec1bbb92201bb6a1f2db186179f7f3f244829788"}, + {file = "grpcio-1.49.1-cp310-cp310-win_amd64.whl", hash = "sha256:a7d0017b92d3850abea87c1bdec6ea41104e71c77bca44c3e17f175c6700af62"}, + {file = "grpcio-1.49.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:9fb17ff8c0d56099ac6ebfa84f670c5a62228d6b5c695cf21c02160c2ac1446b"}, + {file = "grpcio-1.49.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:075f2d06e3db6b48a2157a1bcd52d6cbdca980dd18988fe6afdb41795d51625f"}, + {file = "grpcio-1.49.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46d93a1b4572b461a227f1db6b8d35a88952db1c47e5fadcf8b8a2f0e1dd9201"}, + {file = "grpcio-1.49.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc79b2b37d779ac42341ddef40ad5bf0966a64af412c89fc2b062e3ddabb093f"}, + {file = "grpcio-1.49.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5f8b3a971c7820ea9878f3fd70086240a36aeee15d1b7e9ecbc2743b0e785568"}, + {file = "grpcio-1.49.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49b301740cf5bc8fed4fee4c877570189ae3951432d79fa8e524b09353659811"}, + {file = "grpcio-1.49.1-cp311-cp311-win32.whl", hash = "sha256:1c66a25afc6c71d357867b341da594a5587db5849b48f4b7d5908d236bb62ede"}, + {file = "grpcio-1.49.1-cp311-cp311-win_amd64.whl", hash = "sha256:6b6c3a95d27846f4145d6967899b3ab25fffc6ae99544415e1adcacef84842d2"}, + {file = "grpcio-1.49.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:1cc400c8a2173d1c042997d98a9563e12d9bb3fb6ad36b7f355bc77c7663b8af"}, + {file = "grpcio-1.49.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:34f736bd4d0deae90015c0e383885b431444fe6b6c591dea288173df20603146"}, + {file = "grpcio-1.49.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:196082b9c89ebf0961dcd77cb114bed8171964c8e3063b9da2fb33536a6938ed"}, + {file = "grpcio-1.49.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c9f89c42749890618cd3c2464e1fbf88446e3d2f67f1e334c8e5db2f3272bbd"}, + {file = "grpcio-1.49.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64419cb8a5b612cdb1550c2fd4acbb7d4fb263556cf4625f25522337e461509e"}, + {file = "grpcio-1.49.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8a5272061826e6164f96e3255405ef6f73b88fd3e8bef464c7d061af8585ac62"}, + {file = "grpcio-1.49.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ea9d0172445241ad7cb49577314e39d0af2c5267395b3561d7ced5d70458a9f3"}, + {file = "grpcio-1.49.1-cp37-cp37m-win32.whl", hash = "sha256:2070e87d95991473244c72d96d13596c751cb35558e11f5df5414981e7ed2492"}, + {file = "grpcio-1.49.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fcedcab49baaa9db4a2d240ac81f2d57eb0052b1c6a9501b46b8ae912720fbf"}, + {file = "grpcio-1.49.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:afbb3475cf7f4f7d380c2ca37ee826e51974f3e2665613996a91d6a58583a534"}, + {file = "grpcio-1.49.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a4f9ba141380abde6c3adc1727f21529137a2552002243fa87c41a07e528245c"}, + {file = "grpcio-1.49.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:cf0a1fb18a7204b9c44623dfbd1465b363236ce70c7a4ed30402f9f60d8b743b"}, + {file = "grpcio-1.49.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:17bb6fe72784b630728c6cff9c9d10ccc3b6d04e85da6e0a7b27fb1d135fac62"}, + {file = "grpcio-1.49.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18305d5a082d1593b005a895c10041f833b16788e88b02bb81061f5ebcc465df"}, + {file = "grpcio-1.49.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b6a1b39e59ac5a3067794a0e498911cf2e37e4b19ee9e9977dc5e7051714f13f"}, + {file = "grpcio-1.49.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0e20d59aafc086b1cc68400463bddda6e41d3e5ed30851d1e2e0f6a2e7e342d3"}, + {file = "grpcio-1.49.1-cp38-cp38-win32.whl", hash = "sha256:e1e83233d4680863a421f3ee4a7a9b80d33cd27ee9ed7593bc93f6128302d3f2"}, + {file = "grpcio-1.49.1-cp38-cp38-win_amd64.whl", hash = "sha256:221d42c654d2a41fa31323216279c73ed17d92f533bc140a3390cc1bd78bf63c"}, + {file = "grpcio-1.49.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:fa9e6e61391e99708ac87fc3436f6b7b9c6b845dc4639b406e5e61901e1aacde"}, + {file = "grpcio-1.49.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9b449e966ef518ce9c860d21f8afe0b0f055220d95bc710301752ac1db96dd6a"}, + {file = "grpcio-1.49.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:aa34d2ad9f24e47fa9a3172801c676e4037d862247e39030165fe83821a7aafd"}, + {file = "grpcio-1.49.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5207f4eed1b775d264fcfe379d8541e1c43b878f2b63c0698f8f5c56c40f3d68"}, + {file = "grpcio-1.49.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b24a74651438d45619ac67004638856f76cc13d78b7478f2457754cbcb1c8ad"}, + {file = "grpcio-1.49.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fe763781669790dc8b9618e7e677c839c87eae6cf28b655ee1fa69ae04eea03f"}, + {file = "grpcio-1.49.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2f2ff7ba0f8f431f32d4b4bc3a3713426949d3533b08466c4ff1b2b475932ca8"}, + {file = "grpcio-1.49.1-cp39-cp39-win32.whl", hash = "sha256:08ff74aec8ff457a89b97152d36cb811dcc1d17cd5a92a65933524e363327394"}, + {file = "grpcio-1.49.1-cp39-cp39-win_amd64.whl", hash = "sha256:274ffbb39717918c514b35176510ae9be06e1d93121e84d50b350861dcb9a705"}, + {file = "grpcio-1.49.1.tar.gz", hash = "sha256:d4725fc9ec8e8822906ae26bb26f5546891aa7fbc3443de970cc556d43a5c99f"}, +] +gym = [ + {file = "gym-0.15.6.tar.gz", hash = "sha256:ed7ddc4d3a07da80f7865b0fa2a0659d2d898588269329994d4b0b320d27fd62"}, +] +h5py = [ + {file = "h5py-3.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d77af42cb751ad6cc44f11bae73075a07429a5cf2094dfde2b1e716e059b3911"}, + {file = "h5py-3.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63beb8b7b47d0896c50de6efb9a1eaa81dbe211f3767e7dd7db159cea51ba37a"}, + {file = "h5py-3.7.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04e2e1e2fc51b8873e972a08d2f89625ef999b1f2d276199011af57bb9fc7851"}, + {file = "h5py-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f73307c876af49aa869ec5df1818e9bb0bdcfcf8a5ba773cc45a4fba5a286a5c"}, + {file = "h5py-3.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:f514b24cacdd983e61f8d371edac8c1b780c279d0acb8485639e97339c866073"}, + {file = "h5py-3.7.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:43fed4d13743cf02798a9a03a360a88e589d81285e72b83f47d37bb64ed44881"}, + {file = "h5py-3.7.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c038399ce09a58ff8d89ec3e62f00aa7cb82d14f34e24735b920e2a811a3a426"}, + {file = "h5py-3.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03d64fb86bb86b978928bad923b64419a23e836499ec6363e305ad28afd9d287"}, + {file = "h5py-3.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e5b7820b75f9519499d76cc708e27242ccfdd9dfb511d6deb98701961d0445aa"}, + {file = "h5py-3.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a9351d729ea754db36d175098361b920573fdad334125f86ac1dd3a083355e20"}, + {file = "h5py-3.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6776d896fb90c5938de8acb925e057e2f9f28755f67ec3edcbc8344832616c38"}, + {file = "h5py-3.7.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0a047fddbe6951bce40e9cde63373c838a978c5e05a011a682db9ba6334b8e85"}, + {file = "h5py-3.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0798a9c0ff45f17d0192e4d7114d734cac9f8b2b2c76dd1d923c4d0923f27bb6"}, + {file = "h5py-3.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:0d8de8cb619fc597da7cf8cdcbf3b7ff8c5f6db836568afc7dc16d21f59b2b49"}, + {file = "h5py-3.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f084bbe816907dfe59006756f8f2d16d352faff2d107f4ffeb1d8de126fc5dc7"}, + {file = "h5py-3.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1fcb11a2dc8eb7ddcae08afd8fae02ba10467753a857fa07a404d700a93f3d53"}, + {file = "h5py-3.7.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ed43e2cc4f511756fd664fb45d6b66c3cbed4e3bd0f70e29c37809b2ae013c44"}, + {file = "h5py-3.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e7535df5ee3dc3e5d1f408fdfc0b33b46bc9b34db82743c82cd674d8239b9ad"}, + {file = "h5py-3.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:9e2ad2aa000f5b1e73b5dfe22f358ca46bf1a2b6ca394d9659874d7fc251731a"}, + {file = "h5py-3.7.0.tar.gz", hash = "sha256:3fcf37884383c5da64846ab510190720027dca0768def34dd8dcb659dbe5cbf3"}, +] +hexbytes = [ + {file = "hexbytes-0.3.0-py3-none-any.whl", hash = "sha256:21c3a5bd00a383097f0369c387174e79839d75c4ccc3a7edda315c9644f4458a"}, + {file = "hexbytes-0.3.0.tar.gz", hash = "sha256:afeebfb800f5f15a3ca5bab52e49eabcb4b6dac06ec8ff01a94fdb890c6c0712"}, +] +httplib2 = [ + {file = "httplib2-0.20.4-py3-none-any.whl", hash = "sha256:8b6a905cb1c79eefd03f8669fd993c36dc341f7c558f056cb5a33b5c2f458543"}, + {file = "httplib2-0.20.4.tar.gz", hash = "sha256:58a98e45b4b1a48273073f905d2961666ecf0fbac4250ea5b47aef259eb5c585"}, +] +idna = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] +imageio = [ + {file = "imageio-2.22.1-py3-none-any.whl", hash = "sha256:a8e7be75ebc3920e8c9a7dcc8e47b54331125fc0932d050df4af9a6f5904d472"}, + {file = "imageio-2.22.1.tar.gz", hash = "sha256:465ec35f919d538906d3023b61ccec766d8e7575fe55fcbd7669ece55afb97ca"}, +] +importlib-metadata = [ + {file = "importlib_metadata-4.13.0-py3-none-any.whl", hash = "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116"}, + {file = "importlib_metadata-4.13.0.tar.gz", hash = "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d"}, +] +importlib-resources = [ + {file = "importlib_resources-5.10.0-py3-none-any.whl", hash = "sha256:ee17ec648f85480d523596ce49eae8ead87d5631ae1551f913c0100b5edd3437"}, + {file = "importlib_resources-5.10.0.tar.gz", hash = "sha256:c01b1b94210d9849f286b86bb51bcea7cd56dde0600d8db721d7b81330711668"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +ipfshttpclient = [ + {file = "ipfshttpclient-0.8.0a2-py3-none-any.whl", hash = "sha256:ce6bac0e3963c4ced74d7eb6978125362bb05bbe219088ca48f369ce14d3cc39"}, + {file = "ipfshttpclient-0.8.0a2.tar.gz", hash = "sha256:0d80e95ee60b02c7d414e79bf81a36fc3c8fbab74265475c52f70b2620812135"}, +] +iso8601 = [ + {file = "iso8601-0.1.13-py2.py3-none-any.whl", hash = "sha256:694be0743e9f1535ea873bfc7bd6fb62380c62b75822761859428073a17fd39c"}, + {file = "iso8601-0.1.13-py3-none-any.whl", hash = "sha256:6f02f01dd13320a7f280e58516dc8d1950dfaf77527cc365a398cd9de4d3c692"}, + {file = "iso8601-0.1.13.tar.gz", hash = "sha256:f7dec22af52025d4526be94cc1303c7d8f5379b746a3f54a8c8446384392eeb1"}, +] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] +Jinja2 = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] +jsonschema = [ + {file = "jsonschema-4.16.0-py3-none-any.whl", hash = "sha256:9e74b8f9738d6a946d70705dc692b74b5429cd0960d58e79ffecfc43b2221eb9"}, + {file = "jsonschema-4.16.0.tar.gz", hash = "sha256:165059f076eff6971bae5b742fc029a7b4ef3f9bcf04c14e4776a7605de14b23"}, +] +keras = [ + {file = "keras-2.10.0-py2.py3-none-any.whl", hash = "sha256:26a6e2c2522e7468ddea22710a99b3290493768fc08a39e75d1173a0e3452fdf"}, +] +Keras-Preprocessing = [ + {file = "Keras_Preprocessing-1.1.2-py2.py3-none-any.whl", hash = "sha256:7b82029b130ff61cc99b55f3bd27427df4838576838c5b2f65940e4fcec99a7b"}, + {file = "Keras_Preprocessing-1.1.2.tar.gz", hash = "sha256:add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3"}, +] +kiwisolver = [ + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c"}, + {file = "kiwisolver-1.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de"}, + {file = "kiwisolver-1.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win32.whl", hash = "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408"}, + {file = "kiwisolver-1.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2"}, + {file = "kiwisolver-1.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5"}, + {file = "kiwisolver-1.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750"}, + {file = "kiwisolver-1.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win32.whl", hash = "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e"}, + {file = "kiwisolver-1.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win32.whl", hash = "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3"}, + {file = "kiwisolver-1.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d"}, + {file = "kiwisolver-1.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win32.whl", hash = "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191"}, + {file = "kiwisolver-1.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897"}, + {file = "kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac"}, + {file = "kiwisolver-1.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win32.whl", hash = "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea"}, + {file = "kiwisolver-1.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a"}, + {file = "kiwisolver-1.4.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb"}, + {file = "kiwisolver-1.4.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2"}, + {file = "kiwisolver-1.4.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b"}, + {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, +] +lazy-object-proxy = [ + {file = "lazy-object-proxy-1.4.3.tar.gz", hash = "sha256:f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:a2238e9d1bb71a56cd710611a1614d1194dc10a175c1e08d75e1a7bcc250d442"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win32.whl", hash = "sha256:efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4677f594e474c91da97f489fea5b7daa17b5517190899cf213697e48d3902f5a"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:d945239a5639b3ff35b70a88c5f2f491913eb94871780ebfabb2568bd58afc5a"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win32.whl", hash = "sha256:9651375199045a358eb6741df3e02a651e0330be090b3bc79f6d0de31a80ec3e"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win_amd64.whl", hash = "sha256:eba7011090323c1dadf18b3b689845fd96a61ba0a1dfbd7f24b921398affc357"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:48dab84ebd4831077b150572aec802f303117c8cc5c871e182447281ebf3ac50"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:ca0a928a3ddbc5725be2dd1cf895ec0a254798915fb3a36af0964a0a4149e3db"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:194d092e6f246b906e8f70884e620e459fc54db3259e60cf69a4d66c3fda3449"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:97bb5884f6f1cdce0099f86b907aa41c970c3c672ac8b9c8352789e103cf3156"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:cb2c7c57005a6804ab66f106ceb8482da55f5314b7fcb06551db1edae4ad1531"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8d859b89baf8ef7f8bc6b00aa20316483d67f0b1cbf422f5b4dc56701c8f2ffb"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:1be7e4c9f96948003609aa6c974ae59830a6baecc5376c25c92d7d697e684c08"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d74bb8693bf9cf75ac3b47a54d716bbb1a92648d5f781fc799347cfc95952383"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:9b15f3f4c0f35727d3a0fba4b770b3c4ebbb1fa907dbcc046a1d2799f3edd142"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9254f4358b9b541e3441b007a0ea0764b9d056afdeafc1a5569eee1cc6c1b9ea"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a6ae12d08c0bf9909ce12385803a543bfe99b95fe01e752536a60af2b7797c62"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-win32.whl", hash = "sha256:5541cada25cd173702dbd99f8e22434105456314462326f06dba3e180f203dfd"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:59f79fef100b09564bc2df42ea2d8d21a64fdcda64979c0fa3db7bdaabaf6239"}, +] +libclang = [ + {file = "libclang-14.0.6-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:8791cf3c3b087c373a6d61e9199da7a541da922c9ddcfed1122090586b996d6e"}, + {file = "libclang-14.0.6-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b06fc76bd1e67c8b04b5719bf2ac5d6a323b289b245dfa9e468561d99538188"}, + {file = "libclang-14.0.6-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:e429853939423f276a25140b0b702442d7da9a09e001c05e48df888336947614"}, + {file = "libclang-14.0.6-py2.py3-none-manylinux2010_x86_64.whl", hash = "sha256:206d2789e4450a37d054e63b70451a6fc1873466397443fa13de2b3d4adb2796"}, + {file = "libclang-14.0.6-py2.py3-none-manylinux2014_aarch64.whl", hash = "sha256:e2add1703129b2abe066fb1890afa880870a89fd6ab4ec5d2a7a8dc8d271677e"}, + {file = "libclang-14.0.6-py2.py3-none-manylinux2014_armv7l.whl", hash = "sha256:5dd3c6fca1b007d308a4114afa8e4e9d32f32b2572520701d45fcc626ac5cd6c"}, + {file = "libclang-14.0.6-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cfb0e892ebb5dff6bd498ab5778adb8581f26a00fd8347b3c76c989fe2fd04f7"}, + {file = "libclang-14.0.6-py2.py3-none-win_amd64.whl", hash = "sha256:ea03c12675151837660cdd5dce65bd89320896ac3421efef43a36678f113ce95"}, + {file = "libclang-14.0.6-py2.py3-none-win_arm64.whl", hash = "sha256:2e4303e04517fcd11173cb2e51a7070eed71e16ef45d4e26a82c5e881cac3d27"}, + {file = "libclang-14.0.6.tar.gz", hash = "sha256:9052a8284d8846984f6fa826b1d7460a66d3b23a486d782633b42b6e3b418789"}, +] +liccheck = [ + {file = "liccheck-0.7.2-py2.py3-none-any.whl", hash = "sha256:a50d212b943d119f61d822080e0b7bcefbae4c3b7cc7b54b47b465c191bfc8aa"}, + {file = "liccheck-0.7.2.tar.gz", hash = "sha256:1961ee9bd9ae72c21f79da6db3a2048536f0912f4c5fde0f0c062d65ea5fbf0a"}, +] +lru-dict = [ + {file = "lru-dict-1.1.8.tar.gz", hash = "sha256:878bc8ef4073e5cfb953dfc1cf4585db41e8b814c0106abde34d00ee0d0b3115"}, + {file = "lru_dict-1.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9d5815c0e85922cd0fb8344ca8b1c7cf020bf9fc45e670d34d51932c91fd7ec"}, + {file = "lru_dict-1.1.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f877f53249c3e49bbd7612f9083127290bede6c7d6501513567ab1bf9c581381"}, + {file = "lru_dict-1.1.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fef595c4f573141d54a38bda9221b9ee3cbe0acc73d67304a1a6d5972eb2a02"}, + {file = "lru_dict-1.1.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:db20597c4e67b4095b376ce2e83930c560f4ce481e8d05737885307ed02ba7c1"}, + {file = "lru_dict-1.1.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5b09dbe47bc4b4d45ffe56067aff190bc3c0049575da6e52127e114236e0a6a7"}, + {file = "lru_dict-1.1.8-cp310-cp310-win32.whl", hash = "sha256:3b1692755fef288b67af5cd8a973eb331d1f44cb02cbdc13660040809c2bfec6"}, + {file = "lru_dict-1.1.8-cp310-cp310-win_amd64.whl", hash = "sha256:8f6561f9cd5a452cb84905c6a87aa944fdfdc0f41cc057d03b71f9b29b2cc4bd"}, + {file = "lru_dict-1.1.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ca8f89361e0e7aad0bf93ae03a31502e96280faeb7fb92267f4998fb230d36b2"}, + {file = "lru_dict-1.1.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c50ab9edaa5da5838426816a2b7bcde9d576b4fc50e6a8c062073dbc4969d78"}, + {file = "lru_dict-1.1.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fe16ade5fd0a57e9a335f69b8055aaa6fb278fbfa250458e4f6b8255115578f"}, + {file = "lru_dict-1.1.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:de972c7f4bc7b6002acff2a8de984c55fbd7f2289dba659cfd90f7a0f5d8f5d1"}, + {file = "lru_dict-1.1.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:3d003a864899c29b0379e412709a6e516cbd6a72ee10b09d0b33226343617412"}, + {file = "lru_dict-1.1.8-cp36-cp36m-win32.whl", hash = "sha256:6e2a7aa9e36626fb48fdc341c7e3685a31a7b50ea4918677ea436271ad0d904d"}, + {file = "lru_dict-1.1.8-cp36-cp36m-win_amd64.whl", hash = "sha256:d2ed4151445c3f30423c2698f72197d64b27b1cd61d8d56702ffe235584e47c2"}, + {file = "lru_dict-1.1.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:075b9dd46d7022b675419bc6e3631748ae184bc8af195d20365a98b4f3bb2914"}, + {file = "lru_dict-1.1.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70364e3cbef536adab8762b4835e18f5ca8e3fddd8bd0ec9258c42bbebd0ee77"}, + {file = "lru_dict-1.1.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720f5728e537f11a311e8b720793a224e985d20e6b7c3d34a891a391865af1a2"}, + {file = "lru_dict-1.1.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c2fe692332c2f1d81fd27457db4b35143801475bfc2e57173a2403588dd82a42"}, + {file = "lru_dict-1.1.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:86d32a4498b74a75340497890a260d37bf1560ad2683969393032977dd36b088"}, + {file = "lru_dict-1.1.8-cp37-cp37m-win32.whl", hash = "sha256:348167f110494cfafae70c066470a6f4e4d43523933edf16ccdb8947f3b5fae0"}, + {file = "lru_dict-1.1.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9be6c4039ef328676b868acea619cd100e3de1a35b3be211cf0eaf9775563b65"}, + {file = "lru_dict-1.1.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a777d48319d293b1b6a933d606c0e4899690a139b4c81173451913bbcab6f44f"}, + {file = "lru_dict-1.1.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99f6cfb3e28490357a0805b409caf693e46c61f8dbb789c51355adb693c568d3"}, + {file = "lru_dict-1.1.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:163079dbda54c3e6422b23da39fb3ecc561035d65e8496ff1950cbdb376018e1"}, + {file = "lru_dict-1.1.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0972d669e9e207617e06416166718b073a49bf449abbd23940d9545c0847a4d9"}, + {file = "lru_dict-1.1.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:97c24ffc55de6013075979f440acd174e88819f30387074639fb7d7178ca253e"}, + {file = "lru_dict-1.1.8-cp38-cp38-win32.whl", hash = "sha256:0f83cd70a6d32f9018d471be609f3af73058f700691657db4a3d3dd78d3f96dd"}, + {file = "lru_dict-1.1.8-cp38-cp38-win_amd64.whl", hash = "sha256:add762163f4af7f4173fafa4092eb7c7f023cf139ef6d2015cfea867e1440d82"}, + {file = "lru_dict-1.1.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ac524e4615f06dc72ffbfd83f26e073c9ec256de5413634fbd024c010a8bc"}, + {file = "lru_dict-1.1.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7284bdbc5579bbdc3fc8f869ed4c169f403835566ab0f84567cdbfdd05241847"}, + {file = "lru_dict-1.1.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca497cb25f19f24171f9172805f3ff135b911aeb91960bd4af8e230421ccb51"}, + {file = "lru_dict-1.1.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1df1da204a9f0b5eb8393a46070f1d984fa8559435ee790d7f8f5602038fc00"}, + {file = "lru_dict-1.1.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f4d0a6d733a23865019b1c97ed6fb1fdb739be923192abf4dbb644f697a26a69"}, + {file = "lru_dict-1.1.8-cp39-cp39-win32.whl", hash = "sha256:7be1b66926277993cecdc174c15a20c8ce785c1f8b39aa560714a513eef06473"}, + {file = "lru_dict-1.1.8-cp39-cp39-win_amd64.whl", hash = "sha256:881104711900af45967c2e5ce3e62291dd57d5b2a224d58b7c9f60bf4ad41b8c"}, + {file = "lru_dict-1.1.8-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:beb089c46bd95243d1ac5b2bd13627317b08bf40dd8dc16d4b7ee7ecb3cf65ca"}, + {file = "lru_dict-1.1.8-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10fe823ff90b655f0b6ba124e2b576ecda8c61b8ead76b456db67831942d22f2"}, + {file = "lru_dict-1.1.8-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07163c9dcbb2eca377f366b1331f46302fd8b6b72ab4d603087feca00044bb0"}, + {file = "lru_dict-1.1.8-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93336911544ebc0e466272043adab9fb9f6e9dcba6024b639c32553a3790e089"}, + {file = "lru_dict-1.1.8-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:55aeda6b6789b2d030066b4f5f6fc3596560ba2a69028f35f3682a795701b5b1"}, + {file = "lru_dict-1.1.8-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:262a4e622010ceb960a6a5222ed011090e50954d45070fd369c0fa4d2ed7d9a9"}, + {file = "lru_dict-1.1.8-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6f64005ede008b7a866be8f3f6274dbf74e656e15e4004e9d99ad65efb01809"}, + {file = "lru_dict-1.1.8-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:9d70257246b8207e8ef3d8b18457089f5ff0dfb087bd36eb33bce6584f2e0b3a"}, + {file = "lru_dict-1.1.8-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f874e9c2209dada1a080545331aa1277ec060a13f61684a8642788bf44b2325f"}, + {file = "lru_dict-1.1.8-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a592363c93d6fc6472d5affe2819e1c7590746aecb464774a4f67e09fbefdfc"}, + {file = "lru_dict-1.1.8-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f340b61f3cdfee71f66da7dbfd9a5ea2db6974502ccff2065cdb76619840dca"}, + {file = "lru_dict-1.1.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9447214e4857e16d14158794ef01e4501d8fad07d298d03308d9f90512df02fa"}, +] +Markdown = [ + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, +] +MarkupSafe = [ + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +] +matplotlib = [ + {file = "matplotlib-3.3.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:672960dd114e342b7c610bf32fb99d14227f29919894388b41553217457ba7ef"}, + {file = "matplotlib-3.3.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7c155437ae4fd366e2700e2716564d1787700687443de46bcb895fe0f84b761d"}, + {file = "matplotlib-3.3.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:a17f0a10604fac7627ec82820439e7db611722e80c408a726cd00d8c974c2fb3"}, + {file = "matplotlib-3.3.4-cp36-cp36m-win32.whl", hash = "sha256:215e2a30a2090221a9481db58b770ce56b8ef46f13224ae33afe221b14b24dc1"}, + {file = "matplotlib-3.3.4-cp36-cp36m-win_amd64.whl", hash = "sha256:348e6032f666ffd151b323342f9278b16b95d4a75dfacae84a11d2829a7816ae"}, + {file = "matplotlib-3.3.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:94bdd1d55c20e764d8aea9d471d2ae7a7b2c84445e0fa463f02e20f9730783e1"}, + {file = "matplotlib-3.3.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a1acb72f095f1d58ecc2538ed1b8bca0b57df313b13db36ed34b8cdf1868e674"}, + {file = "matplotlib-3.3.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:46b1a60a04e6d884f0250d5cc8dc7bd21a9a96c584a7acdaab44698a44710bab"}, + {file = "matplotlib-3.3.4-cp37-cp37m-win32.whl", hash = "sha256:ed4a9e6dcacba56b17a0a9ac22ae2c72a35b7f0ef0693aa68574f0b2df607a89"}, + {file = "matplotlib-3.3.4-cp37-cp37m-win_amd64.whl", hash = "sha256:c24c05f645aef776e8b8931cb81e0f1632d229b42b6d216e30836e2e145a2b40"}, + {file = "matplotlib-3.3.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7310e353a4a35477c7f032409966920197d7df3e757c7624fd842f3eeb307d3d"}, + {file = "matplotlib-3.3.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:451cc89cb33d6652c509fc6b588dc51c41d7246afdcc29b8624e256b7663ed1f"}, + {file = "matplotlib-3.3.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:3d2eb9c1cc254d0ffa90bc96fde4b6005d09c2228f99dfd493a4219c1af99644"}, + {file = "matplotlib-3.3.4-cp38-cp38-win32.whl", hash = "sha256:e15fa23d844d54e7b3b7243afd53b7567ee71c721f592deb0727ee85e668f96a"}, + {file = "matplotlib-3.3.4-cp38-cp38-win_amd64.whl", hash = "sha256:1de0bb6cbfe460725f0e97b88daa8643bcf9571c18ba90bb8e41432aaeca91d6"}, + {file = "matplotlib-3.3.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f44149a0ef5b4991aaef12a93b8e8d66d6412e762745fea1faa61d98524e0ba9"}, + {file = "matplotlib-3.3.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:746a1df55749629e26af7f977ea426817ca9370ad1569436608dc48d1069b87c"}, + {file = "matplotlib-3.3.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:5f571b92a536206f7958f7cb2d367ff6c9a1fa8229dc35020006e4cdd1ca0acd"}, + {file = "matplotlib-3.3.4-cp39-cp39-win32.whl", hash = "sha256:9265ae0fb35e29f9b8cc86c2ab0a2e3dcddc4dd9de4b85bf26c0f63fe5c1c2ca"}, + {file = "matplotlib-3.3.4-cp39-cp39-win_amd64.whl", hash = "sha256:9a79e5dd7bb797aa611048f5b70588b23c5be05b63eefd8a0d152ac77c4243db"}, + {file = "matplotlib-3.3.4-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1e850163579a8936eede29fad41e202b25923a0a8d5ffd08ce50fc0a97dcdc93"}, + {file = "matplotlib-3.3.4-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:d738acfdfb65da34c91acbdb56abed46803db39af259b7f194dc96920360dbe4"}, + {file = "matplotlib-3.3.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:aa49571d8030ad0b9ac39708ee77bd2a22f87815e12bdee52ecaffece9313ed8"}, + {file = "matplotlib-3.3.4-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:cf3a7e54eff792f0815dbbe9b85df2f13d739289c93d346925554f71d484be78"}, + {file = "matplotlib-3.3.4.tar.gz", hash = "sha256:3e477db76c22929e4c6876c44f88d790aacdf3c3f8f3a90cb1975c0bf37825b0"}, +] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] +memory-profiler = [ + {file = "memory_profiler-0.57.0.tar.gz", hash = "sha256:23b196f91ea9ac9996e30bfab1e82fecc30a4a1d24870e81d1e81625f786a2c3"}, +] +mergedeep = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] +mistune = [ + {file = "mistune-2.0.4-py2.py3-none-any.whl", hash = "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d"}, + {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"}, +] +mkdocs = [ + {file = "mkdocs-1.4.0-py3-none-any.whl", hash = "sha256:ce057e9992f017b8e1496b591b6c242cbd34c2d406e2f9af6a19b97dd6248faa"}, + {file = "mkdocs-1.4.0.tar.gz", hash = "sha256:e5549a22d59e7cb230d6a791edd2c3d06690908454c0af82edc31b35d57e3069"}, +] +mkdocs-material = [ + {file = "mkdocs-material-7.1.6.tar.gz", hash = "sha256:b3f1aaea3e79e3c3b30babe0238915cf4ad4c4560d404bb0ac3298ee2ce004a3"}, + {file = "mkdocs_material-7.1.6-py2.py3-none-any.whl", hash = "sha256:01566c460990dad54d6ec935553b9c5c8e4e753ac3e30ba0945ceeff4ad164ac"}, +] +mkdocs-material-extensions = [ + {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, + {file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"}, +] +mkdocs-mermaid-plugin = [] +multiaddr = [ + {file = "multiaddr-0.0.9-py2.py3-none-any.whl", hash = "sha256:5c0f862cbcf19aada2a899f80ef896ddb2e85614e0c8f04dd287c06c69dac95b"}, + {file = "multiaddr-0.0.9.tar.gz", hash = "sha256:30b2695189edc3d5b90f1c303abb8f02d963a3a4edf2e7178b975eb417ab0ecf"}, +] +multidict = [ + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, + {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, + {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, + {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, + {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, + {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, + {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, + {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, + {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, + {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, + {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, + {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, + {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, + {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, + {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, + {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, + {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, + {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, + {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, + {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, + {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, + {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, +] +mypy = [ + {file = "mypy-0.982-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5085e6f442003fa915aeb0a46d4da58128da69325d8213b4b35cc7054090aed5"}, + {file = "mypy-0.982-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:41fd1cf9bc0e1c19b9af13a6580ccb66c381a5ee2cf63ee5ebab747a4badeba3"}, + {file = "mypy-0.982-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f793e3dd95e166b66d50e7b63e69e58e88643d80a3dcc3bcd81368e0478b089c"}, + {file = "mypy-0.982-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86ebe67adf4d021b28c3f547da6aa2cce660b57f0432617af2cca932d4d378a6"}, + {file = "mypy-0.982-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:175f292f649a3af7082fe36620369ffc4661a71005aa9f8297ea473df5772046"}, + {file = "mypy-0.982-cp310-cp310-win_amd64.whl", hash = "sha256:8ee8c2472e96beb1045e9081de8e92f295b89ac10c4109afdf3a23ad6e644f3e"}, + {file = "mypy-0.982-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58f27ebafe726a8e5ccb58d896451dd9a662a511a3188ff6a8a6a919142ecc20"}, + {file = "mypy-0.982-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6af646bd46f10d53834a8e8983e130e47d8ab2d4b7a97363e35b24e1d588947"}, + {file = "mypy-0.982-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7aeaa763c7ab86d5b66ff27f68493d672e44c8099af636d433a7f3fa5596d40"}, + {file = "mypy-0.982-cp37-cp37m-win_amd64.whl", hash = "sha256:724d36be56444f569c20a629d1d4ee0cb0ad666078d59bb84f8f887952511ca1"}, + {file = "mypy-0.982-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14d53cdd4cf93765aa747a7399f0961a365bcddf7855d9cef6306fa41de01c24"}, + {file = "mypy-0.982-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:26ae64555d480ad4b32a267d10cab7aec92ff44de35a7cd95b2b7cb8e64ebe3e"}, + {file = "mypy-0.982-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6389af3e204975d6658de4fb8ac16f58c14e1bacc6142fee86d1b5b26aa52bda"}, + {file = "mypy-0.982-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b35ce03a289480d6544aac85fa3674f493f323d80ea7226410ed065cd46f206"}, + {file = "mypy-0.982-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c6e564f035d25c99fd2b863e13049744d96bd1947e3d3d2f16f5828864506763"}, + {file = "mypy-0.982-cp38-cp38-win_amd64.whl", hash = "sha256:cebca7fd333f90b61b3ef7f217ff75ce2e287482206ef4a8b18f32b49927b1a2"}, + {file = "mypy-0.982-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a705a93670c8b74769496280d2fe6cd59961506c64f329bb179970ff1d24f9f8"}, + {file = "mypy-0.982-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:75838c649290d83a2b83a88288c1eb60fe7a05b36d46cbea9d22efc790002146"}, + {file = "mypy-0.982-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:91781eff1f3f2607519c8b0e8518aad8498af1419e8442d5d0afb108059881fc"}, + {file = "mypy-0.982-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaa97b9ddd1dd9901a22a879491dbb951b5dec75c3b90032e2baa7336777363b"}, + {file = "mypy-0.982-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a692a8e7d07abe5f4b2dd32d731812a0175626a90a223d4b58f10f458747dd8a"}, + {file = "mypy-0.982-cp39-cp39-win_amd64.whl", hash = "sha256:eb7a068e503be3543c4bd329c994103874fa543c1727ba5288393c21d912d795"}, + {file = "mypy-0.982-py3-none-any.whl", hash = "sha256:1021c241e8b6e1ca5a47e4d52601274ac078a89845cfde66c6d5f769819ffa1d"}, + {file = "mypy-0.982.tar.gz", hash = "sha256:85f7a343542dc8b1ed0a888cdd34dca56462654ef23aa673907305b260b3d746"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] +netaddr = [ + {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, + {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, +] +networkx = [ + {file = "networkx-2.8.7-py3-none-any.whl", hash = "sha256:15cdf7f7c157637107ea690cabbc488018f8256fa28242aed0fb24c93c03a06d"}, + {file = "networkx-2.8.7.tar.gz", hash = "sha256:815383fd52ece0a7024b5fd8408cc13a389ea350cd912178b82eed8b96f82cd3"}, +] +numpy = [ + {file = "numpy-1.23.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9f707b5bb73bf277d812ded9896f9512a43edff72712f31667d0a8c2f8e71ee"}, + {file = "numpy-1.23.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffcf105ecdd9396e05a8e58e81faaaf34d3f9875f137c7372450baa5d77c9a54"}, + {file = "numpy-1.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ea3f98a0ffce3f8f57675eb9119f3f4edb81888b6874bc1953f91e0b1d4f440"}, + {file = "numpy-1.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004f0efcb2fe1c0bd6ae1fcfc69cc8b6bf2407e0f18be308612007a0762b4089"}, + {file = "numpy-1.23.3-cp310-cp310-win32.whl", hash = "sha256:98dcbc02e39b1658dc4b4508442a560fe3ca5ca0d989f0df062534e5ca3a5c1a"}, + {file = "numpy-1.23.3-cp310-cp310-win_amd64.whl", hash = "sha256:39a664e3d26ea854211867d20ebcc8023257c1800ae89773cbba9f9e97bae036"}, + {file = "numpy-1.23.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1f27b5322ac4067e67c8f9378b41c746d8feac8bdd0e0ffede5324667b8a075c"}, + {file = "numpy-1.23.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ad3ec9a748a8943e6eb4358201f7e1c12ede35f510b1a2221b70af4bb64295c"}, + {file = "numpy-1.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdc9febce3e68b697d931941b263c59e0c74e8f18861f4064c1f712562903411"}, + {file = "numpy-1.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:301c00cf5e60e08e04d842fc47df641d4a181e651c7135c50dc2762ffe293dbd"}, + {file = "numpy-1.23.3-cp311-cp311-win32.whl", hash = "sha256:7cd1328e5bdf0dee621912f5833648e2daca72e3839ec1d6695e91089625f0b4"}, + {file = "numpy-1.23.3-cp311-cp311-win_amd64.whl", hash = "sha256:8355fc10fd33a5a70981a5b8a0de51d10af3688d7a9e4a34fcc8fa0d7467bb7f"}, + {file = "numpy-1.23.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc6e8da415f359b578b00bcfb1d08411c96e9a97f9e6c7adada554a0812a6cc6"}, + {file = "numpy-1.23.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:22d43376ee0acd547f3149b9ec12eec2f0ca4a6ab2f61753c5b29bb3e795ac4d"}, + {file = "numpy-1.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a64403f634e5ffdcd85e0b12c08f04b3080d3e840aef118721021f9b48fc1460"}, + {file = "numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd9d3abe5774404becdb0748178b48a218f1d8c44e0375475732211ea47c67e"}, + {file = "numpy-1.23.3-cp38-cp38-win32.whl", hash = "sha256:f8c02ec3c4c4fcb718fdf89a6c6f709b14949408e8cf2a2be5bfa9c49548fd85"}, + {file = "numpy-1.23.3-cp38-cp38-win_amd64.whl", hash = "sha256:e868b0389c5ccfc092031a861d4e158ea164d8b7fdbb10e3b5689b4fc6498df6"}, + {file = "numpy-1.23.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09f6b7bdffe57fc61d869a22f506049825d707b288039d30f26a0d0d8ea05164"}, + {file = "numpy-1.23.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c79d7cf86d049d0c5089231a5bcd31edb03555bd93d81a16870aa98c6cfb79d"}, + {file = "numpy-1.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5d5420053bbb3dd64c30e58f9363d7a9c27444c3648e61460c1237f9ec3fa14"}, + {file = "numpy-1.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5422d6a1ea9b15577a9432e26608c73a78faf0b9039437b075cf322c92e98e7"}, + {file = "numpy-1.23.3-cp39-cp39-win32.whl", hash = "sha256:c1ba66c48b19cc9c2975c0d354f24058888cdc674bebadceb3cdc9ec403fb5d1"}, + {file = "numpy-1.23.3-cp39-cp39-win_amd64.whl", hash = "sha256:78a63d2df1d947bd9d1b11d35564c2f9e4b57898aae4626638056ec1a231c40c"}, + {file = "numpy-1.23.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:17c0e467ade9bda685d5ac7f5fa729d8d3e76b23195471adae2d6a6941bd2c18"}, + {file = "numpy-1.23.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91b8d6768a75247026e951dce3b2aac79dc7e78622fc148329135ba189813584"}, + {file = "numpy-1.23.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:94c15ca4e52671a59219146ff584488907b1f9b3fc232622b47e2cf832e94fb8"}, + {file = "numpy-1.23.3.tar.gz", hash = "sha256:51bf49c0cd1d52be0a240aa66f3458afc4b95d8993d2d04f0d91fa60c10af6cd"}, +] +oauthlib = [ + {file = "oauthlib-3.2.1-py3-none-any.whl", hash = "sha256:88e912ca1ad915e1dcc1c06fc9259d19de8deacd6fd17cc2df266decc2e49066"}, + {file = "oauthlib-3.2.1.tar.gz", hash = "sha256:1565237372795bf6ee3e5aba5e2a85bd5a65d0e2aa5c628b9a97b7d7a0da3721"}, +] +oef = [ + {file = "oef-0.8.1-py3-none-any.whl", hash = "sha256:a0d96210c687d365a037300556e105035da31636ba53edf2946543ca60b7bfc7"}, + {file = "oef-0.8.1.tar.gz", hash = "sha256:33ee394f10e22e46206a119fe79f349eed1738143df1acea39bba7ad84e8bf22"}, +] +openapi-spec-validator = [ + {file = "openapi-spec-validator-0.2.8.tar.gz", hash = "sha256:e489c7a273284bc78277ac22791482e8058d323b4a265015e9fcddf6a8045bcd"}, + {file = "openapi_spec_validator-0.2.8-py2-none-any.whl", hash = "sha256:d4da8aef72bf5be40cf0df444abd20009a41baf9048a8e03750c07a934f1bdd8"}, + {file = "openapi_spec_validator-0.2.8-py3-none-any.whl", hash = "sha256:0caacd9829e9e3051e830165367bf58d436d9487b29a09220fa7edb9f47ff81b"}, +] +opt-einsum = [ + {file = "opt_einsum-3.3.0-py3-none-any.whl", hash = "sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147"}, + {file = "opt_einsum-3.3.0.tar.gz", hash = "sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +parsimonious = [ + {file = "parsimonious-0.8.1.tar.gz", hash = "sha256:3add338892d580e0cb3b1a39e4a1b427ff9f687858fdd61097053742391a9f6b"}, +] +pathspec = [ + {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, + {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, +] +pbr = [ + {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, + {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, +] +pexpect = [ + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, +] +Pillow = [ + {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"}, + {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"}, + {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"}, + {file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"}, + {file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"}, + {file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"}, + {file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:adabc0bce035467fb537ef3e5e74f2847c8af217ee0be0455d4fec8adc0462fc"}, + {file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:336b9036127eab855beec9662ac3ea13a4544a523ae273cbf108b228ecac8437"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"}, + {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"}, + {file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"}, + {file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"}, + {file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"}, + {file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"}, + {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"}, + {file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"}, + {file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"}, + {file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"}, + {file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"}, + {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"}, + {file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"}, + {file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"}, + {file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"}, + {file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"}, + {file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"}, + {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"}, + {file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"}, + {file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"}, + {file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"}, + {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"}, + {file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"}, + {file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"}, +] +pkgutil_resolve_name = [ + {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, + {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, +] +platformdirs = [ + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +protobuf = [ + {file = "protobuf-3.19.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f51d5a9f137f7a2cec2d326a74b6e3fc79d635d69ffe1b036d39fc7d75430d37"}, + {file = "protobuf-3.19.4-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09297b7972da685ce269ec52af761743714996b4381c085205914c41fcab59fb"}, + {file = "protobuf-3.19.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072fbc78d705d3edc7ccac58a62c4c8e0cec856987da7df8aca86e647be4e35c"}, + {file = "protobuf-3.19.4-cp310-cp310-win32.whl", hash = "sha256:7bb03bc2873a2842e5ebb4801f5c7ff1bfbdf426f85d0172f7644fcda0671ae0"}, + {file = "protobuf-3.19.4-cp310-cp310-win_amd64.whl", hash = "sha256:f358aa33e03b7a84e0d91270a4d4d8f5df6921abe99a377828839e8ed0c04e07"}, + {file = "protobuf-3.19.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1c91ef4110fdd2c590effb5dca8fdbdcb3bf563eece99287019c4204f53d81a4"}, + {file = "protobuf-3.19.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c438268eebb8cf039552897d78f402d734a404f1360592fef55297285f7f953f"}, + {file = "protobuf-3.19.4-cp36-cp36m-win32.whl", hash = "sha256:835a9c949dc193953c319603b2961c5c8f4327957fe23d914ca80d982665e8ee"}, + {file = "protobuf-3.19.4-cp36-cp36m-win_amd64.whl", hash = "sha256:4276cdec4447bd5015453e41bdc0c0c1234eda08420b7c9a18b8d647add51e4b"}, + {file = "protobuf-3.19.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6cbc312be5e71869d9d5ea25147cdf652a6781cf4d906497ca7690b7b9b5df13"}, + {file = "protobuf-3.19.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:54a1473077f3b616779ce31f477351a45b4fef8c9fd7892d6d87e287a38df368"}, + {file = "protobuf-3.19.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:435bb78b37fc386f9275a7035fe4fb1364484e38980d0dd91bc834a02c5ec909"}, + {file = "protobuf-3.19.4-cp37-cp37m-win32.whl", hash = "sha256:16f519de1313f1b7139ad70772e7db515b1420d208cb16c6d7858ea989fc64a9"}, + {file = "protobuf-3.19.4-cp37-cp37m-win_amd64.whl", hash = "sha256:cdc076c03381f5c1d9bb1abdcc5503d9ca8b53cf0a9d31a9f6754ec9e6c8af0f"}, + {file = "protobuf-3.19.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:69da7d39e39942bd52848438462674c463e23963a1fdaa84d88df7fbd7e749b2"}, + {file = "protobuf-3.19.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:48ed3877fa43e22bcacc852ca76d4775741f9709dd9575881a373bd3e85e54b2"}, + {file = "protobuf-3.19.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd95d1dfb9c4f4563e6093a9aa19d9c186bf98fa54da5252531cc0d3a07977e7"}, + {file = "protobuf-3.19.4-cp38-cp38-win32.whl", hash = "sha256:b38057450a0c566cbd04890a40edf916db890f2818e8682221611d78dc32ae26"}, + {file = "protobuf-3.19.4-cp38-cp38-win_amd64.whl", hash = "sha256:7ca7da9c339ca8890d66958f5462beabd611eca6c958691a8fe6eccbd1eb0c6e"}, + {file = "protobuf-3.19.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:36cecbabbda242915529b8ff364f2263cd4de7c46bbe361418b5ed859677ba58"}, + {file = "protobuf-3.19.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:c1068287025f8ea025103e37d62ffd63fec8e9e636246b89c341aeda8a67c934"}, + {file = "protobuf-3.19.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96bd766831596d6014ca88d86dc8fe0fb2e428c0b02432fd9db3943202bf8c5e"}, + {file = "protobuf-3.19.4-cp39-cp39-win32.whl", hash = "sha256:84123274d982b9e248a143dadd1b9815049f4477dc783bf84efe6250eb4b836a"}, + {file = "protobuf-3.19.4-cp39-cp39-win_amd64.whl", hash = "sha256:3112b58aac3bac9c8be2b60a9daf6b558ca3f7681c130dcdd788ade7c9ffbdca"}, + {file = "protobuf-3.19.4-py2.py3-none-any.whl", hash = "sha256:8961c3a78ebfcd000920c9060a262f082f29838682b1f7201889300c1fbe0616"}, + {file = "protobuf-3.19.4.tar.gz", hash = "sha256:9df0c10adf3e83015ced42a9a7bd64e13d06c4cf45c340d2c63020ea04499d0a"}, +] +psutil = [ + {file = "psutil-5.7.0-cp27-none-win32.whl", hash = "sha256:298af2f14b635c3c7118fd9183843f4e73e681bb6f01e12284d4d70d48a60953"}, + {file = "psutil-5.7.0-cp27-none-win_amd64.whl", hash = "sha256:75e22717d4dbc7ca529ec5063000b2b294fc9a367f9c9ede1f65846c7955fd38"}, + {file = "psutil-5.7.0-cp35-cp35m-win32.whl", hash = "sha256:f344ca230dd8e8d5eee16827596f1c22ec0876127c28e800d7ae20ed44c4b310"}, + {file = "psutil-5.7.0-cp35-cp35m-win_amd64.whl", hash = "sha256:e2d0c5b07c6fe5a87fa27b7855017edb0d52ee73b71e6ee368fae268605cc3f5"}, + {file = "psutil-5.7.0-cp36-cp36m-win32.whl", hash = "sha256:a02f4ac50d4a23253b68233b07e7cdb567bd025b982d5cf0ee78296990c22d9e"}, + {file = "psutil-5.7.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1413f4158eb50e110777c4f15d7c759521703bd6beb58926f1d562da40180058"}, + {file = "psutil-5.7.0-cp37-cp37m-win32.whl", hash = "sha256:d008ddc00c6906ec80040d26dc2d3e3962109e40ad07fd8a12d0284ce5e0e4f8"}, + {file = "psutil-5.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:73f35ab66c6c7a9ce82ba44b1e9b1050be2a80cd4dcc3352cc108656b115c74f"}, + {file = "psutil-5.7.0-cp38-cp38-win32.whl", hash = "sha256:60b86f327c198561f101a92be1995f9ae0399736b6eced8f24af41ec64fb88d4"}, + {file = "psutil-5.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:d84029b190c8a66a946e28b4d3934d2ca1528ec94764b180f7d6ea57b0e75e26"}, + {file = "psutil-5.7.0.tar.gz", hash = "sha256:685ec16ca14d079455892f25bd124df26ff9137664af445563c1bd36629b5e0e"}, +] +ptyprocess = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +py-sr25519-bindings = [ + {file = "py_sr25519_bindings-0.1.4-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:9cbee7341ed35d08533c7dac4d227e2fe21b815072ef66178a7ddb77f4e7be36"}, + {file = "py_sr25519_bindings-0.1.4-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:14a06ca42d5fd07673138bf9970db9091059a1e4d704545bdf156dd05de3e3c6"}, + {file = "py_sr25519_bindings-0.1.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ec17c935f8ae9a00bb5d6adac6cc455fd6052042959ace5563448c355e2960a"}, + {file = "py_sr25519_bindings-0.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e5118cc7e1a77083307d260ccda21a0ec14efb0b98535f8fc9e2c54c7594836"}, + {file = "py_sr25519_bindings-0.1.4-cp310-cp310-manylinux_2_28_armv7l.whl", hash = "sha256:34635da67e6798bb4535543e63c3e1d3b19f17a4df1f9b613c69b66fc8296fa3"}, + {file = "py_sr25519_bindings-0.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b901675f8ea8ca4a6e55887ea48448a3f6bf55f22baa4acfa77d7c844e82e9db"}, + {file = "py_sr25519_bindings-0.1.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:34786ba33f602d9d4f2495bd29d9f0cb357813a6ee8ae5cd9d37dbda86c141a4"}, + {file = "py_sr25519_bindings-0.1.4-cp310-none-win32.whl", hash = "sha256:f7ca8f4e62aee8bc33916f6422e8ac5ffeeb96bc11f7ca52792354b771216bd8"}, + {file = "py_sr25519_bindings-0.1.4-cp310-none-win_amd64.whl", hash = "sha256:1ca0d8e1ca66a17c41e3f6da0c3837e7dbf5b391eb4ea41cfe6026bad0adc8ea"}, + {file = "py_sr25519_bindings-0.1.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1121e5da273c81b2e7ba0ca4bef8a89c527a6e25ed3110a95e93fd2caa04c50b"}, + {file = "py_sr25519_bindings-0.1.4-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9e07cc588754da27c03185e2d3823537790f616b5aab3df1703ca0f6f578114c"}, + {file = "py_sr25519_bindings-0.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6715852eb2ea733c4978b77f9a049cc9eb763d54270d5b1263b198256656c38e"}, + {file = "py_sr25519_bindings-0.1.4-cp37-cp37m-manylinux_2_28_armv7l.whl", hash = "sha256:6be4f52320d021fe8a86d72d71fae821b6c251f12b36e7e3deee5a1140da55b6"}, + {file = "py_sr25519_bindings-0.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:67dd46da0a571859418fc938af15ab9a0586e47244d21f0f26c5cbf4daf10a3b"}, + {file = "py_sr25519_bindings-0.1.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:aed508e15e695c5e3147be936db7a40f7bf5cb0a4078a9eb0e25fbdeb7c08982"}, + {file = "py_sr25519_bindings-0.1.4-cp37-none-win32.whl", hash = "sha256:1fb9ca7b65e60b64bd6e81ee2d5e6556d93b317af3c95a2e24bf45a3c44041a0"}, + {file = "py_sr25519_bindings-0.1.4-cp37-none-win_amd64.whl", hash = "sha256:d13e3a6b262494f66f36de3ba45d1040fee7a0c4104d56086b15315332026db9"}, + {file = "py_sr25519_bindings-0.1.4-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:721cae28e86038682dd522191f9cb58a71b3455ef461433ba27a76d2d321197c"}, + {file = "py_sr25519_bindings-0.1.4-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:d1b1b51d997363a264fb3f91978f21ea784f5ee50ed26e11ed0a0f26c497a4eb"}, + {file = "py_sr25519_bindings-0.1.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4940ebfcb482b33468c41dda9e8c19137c14cc3b993e1084e55387c6acfa11ab"}, + {file = "py_sr25519_bindings-0.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72b49cba419f5c76436bf06de4575ee27713afd8b867c4c14cb7a29e1046c30a"}, + {file = "py_sr25519_bindings-0.1.4-cp38-cp38-manylinux_2_28_armv7l.whl", hash = "sha256:9b80e4aa4037b1e8fd3d5ff0fb4e2c3d92e04b2936f29c79d5411c5a22562f25"}, + {file = "py_sr25519_bindings-0.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f52666b02075483dfdd294b9d0fd903eaf96ac7140e5be45390b25ded52ca6a"}, + {file = "py_sr25519_bindings-0.1.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d1c1247b4bf4c5670767e8a35bc259b425b275c8d72c6e3f1cfac47cf9b80e89"}, + {file = "py_sr25519_bindings-0.1.4-cp38-none-win32.whl", hash = "sha256:ce3639509e87ab04652c62aab626f13a80e308347047173bf74749397d0be539"}, + {file = "py_sr25519_bindings-0.1.4-cp38-none-win_amd64.whl", hash = "sha256:127057216b8cd32ea322d64aa52e70ba7b42a55cd4eb31e8df7c0120934f2445"}, + {file = "py_sr25519_bindings-0.1.4-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:5a0f591f9b474ca31f0ca199ebc5d2c70a8869ff6e211188a1562310614558dd"}, + {file = "py_sr25519_bindings-0.1.4-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:197892cd89077baf2be51e3307a40de2c32006a2b89fec7d767a1d0b2749712d"}, + {file = "py_sr25519_bindings-0.1.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3845f55a88dcba825c16e65fc9e26742cbb9103fba5229fd0c3e9e8deffd323b"}, + {file = "py_sr25519_bindings-0.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0046dda17c554376f5ba11ea91163b1b883ac61fcc1b1ba588e31b1cb58add28"}, + {file = "py_sr25519_bindings-0.1.4-cp39-cp39-manylinux_2_28_armv7l.whl", hash = "sha256:465c2ae7e3191f24ac10519aece185772a6b9d6179b8948fad78c3b1dbe77d8c"}, + {file = "py_sr25519_bindings-0.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:42097fab2702186a6591471bc366d7c804c7c30744acd59d6c6a38fdcad4bedb"}, + {file = "py_sr25519_bindings-0.1.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8e62369aca9455131330cf63b0fcec3be198cabad936317321aa0db9d143435b"}, + {file = "py_sr25519_bindings-0.1.4-cp39-none-win32.whl", hash = "sha256:0a09f5886a706fcee6786f94dd59a04bdc95f2d6c4b7e1b3118ca805d322a055"}, + {file = "py_sr25519_bindings-0.1.4-cp39-none-win_amd64.whl", hash = "sha256:855af2efee23ebbb4b5544027b2b9a4818db34717b88741bcfd74f5739e9152f"}, + {file = "py_sr25519_bindings-0.1.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb1edb9db13548252fe3410868111dcda48a5b6ecda11cebb156930f0f472368"}, + {file = "py_sr25519_bindings-0.1.4.tar.gz", hash = "sha256:5e12ca977014f148f4bfb6ba662f1529b15cc8ce030719d726c4e16a379e976e"}, +] +pyasn1 = [ + {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, + {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, +] +pyasn1-modules = [ + {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"}, + {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"}, +] +pycodestyle = [ + {file = "pycodestyle-2.5.0-py2.py3-none-any.whl", hash = "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56"}, + {file = "pycodestyle-2.5.0.tar.gz", hash = "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"}, +] +pycparser = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] +pycryptodome = [ + {file = "pycryptodome-3.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff7ae90e36c1715a54446e7872b76102baa5c63aa980917f4aa45e8c78d1a3ec"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2ffd8b31561455453ca9f62cb4c24e6b8d119d6d531087af5f14b64bee2c23e6"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2ea63d46157386c5053cfebcdd9bd8e0c8b7b0ac4a0507a027f5174929403884"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7c9ed8aa31c146bef65d89a1b655f5f4eab5e1120f55fc297713c89c9e56ff0b"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:5099c9ca345b2f252f0c28e96904643153bae9258647585e5e6f649bb7a1844a"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:2ec709b0a58b539a4f9d33fb8508264c3678d7edb33a68b8906ba914f71e8c13"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-win32.whl", hash = "sha256:fd2184aae6ee2a944aaa49113e6f5787cdc5e4db1eb8edb1aea914bd75f33a0c"}, + {file = "pycryptodome-3.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:7e3a8f6ee405b3bd1c4da371b93c31f7027944b2bcce0697022801db93120d83"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:b9c5b1a1977491533dfd31e01550ee36ae0249d78aae7f632590db833a5012b8"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0926f7cc3735033061ef3cf27ed16faad6544b14666410727b31fea85a5b16eb"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2aa55aae81f935a08d5a3c2042eb81741a43e044bd8a81ea7239448ad751f763"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:c3640deff4197fa064295aaac10ab49a0d55ef3d6a54ae1499c40d646655c89f"}, + {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:045d75527241d17e6ef13636d845a12e54660aa82e823b3b3341bcf5af03fa79"}, + {file = "pycryptodome-3.15.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9ee40e2168f1348ae476676a2e938ca80a2f57b14a249d8fe0d3cdf803e5a676"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_i686.whl", hash = "sha256:4c3ccad74eeb7b001f3538643c4225eac398c77d617ebb3e57571a897943c667"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:1b22bcd9ec55e9c74927f6b1f69843cb256fb5a465088ce62837f793d9ffea88"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:57f565acd2f0cf6fb3e1ba553d0cb1f33405ec1f9c5ded9b9a0a5320f2c0bd3d"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:4b52cb18b0ad46087caeb37a15e08040f3b4c2d444d58371b6f5d786d95534c2"}, + {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:092a26e78b73f2530b8bd6b3898e7453ab2f36e42fd85097d705d6aba2ec3e5e"}, + {file = "pycryptodome-3.15.0-cp35-abi3-win32.whl", hash = "sha256:e244ab85c422260de91cda6379e8e986405b4f13dc97d2876497178707f87fc1"}, + {file = "pycryptodome-3.15.0-cp35-abi3-win_amd64.whl", hash = "sha256:c77126899c4b9c9827ddf50565e93955cb3996813c18900c16b2ea0474e130e9"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:9eaadc058106344a566dc51d3d3a758ab07f8edde013712bc8d22032a86b264f"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:ff287bcba9fbeb4f1cccc1f2e90a08d691480735a611ee83c80a7d74ad72b9d9"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:60b4faae330c3624cc5a546ba9cfd7b8273995a15de94ee4538130d74953ec2e"}, + {file = "pycryptodome-3.15.0-pp27-pypy_73-win32.whl", hash = "sha256:a8f06611e691c2ce45ca09bbf983e2ff2f8f4f87313609d80c125aff9fad6e7f"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b9cc96e274b253e47ad33ae1fccc36ea386f5251a823ccb50593a935db47fdd2"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:ecaaef2d21b365d9c5ca8427ffc10cebed9d9102749fd502218c23cb9a05feb5"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:d2a39a66057ab191e5c27211a7daf8f0737f23acbf6b3562b25a62df65ffcb7b"}, + {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:9c772c485b27967514d0df1458b56875f4b6d025566bf27399d0c239ff1b369f"}, + {file = "pycryptodome-3.15.0.tar.gz", hash = "sha256:9135dddad504592bcc18b0d2d95ce86c3a5ea87ec6447ef25cfedea12d6018b8"}, +] +pydoc-markdown = [ + {file = "pydoc-markdown-2.1.3.tar.gz", hash = "sha256:6f4da1a1f3eaa2ce485833b1c5d250727d0225217718d2b6f640845032c7ff0a"}, +] +pydocstyle = [ + {file = "pydocstyle-3.0.0-py2-none-any.whl", hash = "sha256:2258f9b0df68b97bf3a6c29003edc5238ff8879f1efb6f1999988d934e432bd8"}, + {file = "pydocstyle-3.0.0-py3-none-any.whl", hash = "sha256:ed79d4ec5e92655eccc21eb0c6cf512e69512b4a97d215ace46d17e4990f2039"}, + {file = "pydocstyle-3.0.0.tar.gz", hash = "sha256:5741c85e408f9e0ddf873611085e819b809fca90b619f5fd7f34bd4959da3dd4"}, +] +pyflakes = [ + {file = "pyflakes-2.1.1-py2.py3-none-any.whl", hash = "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0"}, + {file = "pyflakes-2.1.1.tar.gz", hash = "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2"}, +] +pyglet = [ + {file = "pyglet-1.5.0-py2.py3-none-any.whl", hash = "sha256:a42f599ebd0dc8113563041c402ae09be05cdcbc643bb1183785141ba3c3304e"}, + {file = "pyglet-1.5.0.zip", hash = "sha256:6ea918985feddfa9bf0fcc01ffe9ff5849e7b6e832d9b2e03b9d2a36369cb6ee"}, +] +Pygments = [ + {file = "Pygments-2.7.4-py3-none-any.whl", hash = "sha256:bc9591213a8f0e0ca1a5e68a479b4887fdc3e75d0774e5c71c31920c427de435"}, + {file = "Pygments-2.7.4.tar.gz", hash = "sha256:df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337"}, +] +pylint = [ + {file = "pylint-2.6.0-py3-none-any.whl", hash = "sha256:bfe68f020f8a0fece830a22dd4d5dddb4ecc6137db04face4c3420a46a52239f"}, + {file = "pylint-2.6.0.tar.gz", hash = "sha256:bb4a908c9dadbc3aac18860550e870f58e1a02c9f2c204fdf5693d73be061210"}, +] +pymdown-extensions = [ + {file = "pymdown-extensions-9.1.tar.gz", hash = "sha256:74247f2c80f1d9e3c7242abe1c16317da36c6f26c7ad4b8a7f457f0ec20f0365"}, + {file = "pymdown_extensions-9.1-py3-none-any.whl", hash = "sha256:b03e66f91f33af4a6e7a0e20c740313522995f69a03d86316b1449766c473d0e"}, +] +pymultihash = [ + {file = "pymultihash-0.8.2-py3-none-any.whl", hash = "sha256:f7fa840b24bd6acbd6b073fcd330f10e15619387297babf1dd13ca4dae6e8209"}, + {file = "pymultihash-0.8.2.tar.gz", hash = "sha256:49c75a1ae9ecc6d22d259064d4597b3685da3f0258f4ded632e03a3a79af215b"}, +] +PyNaCl = [ + {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, + {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, +] +pyOpenSSL = [ + {file = "pyOpenSSL-22.1.0-py3-none-any.whl", hash = "sha256:b28437c9773bb6c6958628cf9c3bebe585de661dba6f63df17111966363dd15e"}, + {file = "pyOpenSSL-22.1.0.tar.gz", hash = "sha256:7a83b7b272dd595222d672f5ce29aa030f1fb837630ef229f62e72e395ce8968"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pypiwin32 = [ + {file = "pypiwin32-223-py3-none-any.whl", hash = "sha256:67adf399debc1d5d14dffc1ab5acacb800da569754fafdc576b2a039485aa775"}, + {file = "pypiwin32-223.tar.gz", hash = "sha256:71be40c1fbd28594214ecaecb58e7aa8b708eabfa0125c8a109ebd51edbd776a"}, +] +pyrsistent = [ + {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, + {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, + {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, + {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, + {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, + {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, + {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, + {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, + {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, + {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, + {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, +] +pyserial = [ + {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"}, + {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"}, +] +pytest = [ + {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, + {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, +] +pytest-asyncio = [ + {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"}, + {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"}, +] +pytest-cov = [ + {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, + {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, +] +pytest-custom-exit-code = [ + {file = "pytest-custom_exit_code-0.3.0.tar.gz", hash = "sha256:51ffff0ee2c1ddcc1242e2ddb2a5fd02482717e33a2326ef330e3aa430244635"}, + {file = "pytest_custom_exit_code-0.3.0-py3-none-any.whl", hash = "sha256:6e0ce6e57ce3a583cb7e5023f7d1021e19dfec22be41d9ad345bae2fc61caf3b"}, +] +pytest-randomly = [ + {file = "pytest-randomly-3.12.0.tar.gz", hash = "sha256:d60c2db71ac319aee0fc6c4110a7597d611a8b94a5590918bfa8583f00caccb2"}, + {file = "pytest_randomly-3.12.0-py3-none-any.whl", hash = "sha256:f4f2e803daf5d1ba036cc22bf4fe9dbbf99389ec56b00e5cba732fb5c1d07fdd"}, +] +pytest-rerunfailures = [ + {file = "pytest-rerunfailures-10.2.tar.gz", hash = "sha256:9e1e1bad51e07642c5bbab809fc1d4ec8eebcb7de86f90f1a26e6ef9de446697"}, + {file = "pytest_rerunfailures-10.2-py3-none-any.whl", hash = "sha256:d31d8e828dfd39363ad99cd390187bf506c7a433a89f15c3126c7d16ab723fe2"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +python-dotenv = [ + {file = "python-dotenv-0.17.1.tar.gz", hash = "sha256:b1ae5e9643d5ed987fc57cc2583021e38db531946518130777734f9589b3141f"}, + {file = "python_dotenv-0.17.1-py2.py3-none-any.whl", hash = "sha256:00aa34e92d992e9f8383730816359647f358f4a3be1ba45e5a5cefd27ee91544"}, +] +python-mbedtls = [ + {file = "python-mbedtls-2.2.0.tar.gz", hash = "sha256:ecd748045d191ba804776edee0c25799e6696ab88f2229087d057d5aa38678fa"}, + {file = "python_mbedtls-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:08da2f4e08865d53213d0f1153efa02adaa6cd730d81af7e27e68d0fc061a6dd"}, + {file = "python_mbedtls-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12b47410fd41de58ac63d2b8c15f5e92005911fc8c3094b92d034162fbf1c10d"}, + {file = "python_mbedtls-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:2faf40df514999519c5667cfe54e4d92dc3da433564618b5d9625d5366b8d616"}, + {file = "python_mbedtls-2.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6f401783f96d8354b3851fa9f2aaeebfe750aca3113512210cda6c9ac0a4ce78"}, + {file = "python_mbedtls-2.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f30adb80130912186737099ca5a174c79980b5d65435b679876caf313ae25a51"}, + {file = "python_mbedtls-2.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:92f9202bcab4e3f69eff6a0785ace4f2e338057b0ebad7e950e9a794e268cea5"}, + {file = "python_mbedtls-2.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47ea2ce594ba26388b454678745c0ff4da3ab4873c52b337b7ed5099647e96ee"}, + {file = "python_mbedtls-2.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7fe9d4818a99e46714b30a14537d107e6137d6688a7d5df7fe253dd25d3e0cd"}, + {file = "python_mbedtls-2.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:443f6f6e25943abf1c038b6f3735edc9792204ee83e606d1d92bba6c81f071b3"}, + {file = "python_mbedtls-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:741401c69bf909da74e1cb9159c8cb2c9c2841ab4780d4fbc1a29e43bf651f7e"}, + {file = "python_mbedtls-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28bd7b56083a5982eb301366ac96855d02966a45c2d438dcecd733b8f6576100"}, + {file = "python_mbedtls-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:6ddbd912cb82c1b771696a5bf094b8e1377cfb3cac3df044e541d396180a7766"}, +] +pytz = [ + {file = "pytz-2020.4-py2.py3-none-any.whl", hash = "sha256:5c55e189b682d420be27c6995ba6edce0c0a77dd67bfbe2ae6607134d5851ffd"}, + {file = "pytz-2020.4.tar.gz", hash = "sha256:3e6b7dd2d1e0a59084bcee14a17af60c5c562cdc16d828e8eba2e683d3a7e268"}, +] +PyWavelets = [ + {file = "PyWavelets-1.4.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:d854411eb5ee9cb4bc5d0e66e3634aeb8f594210f6a1bed96dbed57ec70f181c"}, + {file = "PyWavelets-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:231b0e0b1cdc1112f4af3c24eea7bf181c418d37922a67670e9bf6cfa2d544d4"}, + {file = "PyWavelets-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:754fa5085768227c4f4a26c1e0c78bc509a266d9ebd0eb69a278be7e3ece943c"}, + {file = "PyWavelets-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da7b9c006171be1f9ddb12cc6e0d3d703b95f7f43cb5e2c6f5f15d3233fcf202"}, + {file = "PyWavelets-1.4.1-cp310-cp310-win32.whl", hash = "sha256:67a0d28a08909f21400cb09ff62ba94c064882ffd9e3a6b27880a111211d59bd"}, + {file = "PyWavelets-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:91d3d393cffa634f0e550d88c0e3f217c96cfb9e32781f2960876f1808d9b45b"}, + {file = "PyWavelets-1.4.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:64c6bac6204327321db30b775060fbe8e8642316e6bff17f06b9f34936f88875"}, + {file = "PyWavelets-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3f19327f2129fb7977bc59b966b4974dfd72879c093e44a7287500a7032695de"}, + {file = "PyWavelets-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad987748f60418d5f4138db89d82ba0cb49b086e0cbb8fd5c3ed4a814cfb705e"}, + {file = "PyWavelets-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:875d4d620eee655346e3589a16a73790cf9f8917abba062234439b594e706784"}, + {file = "PyWavelets-1.4.1-cp311-cp311-win32.whl", hash = "sha256:7231461d7a8eb3bdc7aa2d97d9f67ea5a9f8902522818e7e2ead9c2b3408eeb1"}, + {file = "PyWavelets-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:daf0aa79842b571308d7c31a9c43bc99a30b6328e6aea3f50388cd8f69ba7dbc"}, + {file = "PyWavelets-1.4.1-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:ab7da0a17822cd2f6545626946d3b82d1a8e106afc4b50e3387719ba01c7b966"}, + {file = "PyWavelets-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:578af438a02a86b70f1975b546f68aaaf38f28fb082a61ceb799816049ed18aa"}, + {file = "PyWavelets-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb5ca8d11d3f98e89e65796a2125be98424d22e5ada360a0dbabff659fca0fc"}, + {file = "PyWavelets-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:058b46434eac4c04dd89aeef6fa39e4b6496a951d78c500b6641fd5b2cc2f9f4"}, + {file = "PyWavelets-1.4.1-cp38-cp38-win32.whl", hash = "sha256:de7cd61a88a982edfec01ea755b0740e94766e00a1ceceeafef3ed4c85c605cd"}, + {file = "PyWavelets-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:7ab8d9db0fe549ab2ee0bea61f614e658dd2df419d5b75fba47baa761e95f8f2"}, + {file = "PyWavelets-1.4.1-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:23bafd60350b2b868076d976bdd92f950b3944f119b4754b1d7ff22b7acbf6c6"}, + {file = "PyWavelets-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0e56cd7a53aed3cceca91a04d62feb3a0aca6725b1912d29546c26f6ea90426"}, + {file = "PyWavelets-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:030670a213ee8fefa56f6387b0c8e7d970c7f7ad6850dc048bd7c89364771b9b"}, + {file = "PyWavelets-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71ab30f51ee4470741bb55fc6b197b4a2b612232e30f6ac069106f0156342356"}, + {file = "PyWavelets-1.4.1-cp39-cp39-win32.whl", hash = "sha256:47cac4fa25bed76a45bc781a293c26ac63e8eaae9eb8f9be961758d22b58649c"}, + {file = "PyWavelets-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:88aa5449e109d8f5e7f0adef85f7f73b1ab086102865be64421a3a3d02d277f4"}, + {file = "PyWavelets-1.4.1.tar.gz", hash = "sha256:6437af3ddf083118c26d8f97ab43b0724b956c9f958e9ea788659f6a2834ba93"}, +] +pywin32 = [ + {file = "pywin32-303-cp310-cp310-win32.whl", hash = "sha256:6fed4af057039f309263fd3285d7b8042d41507343cd5fa781d98fcc5b90e8bb"}, + {file = "pywin32-303-cp310-cp310-win_amd64.whl", hash = "sha256:51cb52c5ec6709f96c3f26e7795b0bf169ee0d8395b2c1d7eb2c029a5008ed51"}, + {file = "pywin32-303-cp311-cp311-win32.whl", hash = "sha256:d9b5d87ca944eb3aa4cd45516203ead4b37ab06b8b777c54aedc35975dec0dee"}, + {file = "pywin32-303-cp311-cp311-win_amd64.whl", hash = "sha256:fcf44032f5b14fcda86028cdf49b6ebdaea091230eb0a757282aa656e4732439"}, + {file = "pywin32-303-cp36-cp36m-win32.whl", hash = "sha256:aad484d52ec58008ca36bd4ad14a71d7dd0a99db1a4ca71072213f63bf49c7d9"}, + {file = "pywin32-303-cp36-cp36m-win_amd64.whl", hash = "sha256:2a09632916b6bb231ba49983fe989f2f625cea237219530e81a69239cd0c4559"}, + {file = "pywin32-303-cp37-cp37m-win32.whl", hash = "sha256:b1675d82bcf6dbc96363fca747bac8bff6f6e4a447a4287ac652aa4b9adc796e"}, + {file = "pywin32-303-cp37-cp37m-win_amd64.whl", hash = "sha256:c268040769b48a13367221fced6d4232ed52f044ffafeda247bd9d2c6bdc29ca"}, + {file = "pywin32-303-cp38-cp38-win32.whl", hash = "sha256:5f9ec054f5a46a0f4dfd72af2ce1372f3d5a6e4052af20b858aa7df2df7d355b"}, + {file = "pywin32-303-cp38-cp38-win_amd64.whl", hash = "sha256:793bf74fce164bcffd9d57bb13c2c15d56e43c9542a7b9687b4fccf8f8a41aba"}, + {file = "pywin32-303-cp39-cp39-win32.whl", hash = "sha256:7d3271c98434617a11921c5ccf74615794d97b079e22ed7773790822735cc352"}, + {file = "pywin32-303-cp39-cp39-win_amd64.whl", hash = "sha256:79cbb862c11b9af19bcb682891c1b91942ec2ff7de8151e2aea2e175899cda34"}, +] +PyYAML = [ + {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, + {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, + {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, + {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"}, + {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, + {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, + {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"}, + {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, + {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, + {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"}, + {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"}, + {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, + {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, + {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"}, + {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"}, + {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, + {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, + {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, +] +pyyaml_env_tag = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] +quantile-python = [ + {file = "quantile-python-1.1.tar.gz", hash = "sha256:558629e88c497ef3b9b1081349c1ae6a61b53590e317724298ff54c674db7969"}, +] +requests = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] +requests-oauthlib = [ + {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, + {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, +] +rlp = [ + {file = "rlp-2.0.1-py2.py3-none-any.whl", hash = "sha256:52a57c9f53f03c88b189283734b397314288250cc4a3c4113e9e36e2ac6bdd16"}, + {file = "rlp-2.0.1.tar.gz", hash = "sha256:665e8312750b3fc5f7002e656d05b9dcb6e93b6063df40d95c49ad90c19d1f0e"}, +] +rsa = [ + {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, + {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, +] +"ruamel.yaml" = [ + {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, + {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, +] +"ruamel.yaml.clib" = [ + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:066f886bc90cc2ce44df8b5f7acfc6a7e2b2e672713f027136464492b0c34d7c"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, + {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, + {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win_amd64.whl", hash = "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d3c620a54748a3d4cf0bcfe623e388407c8e85a4b06b8188e126302bcab93ea8"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win32.whl", hash = "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94"}, + {file = "ruamel.yaml.clib-0.2.6-cp36-cp36m-win_amd64.whl", hash = "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:210c8fcfeff90514b7133010bf14e3bad652c8efde6b20e00c43854bf94fa5a6"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb"}, + {file = "ruamel.yaml.clib-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:61bc5e5ca632d95925907c569daa559ea194a4d16084ba86084be98ab1cec1c6"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win32.whl", hash = "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b"}, + {file = "ruamel.yaml.clib-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:1b4139a6ffbca8ef60fdaf9b33dec05143ba746a6f0ae0f9d11d38239211d335"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win32.whl", hash = "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104"}, + {file = "ruamel.yaml.clib-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7"}, + {file = "ruamel.yaml.clib-0.2.6.tar.gz", hash = "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd"}, +] +safety = [ + {file = "safety-2.3.1-py3-none-any.whl", hash = "sha256:8f098d12b607db2756886280e85c28ece8db1bba4f45fc5f981f4663217bd619"}, + {file = "safety-2.3.1.tar.gz", hash = "sha256:6e6fcb7d4e8321098cf289f59b65051cafd3467f089c6e57c9f894ae32c23b71"}, +] +scikit-image = [ + {file = "scikit-image-0.19.3.tar.gz", hash = "sha256:24b5367de1762da6ee126dd8f30cc4e7efda474e0d7d70685433f0e3aa2ec450"}, + {file = "scikit_image-0.19.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:3a01372ae4bca223873304b0bff79b9d92446ac6d6177f73d89b45561e2d09d8"}, + {file = "scikit_image-0.19.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fdf48d9b1f13af69e4e2c78e05067e322e9c8c97463c315cd0ecb47a94e259fc"}, + {file = "scikit_image-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b6a8f98f2ac9bb73706461fd1dec875f6a5141759ed526850a5a49e90003d19"}, + {file = "scikit_image-0.19.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfbb073f23deb48e0e60c47f8741d8089121d89cc78629ea8c5b51096efc5be7"}, + {file = "scikit_image-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:cc24177de3fdceca5d04807ad9c87d665f0bf01032ed94a9055cd1ed2b3f33e9"}, + {file = "scikit_image-0.19.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:fd9dd3994bb6f9f7a35f228323f3c4dc44b3cf2ff15fd72d895216e9333550c6"}, + {file = "scikit_image-0.19.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ad5d8000207a264d1a55681a9276e6a739d3f05cf4429004ad00d61d1892235f"}, + {file = "scikit_image-0.19.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:84baa3179f3ae983c3a5d81c1e404bc92dcf7daeb41bfe9369badcda3fb22b92"}, + {file = "scikit_image-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f9f8a1387afc6c70f2bed007c3854a2d7489f9f7713c242f16f32ee05934bc2"}, + {file = "scikit_image-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:9fb0923a3bfa99457c5e17888f27b3b8a83a3600b4fef317992e7b7234764732"}, + {file = "scikit_image-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:ce3d2207f253b8eb2c824e30d145a9f07a34a14212d57f3beca9f7e03c383cbe"}, + {file = "scikit_image-0.19.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:2a02d1bd0e2b53e36b952bd5fd6118d9ccc3ee51de35705d63d8eb1f2e86adef"}, + {file = "scikit_image-0.19.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:03779a7e1736fdf89d83c0ba67d44110496edd736a3bfce61a2b5177a1c8a099"}, + {file = "scikit_image-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19a21a101a20c587a3b611a2cf6f86c35aae9f8d9563279b987e83ee1c9a9790"}, + {file = "scikit_image-0.19.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f50b923f8099c1045fcde7418d86b206c87e333e43da980f41d8577b9605245"}, + {file = "scikit_image-0.19.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e207c6ce5ce121d7d9b9d2b61b9adca57d1abed112c902d8ffbfdc20fb42c12b"}, + {file = "scikit_image-0.19.3-cp38-cp38-win32.whl", hash = "sha256:a7c3985c68bfe05f7571167ee021d14f5b8d1a4a250c91f0b13be7fb07e6af34"}, + {file = "scikit_image-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:651de1c2ce1fbee834753b46b8e7d81cb12a5594898babba63ac82b30ddad49d"}, + {file = "scikit_image-0.19.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:8d8917fcf85b987b1f287f823f3a1a7dac38b70aaca759bc0200f3bc292d5ced"}, + {file = "scikit_image-0.19.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:0b0a199157ce8487c77de4fde0edc0b42d6d42818881c11f459262351d678b2d"}, + {file = "scikit_image-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33dfd463ee6cc509defa279b963829f2230c9e0639ccd3931045be055878eea6"}, + {file = "scikit_image-0.19.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8714348ddd671f819457a797c97d4c672166f093def66d66c3254cbd1d43f83"}, + {file = "scikit_image-0.19.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3b1025356508d41f4fe48528e509d95f9e4015e90cf158cd58c56dc63e0ac5"}, + {file = "scikit_image-0.19.3-cp39-cp39-win32.whl", hash = "sha256:9439e5294de3f18d6e82ec8eee2c46590231cf9c690da80545e83a0733b7a69e"}, + {file = "scikit_image-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:32fb88cc36203b99c9672fb972c9ef98635deaa5fc889fe969f3e11c44f22919"}, +] +scipy = [ + {file = "scipy-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ee4ceed204f269da19f67f0115a85d3a2cd8547185037ad99a4025f9c61d02e9"}, + {file = "scipy-1.9.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:17be1a7c68ec4c49d8cd4eb1655d55d14a54ab63012296bdd5921c92dc485acd"}, + {file = "scipy-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72297eb9702576bd8f626bb488fd32bb35349d3120fc4a5e733db137f06c9a6"}, + {file = "scipy-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa270cc6080c987929335c4cb94e8054fee9a6058cecff22276fa5dbab9856fc"}, + {file = "scipy-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:22380e076a162e81b659d53d75b02e9c75ad14ea2d53d9c645a12543414e2150"}, + {file = "scipy-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbed414fc25d64bd6d1613dc0286fbf91902219b8be63ad254525162235b67e9"}, + {file = "scipy-1.9.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:885b7ac56d7460544b2ef89ab9feafa30f4264c9825d975ef690608d07e6cc55"}, + {file = "scipy-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5994a8232cc6510a8e85899661df2d11198bf362f0ffe6fbd5c0aca17ab46ce3"}, + {file = "scipy-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e9c83dccac06f3b9aa02df69577f239758d5d0d0c069673fb0b47ecb971983d"}, + {file = "scipy-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:92c5e627a0635ca02e6494bbbdb74f98d93ac8730416209d61de3b70c8a821be"}, + {file = "scipy-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b6194da32e0ce9200b2eda4eb4edb89c5cb8b83d6deaf7c35f8ad3d5d7627d5c"}, + {file = "scipy-1.9.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:148cb6f53d9d10dafde848e9aeb1226bf2809d16dc3221b2fa568130b6f2e586"}, + {file = "scipy-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:658fd31c6ad4eb9fa3fd460fcac779f70a6bc7480288a211b7658a25891cf01d"}, + {file = "scipy-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4012dbe540732311b8f4388b7e1482eb43a7cc0435bbf2b9916b3d6c38fb8d01"}, + {file = "scipy-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d6cb1f92ded3fc48f7dbe94d20d7b9887e13b874e79043907de541c841563b4c"}, + {file = "scipy-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1e3b23a82867018cd26255dc951789a7c567921622073e1113755866f1eae928"}, + {file = "scipy-1.9.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:82e8bfb352aa9dce9a0ffe81f4c369a2c87c85533519441686f59f21d8c09697"}, + {file = "scipy-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b95283529712101bfb7c87faf94cb86ed9e64de079509edfe107e5cfa55733"}, + {file = "scipy-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8c29703202c39d699b0d6b164bde5501c212005f20abf46ae322b9307c8a41"}, + {file = "scipy-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:7b2608b3141c257d01ae772e23b3de9e04d27344e6b68a890883795229cb7191"}, + {file = "scipy-1.9.2.tar.gz", hash = "sha256:99e7720caefb8bca6ebf05c7d96078ed202881f61e0c68bd9e0f3e8097d6f794"}, +] +semantic-version = [ + {file = "semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177"}, + {file = "semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c"}, +] +semver = [ + {file = "semver-2.13.0-py2.py3-none-any.whl", hash = "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4"}, + {file = "semver-2.13.0.tar.gz", hash = "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f"}, +] +setuptools = [ + {file = "setuptools-65.4.1-py3-none-any.whl", hash = "sha256:1b6bdc6161661409c5f21508763dc63ab20a9ac2f8ba20029aaaa7fdb9118012"}, + {file = "setuptools-65.4.1.tar.gz", hash = "sha256:3050e338e5871e70c72983072fe34f6032ae1cdeeeb67338199c2f74e083a80e"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +smmap = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] +snowballstemmer = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] +soupsieve = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] +SQLAlchemy = [ + {file = "SQLAlchemy-1.4.41-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:13e397a9371ecd25573a7b90bd037db604331cf403f5318038c46ee44908c44d"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2d6495f84c4fd11584f34e62f9feec81bf373787b3942270487074e35cbe5330"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27m-win32.whl", hash = "sha256:e570cfc40a29d6ad46c9aeaddbdcee687880940a3a327f2c668dd0e4ef0a441d"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27m-win_amd64.whl", hash = "sha256:5facb7fd6fa8a7353bbe88b95695e555338fb038ad19ceb29c82d94f62775a05"}, + {file = "SQLAlchemy-1.4.41-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f37fa70d95658763254941ddd30ecb23fc4ec0c5a788a7c21034fc2305dab7cc"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:361f6b5e3f659e3c56ea3518cf85fbdae1b9e788ade0219a67eeaaea8a4e4d2a"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0990932f7cca97fece8017414f57fdd80db506a045869d7ddf2dda1d7cf69ecc"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cd767cf5d7252b1c88fcfb58426a32d7bd14a7e4942497e15b68ff5d822b41ad"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5102fb9ee2c258a2218281adcb3e1918b793c51d6c2b4666ce38c35101bb940e"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-win32.whl", hash = "sha256:2082a2d2fca363a3ce21cfa3d068c5a1ce4bf720cf6497fb3a9fc643a8ee4ddd"}, + {file = "SQLAlchemy-1.4.41-cp310-cp310-win_amd64.whl", hash = "sha256:e4b12e3d88a8fffd0b4ca559f6d4957ed91bd4c0613a4e13846ab8729dc5c251"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:90484a2b00baedad361402c257895b13faa3f01780f18f4a104a2f5c413e4536"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b67fc780cfe2b306180e56daaa411dd3186bf979d50a6a7c2a5b5036575cbdbb"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad2b727fc41c7f8757098903f85fafb4bf587ca6605f82d9bf5604bd9c7cded"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-win32.whl", hash = "sha256:59bdc291165b6119fc6cdbc287c36f7f2859e6051dd923bdf47b4c55fd2f8bd0"}, + {file = "SQLAlchemy-1.4.41-cp311-cp311-win_amd64.whl", hash = "sha256:d2e054aed4645f9b755db85bc69fc4ed2c9020c19c8027976f66576b906a74f1"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:4ba7e122510bbc07258dc42be6ed45997efdf38129bde3e3f12649be70683546"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0dcf127bb99458a9d211e6e1f0f3edb96c874dd12f2503d4d8e4f1fd103790b"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e16c2be5cb19e2c08da7bd3a87fed2a0d4e90065ee553a940c4fc1a0fb1ab72b"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5ebeeec5c14533221eb30bad716bc1fd32f509196318fb9caa7002c4a364e4c"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-win32.whl", hash = "sha256:3e2ef592ac3693c65210f8b53d0edcf9f4405925adcfc031ff495e8d18169682"}, + {file = "SQLAlchemy-1.4.41-cp36-cp36m-win_amd64.whl", hash = "sha256:eb30cf008850c0a26b72bd1b9be6730830165ce049d239cfdccd906f2685f892"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:c23d64a0b28fc78c96289ffbd0d9d1abd48d267269b27f2d34e430ea73ce4b26"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8eb8897367a21b578b26f5713833836f886817ee2ffba1177d446fa3f77e67c8"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:14576238a5f89bcf504c5f0a388d0ca78df61fb42cb2af0efe239dc965d4f5c9"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639e1ae8d48b3c86ffe59c0daa9a02e2bfe17ca3d2b41611b30a0073937d4497"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-win32.whl", hash = "sha256:0005bd73026cd239fc1e8ccdf54db58b6193be9a02b3f0c5983808f84862c767"}, + {file = "SQLAlchemy-1.4.41-cp37-cp37m-win_amd64.whl", hash = "sha256:5323252be2bd261e0aa3f33cb3a64c45d76829989fa3ce90652838397d84197d"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:05f0de3a1dc3810a776275763764bb0015a02ae0f698a794646ebc5fb06fad33"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0002e829142b2af00b4eaa26c51728f3ea68235f232a2e72a9508a3116bd6ed0"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22ff16cedab5b16a0db79f1bc99e46a6ddececb60c396562e50aab58ddb2871c"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccfd238f766a5bb5ee5545a62dd03f316ac67966a6a658efb63eeff8158a4bbf"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-win32.whl", hash = "sha256:58bb65b3274b0c8a02cea9f91d6f44d0da79abc993b33bdedbfec98c8440175a"}, + {file = "SQLAlchemy-1.4.41-cp38-cp38-win_amd64.whl", hash = "sha256:ce8feaa52c1640de9541eeaaa8b5fb632d9d66249c947bb0d89dd01f87c7c288"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:199a73c31ac8ea59937cc0bf3dfc04392e81afe2ec8a74f26f489d268867846c"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676d51c9f6f6226ae8f26dc83ec291c088fe7633269757d333978df78d931ab"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:036d8472356e1d5f096c5e0e1a7e0f9182140ada3602f8fff6b7329e9e7cfbcd"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2307495d9e0ea00d0c726be97a5b96615035854972cc538f6e7eaed23a35886c"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-win32.whl", hash = "sha256:9c56e19780cd1344fcd362fd6265a15f48aa8d365996a37fab1495cae8fcd97d"}, + {file = "SQLAlchemy-1.4.41-cp39-cp39-win_amd64.whl", hash = "sha256:f5fa526d027d804b1f85cdda1eb091f70bde6fb7d87892f6dd5a48925bc88898"}, + {file = "SQLAlchemy-1.4.41.tar.gz", hash = "sha256:0292f70d1797e3c54e862e6f30ae474014648bc9c723e14a2fda730adb0a9791"}, +] +stevedore = [ + {file = "stevedore-4.0.0-py3-none-any.whl", hash = "sha256:87e4d27fe96d0d7e4fc24f0cbe3463baae4ec51e81d95fbe60d2474636e0c7d8"}, + {file = "stevedore-4.0.0.tar.gz", hash = "sha256:f82cc99a1ff552310d19c379827c2c64dd9f85a38bcd5559db2470161867b786"}, +] +temper-py = [ + {file = "temper-py-0.0.3.tar.gz", hash = "sha256:9a4ed42373bc609087c292d44c262ae91ad282d34a865319f15664a1fe6315cf"}, + {file = "temper_py-0.0.3-py2-none-any.whl", hash = "sha256:1da14234244ecc8efd52ac1afc26f0400bbd23c275d1beca20db9d2735b2b493"}, +] +tensorboard = [ + {file = "tensorboard-2.10.1-py3-none-any.whl", hash = "sha256:fb9222c1750e2fa35ef170d998a1e229f626eeced3004494a8849c88c15d8c1c"}, +] +tensorboard-data-server = [ + {file = "tensorboard_data_server-0.6.1-py3-none-any.whl", hash = "sha256:809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7"}, + {file = "tensorboard_data_server-0.6.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:fa8cef9be4fcae2f2363c88176638baf2da19c5ec90addb49b1cde05c95c88ee"}, + {file = "tensorboard_data_server-0.6.1-py3-none-manylinux2010_x86_64.whl", hash = "sha256:d8237580755e58eff68d1f3abefb5b1e39ae5c8b127cc40920f9c4fb33f4b98a"}, +] +tensorboard-plugin-wit = [ + {file = "tensorboard_plugin_wit-1.8.1-py3-none-any.whl", hash = "sha256:ff26bdd583d155aa951ee3b152b3d0cffae8005dc697f72b44a8e8c2a77a8cbe"}, +] +tensorflow = [ + {file = "tensorflow-2.10.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:60d5b4fbbb7a1304d96352372fa032e861e98bb3f23aced7ce53bc475a2df97d"}, + {file = "tensorflow-2.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1e898bc1df521af9a8bfe0e511124379a6414083234ec67c6ab212ad12b2f"}, + {file = "tensorflow-2.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e129114dc529e63af9c419b5917b3407d0d26a4c8b73e114f601a175a7eb0477"}, + {file = "tensorflow-2.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:0a3b58d90fadb5bdf81a964bea73bb89019a9d1e9ac12de75375c8f65e0d7570"}, + {file = "tensorflow-2.10.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:0701da16a3d6d34763cd9ced6467cee24c02c9abf0d1a48ba59ea5a8d0421cec"}, + {file = "tensorflow-2.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64cc999ae83ddd891083141d3e5d718e3d799501a1b56c544f2ca648a8396c3e"}, + {file = "tensorflow-2.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9f711c5ff04333355c83eb96ca2e1db57c9663c6fa01d68b5953a040a602a3c"}, + {file = "tensorflow-2.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9f4677e9ab7104e73710a94ff5d2ed4b335378dcd2ac7402a68c31802a680911"}, + {file = "tensorflow-2.10.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8773858cbf37aaad444b07605d29f5b2d8f7cd1ecbf1cce2777931b96884589c"}, + {file = "tensorflow-2.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5806d4645bce5eb415863d757b5f056364b9d1cfa2c34f711f69d46cac605eee"}, + {file = "tensorflow-2.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e85f89bc23c62d4243fad70bac902f00a234b33da8b91e2967eeef0f4b75b1e3"}, + {file = "tensorflow-2.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:d9b19b5120c0b393d9e2fc72561cfa3a454ef7f1ac649d8ad0dcc98817a086a4"}, + {file = "tensorflow-2.10.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:4b542af76d93c43e9d24dcb69888793831e434dc781c9533ee07f928fce84a15"}, + {file = "tensorflow-2.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588a1f34d9db51ea856aff07da9aa877c1d1d109336eee2c3bbb16dabd3f605"}, + {file = "tensorflow-2.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:487918f4074685e213ba247387faab34933df76939134008441cb9d3e2c95cab"}, + {file = "tensorflow-2.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:741a74278f471dc21991a6c7dc802d454d42fd39515900c6363b8c38a898fb0f"}, +] +tensorflow-estimator = [ + {file = "tensorflow_estimator-2.10.0-py2.py3-none-any.whl", hash = "sha256:f324ea17cd57f16e33bf188711d5077e6b2e5f5a12c328d6e01a07b23888edcd"}, +] +tensorflow-io-gcs-filesystem = [ + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:babca2a12755badd1517043f9d633823533fbd7b463d7d36e9e6179b246731dc"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3a0ebfeac11507f6fc96162b8b22010b7d715bb0848311e54ef18d88f07014a"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c22c71ee80f131b2d55d53a3c66a910156004c2dcba976cabd8deeb5e236397a"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp310-cp310-win_amd64.whl", hash = "sha256:244754af85090d3fdd67c0b160bce8509e9a43fefccb295e3c9b72df21d9db61"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:3e510134375ed0467d1d90cd80b762b68e93b429fe7b9b38a953e3fe4306536f"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e21842a0a7c906525884bdbdc6d82bcfec98c6da5bafe7bfc89fd7253fcab5cf"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:043008e51e920028b7c564795d82d2487b0baf6bdb23cb9d84796c4a8fcab668"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5c809435233893c0df80dce3d10d310885c86dcfb08ca9ebb55e0fcb8a4e13ac"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:4cc906a12bbd788be071e2dab333f953e82938b77f93429e55ad4b4bfd77072a"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ad97ef862c1fb3f7ba6fe3cb5de25cb41d1c55121deaf00c590a5726a7afe88"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:564a7de156650cac9e1e361dabd6b5733a4ef31f5f11ef5eebf7fe694128334f"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp38-cp38-win_amd64.whl", hash = "sha256:9cf6a8efc35a04a8c3d5ec4c6b6e4931a6bc8d4e1f9d9aa0bad5fd272941c886"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:f7d24da555e2a1fe890b020b1953819ad990e31e63088a77ce87b7ffa67a7aaf"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ed17c281a28df9ab0547cdf166e885208d2a43db0f0f8fbe66addc4e23ee36ff"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d2c01ba916866204b70f96103bbaa24655b1e7b416b399e49dce893a7835aa7"}, + {file = "tensorflow_io_gcs_filesystem-0.27.0-cp39-cp39-win_amd64.whl", hash = "sha256:152f4c20e5341d486df35f7ce9751a441ed89b43c1036491cd2b30a742fbe20a"}, +] +termcolor = [ + {file = "termcolor-2.0.1-py3-none-any.whl", hash = "sha256:7e597f9de8e001a3208c4132938597413b9da45382b6f1d150cff8d062b7aaa3"}, + {file = "termcolor-2.0.1.tar.gz", hash = "sha256:6b2cf769e93364a2676e1de56a7c0cff2cf5bd07f37e9cc80b0dd6320ebfe388"}, +] +testfixtures = [ + {file = "testfixtures-6.18.5-py2.py3-none-any.whl", hash = "sha256:7de200e24f50a4a5d6da7019fb1197aaf5abd475efb2ec2422fdcf2f2eb98c1d"}, + {file = "testfixtures-6.18.5.tar.gz", hash = "sha256:02dae883f567f5b70fd3ad3c9eefb95912e78ac90be6c7444b5e2f46bf572c84"}, +] +tifffile = [ + {file = "tifffile-2022.8.12-py3-none-any.whl", hash = "sha256:1456f9f6943c85082ef4d73f5329038826da67f70d5d513873a06f3b1598d23e"}, + {file = "tifffile-2022.8.12.tar.gz", hash = "sha256:3e74e0fd48838477ebcf40e09b7780bd095ee5920b2238f485e2c68463a3dcb4"}, +] +toml = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +toolz = [ + {file = "toolz-0.12.0-py3-none-any.whl", hash = "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f"}, + {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, +] +tox = [ + {file = "tox-3.25.1-py2.py3-none-any.whl", hash = "sha256:c38e15f4733683a9cc0129fba078633e07eb0961f550a010ada879e95fb32632"}, + {file = "tox-3.25.1.tar.gz", hash = "sha256:c138327815f53bc6da4fe56baec5f25f00622ae69ef3fe4e1e385720e22486f9"}, +] +types-certifi = [ + {file = "types-certifi-2021.10.8.3.tar.gz", hash = "sha256:72cf7798d165bc0b76e1c10dd1ea3097c7063c42c21d664523b928e88b554a4f"}, + {file = "types_certifi-2021.10.8.3-py3-none-any.whl", hash = "sha256:b2d1e325e69f71f7c78e5943d410e650b4707bb0ef32e4ddf3da37f54176e88a"}, +] +types-click = [ + {file = "types-click-7.1.8.tar.gz", hash = "sha256:b6604968be6401dc516311ca50708a0a28baa7a0cb840efd7412f0dbbff4e092"}, + {file = "types_click-7.1.8-py3-none-any.whl", hash = "sha256:8cb030a669e2e927461be9827375f83c16b8178c365852c060a34e24871e7e81"}, +] +types-PyYAML = [ + {file = "types-PyYAML-6.0.12.tar.gz", hash = "sha256:f6f350418125872f3f0409d96a62a5a5ceb45231af5cc07ee0034ec48a3c82fa"}, + {file = "types_PyYAML-6.0.12-py3-none-any.whl", hash = "sha256:29228db9f82df4f1b7febee06bbfb601677882e98a3da98132e31c6874163e15"}, +] +types-requests = [ + {file = "types-requests-2.28.11.2.tar.gz", hash = "sha256:fdcd7bd148139fb8eef72cf4a41ac7273872cad9e6ada14b11ff5dfdeee60ed3"}, + {file = "types_requests-2.28.11.2-py3-none-any.whl", hash = "sha256:14941f8023a80b16441b3b46caffcbfce5265fd14555844d6029697824b5a2ef"}, +] +types-setuptools = [ + {file = "types-setuptools-65.4.0.0.tar.gz", hash = "sha256:d9021d6a70690b34e7bd2947e7ab10167c646fbf062508cb56581be2e2a1615e"}, + {file = "types_setuptools-65.4.0.0-py3-none-any.whl", hash = "sha256:ce178b3f7dbd6c0e67f8eee7ae29c1be280ade7e5188bdd9e620843de4060d85"}, +] +types-urllib3 = [ + {file = "types-urllib3-1.26.25.tar.gz", hash = "sha256:5aef0e663724eef924afa8b320b62ffef2c1736c1fa6caecfc9bc6c8ae2c3def"}, + {file = "types_urllib3-1.26.25-py3-none-any.whl", hash = "sha256:c1d78cef7bd581e162e46c20a57b2e1aa6ebecdcf01fd0713bb90978ff3e3427"}, +] +typing-extensions = [ + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, +] +uritemplate = [ + {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, + {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, +] +urllib3 = [ + {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, + {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, +] +varint = [ + {file = "varint-1.0.2.tar.gz", hash = "sha256:a6ecc02377ac5ee9d65a6a8ad45c9ff1dac8ccee19400a5950fb51d594214ca5"}, +] +virtualenv = [ + {file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"}, + {file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"}, +] +vulture = [ + {file = "vulture-2.6-py2.py3-none-any.whl", hash = "sha256:e792e903ccc063ec4873a8979dcf11b51ea3d65a2d3b31c113d47be48f0cdcae"}, + {file = "vulture-2.6.tar.gz", hash = "sha256:2515fa848181001dc8a73aba6a01a1a17406f5d372f24ec7f7191866f9f4997e"}, +] +watchdog = [ + {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, + {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, + {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"}, + {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"}, + {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"}, + {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"}, + {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"}, + {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"}, + {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"}, + {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"}, + {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"}, + {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"}, + {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"}, + {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, + {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, +] +web3 = [ + {file = "web3-5.31.0-py3-none-any.whl", hash = "sha256:bc820381dea0a53f7747c75e3cb533621ada677c05c79fe133505f18c3a651d1"}, + {file = "web3-5.31.0.tar.gz", hash = "sha256:ef0ad5c62958fe18202bacfa1f216a57d97a8abdecc68f87946c02b38aaab34e"}, +] +websocket-client = [ + {file = "websocket-client-1.4.1.tar.gz", hash = "sha256:f9611eb65c8241a67fb373bef040b3cf8ad377a9f6546a12b620b6511e8ea9ef"}, + {file = "websocket_client-1.4.1-py3-none-any.whl", hash = "sha256:398909eb7e261f44b8f4bd474785b6ec5f5b499d4953342fe9755e01ef624090"}, +] +websockets = [ + {file = "websockets-9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d144b350045c53c8ff09aa1cfa955012dd32f00c7e0862c199edcabb1a8b32da"}, + {file = "websockets-9.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b4ad84b156cf50529b8ac5cc1638c2cf8680490e3fccb6121316c8c02620a2e4"}, + {file = "websockets-9.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2cf04601633a4ec176b9cc3d3e73789c037641001dbfaf7c411f89cd3e04fcaf"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:5c8f0d82ea2468282e08b0cf5307f3ad022290ed50c45d5cb7767957ca782880"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:caa68c95bc1776d3521f81eeb4d5b9438be92514ec2a79fececda814099c8314"}, + {file = "websockets-9.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d2c2d9b24d3c65b5a02cac12cbb4e4194e590314519ed49db2f67ef561c3cf58"}, + {file = "websockets-9.1-cp36-cp36m-win32.whl", hash = "sha256:f31722f1c033c198aa4a39a01905951c00bd1c74f922e8afc1b1c62adbcdd56a"}, + {file = "websockets-9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:3ddff38894c7857c476feb3538dd847514379d6dc844961dc99f04b0384b1b1b"}, + {file = "websockets-9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:51d04df04ed9d08077d10ccbe21e6805791b78eac49d16d30a1f1fe2e44ba0af"}, + {file = "websockets-9.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f68c352a68e5fdf1e97288d5cec9296664c590c25932a8476224124aaf90dbcd"}, + {file = "websockets-9.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:b43b13e5622c5a53ab12f3272e6f42f1ce37cd5b6684b2676cb365403295cd40"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:9147868bb0cc01e6846606cd65cbf9c58598f187b96d14dd1ca17338b08793bb"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:836d14eb53b500fd92bd5db2fc5894f7c72b634f9c2a28f546f75967503d8e25"}, + {file = "websockets-9.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:48c222feb3ced18f3dc61168ca18952a22fb88e5eb8902d2bf1b50faefdc34a2"}, + {file = "websockets-9.1-cp37-cp37m-win32.whl", hash = "sha256:900589e19200be76dd7cbaa95e9771605b5ce3f62512d039fb3bc5da9014912a"}, + {file = "websockets-9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ab5ee15d3462198c794c49ccd31773d8a2b8c17d622aa184f669d2b98c2f0857"}, + {file = "websockets-9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85e701a6c316b7067f1e8675c638036a796fe5116783a4c932e7eb8e305a3ffe"}, + {file = "websockets-9.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:b2e71c4670ebe1067fa8632f0d081e47254ee2d3d409de54168b43b0ba9147e0"}, + {file = "websockets-9.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:230a3506df6b5f446fed2398e58dcaafdff12d67fe1397dff196411a9e820d02"}, + {file = "websockets-9.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:7df3596838b2a0c07c6f6d67752c53859a54993d4f062689fdf547cb56d0f84f"}, + {file = "websockets-9.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:826ccf85d4514609219725ba4a7abd569228c2c9f1968e8be05be366f68291ec"}, + {file = "websockets-9.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0dd4eb8e0bbf365d6f652711ce21b8fd2b596f873d32aabb0fbb53ec604418cc"}, + {file = "websockets-9.1-cp38-cp38-win32.whl", hash = "sha256:1d0971cc7251aeff955aa742ec541ee8aaea4bb2ebf0245748fbec62f744a37e"}, + {file = "websockets-9.1-cp38-cp38-win_amd64.whl", hash = "sha256:7189e51955f9268b2bdd6cc537e0faa06f8fffda7fb386e5922c6391de51b077"}, + {file = "websockets-9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e9e5fd6dbdf95d99bc03732ded1fc8ef22ebbc05999ac7e0c7bf57fe6e4e5ae2"}, + {file = "websockets-9.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9e7fdc775fe7403dbd8bc883ba59576a6232eac96dacb56512daacf7af5d618d"}, + {file = "websockets-9.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:597c28f3aa7a09e8c070a86b03107094ee5cdafcc0d55f2f2eac92faac8dc67d"}, + {file = "websockets-9.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:ad893d889bc700a5835e0a95a3e4f2c39e91577ab232a3dc03c262a0f8fc4b5c"}, + {file = "websockets-9.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:1d6b4fddb12ab9adf87b843cd4316c4bd602db8d5efd2fb83147f0458fe85135"}, + {file = "websockets-9.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ebf459a1c069f9866d8569439c06193c586e72c9330db1390af7c6a0a32c4afd"}, + {file = "websockets-9.1-cp39-cp39-win32.whl", hash = "sha256:be5fd35e99970518547edc906efab29afd392319f020c3c58b0e1a158e16ed20"}, + {file = "websockets-9.1-cp39-cp39-win_amd64.whl", hash = "sha256:85db8090ba94e22d964498a47fdd933b8875a1add6ebc514c7ac8703eb97bbf0"}, + {file = "websockets-9.1.tar.gz", hash = "sha256:276d2339ebf0df4f45df453923ebd2270b87900eda5dfd4a6b0cfa15f82111c3"}, +] +Werkzeug = [ + {file = "Werkzeug-2.2.2-py3-none-any.whl", hash = "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5"}, + {file = "Werkzeug-2.2.2.tar.gz", hash = "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f"}, +] +wheel = [ + {file = "wheel-0.37.1-py2.py3-none-any.whl", hash = "sha256:4bdcd7d840138086126cd09254dc6195fb4fc6f01c050a1d7236f2630db1d22a"}, + {file = "wheel-0.37.1.tar.gz", hash = "sha256:e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4"}, +] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] +yapf = [ + {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"}, + {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, +] +yarl = [ + {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28"}, + {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3"}, + {file = "yarl-1.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a"}, + {file = "yarl-1.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843"}, + {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453"}, + {file = "yarl-1.8.1-cp310-cp310-win32.whl", hash = "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272"}, + {file = "yarl-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0"}, + {file = "yarl-1.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda"}, + {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd"}, + {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780"}, + {file = "yarl-1.8.1-cp37-cp37m-win32.whl", hash = "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07"}, + {file = "yarl-1.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802"}, + {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a"}, + {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1"}, + {file = "yarl-1.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc"}, + {file = "yarl-1.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e"}, + {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae"}, + {file = "yarl-1.8.1-cp38-cp38-win32.whl", hash = "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0"}, + {file = "yarl-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4"}, + {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936"}, + {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350"}, + {file = "yarl-1.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c"}, + {file = "yarl-1.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0"}, + {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e"}, + {file = "yarl-1.8.1-cp39-cp39-win32.whl", hash = "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6"}, + {file = "yarl-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be"}, + {file = "yarl-1.8.1.tar.gz", hash = "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf"}, +] +yoti = [ + {file = "yoti-2.14.0-py2.py3-none-any.whl", hash = "sha256:c6a6f4e9f97e06e5eb759ac4767c7384dbc6bfb1f8b3ae483fa88dae18c56f01"}, + {file = "yoti-2.14.0.tar.gz", hash = "sha256:f0d052db0d40745627b5ad2af272cb309bb5e02f702037e559f084bf35f95c9e"}, +] +zipp = [ + {file = "zipp-3.9.0-py3-none-any.whl", hash = "sha256:972cfa31bc2fedd3fa838a51e9bc7e64b7fb725a8c00e7431554311f180e9980"}, + {file = "zipp-3.9.0.tar.gz", hash = "sha256:3a7af91c3db40ec72dd9d154ae18e008c69efe8ca88dde4f9a731bb82fe2f9eb"}, +] diff --git a/pyproject.toml b/pyproject.toml index 4618ca7559..e0d6abf99f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,151 @@ [build-system] -requires = ["setuptools", "wheel"] -build_backend = "setuptools.build_meta" +requires = ["poetry-core>=1.1.0"] +build-backend = "poetry.core.masonry.api" + + +[tool.poetry] +name = "aea" +version = "1.2.1" +description = "Autonomous Economic Agent framework" +authors = ["Fetch.AI Limited"] +readme = "README.md" +license = "Apache-2.0" +homepage = "https://github.com/fetchai/agents-aea" +classifiers = [ + "Environment :: Console", + "Environment :: Web Environment", + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Natural Language :: English", + "Operating System :: MacOS", + "Operating System :: Microsoft", + "Operating System :: Unix", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Communications", + "Topic :: Internet", + "Topic :: Scientific/Engineering", + "Topic :: Software Development", + "Topic :: System", +] + +[tool.poetry.scripts] +aea = 'aea.cli:cli' + +[tool.poetry.dependencies] +python = ">=3.8,<3.11" +base58 = ">=1.0.3,<3.0.0" +jsonschema = "^4.0.0" +packaging = "^21.0" +semver = ">=2.9.1,<3.0.0" +protobuf = ">=3.19.0,<=3.19.4" +pymultihash = "==0.8.2" +pyyaml = ">=4.2b1,<6.0" +requests = ">=2.22.0,<3.0.0" +python-dotenv = ">=0.14.0,<0.18.0" +ecdsa = ">=0.15,<0.17.0" +importlib-metadata = ">4,<5" + +pywin32 = { version = "==303", markers = "sys_platform == 'win32' or platform_system == 'Windows'" } + +# cli, test_tools extras +click = { version = "^8.0.0", optional = true } + + +[tool.poetry.extras] +cli = ["click"] +all = ["click"] + +[tool.poetry.group.dev] +optional = true + +[tool.poetry.group.dev.dependencies] +tox = "==3.25.1" +py-sr25519-bindings = "==0.1.4" +cosmpy = ">=0.5.0,<0.6.0" +pylint = "==2.6.0" +bandit = "==1.7.4" +vulture = "==2.6" +isort = "==5.10.1" +safety = "==2.3.1" +mypy = "==0.982" +darglint = "==1.8.1" +flake8 = "==3.7.9" +flake8-bugbear = "==20.1.4" +flake8-docstrings = "==1.6.0" +flake8-eradicate = "==0.4.0" +flake8-isort = "==4.0.0" +liccheck = "==0.7.2" +black = "^22.10" + + +[tool.poetry.group.testing] +optional = true + +[tool.poetry.group.testing.dependencies] +pytest = "^7.0.0" +pytest-asyncio = "==0.16.0" +pytest-cov = "==4.0.0" +pytest-custom-exit-code = "==0.3.0" +pytest-randomly = "==3.12.0" +pytest-rerunfailures = "==10.2" +docker = "==4.2.0" +pexpect = "==4.8.0" +sqlalchemy = "==1.4.41" # used in one test +mistune = "==2.0.4" +requests = ">=2.22.0" +web3 = ">=5.31.0,<6.0.0" + +[tool.poetry.group.docs] +optional = true + +[tool.poetry.group.docs.dependencies] +mkdocs-material = "==7.1.6" +mkdocs-mermaid-plugin = { git = "https://github.com/pugong/mkdocs-mermaid-plugin.git" } +pydoc-markdown = "*" +pydocstyle = "==3.0.0" +pymdown-extensions = "==9.1" +pygments = "==2.7.4" + +[tool.poetry.group.packages] +optional = true + +[tool.poetry.group.packages.dependencies] +yoti = "==2.14.0" +tensorflow = [{ version = "^2.9.2", python = "<3.11" }] +# openapi-core = "==0.13.2" # problematic package for poetry. requirede by http server connection +openapi-spec-validator = "==0.2.8" # required by openapi core and best to pin it here +gym = "==0.15.6" +aiohttp = "^3.8" +aioprometheus = ">=20.0.0,<21.0.0" +numpy = ">=1.18.1" +oef = "==0.8.1" +defusedxml = "==0.7.1" +scikit-image = ">=0.17.2" +colorlog = "==4.1.0" +temper-py = "==0.0.3" + + +[tool.poetry.group.tools] +optional = true + +[tool.poetry.group.tools.dependencies] +#benchmark +matplotlib = ">=3.3.0,<3.4" +psutil = "==5.7.0" +memory-profiler = "==0.57.0" +# scripts +gitpython = ">=3.1.14" +ipfshttpclient = "==0.8.0a2" + + +[tool.poetry.group.types.dependencies] +# types defenitions for mypy +types-certifi = "*" +types-requests = "*" +types-setuptools = "*" +types-urllib3 = "*" +types-click = "*" +types-PyYAML = "*" diff --git a/scripts/acn/run_acn_node_standalone.py b/scripts/acn/run_acn_node_standalone.py index 635fd1b754..951aae01d3 100644 --- a/scripts/acn/run_acn_node_standalone.py +++ b/scripts/acn/run_acn_node_standalone.py @@ -233,7 +233,10 @@ def run(self): log_file.write(line) log_file.flush() else: - self._proc = subprocess.Popen(cmd, shell=False,) # nosec + self._proc = subprocess.Popen( # nosec + cmd, + shell=False, + ) try: self._proc.wait() diff --git a/scripts/bump_aea_version.py b/scripts/bump_aea_version.py index 3b6bc715f7..f2b7a56129 100644 --- a/scripts/bump_aea_version.py +++ b/scripts/bump_aea_version.py @@ -361,7 +361,8 @@ def _replace_specifier_sets( old_specifier_set_regex = get_regex_from_specifier_set(old_specifier_set) for pattern_template in self.specifier_set_patterns: regex = pattern_template.format( - package_name=self.package_name, specifier_set=old_specifier_set_regex, + package_name=self.package_name, + specifier_set=old_specifier_set_regex, ) pattern = re.compile(regex) if pattern.search(content) is not None: diff --git a/scripts/check_copyright_notice.py b/scripts/check_copyright_notice.py index 4106ae90a3..408fe11a79 100755 --- a/scripts/check_copyright_notice.py +++ b/scripts/check_copyright_notice.py @@ -38,7 +38,7 @@ SUPPORTED_YEARS = [str(i) for i in range(2018, datetime.datetime.now().year + 1)] -HEADER_REGEX = fr"""(#!/usr/bin/env python3 +HEADER_REGEX = rf"""(#!/usr/bin/env python3 )?# -\*- coding: utf-8 -\*- # ------------------------------------------------------------------------------ # @@ -84,7 +84,6 @@ def check_copyright(file: Path) -> bool: Path("scripts").glob("**/*.py"), Path("examples", "gym_ex").glob("**/*.py"), Path("examples", "ml_ex").glob("**/*.py"), - [Path("setup.py")], ) # filter out protobuf files (*_pb2.py) diff --git a/scripts/check_imports_and_dependencies.py b/scripts/check_imports_and_dependencies.py index ae190f332b..87eaa33e61 100755 --- a/scripts/check_imports_and_dependencies.py +++ b/scripts/check_imports_and_dependencies.py @@ -153,6 +153,7 @@ def get_section_dependencies_from_setup(cls) -> Dict[str, Dict[str, List[Path]]] spec = importlib.util.spec_from_file_location( "setup", str(AEA_ROOT_DIR / "setup.py") ) + assert spec setup = importlib.util.module_from_spec(spec) sys.modules[spec.name] = setup spec.loader.exec_module(setup) # type: ignore @@ -237,7 +238,7 @@ def make_sections_with_3rdpart_imports( @staticmethod def check_imports( - sections_imports: Dict[str, Set[str]], + sections_imports: Dict[str, Set[Tuple[str, Path]]], sections_dependencies: Dict[str, Dict[str, List[str]]], ) -> Tuple[Dict[str, List[str]], List[str]]: """Find missing dependencies for imports and not imported dependencies.""" @@ -256,7 +257,7 @@ def _find_dependency_for_module( for section, modules in sections_imports.items(): for module, pyfile in modules: package = _find_dependency_for_module( - sections_dependencies.get(section, {}), pyfile + sections_dependencies.get(section, {}), pyfile # type: ignore ) if module not in IGNORE: sections_imports_packages[section][module] = package diff --git a/scripts/check_packages.py b/scripts/check_packages.py index 638b29a0e5..ed64297f8f 100755 --- a/scripts/check_packages.py +++ b/scripts/check_packages.py @@ -87,7 +87,11 @@ def __init__( class EmptyPackageDescription(Exception): """Custom exception for empty description field.""" - def __init__(self, configuration_file: Path, *args: Any,) -> None: + def __init__( + self, + configuration_file: Path, + *args: Any, + ) -> None: """ Initialize EmptyPackageDescription exception. diff --git a/scripts/check_pipfile_and_toxini.py b/scripts/check_pipfile_and_toxini.py index df7bf72ba3..db60521686 100644 --- a/scripts/check_pipfile_and_toxini.py +++ b/scripts/check_pipfile_and_toxini.py @@ -83,7 +83,9 @@ def check_versions_in_tox_correct(file: str = "tox.ini") -> None: name_part = m.groups()[0] version_part = line.replace(name_part, "").strip() check_match( - name_part.strip(" "), version_part.strip("\n"), dependencies, + name_part.strip(" "), + version_part.strip("\n"), + dependencies, ) diff --git a/scripts/deploy_to_registry.py b/scripts/deploy_to_registry.py index 512dd53399..7d737edc69 100644 --- a/scripts/deploy_to_registry.py +++ b/scripts/deploy_to_registry.py @@ -122,7 +122,11 @@ def check_correct_author(runner: CliRunner) -> None: :param runner: the cli runner """ - result = runner.invoke(cli, [*CLI_LOG_OPTION, "init"], standalone_mode=False,) + result = runner.invoke( + cli, + [*CLI_LOG_OPTION, "init"], + standalone_mode=False, + ) if "{'author': 'fetchai'}" not in result.output: print("Log in with fetchai credentials. Stopping...") sys.exit(0) @@ -200,7 +204,9 @@ def push_package(package_id: PackageId, runner: CliRunner) -> None: finally: os.chdir(cwd) result = runner.invoke( - cli, [*CLI_LOG_OPTION, "delete", agent_name], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "delete", agent_name], + standalone_mode=False, ) assert result.exit_code == 0 print( @@ -242,7 +248,9 @@ def publish_agent(package_id: PackageId, runner: CliRunner) -> None: assert result.exit_code == 0, "Local fetch failed." os.chdir(str(package_id.public_id.name)) result = runner.invoke( - cli, [*CLI_LOG_OPTION, "publish", "--remote"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "publish", "--remote"], + standalone_mode=False, ) assert ( result.exit_code == 0 diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index 643b5e7b39..66a0069e62 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -175,7 +175,12 @@ def _generate_protocol(package_path: Path) -> None: def run_isort_and_black(directory: Path, **kwargs: Any) -> None: """Run black and isort against a directory.""" run_cli( - sys.executable, "-m", "black", "--verbose", str(directory.absolute()), **kwargs, + sys.executable, + "-m", + "black", + "--verbose", + str(directory.absolute()), + **kwargs, ) run_cli( sys.executable, diff --git a/scripts/generate_ipfs_hashes.py b/scripts/generate_ipfs_hashes.py index cc7d40e2d6..355b6cb163 100755 --- a/scripts/generate_ipfs_hashes.py +++ b/scripts/generate_ipfs_hashes.py @@ -166,7 +166,9 @@ def ipfs_hashing( follow_symlinks=False, ) key = os.path.join( - configuration.author, package_type.to_plural(), configuration.directory.name, + configuration.author, + package_type.to_plural(), + configuration.directory.name, ) # check that the last result of the list is for the whole package directory assert result_list[-1]["Name"] == configuration.directory.name @@ -223,7 +225,9 @@ def __init__(self, timeout: float = 15.0, port: int = 5001): if res is None: raise Exception("Please install IPFS first!") process = subprocess.Popen( # nosec - ["ipfs", "--version"], stdout=subprocess.PIPE, env=os.environ.copy(), + ["ipfs", "--version"], + stdout=subprocess.PIPE, + env=os.environ.copy(), ) output, _ = process.communicate() if b"0.6.0" not in output: @@ -235,7 +239,9 @@ def __init__(self, timeout: float = 15.0, port: int = 5001): def __enter__(self) -> None: """Run the ipfs daemon.""" self.process = subprocess.Popen( # nosec - ["ipfs", "daemon"], stdout=subprocess.PIPE, env=os.environ.copy(), + ["ipfs", "daemon"], + stdout=subprocess.PIPE, + env=os.environ.copy(), ) print("Waiting for {} seconds the IPFS daemon to be up.".format(self.timeout)) @@ -338,7 +344,8 @@ def compute_fingerprint( # pylint: disable=unsubscriptable-object :return: the fingerprint """ fingerprint = _compute_fingerprint( - package_path, ignore_patterns=fingerprint_ignore_patterns, + package_path, + ignore_patterns=fingerprint_ignore_patterns, ) assert_hash_consistency(fingerprint, package_path, client) return fingerprint diff --git a/scripts/ledger_network_update.py b/scripts/ledger_network_update.py index d8aa61b624..a17423b445 100755 --- a/scripts/ledger_network_update.py +++ b/scripts/ledger_network_update.py @@ -98,7 +98,7 @@ def __str__(self) -> str: def _get_value(variable_name: str, text: str) -> str: - m = re.search(fr'{variable_name} = "(.*)"', text, re.MULTILINE) + m = re.search(rf'{variable_name} = "(.*)"', text, re.MULTILINE) if m: return m.groups()[0] raise ValueError("Value not found") @@ -326,7 +326,8 @@ def update_docs(self): for f in docs_files: content = f.read_text() content = content.replace( - self.cur_config.explorer_url, self.new_config.explorer_url, + self.cur_config.explorer_url, + self.new_config.explorer_url, ) content = content.replace( f"Fetch.ai `{self.cur_config.net_name.capitalize()}`", diff --git a/scripts/update_package_versions.py b/scripts/update_package_versions.py index 7af3c2774c..af11e3eac8 100644 --- a/scripts/update_package_versions.py +++ b/scripts/update_package_versions.py @@ -224,10 +224,15 @@ def public_id_in_registry(type_: str, name: str) -> PublicId: """ runner = CliRunner() result = runner.invoke( - cli, [*CLI_LOG_OPTION, "search", type_, "--query", name], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "search", type_, "--query", name], + standalone_mode=False, ) reg = r"({}/{}:{})".format("fetchai", name, PublicId.VERSION_REGEX) - ids = re.findall(reg, result.output,) + ids = re.findall( + reg, + result.output, + ) p_ids = [] highest = PublicId.from_str("fetchai/{}:0.1.0".format(name)) for id_ in ids: @@ -402,11 +407,11 @@ def _can_disambiguate_from_context( :return: if True/False, the old string can/cannot be replaced. If None, we don't know. """ match = re.search( - fr"aea +add +(skill|protocol|connection|contract) +{old_string}", line + rf"aea +add +(skill|protocol|connection|contract) +{old_string}", line ) if match is not None: return match.group(1) == type_[:-1] - if re.search(fr"aea +fetch +{old_string}", line) is not None: + if re.search(rf"aea +fetch +{old_string}", line) is not None: return type_ == "agents" match = re.search( "(skill|SKILL|" @@ -441,7 +446,9 @@ def _ask_user( print("".join(above_rows)) print(line.rstrip().replace(old_string, "\033[91m" + old_string + "\033[0m")) print("".join(below_rows)) - answer = input(f"Replace for component ({type_}, {old_string})? [y/N]: ",) # nosec + answer = input( + f"Replace for component ({type_}, {old_string})? [y/N]: ", + ) # nosec return answer @@ -451,7 +458,7 @@ def replace_aea_fetch_statements( """Replace statements of the type: 'aea fetch '.""" if type_ == "agents": content = re.sub( - fr"aea +fetch +{old_string}", f"aea fetch {new_string}", content + rf"aea +fetch +{old_string}", f"aea fetch {new_string}", content ) return content @@ -462,7 +469,7 @@ def replace_aea_add_statements( """Replace statements of the type: 'aea add '.""" if type_ != "agents": content = re.sub( - fr"aea +add +{type_} +{old_string}", + rf"aea +add +{type_} +{old_string}", f"aea add {type_} {new_string}", content, ) @@ -567,30 +574,32 @@ def bump_version_in_yaml( class Updater: - """PAckage versions updter tool.""" + """Package versions updter tool.""" - def __init__(self, new_version, replace_by_default, context): + def __init__( + self, new_version: str, replace_by_default: bool, context: int + ) -> None: """Init updater.""" self.option_new_version = new_version self.option_replace_by_default = replace_by_default self.option_context = context @staticmethod - def check_if_svn_installed(): + def check_if_svn_installed() -> None: """Check svn tool installed.""" res = shutil.which("svn") if res is None: raise Exception("Install svn first!") @staticmethod - def run_hashing(): + def run_hashing() -> None: """Run hashes update.""" hashing_call = update_hashes() if hashing_call == 1: raise Exception("Problem when running IPFS script!") @staticmethod - def check_if_running_allowed(): + def check_if_running_allowed() -> None: """ Check if we can run the script. @@ -602,17 +611,17 @@ def check_if_running_allowed(): if len(stdout) > 0: raise Exception("Cannot run script in unclean git state.") - def _checks(self): + def _checks(self) -> None: self.check_if_svn_installed() self.run_hashing() self.check_if_running_allowed() - def run(self): + def run(self) -> None: """Run package versions update process.""" self._checks() self._run_hashing() - def _run_once(self): + def _run_once(self) -> bool: """Run the upgrade logic once.""" all_package_ids_to_update = get_public_ids_to_update() if len(all_package_ids_to_update) == 0: @@ -634,7 +643,9 @@ def process_packages( ambiguous_public_ids ) print(f"Ambiguous public ids: {ambiguous_public_ids}") - print(f"Conflicts with public ids to update: {conflicts}",) + print( + f"Conflicts with public ids to update: {conflicts}", + ) print("*" * 100) print("Start processing.") @@ -728,12 +739,16 @@ def bump_package_version( (".py", ".yaml", ".md", ".sh") ): self.inplace_change( - path, current_public_id, new_public_id, type_, is_ambiguous, + path, + current_public_id, + new_public_id, + type_, + is_ambiguous, ) bump_version_in_yaml(configuration_file_path, type_, new_public_id.version) - def _run_hashing(self): + def _run_hashing(self) -> None: while self._run_once(): self._run_hashing() diff --git a/setup.cfg b/setup.cfg index fef9716485..6fbaa24527 100644 --- a/setup.cfg +++ b/setup.cfg @@ -69,6 +69,9 @@ ignore_missing_imports = True [mypy-semver.*] ignore_missing_imports = True +[mypy-werkzeug.*] +ignore_missing_imports = True + [mypy-eth_keys.*] ignore_missing_imports = True diff --git a/setup.py b/setup.py deleted file mode 100644 index aed201c6bf..0000000000 --- a/setup.py +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ -import os -import re -from typing import Dict - -from setuptools import find_packages, setup # type: ignore - -PACKAGE_NAME = "aea" -here = os.path.abspath(os.path.dirname(__file__)) - - -def get_all_extras() -> Dict: - - cli_deps = [ - "click>=7.0.0,<8.0.0", - "pyyaml>=4.2b1,<6.0", - "jsonschema>=3.0.0,<4.0.0", - "packaging>=20.4,<=21.5", - ] - - extras = { - "cli": cli_deps, - "test_tools": cli_deps, - } - - # add "all" extras - extras["all"] = list(set(dep for e in extras.values() for dep in e)) - return extras - - -all_extras = get_all_extras() - -base_deps = [ - "base58>=1.0.3,<3.0.0", - "jsonschema>=3.0.0,<4.0.0", - "packaging>=20.3,<21.0", - "semver>=2.9.1,<3.0.0", - "protobuf>=3.19.0,<=3.19.4", - "pymultihash==0.8.2", - "pyyaml>=4.2b1,<6.0", - "requests>=2.22.0,<3.0.0", - "python-dotenv>=0.14.0,<0.18.0", - "ecdsa>=0.15,<0.17.0" -] - -if os.name == "nt" or os.getenv("WIN_BUILD_WHEEL", None) == "1": - base_deps.append("pywin32==303") - -here = os.path.abspath(os.path.dirname(__file__)) -about: Dict[str, str] = {} -with open(os.path.join(here, PACKAGE_NAME, "__version__.py"), "r") as f: - exec(f.read(), about) - - -def parse_readme(): - with open("README.md", "r") as f: - readme = f.read() - - # replace relative links of images - raw_url_root = "https://raw.githubusercontent.com/fetchai/agents-aea/main/" - replacement = raw_url_root + r"\g<0>" - readme = re.sub(r"(?<==3.0.12 fetchai-ledger-api: >=0.0.1 chardet: >=3.0.4 certifi: >=2019.11.28 +pathable: * diff --git a/tests/common/docker_image.py b/tests/common/docker_image.py index 7b4870b553..08a2ffc6fe 100644 --- a/tests/common/docker_image.py +++ b/tests/common/docker_image.py @@ -357,7 +357,10 @@ class SOEFDockerImage(DockerImage): SOEF_CONFIG_FILE_NAME = "soef.conf" def __init__( - self, client: DockerClient, addr: str, port: int = PORT, + self, + client: DockerClient, + addr: str, + port: int = PORT, ): """ Initialize the SOEF Docker image. diff --git a/tests/common/mocks.py b/tests/common/mocks.py index 4a2282f967..b776118335 100644 --- a/tests/common/mocks.py +++ b/tests/common/mocks.py @@ -21,6 +21,7 @@ import re import unittest from contextlib import contextmanager +from typing import Any, Generator from unittest.mock import MagicMock @@ -51,7 +52,7 @@ def __eq__(self, other): @contextmanager -def ctx_mock_Popen() -> MagicMock: +def ctx_mock_Popen() -> Generator[Any, Any, Any]: """ Mock subprocess.Popen. diff --git a/tests/common/pexpect_popen.py b/tests/common/pexpect_popen.py index 71c66cb966..fdf9397f86 100644 --- a/tests/common/pexpect_popen.py +++ b/tests/common/pexpect_popen.py @@ -84,7 +84,7 @@ def aea_cli(cls, args, **kwargs) -> "PexpectWrapper": env=os.environ.copy(), encoding="utf-8", logfile=sys.stdout, - **kwargs + **kwargs, ) def expect_all( diff --git a/tests/conftest.py b/tests/conftest.py index c8a08c8f5b..5fb176c0a5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -401,9 +401,18 @@ ] protocol_specification_files = [ - os.path.join(PROTOCOL_SPECS_PREF_1, "sample.yaml",), - os.path.join(PROTOCOL_SPECS_PREF_2, "sample_specification.yaml",), - os.path.join(PROTOCOL_SPECS_PREF_2, "sample_specification_no_custom_types.yaml",), + os.path.join( + PROTOCOL_SPECS_PREF_1, + "sample.yaml", + ), + os.path.join( + PROTOCOL_SPECS_PREF_2, + "sample_specification.yaml", + ), + os.path.join( + PROTOCOL_SPECS_PREF_2, + "sample_specification_no_custom_types.yaml", + ), ] @@ -758,7 +767,9 @@ def soef( @pytest.fixture(scope="class") @action_for_platform("Linux", skip=False) def fetchd( - fetchd_configuration, timeout: float = 2.0, max_attempts: int = 20, + fetchd_configuration, + timeout: float = 2.0, + max_attempts: int = 20, ): """Launch the Fetch ledger image.""" client = docker.from_env() @@ -865,7 +876,9 @@ def double_escape_windows_path_separator(path): def _make_dummy_connection() -> Connection: - configuration = ConnectionConfig(connection_id=DummyConnection.connection_id,) + configuration = ConnectionConfig( + connection_id=DummyConnection.connection_id, + ) dummy_connection = DummyConnection( configuration=configuration, data_dir=MagicMock(), diff --git a/tests/data/custom_crypto.py b/tests/data/custom_crypto.py index ee54e78eee..c28dc215f6 100644 --- a/tests/data/custom_crypto.py +++ b/tests/data/custom_crypto.py @@ -24,7 +24,7 @@ from aea.crypto.base import Crypto, EntityClass -class CustomCrypto(Crypto): +class CustomCrypto(Crypto[EntityClass]): """This is a custom crypto class for testing purposes..""" @classmethod diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index af98a4f49b..02dcae45d0 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -13,7 +13,7 @@ fingerprint: message.py: QmaPVDsoC7sdGE2x7u7KuVqeimHvPEsvJNcZzKb78kBqwS serialization.py: Qmd4bz59ZHqrCtKnnmqBwLe4jCsmGJJnKifaQcmLyW7o1z t_protocol.proto: QmXR8G9317z8a4XjRFGzKmpxEY2xtLLadBxSqmWFFeQpu4 - t_protocol_pb2.py: QmUz8xD2vXjnATudtdZyu4PCqzzJ8kR3Jfjrk9APFenRp3 + t_protocol_pb2.py: QmegXmkFAJqD5waFzfXSuJJrtBqRU96vCrzHQrFVyT6aWc fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol/t_protocol_pb2.py b/tests/data/generator/t_protocol/t_protocol_pb2.py index 1beb02c50e..fb341147a6 100644 --- a/tests/data/generator/t_protocol/t_protocol_pb2.py +++ b/tests/data/generator/t_protocol/t_protocol_pb2.py @@ -20,90 +20,130 @@ _TPROTOCOLMESSAGE = DESCRIPTOR.message_types_by_name["TProtocolMessage"] _TPROTOCOLMESSAGE_DATAMODEL = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel"] -_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = _TPROTOCOLMESSAGE_DATAMODEL.nested_types_by_name[ - "DictFieldEntry" -] +_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL.nested_types_by_name["DictFieldEntry"] +) _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ "Performative_Ct_Performative" ] _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ "Performative_Pt_Performative" ] -_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ - "Performative_Pct_Performative" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ - "Performative_Pmt_Performative" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBytesEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntIntEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntFloatEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBoolEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntStrEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBytesEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolIntEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolFloatEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBoolEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolStrEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBytesEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrIntEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrFloatEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBoolEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrStrEntry" -] +_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = ( + _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Pct_Performative"] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = ( + _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Pmt_Performative"] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBytesEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBoolEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntStrEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBytesEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBoolEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolStrEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBytesEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBoolEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrStrEntry" + ] +) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ "Performative_Mt_Performative" ] -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion1TypeDictOfStrIntEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfStrIntEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfIntFloatEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfBoolBytesEntry" -] +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion1TypeDictOfStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfIntFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfBoolBytesEntry" + ] +) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ "Performative_O_Performative" ] -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ - "ContentODictStrIntEntry" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ - "Performative_Empty_Contents_Performative" -] +_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ + "ContentODictStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = ( + _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Empty_Contents_Performative"] +) TProtocolMessage = _reflection.GeneratedProtocolMessageType( "TProtocolMessage", (_message.Message,), diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index e3640a78df..8dd33c3051 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -12,7 +12,7 @@ fingerprint: message.py: QmVuM5P73nhZfTRW6yM4Ehz8tpegDGs38Vig3sYbHLMEKy serialization.py: QmSofWb5kuojkb6Bt5tu2p7t4VMKx4FDdeNHihdcjeN8gn t_protocol_no_ct.proto: QmVB1xEyeou9UvDUrKwxNhdUcvSdQvuFwFtgeEGneHNcG7 - t_protocol_no_ct_pb2.py: QmUymQsafG7SDcAoTcHSrj5vJLRmAwFZVyBvYg7Wq8S8yZ + t_protocol_no_ct_pb2.py: QmaFxo33ygWLxKSBSkV7nsK7Bz4HJy4JJ7cPK4xUj41Keu fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py index 494c959383..8315b49001 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py @@ -19,63 +19,93 @@ _TPROTOCOLNOCTMESSAGE = DESCRIPTOR.message_types_by_name["TProtocolNoCtMessage"] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ - "Performative_Pt_Performative" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ - "Performative_Pct_Performative" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ - "Performative_Pmt_Performative" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBytesEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntIntEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntFloatEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBoolEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntStrEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBytesEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolIntEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolFloatEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBoolEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolStrEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBytesEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrIntEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrFloatEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBoolEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrStrEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ - "Performative_Mt_Performative" -] +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pt_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pct_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pmt_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBytesEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntFloatEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBoolEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntStrEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBytesEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolFloatEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBoolEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolStrEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBytesEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrFloatEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBoolEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrStrEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Mt_Performative"] +) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ "ContentUnion1TypeDictOfStrIntEntry" ] @@ -88,15 +118,19 @@ _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ "ContentUnion2TypeDictOfBoolBytesEntry" ] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ - "Performative_O_Performative" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ - "ContentODictStrIntEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ - "Performative_Empty_Contents_Performative" -] +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_O_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ + "ContentODictStrIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ + "Performative_Empty_Contents_Performative" + ] +) TProtocolNoCtMessage = _reflection.GeneratedProtocolMessageType( "TProtocolNoCtMessage", (_message.Message,), diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index bd6736c9f7..65cb999ddc 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -2,7 +2,7 @@ dummy_author/agents/dummy_aea,QmbFrZ6aaiFGpF8qbYopCmy9KLq5HDqTP99RHKvNJfk9gT dummy_author/skills/dummy_skill,QmQJ6P1G3CzzvG6qtp9hnYSqaosczq91PXh6RGHj45u8qS fetchai/connections/dummy_connection,QmU7KYJcJeumFnBj7vHDvY6SQPwsG3TJqTRrWrDmgo3qCZ fetchai/contracts/dummy_contract,QmVvnWPgN5W5yfFvczTjHiiYJU11ScvBUJpumwTn9n4qia -fetchai/protocols/t_protocol,QmYUffw7XYXKUwWcRo3DD114RivbeB3fEHpEQKxxR8dS5K -fetchai/protocols/t_protocol_no_ct,QmNNvWtcGRQcGVKVTcovNKQ5vwGGDj47Dcv5ZM7fg3ezmg +fetchai/protocols/t_protocol,Qmdc6TbDeX74p39SgghHcWvU6pAc5o7m3m6ZJzAzngotdJ +fetchai/protocols/t_protocol_no_ct,QmdG6tDUZy6UARyz2v2fpd9kYUpFm171kqCt8JP76eSSAe fetchai/skills/dependencies_skill,QmTbwxnYVYt8dxW4mwVkbLib7tgSeax95tyaR8i4tksSgy fetchai/skills/exception_skill,QmdwB97g4DPZj1dmdWGaAeeddrfy97y2j6Zg6FUPqT2CAp diff --git a/tests/data/reference_protocols/t_protocol/__init__.py b/tests/data/reference_protocols/t_protocol/__init__.py index 2ab2db1bc5..37d97417d6 100644 --- a/tests/data/reference_protocols/t_protocol/__init__.py +++ b/tests/data/reference_protocols/t_protocol/__init__.py @@ -1,9 +1,26 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """ This module contains the support resources for the t_protocol protocol. -It was created with protocol buffer compiler version `libprotoc 3.13.0` and aea version `1.1.1`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.1`. """ from tests.data.generator.t_protocol.message import TProtocolMessage diff --git a/tests/data/reference_protocols/t_protocol/custom_types.py b/tests/data/reference_protocols/t_protocol/custom_types.py index 3d4c3ec1ee..0a2feeda2c 100644 --- a/tests/data/reference_protocols/t_protocol/custom_types.py +++ b/tests/data/reference_protocols/t_protocol/custom_types.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2020 fetchai +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """This module contains class representations corresponding to every custom type in the protocol specification.""" diff --git a/tests/data/reference_protocols/t_protocol/dialogues.py b/tests/data/reference_protocols/t_protocol/dialogues.py index 685925758b..0ed7fa95f1 100644 --- a/tests/data/reference_protocols/t_protocol/dialogues.py +++ b/tests/data/reference_protocols/t_protocol/dialogues.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """ This module contains the classes required for t_protocol dialogue management. diff --git a/tests/data/reference_protocols/t_protocol/message.py b/tests/data/reference_protocols/t_protocol/message.py index de676a8fbf..63d0b7c2a3 100644 --- a/tests/data/reference_protocols/t_protocol/message.py +++ b/tests/data/reference_protocols/t_protocol/message.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """This module contains t_protocol's message definition.""" diff --git a/tests/data/reference_protocols/t_protocol/protocol.yaml b/tests/data/reference_protocols/t_protocol/protocol.yaml index 94e10cee3c..02dcae45d0 100644 --- a/tests/data/reference_protocols/t_protocol/protocol.yaml +++ b/tests/data/reference_protocols/t_protocol/protocol.yaml @@ -6,7 +6,14 @@ type: protocol description: A protocol for testing purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' -fingerprint: {} +fingerprint: + __init__.py: QmboLH5iRdWk7oeaDHxoA4WpTC8TCQUMKmLQfHVdFGwJCz + custom_types.py: QmWg8HFav8w9tfZfMrTG5Uo7QpexvYKKkhpGPD18233pLw + dialogues.py: Qmaaa73ZuSE85xwkXaiKHUFXjG7aMECvAGxAZQvmyWc55X + message.py: QmaPVDsoC7sdGE2x7u7KuVqeimHvPEsvJNcZzKb78kBqwS + serialization.py: Qmd4bz59ZHqrCtKnnmqBwLe4jCsmGJJnKifaQcmLyW7o1z + t_protocol.proto: QmXR8G9317z8a4XjRFGzKmpxEY2xtLLadBxSqmWFFeQpu4 + t_protocol_pb2.py: QmegXmkFAJqD5waFzfXSuJJrtBqRU96vCrzHQrFVyT6aWc fingerprint_ignore_patterns: [] dependencies: - protobuf: {} + protobuf: {} diff --git a/tests/data/reference_protocols/t_protocol/serialization.py b/tests/data/reference_protocols/t_protocol/serialization.py index 6e52377fcd..50fbcc8149 100644 --- a/tests/data/reference_protocols/t_protocol/serialization.py +++ b/tests/data/reference_protocols/t_protocol/serialization.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """Serialization module for t_protocol protocol.""" diff --git a/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py b/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py index bee1ea659e..fb341147a6 100644 --- a/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py +++ b/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py @@ -3,6 +3,7 @@ # source: t_protocol.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -12,3121 +13,137 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor.FileDescriptor( - name="t_protocol.proto", - package="aea.some_author.some_protocol_name.v1_0_0", - syntax="proto3", - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x10t_protocol.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xf8\x37\n\x10TProtocolMessage\x12s\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x8b\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32\x64.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12s\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12q\n\x0eperformative_o\x18\x08 \x01(\x0b\x32W.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_PerformativeH\x00\x12u\n\x10performative_pct\x18\t \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12u\n\x10performative_pmt\x18\n \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12s\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xb2\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x05\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x05\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12h\n\ndict_field\x18\x08 \x03(\x0b\x32T.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1ay\n\x1cPerformative_Ct_Performative\x12Y\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x05\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x05\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x05\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xc0\x18\n\x1dPerformative_Pmt_Performative\x12\x92\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x92\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x92\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x92\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x92\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xe7\x0c\n\x1cPerformative_Mt_Performative\x12m\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\xa9\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\xa9\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xad\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32}.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xaf\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32~.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xc2\x04\n\x1bPerformative_O_Performative\x12[\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12\x1b\n\x13\x63ontent_o_ct_is_set\x18\x02 \x01(\x08\x12\x16\n\x0e\x63ontent_o_bool\x18\x03 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x04 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x05 \x03(\x05\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x06 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x07 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x08 \x01(\x08\x12\x8f\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32o.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\n \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3', +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x10t_protocol.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xf8\x37\n\x10TProtocolMessage\x12s\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x8b\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32\x64.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12s\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12q\n\x0eperformative_o\x18\x08 \x01(\x0b\x32W.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_PerformativeH\x00\x12u\n\x10performative_pct\x18\t \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12u\n\x10performative_pmt\x18\n \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12s\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xb2\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12h\n\ndict_field\x18\x08 \x03(\x0b\x32T.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1ay\n\x1cPerformative_Ct_Performative\x12Y\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xc0\x18\n\x1dPerformative_Pmt_Performative\x12\x92\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x92\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x92\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x92\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x92\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xe7\x0c\n\x1cPerformative_Mt_Performative\x12m\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x03\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x03\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\xa9\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x03\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\xa9\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xad\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32}.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xaf\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32~.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xc2\x04\n\x1bPerformative_O_Performative\x12[\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12\x1b\n\x13\x63ontent_o_ct_is_set\x18\x02 \x01(\x08\x12\x16\n\x0e\x63ontent_o_bool\x18\x03 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x04 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x05 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x06 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x07 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x08 \x01(\x08\x12\x8f\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32o.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\n \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' +) + + +_TPROTOCOLMESSAGE = DESCRIPTOR.message_types_by_name["TProtocolMessage"] +_TPROTOCOLMESSAGE_DATAMODEL = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel"] +_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL.nested_types_by_name["DictFieldEntry"] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ + "Performative_Ct_Performative" +] +_TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ + "Performative_Pt_Performative" +] +_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = ( + _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Pct_Performative"] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = ( + _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Pmt_Performative"] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBytesEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBoolEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntStrEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBytesEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBoolEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolStrEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBytesEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBoolEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrStrEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ + "Performative_Mt_Performative" +] +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion1TypeDictOfStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfIntFloatEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfBoolBytesEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ + "Performative_O_Performative" +] +_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = ( + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ + "ContentODictStrIntEntry" + ] +) +_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = ( + _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Empty_Contents_Performative"] ) - - -_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = _descriptor.Descriptor( - name="DictFieldEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry.value", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1189, - serialized_end=1237, -) - -_TPROTOCOLMESSAGE_DATAMODEL = _descriptor.Descriptor( - name="DataModel", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="bytes_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.bytes_field", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="int_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.int_field", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="float_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.float_field", - index=2, - number=3, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="bool_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.bool_field", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="str_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.str_field", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="set_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.set_field", - index=5, - number=6, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="list_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.list_field", - index=6, - number=7, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dict_field", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.dict_field", - index=7, - number=8, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY,], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=931, - serialized_end=1237, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Ct_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_ct", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_Performative.content_ct", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1239, - serialized_end=1360, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Pt_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_Performative.content_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_Performative.content_int", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_Performative.content_float", - index=2, - number=3, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_Performative.content_bool", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_Performative.content_str", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1363, - serialized_end=1503, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Pct_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_set_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_set_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_set_int", - index=1, - number=2, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_set_float", - index=2, - number=3, - type=2, - cpp_type=6, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_set_bool", - index=3, - number=4, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_set_str", - index=4, - number=5, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_list_bytes", - index=5, - number=6, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_list_int", - index=6, - number=7, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_list_float", - index=7, - number=8, - type=2, - cpp_type=6, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_list_bool", - index=8, - number=9, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative.content_list_str", - index=9, - number=10, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1506, - serialized_end=1802, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( - name="ContentDictIntBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4053, - serialized_end=4111, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( - name="ContentDictIntIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4113, - serialized_end=4169, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( - name="ContentDictIntFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4171, - serialized_end=4229, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( - name="ContentDictIntBoolEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4231, - serialized_end=4288, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( - name="ContentDictIntStrEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4290, - serialized_end=4346, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( - name="ContentDictBoolBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4348, - serialized_end=4407, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( - name="ContentDictBoolIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4409, - serialized_end=4466, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( - name="ContentDictBoolFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4468, - serialized_end=4527, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( - name="ContentDictBoolBoolEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4529, - serialized_end=4587, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( - name="ContentDictBoolStrEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4589, - serialized_end=4646, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( - name="ContentDictStrBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4648, - serialized_end=4706, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( - name="ContentDictStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4708, - serialized_end=4764, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( - name="ContentDictStrFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4766, - serialized_end=4824, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( - name="ContentDictStrBoolEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4826, - serialized_end=4883, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( - name="ContentDictStrStrEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4885, - serialized_end=4941, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Pmt_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_dict_int_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bytes", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_int", - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_float", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_bool", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_int_str", - index=4, - number=5, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bytes", - index=5, - number=6, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_int", - index=6, - number=7, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_float", - index=7, - number=8, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_bool", - index=8, - number=9, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_bool_str", - index=9, - number=10, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bytes", - index=10, - number=11, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_int", - index=11, - number=12, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_float", - index=12, - number=13, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_bool", - index=13, - number=14, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.content_dict_str_str", - index=14, - number=15, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1805, - serialized_end=4941, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( - name="ContentUnion1TypeDictOfStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6300, - serialized_end=6368, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( - name="ContentUnion2TypeDictOfStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6370, - serialized_end=6438, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( - name="ContentUnion2TypeDictOfIntFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6440, - serialized_end=6510, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( - name="ContentUnion2TypeDictOfBoolBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6512, - serialized_end=6583, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Mt_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_union_1_type_DataModel", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_DataModel", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bytes", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_int", - index=2, - number=3, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_float", - index=3, - number=4, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_bool", - index=4, - number=5, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_str", - index=5, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_set_of_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", - index=6, - number=7, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_list_of_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", - index=7, - number=8, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_dict_of_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", - index=8, - number=9, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_set_of_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", - index=9, - number=10, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_set_of_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", - index=10, - number=11, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_set_of_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", - index=11, - number=12, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_list_of_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", - index=12, - number=13, - type=2, - cpp_type=6, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_list_of_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", - index=13, - number=14, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_list_of_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", - index=14, - number=15, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_dict_of_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", - index=15, - number=16, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_dict_of_int_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", - index=16, - number=17, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_dict_of_bool_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", - index=17, - number=18, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4944, - serialized_end=6583, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( - name="ContentODictStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7107, - serialized_end=7164, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_O_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_o_ct", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_ct", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_ct_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_ct_is_set", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_bool", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_bool_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_bool_is_set", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_set_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_set_int", - index=4, - number=5, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_set_int_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_set_int_is_set", - index=5, - number=6, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_list_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_list_bytes", - index=6, - number=7, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_list_bytes_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_list_bytes_is_set", - index=7, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_dict_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int", - index=8, - number=9, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_dict_str_int_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.content_o_dict_str_int_is_set", - index=9, - number=10, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6586, - serialized_end=7164, -) - -_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Empty_Contents_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7166, - serialized_end=7208, -) - -_TPROTOCOLMESSAGE = _descriptor.Descriptor( - name="TProtocolMessage", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="performative_ct", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative_ct", - index=0, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_empty_contents", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative_empty_contents", - index=1, - number=6, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_mt", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative_mt", - index=2, - number=7, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_o", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative_o", - index=3, - number=8, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_pct", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative_pct", - index=4, - number=9, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_pmt", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative_pmt", - index=5, - number=10, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_pt", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative_pt", - index=6, - number=11, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLMESSAGE_DATAMODEL, - _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE, - _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, - _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE, - _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.performative", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ), - ], - serialized_start=64, - serialized_end=7224, -) - -_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY.containing_type = _TPROTOCOLMESSAGE_DATAMODEL -_TPROTOCOLMESSAGE_DATAMODEL.fields_by_name[ - "dict_field" -].message_type = _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY -_TPROTOCOLMESSAGE_DATAMODEL.containing_type = _TPROTOCOLMESSAGE -_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE.fields_by_name[ - "content_ct" -].message_type = _TPROTOCOLMESSAGE_DATAMODEL -_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE.containing_type = _TPROTOCOLMESSAGE -_TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE.containing_type = _TPROTOCOLMESSAGE -_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE.containing_type = _TPROTOCOLMESSAGE -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_bytes" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_int" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_float" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_bool" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_str" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_bytes" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_int" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_float" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_bool" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_str" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_bytes" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_int" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_float" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_bool" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_str" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.containing_type = _TPROTOCOLMESSAGE -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_1_type_DataModel" -].message_type = _TPROTOCOLMESSAGE_DATAMODEL -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_1_type_dict_of_str_int" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_2_type_dict_of_str_int" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_2_type_dict_of_int_float" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_2_type_dict_of_bool_bytes" -].message_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.containing_type = _TPROTOCOLMESSAGE -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY.containing_type = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE -) -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE.fields_by_name[ - "content_o_ct" -].message_type = _TPROTOCOLMESSAGE_DATAMODEL -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE.fields_by_name[ - "content_o_dict_str_int" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE.containing_type = _TPROTOCOLMESSAGE -_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE.containing_type = ( - _TPROTOCOLMESSAGE -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_ct" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_empty_contents" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_mt" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_o" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_pct" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_pmt" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_pt" -].message_type = _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE -_TPROTOCOLMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLMESSAGE.fields_by_name["performative_ct"] -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_ct" -].containing_oneof = _TPROTOCOLMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLMESSAGE.fields_by_name["performative_empty_contents"] -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_empty_contents" -].containing_oneof = _TPROTOCOLMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLMESSAGE.fields_by_name["performative_mt"] -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_mt" -].containing_oneof = _TPROTOCOLMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLMESSAGE.fields_by_name["performative_o"] -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_o" -].containing_oneof = _TPROTOCOLMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLMESSAGE.fields_by_name["performative_pct"] -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_pct" -].containing_oneof = _TPROTOCOLMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLMESSAGE.fields_by_name["performative_pmt"] -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_pmt" -].containing_oneof = _TPROTOCOLMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLMESSAGE.fields_by_name["performative_pt"] -) -_TPROTOCOLMESSAGE.fields_by_name[ - "performative_pt" -].containing_oneof = _TPROTOCOLMESSAGE.oneofs_by_name["performative"] -DESCRIPTOR.message_types_by_name["TProtocolMessage"] = _TPROTOCOLMESSAGE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - TProtocolMessage = _reflection.GeneratedProtocolMessageType( "TProtocolMessage", (_message.Message,), @@ -3468,38 +485,269 @@ ) _sym_db.RegisterMessage(TProtocolMessage.Performative_Empty_Contents_Performative) - -_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._options = ( - None -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._options = ( - None -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._options = None -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._options = ( - None -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._options = ( - None -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._options = ( - None -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._options = ( - None -) -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._options = None +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._options = ( + None + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLMESSAGE._serialized_start = 64 + _TPROTOCOLMESSAGE._serialized_end = 7224 + _TPROTOCOLMESSAGE_DATAMODEL._serialized_start = 931 + _TPROTOCOLMESSAGE_DATAMODEL._serialized_end = 1237 + _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_start = 1239 + _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_end = 1360 + _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 1363 + _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 1503 + _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 1506 + _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 1802 + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 1805 + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 4941 + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_start = ( + 4053 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_end = ( + 4111 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_start = ( + 4113 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_end = ( + 4169 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_start = ( + 4171 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_end = ( + 4229 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_start = ( + 4231 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_end = ( + 4288 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_start = ( + 4290 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_end = ( + 4346 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_start = ( + 4348 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_end = ( + 4407 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_start = ( + 4409 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_end = ( + 4466 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_start = ( + 4468 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_end = ( + 4527 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_start = ( + 4529 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_end = ( + 4587 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_start = ( + 4589 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_end = ( + 4646 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_start = ( + 4648 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_end = ( + 4706 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_start = ( + 4708 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_end = ( + 4764 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_start = ( + 4766 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_end = ( + 4824 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_start = ( + 4826 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_end = ( + 4883 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_start = ( + 4885 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_end = ( + 4941 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 4944 + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6583 + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( + 6300 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( + 6368 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( + 6370 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( + 6438 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( + 6440 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( + 6510 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( + 6512 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( + 6583 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6586 + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 7164 + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( + 7107 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( + 7164 + ) + _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = 7166 + _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = 7208 # @@protoc_insertion_point(module_scope) diff --git a/tests/data/reference_protocols/t_protocol_no_ct/__init__.py b/tests/data/reference_protocols/t_protocol_no_ct/__init__.py index efd512fbbc..5cb54c9976 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/__init__.py +++ b/tests/data/reference_protocols/t_protocol_no_ct/__init__.py @@ -1,9 +1,26 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """ This module contains the support resources for the t_protocol_no_ct protocol. -It was created with protocol buffer compiler version `libprotoc 3.13.0` and aea version `1.1.1`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.1`. """ from tests.data.generator.t_protocol_no_ct.message import TProtocolNoCtMessage diff --git a/tests/data/reference_protocols/t_protocol_no_ct/dialogues.py b/tests/data/reference_protocols/t_protocol_no_ct/dialogues.py index 04117a8e57..0fad51899d 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/dialogues.py +++ b/tests/data/reference_protocols/t_protocol_no_ct/dialogues.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """ This module contains the classes required for t_protocol_no_ct dialogue management. diff --git a/tests/data/reference_protocols/t_protocol_no_ct/message.py b/tests/data/reference_protocols/t_protocol_no_ct/message.py index a6a62d763b..e152b16daa 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/message.py +++ b/tests/data/reference_protocols/t_protocol_no_ct/message.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """This module contains t_protocol_no_ct's message definition.""" diff --git a/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml b/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml index 41c44668e2..8dd33c3051 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml +++ b/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml @@ -6,7 +6,13 @@ type: protocol description: A protocol for testing purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' -fingerprint: {} +fingerprint: + __init__.py: QmaR7viaQRnRb5woBhgaosWqW3Tmfvm25kb95erfXeABcb + dialogues.py: QmQw2uWqsbwNma5yKnb6cRhaCHuU5nRa5F7eZoxRgUVekm + message.py: QmVuM5P73nhZfTRW6yM4Ehz8tpegDGs38Vig3sYbHLMEKy + serialization.py: QmSofWb5kuojkb6Bt5tu2p7t4VMKx4FDdeNHihdcjeN8gn + t_protocol_no_ct.proto: QmVB1xEyeou9UvDUrKwxNhdUcvSdQvuFwFtgeEGneHNcG7 + t_protocol_no_ct_pb2.py: QmaFxo33ygWLxKSBSkV7nsK7Bz4HJy4JJ7cPK4xUj41Keu fingerprint_ignore_patterns: [] dependencies: - protobuf: {} + protobuf: {} diff --git a/tests/data/reference_protocols/t_protocol_no_ct/serialization.py b/tests/data/reference_protocols/t_protocol_no_ct/serialization.py index 115580a89e..e626920770 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/serialization.py +++ b/tests/data/reference_protocols/t_protocol_no_ct/serialization.py @@ -1,4 +1,21 @@ # -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2018-2022 Fetch.AI Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ------------------------------------------------------------------------------ """Serialization module for t_protocol_no_ct protocol.""" diff --git a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py index 1bd19c7dca..8315b49001 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py @@ -3,6 +3,7 @@ # source: t_protocol_no_ct.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -12,2767 +13,124 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor.FileDescriptor( - name="t_protocol_no_ct.proto", - package="aea.some_author.some_protocol_name.v1_0_0", - syntax="proto3", - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x16t_protocol_no_ct.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xd8\x32\n\x14TProtocolNoCtMessage\x12\x8f\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32h.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12w\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12u\n\x0eperformative_o\x18\x07 \x01(\x0b\x32[.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12y\n\x10performative_pct\x18\x08 \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12y\n\x10performative_pmt\x18\t \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12w\n\x0fperformative_pt\x18\n \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_PerformativeH\x00\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x05\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x05\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x05\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xfc\x18\n\x1dPerformative_Pmt_Performative\x12\x96\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x96\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x96\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x96\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x96\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x8a\x0c\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x05\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x05\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\xad\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x05\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\xad\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xb2\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32\x81\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xb4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32\x82\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xcc\x03\n\x1bPerformative_O_Performative\x12\x16\n\x0e\x63ontent_o_bool\x18\x01 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x02 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x03 \x03(\x05\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x05 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x06 \x01(\x08\x12\x93\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\x08 \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3', +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x16t_protocol_no_ct.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xd8\x32\n\x14TProtocolNoCtMessage\x12\x8f\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32h.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12w\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12u\n\x0eperformative_o\x18\x07 \x01(\x0b\x32[.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12y\n\x10performative_pct\x18\x08 \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12y\n\x10performative_pmt\x18\t \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12w\n\x0fperformative_pt\x18\n \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_PerformativeH\x00\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xfc\x18\n\x1dPerformative_Pmt_Performative\x12\x96\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x96\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x96\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x96\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x96\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x8a\x0c\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x03\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x03\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\xad\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x03\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\xad\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xb2\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32\x81\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xb4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32\x82\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xcc\x03\n\x1bPerformative_O_Performative\x12\x16\n\x0e\x63ontent_o_bool\x18\x01 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x02 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x03 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x05 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x06 \x01(\x08\x12\x93\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\x08 \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' +) + + +_TPROTOCOLNOCTMESSAGE = DESCRIPTOR.message_types_by_name["TProtocolNoCtMessage"] +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pt_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pct_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pmt_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBytesEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntFloatEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntBoolEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictIntStrEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBytesEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolFloatEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolBoolEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictBoolStrEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBytesEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrFloatEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrBoolEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ + "ContentDictStrStrEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Mt_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion1TypeDictOfStrIntEntry" +] +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfStrIntEntry" +] +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfIntFloatEntry" +] +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ + "ContentUnion2TypeDictOfBoolBytesEntry" +] +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_O_Performative"] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = ( + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ + "ContentODictStrIntEntry" + ] +) +_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = ( + _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ + "Performative_Empty_Contents_Performative" + ] ) - - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Pt_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_Performative.content_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_Performative.content_int", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_Performative.content_float", - index=2, - number=3, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_Performative.content_bool", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_Performative.content_str", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=848, - serialized_end=988, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Pct_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_set_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_int", - index=1, - number=2, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_float", - index=2, - number=3, - type=2, - cpp_type=6, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_bool", - index=3, - number=4, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_set_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_set_str", - index=4, - number=5, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bytes", - index=5, - number=6, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_int", - index=6, - number=7, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_float", - index=7, - number=8, - type=2, - cpp_type=6, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_bool", - index=8, - number=9, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_list_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative.content_list_str", - index=9, - number=10, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=991, - serialized_end=1287, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = _descriptor.Descriptor( - name="ContentDictIntBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3598, - serialized_end=3656, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = _descriptor.Descriptor( - name="ContentDictIntIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3658, - serialized_end=3714, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = _descriptor.Descriptor( - name="ContentDictIntFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3716, - serialized_end=3774, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = _descriptor.Descriptor( - name="ContentDictIntBoolEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry.value", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3776, - serialized_end=3833, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = _descriptor.Descriptor( - name="ContentDictIntStrEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry.value", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3835, - serialized_end=3891, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = _descriptor.Descriptor( - name="ContentDictBoolBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3893, - serialized_end=3952, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = _descriptor.Descriptor( - name="ContentDictBoolIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3954, - serialized_end=4011, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = _descriptor.Descriptor( - name="ContentDictBoolFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4013, - serialized_end=4072, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = _descriptor.Descriptor( - name="ContentDictBoolBoolEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry.value", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4074, - serialized_end=4132, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = _descriptor.Descriptor( - name="ContentDictBoolStrEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry.value", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4134, - serialized_end=4191, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = _descriptor.Descriptor( - name="ContentDictStrBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4193, - serialized_end=4251, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = _descriptor.Descriptor( - name="ContentDictStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4253, - serialized_end=4309, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = _descriptor.Descriptor( - name="ContentDictStrFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4311, - serialized_end=4369, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = _descriptor.Descriptor( - name="ContentDictStrBoolEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry.value", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4371, - serialized_end=4428, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = _descriptor.Descriptor( - name="ContentDictStrStrEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry.value", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4430, - serialized_end=4486, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Pmt_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_dict_int_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bytes", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_int", - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_float", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_bool", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_int_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_int_str", - index=4, - number=5, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bytes", - index=5, - number=6, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_int", - index=6, - number=7, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_float", - index=7, - number=8, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_bool", - index=8, - number=9, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_bool_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_bool_str", - index=9, - number=10, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bytes", - index=10, - number=11, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_int", - index=11, - number=12, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_float", - index=12, - number=13, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_bool", - index=13, - number=14, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_dict_str_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.content_dict_str_str", - index=14, - number=15, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1290, - serialized_end=4486, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( - name="ContentUnion1TypeDictOfStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5752, - serialized_end=5820, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _descriptor.Descriptor( - name="ContentUnion2TypeDictOfStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5822, - serialized_end=5890, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _descriptor.Descriptor( - name="ContentUnion2TypeDictOfIntFloatEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.key", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry.value", - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5892, - serialized_end=5962, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _descriptor.Descriptor( - name="ContentUnion2TypeDictOfBoolBytesEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.key", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5964, - serialized_end=6035, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Mt_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_union_1_type_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_int", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_float", - index=2, - number=3, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_bool", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_str", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_set_of_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_set_of_int", - index=5, - number=6, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_list_of_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_list_of_bool", - index=6, - number=7, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_1_type_dict_of_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_1_type_dict_of_str_int", - index=7, - number=8, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_set_of_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_bytes", - index=8, - number=9, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_set_of_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_int", - index=9, - number=10, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_set_of_str", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_set_of_str", - index=10, - number=11, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_list_of_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_float", - index=11, - number=12, - type=2, - cpp_type=6, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_list_of_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bool", - index=12, - number=13, - type=8, - cpp_type=7, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_list_of_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_list_of_bytes", - index=13, - number=14, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_dict_of_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_str_int", - index=14, - number=15, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_dict_of_int_float", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_int_float", - index=15, - number=16, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_union_2_type_dict_of_bool_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.content_union_2_type_dict_of_bool_bytes", - index=16, - number=17, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4489, - serialized_end=6035, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = _descriptor.Descriptor( - name="ContentODictStrIntEntry", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry.value", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6441, - serialized_end=6498, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_O_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="content_o_bool", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_bool_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_bool_is_set", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_set_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int", - index=2, - number=3, - type=5, - cpp_type=1, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_set_int_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_set_int_is_set", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_list_bytes", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes", - index=4, - number=5, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_list_bytes_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_list_bytes_is_set", - index=5, - number=6, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_dict_str_int", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int", - index=6, - number=7, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="content_o_dict_str_int_is_set", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.content_o_dict_str_int_is_set", - index=7, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6038, - serialized_end=6498, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = _descriptor.Descriptor( - name="Performative_Empty_Contents_Performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_Performative", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6500, - serialized_end=6542, -) - -_TPROTOCOLNOCTMESSAGE = _descriptor.Descriptor( - name="TProtocolNoCtMessage", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="performative_empty_contents", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.performative_empty_contents", - index=0, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_mt", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.performative_mt", - index=1, - number=6, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_o", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.performative_o", - index=2, - number=7, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_pct", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.performative_pct", - index=3, - number=8, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_pmt", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.performative_pmt", - index=4, - number=9, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="performative_pt", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.performative_pt", - index=5, - number=10, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE, - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="performative", - full_name="aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.performative", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ), - ], - serialized_start=70, - serialized_end=6558, -) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE.containing_type = ( - _TPROTOCOLNOCTMESSAGE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE.containing_type = ( - _TPROTOCOLNOCTMESSAGE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_bytes" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_int" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_float" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_bool" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_int_str" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_bytes" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_int" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_float" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_bool" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_bool_str" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_bytes" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_int" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_float" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_bool" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.fields_by_name[ - "content_dict_str_str" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.containing_type = ( - _TPROTOCOLNOCTMESSAGE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_1_type_dict_of_str_int" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_2_type_dict_of_str_int" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_2_type_dict_of_int_float" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.fields_by_name[ - "content_union_2_type_dict_of_bool_bytes" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.containing_type = ( - _TPROTOCOLNOCTMESSAGE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY.containing_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE.fields_by_name[ - "content_o_dict_str_int" -].message_type = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE.containing_type = ( - _TPROTOCOLNOCTMESSAGE -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE.containing_type = ( - _TPROTOCOLNOCTMESSAGE -) -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_empty_contents" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_mt" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_o" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_pct" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_pmt" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_pt" -].message_type = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE -_TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLNOCTMESSAGE.fields_by_name["performative_empty_contents"] -) -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_empty_contents" -].containing_oneof = _TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLNOCTMESSAGE.fields_by_name["performative_mt"] -) -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_mt" -].containing_oneof = _TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLNOCTMESSAGE.fields_by_name["performative_o"] -) -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_o" -].containing_oneof = _TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLNOCTMESSAGE.fields_by_name["performative_pct"] -) -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_pct" -].containing_oneof = _TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLNOCTMESSAGE.fields_by_name["performative_pmt"] -) -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_pmt" -].containing_oneof = _TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"] -_TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"].fields.append( - _TPROTOCOLNOCTMESSAGE.fields_by_name["performative_pt"] -) -_TPROTOCOLNOCTMESSAGE.fields_by_name[ - "performative_pt" -].containing_oneof = _TPROTOCOLNOCTMESSAGE.oneofs_by_name["performative"] -DESCRIPTOR.message_types_by_name["TProtocolNoCtMessage"] = _TPROTOCOLNOCTMESSAGE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - TProtocolNoCtMessage = _reflection.GeneratedProtocolMessageType( "TProtocolNoCtMessage", (_message.Message,), @@ -3084,65 +442,265 @@ ) _sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_Empty_Contents_Performative) - -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._options = ( - None -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._options = ( - None -) +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._options = ( + None + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_options = ( + b"8\001" + ) + _TPROTOCOLNOCTMESSAGE._serialized_start = 70 + _TPROTOCOLNOCTMESSAGE._serialized_end = 6558 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 848 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 988 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 991 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 1287 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 1290 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 4486 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_start = ( + 3598 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_end = ( + 3656 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_start = ( + 3658 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_end = ( + 3714 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_start = ( + 3716 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_end = ( + 3774 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_start = ( + 3776 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_end = ( + 3833 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_start = ( + 3835 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_end = ( + 3891 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_start = ( + 3893 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_end = ( + 3952 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_start = ( + 3954 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_end = ( + 4011 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_start = ( + 4013 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_end = ( + 4072 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_start = ( + 4074 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_end = ( + 4132 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_start = ( + 4134 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_end = ( + 4191 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_start = ( + 4193 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_end = ( + 4251 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_start = ( + 4253 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_end = ( + 4309 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_start = ( + 4311 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_end = ( + 4369 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_start = ( + 4371 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_end = ( + 4428 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_start = ( + 4430 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_end = ( + 4486 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 4489 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6035 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( + 5752 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( + 5820 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( + 5822 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( + 5890 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( + 5892 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( + 5962 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( + 5964 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( + 6035 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6038 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 6498 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( + 6441 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( + 6498 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = ( + 6500 + ) + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = ( + 6542 + ) # @@protoc_insertion_point(module_scope) diff --git a/tests/test_act_storage.py b/tests/test_act_storage.py index 8413a43dcd..2aa38da23a 100644 --- a/tests/test_act_storage.py +++ b/tests/test_act_storage.py @@ -158,7 +158,11 @@ def test_storage_access_from_handler(): ) msg.to = aea.identity.address msg.sender = aea.identity.address - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) try: wait_for_condition(lambda: aea.is_running, timeout=10) @@ -233,12 +237,19 @@ def test_dialogues_dumped_and_restored_properly(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) aea.runtime.multiplexer.in_queue.put(envelope) - dialogue_storage: PersistDialoguesStorage = echo_skill.skill_context.default_dialogues._dialogues_storage + dialogue_storage: PersistDialoguesStorage = ( + echo_skill.skill_context.default_dialogues._dialogues_storage + ) wait_for_condition( - lambda: _storage_all_dialogues_labels(dialogue_storage), timeout=3, + lambda: _storage_all_dialogues_labels(dialogue_storage), + timeout=3, ) dialogues_for_check = _storage_all_dialogues_labels(dialogue_storage) finally: @@ -251,9 +262,12 @@ def test_dialogues_dumped_and_restored_properly(self): wait_for_condition(lambda: aea.is_running, timeout=10) echo_skill = aea.resources.get_skill(PUBLIC_ID) - dialogue_storage: PersistDialoguesStorage = echo_skill.skill_context.default_dialogues._dialogues_storage + dialogue_storage: PersistDialoguesStorage = ( + echo_skill.skill_context.default_dialogues._dialogues_storage + ) wait_for_condition( - lambda: _storage_all_dialogues_labels(dialogue_storage), timeout=3, + lambda: _storage_all_dialogues_labels(dialogue_storage), + timeout=3, ) assert ( _storage_all_dialogues_labels(dialogue_storage) == dialogues_for_check diff --git a/tests/test_aea.py b/tests/test_aea.py index 33c2f6d117..c18a5cf3f9 100644 --- a/tests/test_aea.py +++ b/tests/test_aea.py @@ -180,7 +180,11 @@ def test_react(): ) msg.to = agent.identity.address msg.sender = agent.identity.address - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) with run_in_thread(agent.start, timeout=20, on_exit=agent.stop): wait_for_condition(lambda: agent.is_running, timeout=20) @@ -243,13 +247,18 @@ def test_handle(): dummy_skill = an_aea.resources.get_skill(DUMMY_SKILL_PUBLIC_ID) dummy_handler = dummy_skill.skill_context.handlers.dummy # UNSUPPORTED PROTOCOL - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) envelope._protocol_specification_id = UNKNOWN_PROTOCOL_PUBLIC_ID # send envelope via localnode back to agent/bypass `outbox` put consistency checks assert error_handler.unsupported_protocol_count == 0 an_aea.outbox.put(envelope) wait_for_condition( - lambda: error_handler.unsupported_protocol_count == 1, timeout=2, + lambda: error_handler.unsupported_protocol_count == 1, + timeout=2, ) # DECODING ERROR @@ -262,7 +271,8 @@ def test_handle(): assert error_handler.decoding_error_count == 0 an_aea.runtime.multiplexer.put(envelope) wait_for_condition( - lambda: error_handler.decoding_error_count == 1, timeout=5, + lambda: error_handler.decoding_error_count == 1, + timeout=5, ) # UNSUPPORTED SKILL @@ -274,12 +284,17 @@ def test_handle(): ) msg.to = an_aea.identity.address msg.sender = an_aea.identity.address - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) # send envelope via localnode back to agent/bypass `outbox` put consistency checks assert error_handler.no_active_handler_count == 0 an_aea.outbox.put(envelope) wait_for_condition( - lambda: error_handler.no_active_handler_count == 1, timeout=5, + lambda: error_handler.no_active_handler_count == 1, + timeout=5, ) # DECODING OK @@ -293,7 +308,8 @@ def test_handle(): assert len(dummy_handler.handled_messages) == 0 an_aea.runtime.multiplexer.put(envelope) wait_for_condition( - lambda: len(dummy_handler.handled_messages) == 1, timeout=5, + lambda: len(dummy_handler.handled_messages) == 1, + timeout=5, ) an_aea.stop() @@ -426,7 +442,9 @@ def test_initialize_aea_programmatically_build_resources(): wait_for_condition(lambda: an_aea.is_running, timeout=10) an_aea.outbox.put( Envelope( - to=agent_name, sender=agent_name, message=expected_message, + to=agent_name, + sender=agent_name, + message=expected_message, ) ) @@ -542,14 +560,17 @@ def test_no_handlers_registered(): ) msg.to = an_aea.identity.address envelope = Envelope( - to=an_aea.identity.address, sender=an_aea.identity.address, message=msg, + to=an_aea.identity.address, + sender=an_aea.identity.address, + message=msg, ) with patch( "aea.registries.filter.Filter.get_active_handlers", new_callable=PropertyMock, ): with patch.object( - an_aea.runtime.multiplexer, "put", + an_aea.runtime.multiplexer, + "put", ): an_aea.handle_envelope(envelope) mock_logger.assert_any_call( @@ -951,7 +972,11 @@ def test_skill2skill_message(): ) msg.to = str(DUMMY_SKILL_PUBLIC_ID) msg.sender = "some_author/some_skill:0.1.0" - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) with run_in_thread(agent.start, timeout=20, on_exit=agent.stop): wait_for_condition(lambda: agent.is_running, timeout=20) diff --git a/tests/test_agent.py b/tests/test_agent.py index b5e80e630c..a761c505a6 100644 --- a/tests/test_agent.py +++ b/tests/test_agent.py @@ -103,7 +103,10 @@ def test_runtime_modes(): agent_address = "some_address" agent_public_key = "some_public_key" identity = Identity(agent_name, address=agent_address, public_key=agent_public_key) - agent = DummyAgent(identity, [],) + agent = DummyAgent( + identity, + [], + ) assert not agent.is_running assert agent.is_stopped diff --git a/tests/test_agent_loop.py b/tests/test_agent_loop.py index 3c9b7fdbfb..d9ed6a2390 100644 --- a/tests/test_agent_loop.py +++ b/tests/test_agent_loop.py @@ -271,7 +271,8 @@ async def test_internal_messages(self): ) agent.put_internal_message("msg") await wait_for_condition_async( - lambda: agent.filter.handle_internal_message.called is True, timeout=5, + lambda: agent.filter.handle_internal_message.called is True, + timeout=5, ) agent_loop.stop() await agent_loop.wait_completed() diff --git a/tests/test_cli/test_add/test_connection.py b/tests/test_cli/test_add/test_connection.py index e8dda95f53..dcf8c499bd 100644 --- a/tests/test_cli/test_add/test_connection.py +++ b/tests/test_cli/test_add/test_connection.py @@ -109,7 +109,9 @@ def test_add_connection_from_registry_positive(self, fetch_package_mock, *mocks) ) obj_type = "connection" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "add", obj_type, public_id], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "add", obj_type, public_id], + standalone_mode=False, ) assert result.exit_code == 0 public_id_obj = PublicId.from_str(public_id) @@ -533,7 +535,9 @@ def setup_class(cls): ) result = cls.runner.invoke( - cli, [*CLI_LOG_OPTION, "create", cls.agent_name], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "create", cls.agent_name], + standalone_mode=False, ) assert result.exit_code == 0 @@ -593,7 +597,9 @@ def setup_class(cls): assert result.exit_code == 0, result.stdout result = cls.runner.invoke( - cli, [*CLI_LOG_OPTION, "create", cls.agent_name], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "create", cls.agent_name], + standalone_mode=False, ) assert result.exit_code == 0, result.stdout diff --git a/tests/test_cli/test_add/test_protocol.py b/tests/test_cli/test_add/test_protocol.py index 750f04adbc..0914f81db4 100644 --- a/tests/test_cli/test_add/test_protocol.py +++ b/tests/test_cli/test_add/test_protocol.py @@ -195,7 +195,9 @@ def test_add_protocol_from_registry_positive(self, fetch_package_mock, *mocks): public_id = "{}/{}:{}".format(AUTHOR, self.protocol_name, self.protocol_version) obj_type = "protocol" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "add", obj_type, public_id], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "add", obj_type, public_id], + standalone_mode=False, ) assert result.exit_code == 0 public_id_obj = PublicId.from_str(public_id) diff --git a/tests/test_cli/test_add/test_skill.py b/tests/test_cli/test_add/test_skill.py index 0dbb0d4416..33b5df4fdd 100644 --- a/tests/test_cli/test_add/test_skill.py +++ b/tests/test_cli/test_add/test_skill.py @@ -124,7 +124,9 @@ def test_add_skill_from_registry_positive(self, fetch_package_mock, *mocks): public_id = "{}/{}:{}".format(AUTHOR, self.skill_name, self.skill_version) obj_type = "skill" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "add", obj_type, public_id], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "add", obj_type, public_id], + standalone_mode=False, ) assert result.exit_code == 0 public_id_obj = PublicId.from_str(public_id) diff --git a/tests/test_cli/test_add_key.py b/tests/test_cli/test_add_key.py index 3da335cc73..8ecc00f4bc 100644 --- a/tests/test_cli/test_add_key.py +++ b/tests/test_cli/test_add_key.py @@ -211,7 +211,8 @@ def test_add_many_keys(self, pytestconfig): """Test that the keys are added correctly.""" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "add-key", FetchAICrypto.identifier], + cli, + [*CLI_LOG_OPTION, "add-key", FetchAICrypto.identifier], ) assert result.exit_code == 0 result = self.runner.invoke( @@ -373,7 +374,7 @@ def setUp(self): def test_run_positive(self, *mocks): """Test for CLI add_key positive result.""" filepath = str( - Path(ROOT_DIR, "setup.py") + Path(ROOT_DIR, "pyproject.toml") ) # some existing filepath to pass CLI argument check result = self.runner.invoke( cli, diff --git a/tests/test_cli/test_eject.py b/tests/test_cli/test_eject.py index 277a251a23..607bf8b680 100644 --- a/tests/test_cli/test_eject.py +++ b/tests/test_cli/test_eject.py @@ -174,7 +174,10 @@ def test_error(self, *_mocks): match="The AEA configurations are not initialized. Use `aea init` before continuing.", ): self.invoke( - "eject", "--quiet", "protocol", str(DefaultMessage.protocol_id), + "eject", + "--quiet", + "protocol", + str(DefaultMessage.protocol_id), ) diff --git a/tests/test_cli/test_fetch.py b/tests/test_cli/test_fetch.py index 9681cbd1f1..ee665d1760 100644 --- a/tests/test_cli/test_fetch.py +++ b/tests/test_cli/test_fetch.py @@ -136,7 +136,9 @@ def setUp(self): def test_fetch_positive_mixed(self, *mocks): """Test for CLI push connection positive result.""" self.runner.invoke( - cli, [*CLI_LOG_OPTION, "fetch", "author/name:0.1.0"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "fetch", "author/name:0.1.0"], + standalone_mode=False, ) def test_fetch_positive_local(self, *mocks): @@ -229,7 +231,8 @@ class TestFetchAgentMixed(BaseAEATestCase): side_effect=click.ClickException(""), ) @mock.patch( - "aea.cli.fetch.fetch_agent_locally", side_effect=click.ClickException(""), + "aea.cli.fetch.fetch_agent_locally", + side_effect=click.ClickException(""), ) def test_fetch_mixed( self, mock_fetch_package, _mock_fetch_locally, _mock_fetch_agent_locally @@ -264,7 +267,8 @@ def test_fetch_negative(self, *_mocks) -> None: if type(self) == BaseTestFetchAgentError: pytest.skip("Base test class.") with pytest.raises( - Exception, match=self.EXPECTED_ERROR_MESSAGE, + Exception, + match=self.EXPECTED_ERROR_MESSAGE, ): self.run_cli_command( *( @@ -302,7 +306,9 @@ def test_fetch_mixed_no_local_registry(): name = "my_first_aea" runner = CliRunner() result = runner.invoke( - cli, ["fetch", "fetchai/my_first_aea"], catch_exceptions=False, + cli, + ["fetch", "fetchai/my_first_aea"], + catch_exceptions=False, ) assert result.exit_code == 0, result.stdout assert os.path.exists(name) diff --git a/tests/test_cli/test_generate/test_protocols.py b/tests/test_cli/test_generate/test_protocols.py index 014287d2a8..e215e3ce45 100644 --- a/tests/test_cli/test_generate/test_protocols.py +++ b/tests/test_cli/test_generate/test_protocols.py @@ -194,13 +194,25 @@ def test_exit_code_equal_to_0(self): def test_resource_folder_contains_protobuf_schema_file(self): """Test that the protocol folder contains a structurally valid configuration file.""" protobuf_schema_file = Path( - self.t, self.agent_name, "protocols", "t_protocol", "t_protocol.proto", + self.t, + self.agent_name, + "protocols", + "t_protocol", + "t_protocol.proto", ) cpp_header_file = Path( - self.t, self.agent_name, "protocols", "t_protocol", "t_protocol.pb.h", + self.t, + self.agent_name, + "protocols", + "t_protocol", + "t_protocol.pb.h", ) cpp_implementation_file = Path( - self.t, self.agent_name, "protocols", "t_protocol", "t_protocol.pb.cc", + self.t, + self.agent_name, + "protocols", + "t_protocol", + "t_protocol.pb.cc", ) assert protobuf_schema_file.exists() diff --git a/tests/test_cli/test_init.py b/tests/test_cli/test_init.py index 063146f048..501992f652 100644 --- a/tests/test_cli/test_init.py +++ b/tests/test_cli/test_init.py @@ -54,7 +54,8 @@ def test_author_local(self): assert not os.path.exists(self.cli_config_file) result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "init", "--local", "--author", author], + cli, + [*CLI_LOG_OPTION, "init", "--local", "--author", author], ) assert result.exit_code == 0 @@ -73,7 +74,8 @@ def _read_config(self) -> dict: def test_already_registered(self): """Test author already registered.""" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "init", "--local", "--author", "author"], + cli, + [*CLI_LOG_OPTION, "init", "--local", "--author", "author"], ) assert result.exit_code == 0 result = self.runner.invoke(cli, [*CLI_LOG_OPTION, "init", "--local"]) @@ -114,7 +116,8 @@ def test_registered(self, *mocks): def test_already_logged_in(self, *mocks): """Registered and logged in (has token).""" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "init", "--author", "test_author"], + cli, + [*CLI_LOG_OPTION, "init", "--author", "test_author"], ) assert result.exit_code == 0 diff --git a/tests/test_cli/test_issue_certificates.py b/tests/test_cli/test_issue_certificates.py index ee9a5e1288..6af634a8c4 100644 --- a/tests/test_cli/test_issue_certificates.py +++ b/tests/test_cli/test_issue_certificates.py @@ -260,6 +260,7 @@ def setup_class(cls): def test_run(self): """Run the test.""" with pytest.raises( - Exception, match="Cannot find private key with id 'bad_ledger_id'", + Exception, + match="Cannot find private key with id 'bad_ledger_id'", ): self.run_cli_command("issue-certificates", cwd=self._get_cwd()) diff --git a/tests/test_cli/test_launch.py b/tests/test_cli/test_launch.py index 4e296ef3e9..c7fb923ae5 100644 --- a/tests/test_cli/test_launch.py +++ b/tests/test_cli/test_launch.py @@ -200,7 +200,8 @@ def test_exit_code_equal_to_zero(self): ) process_launch.control_c() process_launch.expect_all( - ["Exit cli. code: 0"], timeout=DEFAULT_EXPECT_TIMEOUT, + ["Exit cli. code: 0"], + timeout=DEFAULT_EXPECT_TIMEOUT, ) @@ -250,7 +251,8 @@ def test_exit_code_equal_to_one(self): timeout=DEFAULT_EXPECT_TIMEOUT, ) process_launch.expect( - EOF, timeout=DEFAULT_EXPECT_TIMEOUT, + EOF, + timeout=DEFAULT_EXPECT_TIMEOUT, ) process_launch.wait_to_complete(10) assert process_launch.returncode == 1 @@ -304,7 +306,8 @@ def test_exit_code_equal_to_zero(self): ) process_launch.control_c() process_launch.expect_all( - ["Exit cli. code: 0"], timeout=DEFAULT_EXPECT_TIMEOUT, + ["Exit cli. code: 0"], + timeout=DEFAULT_EXPECT_TIMEOUT, ) diff --git a/tests/test_cli/test_launch_end_to_end.py b/tests/test_cli/test_launch_end_to_end.py index dd4d34e004..c377ea88af 100644 --- a/tests/test_cli/test_launch_end_to_end.py +++ b/tests/test_cli/test_launch_end_to_end.py @@ -151,10 +151,12 @@ def test_end_to_end(self): cwd=search_agent_name, ) self.run_cli_command( - "build", cwd=registration_agent_name, + "build", + cwd=registration_agent_name, ) self.run_cli_command( - "build", cwd=search_agent_name, + "build", + cwd=search_agent_name, ) self.set_agent_context(registration_agent_name) self.generate_private_key( @@ -169,7 +171,8 @@ def test_end_to_end(self): self.add_private_key() self.unset_agent_context() self.run_cli_command( - "issue-certificates", cwd=registration_agent_name, + "issue-certificates", + cwd=registration_agent_name, ) self.set_agent_context(search_agent_name) self.generate_private_key( @@ -184,7 +187,8 @@ def test_end_to_end(self): self.add_private_key() self.unset_agent_context() self.run_cli_command( - "issue-certificates", cwd=search_agent_name, + "issue-certificates", + cwd=search_agent_name, ) proc = PexpectWrapper( # nosec diff --git a/tests/test_cli/test_list.py b/tests/test_cli/test_list.py index 250792e197..014a50521d 100644 --- a/tests/test_cli/test_list.py +++ b/tests/test_cli/test_list.py @@ -66,7 +66,9 @@ def setup_class(cls): "aea.cli.list.format_items", return_value=FORMAT_ITEMS_SAMPLE_OUTPUT ): cls.result = cls.runner.invoke( - cli, [*CLI_LOG_OPTION, "list", "protocols"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "list", "protocols"], + standalone_mode=False, ) def test_exit_code_equal_to_zero(self): diff --git a/tests/test_cli/test_logout.py b/tests/test_cli/test_logout.py index 7a5b1daf00..35c70231d8 100644 --- a/tests/test_cli/test_logout.py +++ b/tests/test_cli/test_logout.py @@ -37,7 +37,9 @@ def setUp(self): def test_logout_positive(self, update_cli_config_mock, registry_logout_mock): """Test for CLI logout positive result.""" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "logout"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "logout"], + standalone_mode=False, ) self.assertEqual(result.exit_code, 0) registry_logout_mock.assert_called_once() diff --git a/tests/test_cli/test_misc.py b/tests/test_cli/test_misc.py index 886d235daf..7dd06c2581 100644 --- a/tests/test_cli/test_misc.py +++ b/tests/test_cli/test_misc.py @@ -53,10 +53,8 @@ def test_flag_help(): --version Show the version and exit. -v, --verbosity LVL One of NOTSET, DEBUG, INFO, WARNING, ERROR, CRITICAL, OFF - -s, --skip-consistency-check Skip consistency checks of agent during command execution. - --registry-path DIRECTORY Provide a local registry directory full path. --help Show this message and exit. @@ -75,11 +73,9 @@ def test_flag_help(): generate-key Generate a private key and place it in a file. generate-wealth Generate wealth for the agent on a test network. get-address Get the address associated with a private key of the... - get-multiaddress Get the multiaddress associated with a private key or... - get-public-key Get the public key associated with a private key of - the... - - get-wealth Get the wealth associated with the private key of the... + get-multiaddress Get the multiaddress associated with a private key... + get-public-key Get the public key associated with a private key of... + get-wealth Get the wealth associated with the private key of... init Initialize your AEA configurations. install Install the dependencies of the agent. interact Interact with the running agent via the stub... diff --git a/tests/test_cli/test_publish.py b/tests/test_cli/test_publish.py index a99db5e572..a55e9e25ac 100644 --- a/tests/test_cli/test_publish.py +++ b/tests/test_cli/test_publish.py @@ -117,15 +117,21 @@ def setUp(self): def test_publish_positive(self, *mocks): """Test for CLI publish positive result.""" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "publish", "--local"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "publish", "--local"], + standalone_mode=False, ) self.assertEqual(result.exit_code, 0) result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "publish", "--remote"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "publish", "--remote"], + standalone_mode=False, ) self.assertEqual(result.exit_code, 0) result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "publish"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "publish"], + standalone_mode=False, ) self.assertEqual(result.exit_code, 0) @@ -207,7 +213,9 @@ def setup_class(cls): cls.add_item(cls.ITEM_TYPE, str(cls.ITEM_PUBLIC_ID), local=True) cls.scaffold_item(cls.NEW_ITEM_TYPE, cls.NEW_ITEM_NAME) - def test_publish_ok_with_missing_push(self,): + def test_publish_ok_with_missing_push( + self, + ): """Test ok for missing push.""" with pytest.raises(ClickException, match=r"Dependency is missing") as e: self.invoke("publish", "--local") @@ -246,7 +254,8 @@ def test_publish_ok_with_missing_push( with pytest.raises( ClickException, match=r"Package not found in remote registry" ) as e, mock.patch( - "aea.cli.publish.get_package_meta", side_effect=ClickException("expected"), + "aea.cli.publish.get_package_meta", + side_effect=ClickException("expected"), ): self.invoke("publish", "--remote") assert "--push-missing" in str(e) diff --git a/tests/test_cli/test_push.py b/tests/test_cli/test_push.py index 83e4c3e9d1..e21483605f 100644 --- a/tests/test_cli/test_push.py +++ b/tests/test_cli/test_push.py @@ -60,7 +60,10 @@ def test_save_item_locally_positive( "cwd", None, "skills", item_id.name ) try_get_item_target_path_mock.assert_called_once_with( - ctx_mock.registry_path, item_id.author, item_type + "s", item_id.name, + ctx_mock.registry_path, + item_id.author, + item_type + "s", + item_id.name, ) _check_package_public_id_mock.assert_called_once_with( "source", item_type, item_id @@ -82,10 +85,14 @@ def setup_class(cls): cls.add_item(cls.ITEM_TYPE, str(cls.ITEM_PUBLIC_ID), local=True) def test_vendor_ok( - self, copy_tree_mock, + self, + copy_tree_mock, ): """Test ok for vendor's item.""" - with mock.patch("os.path.exists", side_effect=[False, True, False]): + with mock.patch( + "aea.cli.utils.package_utils.is_path_exist", + side_effect=[False, True, False], + ): self.invoke("push", "--local", "skill", "fetchai/echo") copy_tree_mock.assert_called_once() src_path, dst_path = copy_tree_mock.mock_calls[0][1] @@ -96,7 +103,8 @@ def test_vendor_ok( ) def test_user_ok( - self, copy_tree_mock, + self, + copy_tree_mock, ): """Test ok for users's item.""" with mock.patch( @@ -113,7 +121,8 @@ def test_user_ok( ) def test_fail_no_item( - self, *mocks, + self, + *mocks, ): """Test fail, item_not_exists .""" expected_path_pattern = ".*" + ".*".join( @@ -136,14 +145,18 @@ class CheckPackagePublicIdTestCase(TestCase): def test__check_package_public_id_positive(self, *mocks): """Test for _check_package_public_id positive result.""" check_package_public_id( - "source-path", "item-type", PublicId.from_str(f"{AUTHOR}/name:0.1.0"), + "source-path", + "item-type", + PublicId.from_str(f"{AUTHOR}/name:0.1.0"), ) def test__check_package_public_id_negative(self, *mocks): """Test for _check_package_public_id negative result.""" with self.assertRaises(ClickException): check_package_public_id( - "source-path", "item-type", PublicId.from_str(f"{AUTHOR}/name:0.1.1"), + "source-path", + "item-type", + PublicId.from_str(f"{AUTHOR}/name:0.1.1"), ) diff --git a/tests/test_cli/test_registry/test_push.py b/tests/test_cli/test_registry/test_push.py index b811b9aca6..87e11520e3 100644 --- a/tests/test_cli/test_registry/test_push.py +++ b/tests/test_cli/test_registry/test_push.py @@ -69,7 +69,7 @@ def test_push_item_positive( getcwd_mock, rm_tarfiles_mock, check_is_author_logged_in_mock, - *_ + *_, ): """Test for push_item positive result.""" public_id = PublicIdMock( @@ -103,7 +103,7 @@ def test_push_dependency_fail( getcwd_mock, rm_tarfiles_mock, check_is_author_logged_in_mock, - *_ + *_, ): """Test for push_item fails cause dependencies check.""" public_id = PublicIdMock( @@ -156,7 +156,7 @@ def test_push_item_item_not_found( getcwd_mock, rm_tarfiles_mock, check_is_author_logged_in_mock, - *_ + *_, ): """Test for push_item - item not found.""" with self.assertRaises(ClickException): diff --git a/tests/test_cli/test_reset_password.py b/tests/test_cli/test_reset_password.py index c0193ec460..1dd5f0d84a 100644 --- a/tests/test_cli/test_reset_password.py +++ b/tests/test_cli/test_reset_password.py @@ -38,7 +38,9 @@ def test_reset_password_positive(self, registry_reset_password_mock): """Test for CLI reset_password positive result.""" email = "email@example.com" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "reset_password", email], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "reset_password", email], + standalone_mode=False, ) self.assertEqual(result.exit_code, 0) registry_reset_password_mock.assert_called_once_with(email) diff --git a/tests/test_cli/test_run.py b/tests/test_cli/test_run.py index 1b72c0ceff..532e044975 100644 --- a/tests/test_cli/test_run.py +++ b/tests/test_cli/test_run.py @@ -349,7 +349,8 @@ def test_run_multiple_connections(connection_ids): process.expect_all(["Start processing messages"], timeout=40) process.control_c() process.expect( - EOF, timeout=40, + EOF, + timeout=40, ) process.wait_to_complete(15) assert process.returncode == 0 @@ -1035,8 +1036,8 @@ def setup_class(cls): DEFAULT_CONNECTION_CONFIG_FILE, ) cls.connection_configuration_path.unlink() - cls.relative_connection_configuration_path = cls.connection_configuration_path.relative_to( - Path(cls.t, cls.agent_name) + cls.relative_connection_configuration_path = ( + cls.connection_configuration_path.relative_to(Path(cls.t, cls.agent_name)) ) cls.result = cls.runner.invoke( @@ -1383,7 +1384,8 @@ def raise_err(*args): with pytest.raises(Exception, match="^None$"): with patch("aea.cli.run.run_aea", raise_err): self.run_cli_command( - "run", cwd=self._get_cwd(), + "run", + cwd=self._get_cwd(), ) with pytest.raises(Exception, match=f"^..{self.connection2_id}..$"): with patch("aea.cli.run.run_aea", raise_err): diff --git a/tests/test_cli/test_scaffold/test_error_handler.py b/tests/test_cli/test_scaffold/test_error_handler.py index d970dd3061..1620431fd4 100644 --- a/tests/test_cli/test_scaffold/test_error_handler.py +++ b/tests/test_cli/test_scaffold/test_error_handler.py @@ -41,7 +41,9 @@ def setUp(self): def test_scaffold_error_handler_command_positive(self, *mocks): """Test for CLI scaffold error handler command for positive result.""" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "scaffold", "error-handler"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "scaffold", "error-handler"], + standalone_mode=False, ) self.assertEqual(result.exit_code, 0) diff --git a/tests/test_cli/test_scaffold/test_skills.py b/tests/test_cli/test_scaffold/test_skills.py index 2f22917a87..9ac6d72e70 100644 --- a/tests/test_cli/test_scaffold/test_skills.py +++ b/tests/test_cli/test_scaffold/test_skills.py @@ -129,7 +129,7 @@ def test_init_module_contains_new_public_id(self): init_module_content = p.read_text() expected_public_id = f"{AUTHOR}/{self.resource_name}:{DEFAULT_VERSION}" matches = re.findall( - fr'^PUBLIC_ID = PublicId\.from_str\("{expected_public_id}"\)$', + rf'^PUBLIC_ID = PublicId\.from_str\("{expected_public_id}"\)$', init_module_content, re.MULTILINE, ) @@ -315,7 +315,8 @@ def setup_class(cls): # change the dumping of yaml module to raise an exception. cls.patch = unittest.mock.patch( - "yaml.dump", side_effect=ValidationError("test error message"), + "yaml.dump", + side_effect=ValidationError("test error message"), ) cls.patch.start() diff --git a/tests/test_cli/test_search.py b/tests/test_cli/test_search.py index d463227c65..cbcb567f15 100644 --- a/tests/test_cli/test_search.py +++ b/tests/test_cli/test_search.py @@ -99,7 +99,9 @@ def test_search_contracts_positive(self, *mocks): def test_search_contracts_registry_positive(self, *mocks): """Test search contracts in registry command positive result.""" result = self.runner.invoke( - cli, [*CLI_LOG_OPTION, "search", "contracts"], standalone_mode=False, + cli, + [*CLI_LOG_OPTION, "search", "contracts"], + standalone_mode=False, ) assert result.output == ( 'Searching for ""...\n' @@ -351,7 +353,9 @@ def test_exit_code_equal_to_zero(self): """Test that the exit code is equal to 0 (i.e. success).""" assert self.result.exit_code == 0 - def test_correct_output(self,): + def test_correct_output( + self, + ): """Test that the command has printed the correct output..""" public_id_echo = ECHO_SKILL_PUBLIC_ID public_id_error = ERROR_SKILL_PUBLIC_ID @@ -374,7 +378,10 @@ def test_correct_output(self,): "Author: fetchai\n" "Version: {}\n" "------------------------------\n\n" - ).format(str(public_id_error), str(public_id_error.version),), + ).format( + str(public_id_error), + str(public_id_error.version), + ), ] assert [strings in self.result.output for strings in expected] @@ -429,7 +436,9 @@ def test_exit_code_equal_to_zero(self): """Test that the exit code is equal to 0 (i.e. success).""" assert self.result.exit_code == 0 - def test_correct_output(self,): + def test_correct_output( + self, + ): """Test that the command has printed the correct output..""" public_id_echo = ECHO_SKILL_PUBLIC_ID public_id_error = ERROR_SKILL_PUBLIC_ID @@ -452,7 +461,10 @@ def test_correct_output(self,): "Author: fetchai\n" "Version: {}\n" "------------------------------\n\n" - ).format(str(public_id_error), str(public_id_error.version),), + ).format( + str(public_id_error), + str(public_id_error.version), + ), ] assert [strings in self.result.output for strings in expected] diff --git a/tests/test_cli/test_transfer.py b/tests/test_cli/test_transfer.py index d8a263b49f..b938912d4e 100644 --- a/tests/test_cli/test_transfer.py +++ b/tests/test_cli/test_transfer.py @@ -51,7 +51,7 @@ def setup_class(cls): """Set up the test class.""" super(TestCliTransferFetchAINetwork, cls).setup_class() cls.agent_name2 = "agent_" + "".join( - random.choices(string.ascii_lowercase, k=5) + random.choices(string.ascii_lowercase, k=5) # nosec ) cls.create_agents(cls.agent_name2) diff --git a/tests/test_cli/test_upgrade.py b/tests/test_cli/test_upgrade.py index 3b3607656f..d8be312d5b 100644 --- a/tests/test_cli/test_upgrade.py +++ b/tests/test_cli/test_upgrade.py @@ -894,7 +894,8 @@ def setup_class(cls): {cls.OLD_DEFAULT_PROTOCOL_PUBLIC_ID: cls.OLD_STUB_CONNECTION_PUBLIC_ID}, ) cls.nested_set_config( - "agent.default_connection", cls.OLD_STUB_CONNECTION_PUBLIC_ID, + "agent.default_connection", + cls.OLD_STUB_CONNECTION_PUBLIC_ID, ) cls.run_cli_command( "--skip-consistency-check", diff --git a/tests/test_cli/test_utils/test_config.py b/tests/test_cli/test_utils/test_config.py index 6c584e03f4..8f6050269b 100644 --- a/tests/test_cli/test_utils/test_config.py +++ b/tests/test_cli/test_utils/test_config.py @@ -48,7 +48,8 @@ def test_validate_item_config_positive(self, *mocks): validate_item_config(item_type="agent", package_path="file/path") @mock.patch( - "aea.cli.utils.config.load_item_config", return_value=FaultyAgentConfigMock(), + "aea.cli.utils.config.load_item_config", + return_value=FaultyAgentConfigMock(), ) @mock.patch( "aea.cli.utils.config.ConfigLoaders.from_package_type", diff --git a/tests/test_configurations/test_schema.py b/tests/test_configurations/test_schema.py index 55cec65e1b..afcd0a3398 100644 --- a/tests/test_configurations/test_schema.py +++ b/tests/test_configurations/test_schema.py @@ -138,7 +138,8 @@ def test_config_validation(schema_file_path, config_file_path): # TODO a bit inefficient to load each schema everytime; consider making the validators as fixtures. schema = json.load(open(schema_file_path)) resolver = jsonschema.RefResolver( - make_jsonschema_base_uri(Path(CONFIGURATION_SCHEMA_DIR).absolute()), schema, + make_jsonschema_base_uri(Path(CONFIGURATION_SCHEMA_DIR).absolute()), + schema, ) validator = Draft4Validator(schema, resolver=resolver) config_data = list(yaml.safe_load_all(open(config_file_path))) diff --git a/tests/test_configurations/test_utils.py b/tests/test_configurations/test_utils.py index ea160a84d6..7787d8908c 100644 --- a/tests/test_configurations/test_utils.py +++ b/tests/test_configurations/test_utils.py @@ -222,7 +222,9 @@ def setup_class(cls): cls.expected_custom_component_configuration = dict(foo="bar") cls.skill_config = SkillConfig( - name="skill_name", author="author", version="0.1.0", + name="skill_name", + author="author", + version="0.1.0", ) cls.skill_config.protocols = {cls.old_protocol_id} diff --git a/tests/test_context/test_base.py b/tests/test_context/test_base.py index 57450700e9..de2c6a573c 100644 --- a/tests/test_context/test_base.py +++ b/tests/test_context/test_base.py @@ -70,7 +70,7 @@ def storage_callable_(): storage_callable=storage_callable_, data_dir=data_dir, send_to_skill=send_to_skill, - **kwargs + **kwargs, ) assert ac.data_dir == data_dir diff --git a/tests/test_contracts/test_base.py b/tests/test_contracts/test_base.py index 703640de4a..bcf707d0e7 100644 --- a/tests/test_contracts/test_base.py +++ b/tests/test_contracts/test_base.py @@ -135,7 +135,8 @@ def dummy_contract(request): def test_get_instance_no_address_ethereum(dummy_contract): """Tests get instance method with no address for ethereum.""" ledger_api = ledger_apis_registry.make( - EthereumCrypto.identifier, address=ETHEREUM_DEFAULT_ADDRESS, + EthereumCrypto.identifier, + address=ETHEREUM_DEFAULT_ADDRESS, ) instance = dummy_contract.get_instance(ledger_api) assert type(instance) == web3._utils.datatypes.PropertyCheckingFactory @@ -168,7 +169,8 @@ def test_get_deploy_transaction_ethereum( def test_get_instance_no_address_cosmwasm(dummy_contract): """Tests get instance method with no address for fetchai.""" ledger_api = ledger_apis_registry.make( - FetchAICrypto.identifier, address=FETCHAI_DEFAULT_ADDRESS, + FetchAICrypto.identifier, + address=FETCHAI_DEFAULT_ADDRESS, ) instance = dummy_contract.get_instance(ledger_api) assert instance is None @@ -178,7 +180,8 @@ def test_get_deploy_transaction_cosmwasm(dummy_contract): """Tests the deploy transaction classmethod for fetchai.""" aea_ledger_fetchai = crypto_registry.make(FetchAICrypto.identifier) ledger_api = ledger_apis_registry.make( - FetchAICrypto.identifier, address=FETCHAI_DEFAULT_ADDRESS, + FetchAICrypto.identifier, + address=FETCHAI_DEFAULT_ADDRESS, ) deploy_tx = dummy_contract.get_deploy_transaction( ledger_api, aea_ledger_fetchai.address, account_number=1, sequence=0 diff --git a/tests/test_crypto/test_ledger_apis.py b/tests/test_crypto/test_ledger_apis.py index fcdbda45e2..bebd7598c0 100644 --- a/tests/test_crypto/test_ledger_apis.py +++ b/tests/test_crypto/test_ledger_apis.py @@ -93,7 +93,8 @@ def test_send_signed_transaction(self): return_value="mock_transaction_digest", ): tx_digest = self.ledger_apis.send_signed_transaction( - identifier=CosmosCrypto.identifier, tx_signed="signed_transaction", + identifier=CosmosCrypto.identifier, + tx_signed="signed_transaction", ) assert tx_digest == "mock_transaction_digest" @@ -104,7 +105,8 @@ def test_get_transaction_receipt(self): return_value="mock_transaction_receipt", ): tx_receipt = self.ledger_apis.get_transaction_receipt( - identifier=CosmosCrypto.identifier, tx_digest="tx_digest", + identifier=CosmosCrypto.identifier, + tx_digest="tx_digest", ) assert tx_receipt == "mock_transaction_receipt" @@ -115,24 +117,28 @@ def test_get_transaction(self): return_value="mock_transaction", ): tx = self.ledger_apis.get_transaction( - identifier=CosmosCrypto.identifier, tx_digest="tx_digest", + identifier=CosmosCrypto.identifier, + tx_digest="tx_digest", ) assert tx == "mock_transaction" def test_is_transaction_settled(self): """Test the is_transaction_settled.""" with mock.patch( - "aea_ledger_cosmos.CosmosApi.is_transaction_settled", return_value=True, + "aea_ledger_cosmos.CosmosApi.is_transaction_settled", + return_value=True, ): is_settled = self.ledger_apis.is_transaction_settled( - identifier=CosmosCrypto.identifier, tx_receipt="tx_receipt", + identifier=CosmosCrypto.identifier, + tx_receipt="tx_receipt", ) assert is_settled def test_is_transaction_valid(self): """Test the is_transaction_valid.""" with mock.patch( - "aea_ledger_cosmos.CosmosApi.is_transaction_valid", return_value=True, + "aea_ledger_cosmos.CosmosApi.is_transaction_valid", + return_value=True, ): is_valid = self.ledger_apis.is_transaction_valid( identifier=CosmosCrypto.identifier, @@ -162,10 +168,12 @@ def test_get_hash(self): """Test the get_hash.""" expected_hash = "hash" with mock.patch( - "aea_ledger_cosmos.CosmosApi.get_hash", return_value=expected_hash, + "aea_ledger_cosmos.CosmosApi.get_hash", + return_value=expected_hash, ): hash_ = self.ledger_apis.get_hash( - identifier=CosmosCrypto.identifier, message=b"message", + identifier=CosmosCrypto.identifier, + message=b"message", ) assert hash_ == expected_hash @@ -177,7 +185,8 @@ def test_get_contract_address(self): return_value=expected_address, ): address_ = self.ledger_apis.get_contract_address( - identifier=CosmosCrypto.identifier, tx_receipt={}, + identifier=CosmosCrypto.identifier, + tx_receipt={}, ) assert address_ == expected_address diff --git a/tests/test_crypto/test_password_end2end.py b/tests/test_crypto/test_password_end2end.py index 5fad2c6132..c87f2dbc7f 100644 --- a/tests/test_crypto/test_password_end2end.py +++ b/tests/test_crypto/test_password_end2end.py @@ -71,5 +71,10 @@ def test_crypto_plugin(self, ledger_name): ) assert r.exit_code == 0 - r = self.invoke("get-address", ledger_name, "--password", password,) + r = self.invoke( + "get-address", + ledger_name, + "--password", + password, + ) assert r.exit_code == 0 diff --git a/tests/test_crypto/test_registries.py b/tests/test_crypto/test_registries.py index 9c63986de6..ca0b38d349 100644 --- a/tests/test_crypto/test_registries.py +++ b/tests/test_crypto/test_registries.py @@ -63,7 +63,7 @@ def test_register_make_with_class_kwargs(): id_=id_, entry_point="tests.test_crypto.test_registries:Something", class_kwargs=class_kwargs, - **kwargs + **kwargs, ) assert Something.class_key is None item = reg.make(id_) diff --git a/tests/test_crypto/test_registry/test_misc.py b/tests/test_crypto/test_registry/test_misc.py index 58e7e56ef8..62be388945 100644 --- a/tests/test_crypto/test_registry/test_misc.py +++ b/tests/test_crypto/test_registry/test_misc.py @@ -53,6 +53,6 @@ def test_validation_item_id(current_id, is_valid): else: with pytest.raises( AEAException, - match=fr"Malformed ItemId: '{current_id}'\. It must be of the form .*\.", + match=rf"Malformed ItemId: '{current_id}'\. It must be of the form .*\.", ): registry.register(current_id, entry_point=entrypoint) diff --git a/tests/test_decision_maker/test_ownership_state.py b/tests/test_decision_maker/test_ownership_state.py index 2fbd8903c3..66e6caf257 100644 --- a/tests/test_decision_maker/test_ownership_state.py +++ b/tests/test_decision_maker/test_ownership_state.py @@ -43,7 +43,8 @@ def test_initialisation(): good_endowment = {"good_id": 2} ownership_state = OwnershipState() ownership_state.set( - amount_by_currency_id=currency_endowment, quantities_by_good_id=good_endowment, + amount_by_currency_id=currency_endowment, + quantities_by_good_id=good_endowment, ) assert ownership_state.amount_by_currency_id is not None assert ownership_state.quantities_by_good_id is not None diff --git a/tests/test_decision_maker/test_preferences.py b/tests/test_decision_maker/test_preferences.py index bc06bad4a5..d9a334ac03 100644 --- a/tests/test_decision_maker/test_preferences.py +++ b/tests/test_decision_maker/test_preferences.py @@ -100,7 +100,8 @@ def test_utility(): exchange_params_by_currency_id=exchange_params, ) score = preferences.utility( - quantities_by_good_id=good_holdings, amount_by_currency_id=currency_holdings, + quantities_by_good_id=good_holdings, + amount_by_currency_id=currency_holdings, ) linear_utility = preferences.linear_utility(amount_by_currency_id=currency_holdings) log_utility = preferences.logarithmic_utility(quantities_by_good_id=good_holdings) @@ -124,7 +125,8 @@ def test_marginal_utility(): delta_currency_holdings = {"FET": -5} ownership_state = OwnershipState() ownership_state.set( - amount_by_currency_id=currency_holdings, quantities_by_good_id=good_holdings, + amount_by_currency_id=currency_holdings, + quantities_by_good_id=good_holdings, ) marginal_utility = preferences.marginal_utility( ownership_state=ownership_state, diff --git a/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py b/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py index 49039704e6..7491cc0abf 100644 --- a/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py +++ b/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py @@ -114,19 +114,37 @@ def run(): # Add the ledger_api protocol ledger_api_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "ledger_api",) + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "ledger_api", + ) ) resources.add_protocol(ledger_api_protocol) # Add the oef_search protocol oef_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "oef_search",) + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "oef_search", + ) ) resources.add_protocol(oef_protocol) # Add the fipa protocol fipa_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "fipa",) + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "fipa", + ) ) resources.add_protocol(fipa_protocol) diff --git a/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py b/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py index 35c0017ed0..74a405a6fe 100644 --- a/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py +++ b/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py @@ -131,7 +131,10 @@ def test_cli_programmatic_communication(self): LIBP2P_SUCCESS_MESSAGE, ) missing_strings = self.missing_from_output( - weather_client_process, check_strings, timeout=30, is_terminating=False, + weather_client_process, + check_strings, + timeout=30, + is_terminating=False, ) assert ( missing_strings == [] diff --git a/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py b/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py index d09bbb67e6..0ba0f41fa4 100644 --- a/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py +++ b/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py @@ -84,7 +84,12 @@ def test_generic_seller_skill_dialogues(self): def test_generic_buyer_skill_behaviour(self): """Test that the code blocks exist in the generic_buyer skill.""" path = Path( - ROOT_DIR, "packages", "fetchai", "skills", "generic_buyer", "behaviours.py", + ROOT_DIR, + "packages", + "fetchai", + "skills", + "generic_buyer", + "behaviours.py", ) with open(path, "r") as file: python_code = file.read() @@ -93,7 +98,12 @@ def test_generic_buyer_skill_behaviour(self): def test_generic_buyer_skill_handler(self): """Test handlers.py of generic_buyer skill.""" path = Path( - ROOT_DIR, "packages", "fetchai", "skills", "generic_buyer", "handlers.py", + ROOT_DIR, + "packages", + "fetchai", + "skills", + "generic_buyer", + "handlers.py", ) with open(path, "r") as file: @@ -104,7 +114,12 @@ def test_generic_buyer_skill_handler(self): def test_generic_buyer_skill_strategy(self): """Test strategy.py correctness of generic_buyer skill.""" path = Path( - ROOT_DIR, "packages", "fetchai", "skills", "generic_buyer", "strategy.py", + ROOT_DIR, + "packages", + "fetchai", + "skills", + "generic_buyer", + "strategy.py", ) with open(path, "r") as file: @@ -115,7 +130,12 @@ def test_generic_buyer_skill_strategy(self): def test_generic_buyer_skill_dialogues(self): """Test dialogues.py of generic_buyer skill.""" path = Path( - ROOT_DIR, "packages", "fetchai", "skills", "generic_buyer", "dialogues.py", + ROOT_DIR, + "packages", + "fetchai", + "skills", + "generic_buyer", + "dialogues.py", ) with open(path, "r") as file: python_code = file.read() diff --git a/tests/test_docs/test_orm_integration/test_orm_integration.py b/tests/test_docs/test_orm_integration/test_orm_integration.py index db31aa5a9e..220537e6a2 100644 --- a/tests/test_docs/test_orm_integration/test_orm_integration.py +++ b/tests/test_docs/test_orm_integration/test_orm_integration.py @@ -159,11 +159,15 @@ def test_orm_integration_docs_example(self): ) # Replace the seller strategy seller_stategy_path = Path( - seller_aea_name, "skills", "thermometer", "strategy.py", + seller_aea_name, + "skills", + "thermometer", + "strategy.py", ) self.replace_file_content(ORM_SELLER_STRATEGY_PATH, seller_stategy_path) self.fingerprint_item( - "skill", "{}/thermometer:0.1.0".format(self.author), + "skill", + "{}/thermometer:0.1.0".format(self.author), ) self.run_install() @@ -260,7 +264,10 @@ def test_orm_integration_docs_example(self): LIBP2P_SUCCESS_MESSAGE, ) missing_strings = self.missing_from_output( - buyer_aea_process, check_strings, timeout=30, is_terminating=False, + buyer_aea_process, + check_strings, + timeout=30, + is_terminating=False, ) assert ( missing_strings == [] diff --git a/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py b/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py index 8e2869137a..060cce42b5 100644 --- a/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py +++ b/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py @@ -131,7 +131,9 @@ async def test_connecting_to_aca(self): ) request_http_message.to = "ACA" request_envelope = Envelope( - to="ACA", sender="AEA", message=request_http_message, + to="ACA", + sender="AEA", + message=request_http_message, ) try: @@ -183,7 +185,9 @@ async def test_end_to_end_aea_aca(self): connection_id=HTTPClientConnection.connection_id, ) http_client_connection = HTTPClientConnection( - configuration=configuration, data_dir=MagicMock(), identity=identity, + configuration=configuration, + data_dir=MagicMock(), + identity=identity, ) resources = Resources() resources.add_connection(http_client_connection) @@ -225,7 +229,9 @@ async def test_end_to_end_aea_aca(self): ) request_http_message.to = "ACA" request_envelope = Envelope( - to="ACA", sender="AEA", message=request_http_message, + to="ACA", + sender="AEA", + message=request_http_message, ) # add a simple skill with handler diff --git a/tests/test_helpers/test_async_utils.py b/tests/test_helpers/test_async_utils.py index ed68f3675c..bc8323e410 100644 --- a/tests/test_helpers/test_async_utils.py +++ b/tests/test_helpers/test_async_utils.py @@ -221,7 +221,9 @@ class TestRunnable: def test_no_loop_and_threded(self): """Test runnable fails on threaded mode and loop provided..""" - with pytest.raises(ValueError,): + with pytest.raises( + ValueError, + ): RunAndExit(loop=asyncio.get_event_loop(), threaded=True) def test_task_cancel_not_set(self): diff --git a/tests/test_helpers/test_env_vars.py b/tests/test_helpers/test_env_vars.py index 2dd30dc5dc..639fb93462 100644 --- a/tests/test_helpers/test_env_vars.py +++ b/tests/test_helpers/test_env_vars.py @@ -54,7 +54,8 @@ def test_replace_with_env_var(): assert replace_with_env_var("${var}", {}, default_value=100) == 100 with pytest.raises( - ValueError, match=r"`var` not found in env variables and no default value set!", + ValueError, + match=r"`var` not found in env variables and no default value set!", ): replace_with_env_var("${var}", {}) diff --git a/tests/test_mail/test_base.py b/tests/test_mail/test_base.py index 9649122cb7..175c9dd00f 100644 --- a/tests/test_mail/test_base.py +++ b/tests/test_mail/test_base.py @@ -50,7 +50,7 @@ def test_uri(): assert uri.host == "netloc" assert uri.port == 80 assert uri.username == "user" - assert uri.password == "pwd" + assert uri.password == "pwd" # nosec def test_uri_eq(): @@ -69,7 +69,11 @@ def test_envelope_initialisation(): ) msg.to = receiver_address - envelope = Envelope(to=receiver_address, sender=agent_address, message=msg,) + envelope = Envelope( + to=receiver_address, + sender=agent_address, + message=msg, + ) assert envelope, "Cannot generate a new envelope" @@ -101,7 +105,11 @@ def test_inbox_nowait(): ) msg.to = receiver_address multiplexer = Multiplexer([_make_dummy_connection()]) - envelope = Envelope(to=receiver_address, sender=agent_address, message=msg,) + envelope = Envelope( + to=receiver_address, + sender=agent_address, + message=msg, + ) multiplexer.in_queue.put(envelope) inbox = InBox(multiplexer) assert ( @@ -118,7 +126,11 @@ def test_inbox_get(): ) msg.to = receiver_address multiplexer = Multiplexer([_make_dummy_connection()]) - envelope = Envelope(to=receiver_address, sender=agent_address, message=msg,) + envelope = Envelope( + to=receiver_address, + sender=agent_address, + message=msg, + ) multiplexer.in_queue.put(envelope) inbox = InBox(multiplexer) @@ -166,7 +178,11 @@ def test_outbox_put(): wait_for_condition( lambda: dummy_connection.is_connected, 15, "Connection is not connected" ) - envelope = Envelope(to=receiver_address, sender=agent_address, message=msg,) + envelope = Envelope( + to=receiver_address, + sender=agent_address, + message=msg, + ) outbox.put(envelope) wait_for_condition( lambda: inbox.empty(), 15, "Inbox must not be empty after putting an envelope" @@ -273,7 +289,11 @@ def test_envelope_serialization(): def test_envelope_message_bytes(): """Test the property Envelope.message_bytes.""" message = DefaultMessage(DefaultMessage.Performative.BYTES, content=b"message") - envelope = Envelope(to="to", sender="sender", message=message,) + envelope = Envelope( + to="to", + sender="sender", + message=message, + ) expected_message_bytes = message.encode() actual_message_bytes = envelope.message_bytes diff --git a/tests/test_manager/test_manager.py b/tests/test_manager/test_manager.py index 6206400530..da5bc92581 100644 --- a/tests/test_manager/test_manager.py +++ b/tests/test_manager/test_manager.py @@ -259,7 +259,8 @@ def test_add_agent(self, *args): with pytest.raises(ValueError, match="already exists"): self.manager.add_agent( - self.project_public_id, self.agent_name, + self.project_public_id, + self.agent_name, ) def test_set_overrides(self, *args): @@ -347,7 +348,8 @@ def add_agent(self, agent_name: str, project_id: PublicId) -> None: self.manager.add_project(project_id, local=True) self.manager.add_agent( - project_id, agent_name, + project_id, + agent_name, ) agent_alias = self.manager.get_agent_alias(agent_name) diff --git a/tests/test_multiplexer.py b/tests/test_multiplexer.py index b6fc1666b7..0f6db4349f 100644 --- a/tests/test_multiplexer.py +++ b/tests/test_multiplexer.py @@ -544,10 +544,17 @@ async def test_inbox_outbox(): connection_1 = _make_dummy_connection() connections = [connection_1] multiplexer = AsyncMultiplexer(connections, loop=asyncio.get_event_loop()) - msg = DefaultMessage(performative=DefaultMessage.Performative.BYTES, content=b"",) + msg = DefaultMessage( + performative=DefaultMessage.Performative.BYTES, + content=b"", + ) msg.to = "to" msg.sender = "sender" - envelope = Envelope(to="to", sender="sender", message=msg,) + envelope = Envelope( + to="to", + sender="sender", + message=msg, + ) try: await multiplexer.connect() inbox = InBox(multiplexer) @@ -578,7 +585,10 @@ async def test_threaded_mode(): connection_1 = _make_dummy_connection() connections = [connection_1] multiplexer = AsyncMultiplexer(connections, threaded=True) - msg = DefaultMessage(performative=DefaultMessage.Performative.BYTES, content=b"",) + msg = DefaultMessage( + performative=DefaultMessage.Performative.BYTES, + content=b"", + ) msg.to = "to" msg.sender = "sender" envelope = Envelope(to="to", sender="sender", message=msg) @@ -613,7 +623,10 @@ async def test_outbox_negative(): connection_1 = _make_dummy_connection() connections = [connection_1] multiplexer = AsyncMultiplexer(connections, loop=asyncio.get_event_loop()) - msg = DefaultMessage(performative=DefaultMessage.Performative.BYTES, content=b"",) + msg = DefaultMessage( + performative=DefaultMessage.Performative.BYTES, + content=b"", + ) context = EnvelopeContext(connection_id=connection_1.connection_id) envelope = Envelope( to="to", @@ -946,15 +959,19 @@ def test_multiplexer_disconnected_on_early_interruption(self): ) self.proc.expect_all( - ["Starting libp2p node..."], timeout=50, + ["Starting libp2p node..."], + timeout=50, ) self.proc.control_c() self.proc.expect_all( - ["Multiplexer .*disconnected."], timeout=20, strict=False, + ["Multiplexer .*disconnected."], + timeout=20, + strict=False, ) self.proc.expect_all( - [EOF], timeout=20, + [EOF], + timeout=20, ) def test_multiplexer_disconnected_on_termination_after_connected_no_connection( @@ -970,7 +987,8 @@ def test_multiplexer_disconnected_on_termination_after_connected_no_connection( ) self.proc.expect_all( - ["Start processing messages..."], timeout=20, + ["Start processing messages..."], + timeout=20, ) self.proc.control_c() self.proc.expect_all( @@ -998,7 +1016,8 @@ def test_multiplexer_disconnected_on_termination_after_connected_one_connection( ) self.proc.expect_all( - ["Start processing messages..."], timeout=20, + ["Start processing messages..."], + timeout=20, ) self.proc.control_c() self.proc.expect_all( diff --git a/tests/test_packages/test_connections/test_gym/test_gym.py b/tests/test_packages/test_connections/test_gym/test_gym.py index 5572308648..de0a4d2a9d 100644 --- a/tests/test_packages/test_connections/test_gym/test_gym.py +++ b/tests/test_packages/test_connections/test_gym/test_gym.py @@ -123,9 +123,14 @@ async def test_decode_envelope_error(self): async def test_send_connection_error(self): """Test send connection error.""" msg, sending_dialogue = self.dialogues.create( - counterparty=self.gym_address, performative=GymMessage.Performative.RESET, + counterparty=self.gym_address, + performative=GymMessage.Performative.RESET, + ) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) with pytest.raises(ConnectionError): await self.gym_con.send(envelope) @@ -140,7 +145,11 @@ async def test_send_act(self): action=GymMessage.AnyObject("any_action"), step_id=1, ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self.gym_con.connect() observation = 1 @@ -175,8 +184,14 @@ async def test_send_close(self): """Test send close message.""" sending_dialogue = await self.send_reset() assert sending_dialogue.last_message is not None - msg = sending_dialogue.reply(performative=GymMessage.Performative.CLOSE,) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + msg = sending_dialogue.reply( + performative=GymMessage.Performative.CLOSE, + ) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self.gym_con.connect() with patch.object(self.env, "close") as mock: @@ -212,10 +227,15 @@ async def test_send_close_negative(self): async def send_reset(self) -> GymDialogue: """Send a reset.""" msg, sending_dialogue = self.dialogues.create( - counterparty=self.gym_address, performative=GymMessage.Performative.RESET, + counterparty=self.gym_address, + performative=GymMessage.Performative.RESET, ) assert sending_dialogue is not None - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self.gym_con.connect() with patch.object(self.env, "reset") as mock: diff --git a/tests/test_packages/test_connections/test_http_client/test_http_client.py b/tests/test_packages/test_connections/test_http_client/test_http_client.py index 293dcdfc31..40a0e23d66 100644 --- a/tests/test_packages/test_connections/test_http_client/test_http_client.py +++ b/tests/test_packages/test_connections/test_http_client/test_http_client.py @@ -20,7 +20,7 @@ import asyncio import logging from asyncio import CancelledError -from typing import cast +from typing import Any, cast from unittest.mock import MagicMock, Mock, patch import aiohttp @@ -51,7 +51,7 @@ def __init__(self, response: Mock) -> None: """Init with mock response.""" self.response = response - async def __aenter__(self) -> None: + async def __aenter__(self) -> Any: """Enter async context.""" return self.response @@ -225,7 +225,9 @@ async def test_channel_cancel_tasks_on_disconnect(self): response_mock.read.return_value = asyncio.Future() with patch.object( - aiohttp.ClientSession, "request", return_value=_MockRequest(response_mock), + aiohttp.ClientSession, + "request", + return_value=_MockRequest(response_mock), ): await self.http_client_connection.send(envelope=request_envelope) @@ -270,7 +272,9 @@ async def test_http_send_ok(self): response_mock.read.return_value.set_result("") with patch.object( - aiohttp.ClientSession, "request", return_value=_MockRequest(response_mock), + aiohttp.ClientSession, + "request", + return_value=_MockRequest(response_mock), ): await self.http_client_connection.send(envelope=request_envelope) # TODO: Consider returning the response from the server in order to be able to assert that the message send! diff --git a/tests/test_packages/test_connections/test_http_server/test_http_server.py b/tests/test_packages/test_connections/test_http_server/test_http_server.py index 74fb2ec648..a93c80f242 100644 --- a/tests/test_packages/test_connections/test_http_server/test_http_server.py +++ b/tests/test_packages/test_connections/test_http_server/test_http_server.py @@ -171,7 +171,10 @@ async def test_get_200(self): ) await self.http_connection.send(response_envelope) - response = await asyncio.wait_for(request_task, timeout=20,) + response = await asyncio.wait_for( + request_task, + timeout=20, + ) assert ( response.status == 200 @@ -204,7 +207,10 @@ async def test_header_content_type(self): ) await self.http_connection.send(response_envelope) - response = await asyncio.wait_for(request_task, timeout=20,) + response = await asyncio.wait_for( + request_task, + timeout=20, + ) assert ( response.status == 200 and response.reason == "Success" @@ -298,7 +304,12 @@ async def test_late_message_get_timeout_error(self): @pytest.mark.asyncio async def test_post_201(self): """Test send get request w/ 200 response.""" - request_task = self.loop.create_task(self.request("post", "/pets",)) + request_task = self.loop.create_task( + self.request( + "post", + "/pets", + ) + ) envelope = await asyncio.wait_for(self.http_connection.receive(), timeout=20) assert envelope incoming_message, dialogue = self._get_message_and_dialogue(envelope) @@ -319,7 +330,10 @@ async def test_post_201(self): await self.http_connection.send(response_envelope) - response = await asyncio.wait_for(request_task, timeout=20,) + response = await asyncio.wait_for( + request_task, + timeout=20, + ) assert ( response.status == 201 and response.reason == "Created" @@ -395,7 +409,11 @@ async def test_send_connection_drop(self): ) message.to = str(HTTPServerConnection.connection_id) message.sender = self.target_skill_id - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) await self.http_connection.send(envelope) @pytest.mark.asyncio @@ -421,7 +439,12 @@ async def test_fail_connect(self): @pytest.mark.asyncio async def test_server_error_on_send_response(self): """Test exception raised on response sending to the client.""" - request_task = self.loop.create_task(self.request("post", "/pets",)) + request_task = self.loop.create_task( + self.request( + "post", + "/pets", + ) + ) envelope = await asyncio.wait_for(self.http_connection.receive(), timeout=20) assert envelope incoming_message, dialogue = self._get_message_and_dialogue(envelope) @@ -443,7 +466,10 @@ async def test_server_error_on_send_response(self): with patch.object(Response, "from_message", side_effect=Exception("expected")): await self.http_connection.send(response_envelope) - response = await asyncio.wait_for(request_task, timeout=20,) + response = await asyncio.wait_for( + request_task, + timeout=20, + ) assert response and response.status == 500 and response.reason == "Server Error" @@ -548,7 +574,10 @@ async def test_get_200(self): ) await self.http_connection.send(response_envelope) - response = await asyncio.wait_for(request_task, timeout=20,) + response = await asyncio.wait_for( + request_task, + timeout=20, + ) assert ( response.status == 200 diff --git a/tests/test_packages/test_connections/test_ledger/test_contract_api.py b/tests/test_packages/test_connections/test_ledger/test_contract_api.py index 4792cd81c2..fcb604ef83 100644 --- a/tests/test_packages/test_connections/test_ledger/test_contract_api.py +++ b/tests/test_packages/test_connections/test_ledger/test_contract_api.py @@ -92,7 +92,11 @@ async def test_erc1155_get_deploy_transaction(erc1155_contract, ledger_apis_conn callable="get_deploy_transaction", kwargs=ContractApiMessage.Kwargs({"deployer_address": ETHEREUM_ADDRESS_ONE}), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) @@ -138,7 +142,11 @@ async def test_erc1155_get_raw_transaction( } ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) @@ -185,7 +193,11 @@ async def test_erc1155_get_raw_message(erc1155_contract, ledger_apis_connection) } ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) @@ -223,7 +235,11 @@ async def test_erc1155_get_state(erc1155_contract, ledger_apis_connection): {"agent_address": ETHEREUM_ADDRESS_ONE, "token_id": token_id} ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) @@ -307,7 +323,11 @@ async def test_callable_wrong_number_of_arguments_api_and_contract_address( {"agent_address": ETHEREUM_ADDRESS_ONE, "token_id": token_id} ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) with unittest.mock.patch( "inspect.getfullargspec", return_value=unittest.mock.MagicMock(args=[None]) @@ -351,7 +371,11 @@ async def test_callable_wrong_number_of_arguments_apis( callable="get_deploy_transaction", kwargs=ContractApiMessage.Kwargs({}), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) with unittest.mock.patch( "inspect.getfullargspec", return_value=unittest.mock.MagicMock(args=[]) @@ -399,7 +423,11 @@ async def test_callable_wrong_number_of_arguments_apis_method_call( callable="get_deploy_transaction", kwargs=ContractApiMessage.Kwargs({}), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) with unittest.mock.patch.object( ledger_apis_connection._contract_dispatcher, "_call_stub", return_value=None @@ -432,7 +460,11 @@ async def test_callable_generic_error(erc1155_contract, ledger_apis_connection): {"agent_address": ETHEREUM_ADDRESS_ONE, "token_id": token_id} ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) with unittest.mock.patch( "inspect.getfullargspec", side_effect=Exception("Generic error") @@ -471,7 +503,11 @@ async def test_callable_cannot_find(erc1155_contract, ledger_apis_connection, ca {"agent_address": ETHEREUM_ADDRESS_ONE, "token_id": token_id} ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) with caplog.at_level(logging.DEBUG, "aea.packages.fetchai.connections.ledger"): await ledger_apis_connection.send(envelope) diff --git a/tests/test_packages/test_connections/test_ledger/test_ledger_api.py b/tests/test_packages/test_connections/test_ledger/test_ledger_api.py index b0f033a828..7ff8775abf 100644 --- a/tests/test_packages/test_connections/test_ledger/test_ledger_api.py +++ b/tests/test_packages/test_connections/test_ledger/test_ledger_api.py @@ -72,7 +72,10 @@ (EthereumCrypto.identifier, EthereumCrypto(ETHEREUM_PRIVATE_KEY_PATH).address), ], ) -gas_price_strategies = pytest.mark.parametrize("gas_price_strategy", [None, "average"],) +gas_price_strategies = pytest.mark.parametrize( + "gas_price_strategy", + [None, "average"], +) SOME_SKILL_ID = "some/skill:0.1.0" @@ -132,7 +135,11 @@ async def test_get_balance( ledger_id=ledger_id, address=address, ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) @@ -185,7 +192,11 @@ async def test_get_state( args=args, kwargs=kwargs, ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) @@ -246,7 +257,11 @@ async def test_send_signed_transaction_ethereum( ), ) request = cast(LedgerApiMessage, request) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) response = await ledger_apis_connection.receive() @@ -273,7 +288,11 @@ async def test_send_signed_transaction_ethereum( ), ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) response = await ledger_apis_connection.receive() @@ -306,7 +325,11 @@ async def test_send_signed_transaction_ethereum( transaction_digest=response_message.transaction_digest, ), ) - envelope = Envelope(to=request.to, sender=request.sender, message=request,) + envelope = Envelope( + to=request.to, + sender=request.sender, + message=request, + ) await ledger_apis_connection.send(envelope) await asyncio.sleep(0.01) response = await ledger_apis_connection.receive() diff --git a/tests/test_packages/test_connections/test_local/test_misc.py b/tests/test_packages/test_connections/test_local/test_misc.py index c8d3137505..09705b2930 100644 --- a/tests/test_packages/test_connections/test_local/test_misc.py +++ b/tests/test_packages/test_connections/test_local/test_misc.py @@ -68,7 +68,11 @@ async def test_connection_twice_return_none(): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - expected_envelope = Envelope(to=address, sender=address, message=message,) + expected_envelope = Envelope( + to=address, + sender=address, + message=message, + ) await connection.send(expected_envelope) actual_envelope = await connection.receive() @@ -127,7 +131,11 @@ def test_communication(): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to="multiplexer2", sender="multiplexer1", message=msg,) + envelope = Envelope( + to="multiplexer2", + sender="multiplexer1", + message=msg, + ) multiplexer1.put(envelope) msg = FipaMessage( @@ -137,7 +145,11 @@ def test_communication(): target=0, query=Query([Constraint("something", ConstraintType(">", 1))]), ) - envelope = Envelope(to="multiplexer2", sender="multiplexer1", message=msg,) + envelope = Envelope( + to="multiplexer2", + sender="multiplexer1", + message=msg, + ) multiplexer1.put(envelope) msg = FipaMessage( @@ -148,7 +160,11 @@ def test_communication(): proposal=Description({}), ) - envelope = Envelope(to="multiplexer2", sender="multiplexer1", message=msg,) + envelope = Envelope( + to="multiplexer2", + sender="multiplexer1", + message=msg, + ) multiplexer1.put(envelope) msg = FipaMessage( @@ -157,7 +173,11 @@ def test_communication(): message_id=1, target=0, ) - envelope = Envelope(to="multiplexer2", sender="multiplexer1", message=msg,) + envelope = Envelope( + to="multiplexer2", + sender="multiplexer1", + message=msg, + ) multiplexer1.put(envelope) msg = FipaMessage( @@ -166,7 +186,11 @@ def test_communication(): message_id=1, target=0, ) - envelope = Envelope(to="multiplexer2", sender="multiplexer1", message=msg,) + envelope = Envelope( + to="multiplexer2", + sender="multiplexer1", + message=msg, + ) multiplexer1.put(envelope) envelope = multiplexer2.get(block=True, timeout=1.0) diff --git a/tests/test_packages/test_connections/test_local/test_search_services.py b/tests/test_packages/test_connections/test_local/test_search_services.py index e2c48e5a7f..834097a004 100644 --- a/tests/test_packages/test_connections/test_local/test_search_services.py +++ b/tests/test_packages/test_connections/test_local/test_search_services.py @@ -95,7 +95,9 @@ def setup_class(cls): cls.address_1 = "address_1" cls.public_key_1 = "public_key_1" cls.connection = _make_local_connection( - cls.address_1, cls.public_key_1, cls.node, + cls.address_1, + cls.public_key_1, + cls.node, ) cls.multiplexer = Multiplexer([cls.connection]) @@ -156,7 +158,13 @@ def setup_class(cls): cls.address_1 = "address_1" cls.public_key_1 = "public_key_1" cls.multiplexer = Multiplexer( - [_make_local_connection(cls.address_1, cls.public_key_1, cls.node,)] + [ + _make_local_connection( + cls.address_1, + cls.public_key_1, + cls.node, + ) + ] ) cls.multiplexer.connect() @@ -206,7 +214,13 @@ def setup(self): self.address_1 = "address" self.public_key_1 = "public_key_1" self.multiplexer = Multiplexer( - [_make_local_connection(self.address_1, self.public_key_1, self.node,)] + [ + _make_local_connection( + self.address_1, + self.public_key_1, + self.node, + ) + ] ) self.multiplexer.connect() @@ -280,12 +294,24 @@ def setup_class(cls): cls.address_1 = "address_1" cls.public_key_1 = "public_key_1" cls.multiplexer1 = Multiplexer( - [_make_local_connection(cls.address_1, cls.public_key_1, cls.node,)] + [ + _make_local_connection( + cls.address_1, + cls.public_key_1, + cls.node, + ) + ] ) cls.address_2 = "address_2" cls.public_key_2 = "public_key_2" cls.multiplexer2 = Multiplexer( - [_make_local_connection(cls.address_2, cls.public_key_2, cls.node,)] + [ + _make_local_connection( + cls.address_2, + cls.public_key_2, + cls.node, + ) + ] ) cls.multiplexer1.connect() cls.multiplexer2.connect() @@ -414,7 +440,13 @@ def setup_class(cls): cls.address_1 = "address_1" cls.public_key_1 = "public_key_1" cls.multiplexer1 = Multiplexer( - [_make_local_connection(cls.address_1, cls.public_key_1, cls.node,)] + [ + _make_local_connection( + cls.address_1, + cls.public_key_1, + cls.node, + ) + ] ) def role_from_first_message( # pylint: disable=unused-argument @@ -446,7 +478,9 @@ async def test_messages(self): ) with pytest.raises(ConnectionError): await _make_local_connection( - self.address_1, self.public_key_1, self.node, + self.address_1, + self.public_key_1, + self.node, ).send(envelope) self.multiplexer1.connect() @@ -455,7 +489,11 @@ async def test_messages(self): performative=FipaMessage.Performative.CFP, query=Query([Constraint("something", ConstraintType(">", 1))]), ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) self.multiplexer1.put(envelope) # check the result @@ -489,10 +527,22 @@ def setup_class(cls): cls.address_2 = "multiplexer2" cls.public_key_2 = "public_key_2" cls.multiplexer1 = Multiplexer( - [_make_local_connection(cls.address_1, cls.public_key_1, cls.node,)] + [ + _make_local_connection( + cls.address_1, + cls.public_key_1, + cls.node, + ) + ] ) cls.multiplexer2 = Multiplexer( - [_make_local_connection(cls.address_2, cls.public_key_2, cls.node,)] + [ + _make_local_connection( + cls.address_2, + cls.public_key_2, + cls.node, + ) + ] ) cls.multiplexer1.connect() cls.multiplexer2.connect() diff --git a/tests/test_packages/test_connections/test_oef/test_communication.py b/tests/test_packages/test_connections/test_oef/test_communication.py index c64966ff50..6c9dc380d9 100644 --- a/tests/test_packages/test_connections/test_oef/test_communication.py +++ b/tests/test_packages/test_connections/test_oef/test_communication.py @@ -111,7 +111,10 @@ class TestDefault(UseOef): def setup_class(cls): """Set the test up.""" cls.connection = _make_oef_connection( - FETCHAI_ADDRESS_ONE, DUMMY_PUBLIC_KEY, oef_addr="127.0.0.1", oef_port=10000, + FETCHAI_ADDRESS_ONE, + DUMMY_PUBLIC_KEY, + oef_addr="127.0.0.1", + oef_port=10000, ) cls.multiplexer = Multiplexer( [cls.connection], protocols=[FipaMessage, DefaultMessage] @@ -128,7 +131,11 @@ def test_send_message(self): content=b"hello", ) self.multiplexer.put( - Envelope(to=FETCHAI_ADDRESS_ONE, sender=FETCHAI_ADDRESS_ONE, message=msg,) + Envelope( + to=FETCHAI_ADDRESS_ONE, + sender=FETCHAI_ADDRESS_ONE, + message=msg, + ) ) recv_msg = self.multiplexer.get(block=True, timeout=3.0) assert recv_msg is not None @@ -469,10 +476,16 @@ class TestFIPA(UseOef): def setup_class(cls): """Set up the test class.""" cls.connection1 = _make_oef_connection( - FETCHAI_ADDRESS_ONE, DUMMY_PUBLIC_KEY, oef_addr="127.0.0.1", oef_port=10000, + FETCHAI_ADDRESS_ONE, + DUMMY_PUBLIC_KEY, + oef_addr="127.0.0.1", + oef_port=10000, ) cls.connection2 = _make_oef_connection( - FETCHAI_ADDRESS_TWO, DUMMY_PUBLIC_KEY, oef_addr="127.0.0.1", oef_port=10000, + FETCHAI_ADDRESS_TWO, + DUMMY_PUBLIC_KEY, + oef_addr="127.0.0.1", + oef_port=10000, ) cls.multiplexer1 = Multiplexer( [cls.connection1], protocols=[FipaMessage, DefaultMessage] @@ -495,7 +508,11 @@ def test_cfp(self): cfp_message.to = FETCHAI_ADDRESS_TWO cfp_message.sender = FETCHAI_ADDRESS_ONE self.multiplexer1.put( - Envelope(to=cfp_message.to, sender=cfp_message.sender, message=cfp_message,) + Envelope( + to=cfp_message.to, + sender=cfp_message.sender, + message=cfp_message, + ) ) envelope = self.multiplexer2.get(block=True, timeout=5.0) expected_cfp_message = FipaMessage.serializer.decode(envelope.message) @@ -513,7 +530,11 @@ def test_cfp(self): cfp_none.to = FETCHAI_ADDRESS_TWO cfp_none.sender = FETCHAI_ADDRESS_ONE self.multiplexer1.put( - Envelope(to=cfp_none.to, sender=cfp_none.sender, message=cfp_none,) + Envelope( + to=cfp_none.to, + sender=cfp_none.sender, + message=cfp_none, + ) ) envelope = self.multiplexer2.get(block=True, timeout=5.0) expected_cfp_none = FipaMessage.serializer.decode(envelope.message) @@ -534,7 +555,9 @@ def test_propose(self): propose_empty.sender = FETCHAI_ADDRESS_ONE self.multiplexer1.put( Envelope( - to=propose_empty.to, sender=propose_empty.sender, message=propose_empty, + to=propose_empty.to, + sender=propose_empty.sender, + message=propose_empty, ) ) envelope = self.multiplexer2.get(block=True, timeout=2.0) @@ -579,7 +602,11 @@ def test_accept(self): accept.to = FETCHAI_ADDRESS_TWO accept.sender = FETCHAI_ADDRESS_ONE self.multiplexer1.put( - Envelope(to=accept.to, sender=accept.sender, message=accept,) + Envelope( + to=accept.to, + sender=accept.sender, + message=accept, + ) ) envelope = self.multiplexer2.get(block=True, timeout=2.0) expected_accept = FipaMessage.serializer.decode(envelope.message) @@ -600,7 +627,9 @@ def test_match_accept(self): match_accept.sender = FETCHAI_ADDRESS_ONE self.multiplexer1.put( Envelope( - to=match_accept.to, sender=match_accept.sender, message=match_accept, + to=match_accept.to, + sender=match_accept.sender, + message=match_accept, ) ) envelope = self.multiplexer2.get(block=True, timeout=2.0) @@ -620,7 +649,11 @@ def test_decline(self): decline.to = FETCHAI_ADDRESS_TWO decline.sender = FETCHAI_ADDRESS_ONE self.multiplexer1.put( - Envelope(to=decline.to, sender=decline.sender, message=decline,) + Envelope( + to=decline.to, + sender=decline.sender, + message=decline, + ) ) envelope = self.multiplexer2.get(block=True, timeout=2.0) expected_decline = FipaMessage.serializer.decode(envelope.message) @@ -689,7 +722,11 @@ def test_inform(self): inform.to = FETCHAI_ADDRESS_TWO inform.sender = FETCHAI_ADDRESS_ONE self.multiplexer1.put( - Envelope(to=inform.to, sender=inform.sender, message=inform,) + Envelope( + to=inform.to, + sender=inform.sender, + message=inform, + ) ) envelope = self.multiplexer2.get(block=True, timeout=2.0) returned_inform = FipaMessage.serializer.decode(envelope.message) @@ -773,7 +810,8 @@ def test_on_oef_error(self): oef_channel.oef_msg_id += 1 dialogue_reference = ("1", "") query = Query( - constraints=[Constraint("foo", ConstraintType("==", "bar"))], model=None, + constraints=[Constraint("foo", ConstraintType("==", "bar"))], + model=None, ) dialogues = oef_channel.oef_search_dialogues oef_search_msg = OefSearchMessage( @@ -822,7 +860,10 @@ class TestOefConnection(UseOef): def test_connection(self): """Test that an OEF connection can be established to the OEF.""" connection = _make_oef_connection( - FETCHAI_ADDRESS_ONE, DUMMY_PUBLIC_KEY, oef_addr="127.0.0.1", oef_port=10000, + FETCHAI_ADDRESS_ONE, + DUMMY_PUBLIC_KEY, + oef_addr="127.0.0.1", + oef_port=10000, ) multiplexer = Multiplexer([connection], protocols=[FipaMessage, DefaultMessage]) multiplexer.connect() @@ -988,7 +1029,11 @@ async def test_send_oef_message(self, pytestconfig, caplog): ) msg.to = str(oef_connection.connection_id) msg.sender = SOME_SKILL_ID - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) with caplog.at_level(logging.DEBUG, "aea.packages.fetchai.connections.oef"): await oef_connection.send(envelope) assert "Could not create dialogue for message=" in caplog.text @@ -1004,7 +1049,11 @@ async def test_send_oef_message(self, pytestconfig, caplog): performative=OefSearchMessage.Performative.SEARCH_SERVICES, query=query, ) - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await oef_connection.send(envelope) envelope = await oef_connection.receive() search_result = envelope.message diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py index 88cefedb3b..42fc66ddd7 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py @@ -59,7 +59,9 @@ def test_check_versions_negative_binary_not_found(): def test_check_versions_negative_version_too_low(): """Test check_versions - negative case, version too low.""" with mock.patch.object( - check_dependencies, "get_version", return_value=(0, 0, 0), + check_dependencies, + "get_version", + return_value=(0, 0, 0), ): with pytest.raises( AEAException, diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py index 9da2bf4645..a9c156361a 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py @@ -177,7 +177,11 @@ def test_envelope_routed(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) self.multiplexer1.put(envelope) delivered_envelope = self.multiplexer2.get(block=True, timeout=20) @@ -206,7 +210,11 @@ def test_envelope_echoed_back(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - original_envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + original_envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) self.multiplexer1.put(original_envelope) delivered_envelope = self.multiplexer2.get(block=True, timeout=10) @@ -314,7 +322,9 @@ def test_star_routing_connectivity(self): content=b"hello", ) envelope = Envelope( - to=addrs[destination], sender=addrs[source], message=msg, + to=addrs[destination], + sender=addrs[source], + message=msg, ) self.multiplexers[source].put(envelope) @@ -423,7 +433,11 @@ def test_envelope_routed(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) self.multiplexer1.put(envelope) delivered_envelope = self.multiplexer2.get(block=True, timeout=20) @@ -453,7 +467,11 @@ def test_envelope_echoed_back(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - original_envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + original_envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) self.multiplexer1.put(original_envelope) delivered_envelope = self.multiplexer2.get(block=True, timeout=10) @@ -595,7 +613,9 @@ def test_star_routing_connectivity(self): content=b"hello", ) envelope = Envelope( - to=addrs[destination], sender=addrs[source], message=msg, + to=addrs[destination], + sender=addrs[source], + message=msg, ) self.multiplexers[source].put(envelope) @@ -778,7 +798,11 @@ def test_envelope_routed(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) # make the send to fail # note: we don't mock the genesis peer. @@ -823,7 +847,11 @@ def test_envelope_routed(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) # make the receive to fail with mock.patch.object( diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py index a6e4b7b3a6..d2283a4b72 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py @@ -218,7 +218,11 @@ def send_message(self, from_name: str, to_name: str) -> None: performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=to_addr, sender=from_addr, message=msg,) + envelope = Envelope( + to=to_addr, + sender=from_addr, + message=msg, + ) from_multiplexer.put(envelope) diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py index c5a51a9dde..a9cda264b4 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py @@ -174,7 +174,11 @@ def test_communication_direct(self, maddrs): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) multiplexer1.put(envelope) delivered_envelope = multiplexer2.get(block=True, timeout=20) @@ -247,7 +251,11 @@ def test_communication_indirect(self, maddrs): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) multiplexer1.put(envelope) delivered_envelope = multiplexer2.get(block=True, timeout=20) @@ -366,7 +374,11 @@ def test_communication_direct(self, delegate_uris_public_keys): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) multiplexer1.put(envelope) delivered_envelope = multiplexer2.get(block=True, timeout=20) @@ -441,7 +453,11 @@ def test_communication_indirect(self, delegate_uris_public_keys): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - envelope = Envelope(to=addr_2, sender=addr_1, message=msg,) + envelope = Envelope( + to=addr_2, + sender=addr_1, + message=msg, + ) multiplexer1.put(envelope) delivered_envelope = multiplexer2.get(block=True, timeout=20) diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py index e5aab37a73..563915d130 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py @@ -126,7 +126,11 @@ def _make_envelope(addr): content=b"hello", ) - envelope = Envelope(to=addr, sender=self.conn.node.address, message=msg,) + envelope = Envelope( + to=addr, + sender=self.conn.node.address, + message=msg, + ) return envelope try: diff --git a/tests/test_packages/test_connections/test_p2p_libp2p_client/test_errors.py b/tests/test_packages/test_connections/test_p2p_libp2p_client/test_errors.py index 7db0da5a8c..3ff05342d0 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p_client/test_errors.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p_client/test_errors.py @@ -117,7 +117,9 @@ def test_empty_nodes(self): ) with pytest.raises(Exception): P2PLibp2pClientConnection( - configuration=configuration, data_dir=self.t, identity=self.identity, + configuration=configuration, + data_dir=self.t, + identity=self.identity, ) @classmethod diff --git a/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_communication.py b/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_communication.py index 79e1521e45..0b00abeb0a 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_communication.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_communication.py @@ -73,7 +73,8 @@ def setup_class(cls): temp_dir_client = os.path.join(cls.t, "temp_dir_client") os.mkdir(temp_dir_client) cls.connection = _make_libp2p_mailbox_connection( - data_dir=temp_dir_client, peer_public_key=cls.connection_node.node.pub, + data_dir=temp_dir_client, + peer_public_key=cls.connection_node.node.pub, ) @pytest.mark.asyncio diff --git a/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_errors.py b/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_errors.py index b5de856d71..0f0a8ed293 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_errors.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p_mailbox/test_errors.py @@ -119,7 +119,9 @@ def test_empty_nodes(self): ) with pytest.raises(Exception): P2PLibp2pMailboxConnection( - configuration=configuration, data_dir=self.t, identity=self.identity, + configuration=configuration, + data_dir=self.t, + identity=self.identity, ) @classmethod diff --git a/tests/test_packages/test_connections/test_p2p_stub/test_p2p_stub.py b/tests/test_packages/test_connections/test_p2p_stub/test_p2p_stub.py index 487e426783..025e82dddf 100644 --- a/tests/test_packages/test_connections/test_p2p_stub/test_p2p_stub.py +++ b/tests/test_packages/test_connections/test_p2p_stub/test_p2p_stub.py @@ -49,7 +49,11 @@ def make_test_envelope(to_="any", sender_="sender") -> Envelope: ) msg.to = to_ msg.sender = sender_ - envelope = Envelope(to=to_, sender=sender_, message=msg,) + envelope = Envelope( + to=to_, + sender=sender_, + message=msg, + ) return envelope @@ -64,7 +68,8 @@ def setup(self): d.mkdir(parents=True) configuration = ConnectionConfig( - namespace_dir=d, connection_id=P2PStubConnection.connection_id, + namespace_dir=d, + connection_id=P2PStubConnection.connection_id, ) self.loop = asyncio.get_event_loop() self.identity1 = Identity("test", "con1", "public_key_1") diff --git a/tests/test_packages/test_connections/test_prometheus/test_prometheus.py b/tests/test_packages/test_connections/test_prometheus/test_prometheus.py index c719fe3d99..537ed93c85 100644 --- a/tests/test_packages/test_connections/test_prometheus/test_prometheus.py +++ b/tests/test_packages/test_connections/test_prometheus/test_prometheus.py @@ -76,7 +76,8 @@ def setup(self): """Initialise the class.""" self.metrics = {} configuration = ConnectionConfig( - connection_id=PrometheusConnection.connection_id, port=9090, + connection_id=PrometheusConnection.connection_id, + port=9090, ) self.some_skill = "some/skill:0.1.0" self.agent_address = "my_address" @@ -104,7 +105,11 @@ async def send_add_metric(self, title: str, metric_type: str) -> None: ) assert sending_dialogue is not None - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self.prometheus_con.send(envelope) async def send_update_metric(self, title: str, update_func: str) -> None: @@ -120,7 +125,11 @@ async def send_update_metric(self, title: str, update_func: str) -> None: assert sending_dialogue is not None assert sending_dialogue.last_message is not None - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) await self.prometheus_con.send(envelope) def teardown(self): @@ -208,7 +217,9 @@ async def test_connection(self): # Test that invalid message is rejected. with pytest.raises(AEAEnforceError): envelope = Envelope( - to="some_address", sender="me", message=Mock(spec=Message), + to="some_address", + sender="me", + message=Mock(spec=Message), ) await self.prometheus_con.channel.send(envelope) @@ -217,7 +228,9 @@ async def test_connection(self): PrometheusMessage.Performative.RESPONSE, code=0, message="" ) envelope = Envelope( - to=self.prometheus_address, sender=self.some_skill, message=msg, + to=self.prometheus_address, + sender=self.some_skill, + message=msg, ) await self.prometheus_con.channel.send(envelope) @@ -232,7 +245,9 @@ async def test_connection(self): labels={}, ) envelope = Envelope( - to=self.prometheus_address, sender=self.some_skill, message=msg, + to=self.prometheus_address, + sender=self.some_skill, + message=msg, ) envelope._protocol_specification_id = "bad_id" await self.prometheus_con.channel.send(envelope) diff --git a/tests/test_packages/test_connections/test_soef/models.py b/tests/test_packages/test_connections/test_soef/models.py index 81161229f5..8e1a99fa20 100644 --- a/tests/test_packages/test_connections/test_soef/models.py +++ b/tests/test_packages/test_connections/test_soef/models.py @@ -59,7 +59,11 @@ "A data model to remove service key.", ) -PING_MODEL = DataModel(ModelNames.PING.value, [], "A data model for ping command.",) +PING_MODEL = DataModel( + ModelNames.PING.value, + [], + "A data model for ping command.", +) SEARCH_MODEL = DataModel( diff --git a/tests/test_packages/test_connections/test_soef/test_soef.py b/tests/test_packages/test_connections/test_soef/test_soef.py index e7427e01b4..ec69560ffb 100644 --- a/tests/test_packages/test_connections/test_soef/test_soef.py +++ b/tests/test_packages/test_connections/test_soef/test_soef.py @@ -123,7 +123,7 @@ def setup(self): self.oef_search_dialogues = OefSearchDialogues(self.skill_id) # create the connection and multiplexer objects - self.token_storage_path = "test.storage" + self.token_storage_path = "test.storage" # nosec configuration = ConnectionConfig( api_key="TwiCIriSl0mLahw17pyqoA", soef_addr="s-oef.fetch.ai", @@ -133,7 +133,9 @@ def setup(self): connection_id=SOEFConnection.connection_id, ) self.connection = SOEFConnection( - configuration=configuration, data_dir=self.data_dir, identity=identity, + configuration=configuration, + data_dir=self.data_dir, + identity=identity, ) def teardown(self): @@ -201,7 +203,9 @@ def setup(self): connection_id=SOEFConnection.connection_id, ) self.connection = SOEFConnection( - configuration=configuration, data_dir=self.data_dir, identity=identity, + configuration=configuration, + data_dir=self.data_dir, + identity=identity, ) self.connection2 = SOEFConnection( configuration=configuration, @@ -229,7 +233,11 @@ async def test_set_service_key(self): performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, @@ -255,7 +263,11 @@ async def test_remove_service_key(self): performative=OefSearchMessage.Performative.UNREGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, @@ -297,7 +309,11 @@ async def test_register_service(self): performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, @@ -334,7 +350,11 @@ async def test_bad_register_service(self): performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) await self.connection.send(envelope) expected_envelope = await asyncio.wait_for(self.connection.receive(), timeout=1) @@ -360,7 +380,11 @@ async def test_unregister_service(self): performative=OefSearchMessage.Performative.UNREGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, "_request_text", @@ -382,7 +406,11 @@ async def test_register_personailty_pieces(self): performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, "_request_text", @@ -423,7 +451,11 @@ async def test_bad_performative(self): ) message.to = str(SOEFConnection.connection_id.to_any()) message.sender = self.skill_id - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with pytest.raises(ValueError): await self.connection.send(envelope) @@ -437,7 +469,11 @@ async def test_bad_search_query(self): performative=OefSearchMessage.Performative.SEARCH_SERVICES, query=closeness_query, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, @@ -479,7 +515,11 @@ async def test_search(self): performative=OefSearchMessage.Performative.SEARCH_SERVICES, query=closeness_query, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, @@ -593,7 +633,8 @@ async def test_register_agent(self): self.connection.channel, "_request_text", make_async(resp_text) ): with pytest.raises( - SOEFException, match=r"`acknowledge` .*Exception: .*", + SOEFException, + match=r"`acknowledge` .*Exception: .*", ): await self.connection.channel._register_agent() @@ -762,7 +803,9 @@ def test_chain_identifier_fail(self): ) with pytest.raises(ValueError, match="Unsupported chain_identifier"): SOEFConnection( - configuration=configuration, data_dir=MagicMock(), identity=identity, + configuration=configuration, + data_dir=MagicMock(), + identity=identity, ) def test_chain_identifier_ok(self): @@ -779,7 +822,9 @@ def test_chain_identifier_ok(self): chain_identifier=chain_identifier, ) connection = SOEFConnection( - configuration=configuration, data_dir=MagicMock(), identity=identity, + configuration=configuration, + data_dir=MagicMock(), + identity=identity, ) assert connection.channel.chain_identifier == chain_identifier @@ -793,7 +838,11 @@ async def test_ping_command(self): performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) with patch.object( self.connection.channel, diff --git a/tests/test_packages/test_connections/test_soef/test_soef_integration.py b/tests/test_packages/test_connections/test_soef/test_soef_integration.py index 08434f6ae7..f229a614b6 100644 --- a/tests/test_packages/test_connections/test_soef/test_soef_integration.py +++ b/tests/test_packages/test_connections/test_soef/test_soef_integration.py @@ -79,7 +79,9 @@ def make_multiplexer_and_dialogues() -> Tuple[ connection_id=SOEFConnection.connection_id, ) soef_connection = SOEFConnection( - configuration=configuration, data_dir=MagicMock(), identity=identity, + configuration=configuration, + data_dir=MagicMock(), + identity=identity, ) multiplexer = Multiplexer([soef_connection]) return multiplexer, oef_search_dialogues, crypto, soef_connection @@ -130,10 +132,16 @@ def register_location(self, disclosure_accuracy: Optional[str] = None) -> None: performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) logger.info( "Registering agent at location=({},{}) by agent={}".format( - self.location.latitude, self.location.longitude, self.crypto.address, + self.location.latitude, + self.location.longitude, + self.crypto.address, ) ) self.multiplexer.put(envelope) @@ -163,7 +171,11 @@ def register_personality_pieces( performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) logger.info("Registering agent personality") self.multiplexer.put(envelope) # check for register results @@ -184,7 +196,11 @@ def register_service_key(self, key: str, value: str) -> None: performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) logger.info("Registering agent service key") self.multiplexer.put(envelope) # check for register results @@ -202,7 +218,9 @@ def search(self, query: Query) -> OefSearchMessage: query=query, ) search_envelope = Envelope( - to=message.to, sender=message.sender, message=message, + to=message.to, + sender=message.sender, + message=message, ) logger.info(f"Searching for agents with query: {query}") self.multiplexer.put(search_envelope) @@ -235,7 +253,11 @@ def generic_command(self, command: str, parameters: Optional[dict] = None) -> No performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) logger.info(f"Send generic command {command} {parameters}") self.multiplexer.put(envelope) @@ -319,7 +341,9 @@ def test_search_filters(self): closeness_query = Query(constraints) logger.info( "Searching for agents in radius={} of myself at location=({},{}) with personality filters".format( - radius, agent_location.latitude, agent_location.longitude, + radius, + agent_location.latitude, + agent_location.longitude, ) ) message = agent.search(closeness_query) @@ -359,7 +383,9 @@ def test_ping(self): service_description=service_description, ) envelope = Envelope( - to=message.to, sender="some/skill:0.1.0", message=message, + to=message.to, + sender="some/skill:0.1.0", + message=message, ) logger.info("Pinging") agent.multiplexer.put(envelope) @@ -420,7 +446,11 @@ def test_generic_command_set_declared_name(self): counterparty=str(SOEFConnection.connection_id.to_any()), ) - envelope = Envelope(to=message.to, sender=message.sender, message=message,) + envelope = Envelope( + to=message.to, + sender=message.sender, + message=message, + ) agent1.multiplexer.put(envelope) envelope = agent1.get() diff --git a/tests/test_packages/test_connections/test_stub/test_stub.py b/tests/test_packages/test_connections/test_stub/test_stub.py index a28af20a42..0da3572fe4 100644 --- a/tests/test_packages/test_connections/test_stub/test_stub.py +++ b/tests/test_packages/test_connections/test_stub/test_stub.py @@ -61,7 +61,11 @@ def make_test_envelope() -> Envelope: content=b"hello", ) msg.to = "any" - envelope = Envelope(to="any", sender="any", message=msg,) + envelope = Envelope( + to="any", + sender="any", + message=msg, + ) return envelope @@ -93,7 +97,11 @@ def test_reception_a(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - expected_envelope = Envelope(to="any", sender="anys", message=msg,) + expected_envelope = Envelope( + to="any", + sender="anys", + message=msg, + ) with open(self.input_file_path, "ab+") as f: write_envelope(expected_envelope, f) @@ -219,7 +227,11 @@ def test_send_message(self): performative=DefaultMessage.Performative.BYTES, content=b"hello", ) - expected_envelope = Envelope(to="any", sender="anys", message=msg,) + expected_envelope = Envelope( + to="any", + sender="anys", + message=msg, + ) self.multiplexer.put(expected_envelope) time.sleep(0.1) diff --git a/tests/test_packages/test_connections/test_tcp/test_communication.py b/tests/test_packages/test_connections/test_tcp/test_communication.py index 7a027a6ac5..aae1bfb2dd 100644 --- a/tests/test_packages/test_connections/test_tcp/test_communication.py +++ b/tests/test_packages/test_connections/test_tcp/test_communication.py @@ -54,13 +54,22 @@ def setup_class(cls): cls.client_public_key_2 = "client_public_key_2" cls.server_conn = _make_tcp_server_connection( - cls.server_addr, cls.server_public_key, cls.host, cls.port, + cls.server_addr, + cls.server_public_key, + cls.host, + cls.port, ) cls.client_conn_1 = _make_tcp_client_connection( - cls.client_addr_1, cls.client_public_key_1, cls.host, cls.port, + cls.client_addr_1, + cls.client_public_key_1, + cls.host, + cls.port, ) cls.client_conn_2 = _make_tcp_client_connection( - cls.client_addr_2, cls.client_public_key_2, cls.host, cls.port, + cls.client_addr_2, + cls.client_public_key_2, + cls.host, + cls.port, ) cls.server_multiplexer = Multiplexer([cls.server_conn]) @@ -91,7 +100,9 @@ def test_communication_client_server(self): content=b"hello", ) expected_envelope = Envelope( - to=self.server_addr, sender=self.client_addr_1, message=msg, + to=self.server_addr, + sender=self.client_addr_1, + message=msg, ) self.client_1_multiplexer.put(expected_envelope) actual_envelope = self.server_multiplexer.get(block=True, timeout=5.0) @@ -118,7 +129,9 @@ def test_communication_server_client(self): content=b"hello", ) expected_envelope = Envelope( - to=self.client_addr_1, sender=self.server_addr, message=msg, + to=self.client_addr_1, + sender=self.server_addr, + message=msg, ) self.server_multiplexer.put(expected_envelope) actual_envelope = self.client_1_multiplexer.get(block=True, timeout=5.0) @@ -143,7 +156,9 @@ def test_communication_server_client(self): content=b"hello", ) expected_envelope = Envelope( - to=self.client_addr_2, sender=self.server_addr, message=msg, + to=self.client_addr_2, + sender=self.server_addr, + message=msg, ) self.server_multiplexer.put(expected_envelope) actual_envelope = self.client_2_multiplexer.get(block=True, timeout=5.0) @@ -176,10 +191,16 @@ async def test_receive_cancelled(self): """Test that cancelling a receive task works correctly.""" port = get_unused_tcp_port() tcp_server = _make_tcp_server_connection( - "address_server", "public_key_server", "127.0.0.1", port, + "address_server", + "public_key_server", + "127.0.0.1", + port, ) tcp_client = _make_tcp_client_connection( - "address_client", "public_key_client", "127.0.0.1", port, + "address_client", + "public_key_client", + "127.0.0.1", + port, ) await tcp_server.connect() @@ -203,10 +224,16 @@ async def test_receive_raises_struct_error(self): """Test the case when a receive raises a struct error.""" port = get_unused_tcp_port() tcp_server = _make_tcp_server_connection( - "address_server", "public_key_server", "127.0.0.1", port, + "address_server", + "public_key_server", + "127.0.0.1", + port, ) tcp_client = _make_tcp_client_connection( - "address_client", "public_key_client", "127.0.0.1", port, + "address_client", + "public_key_client", + "127.0.0.1", + port, ) await tcp_server.connect() @@ -229,10 +256,16 @@ async def test_receive_raises_exception(self): """Test the case when a receive raises a generic exception.""" port = get_unused_tcp_port() tcp_server = _make_tcp_server_connection( - "address_server", "public_key_server", "127.0.0.1", port, + "address_server", + "public_key_server", + "127.0.0.1", + port, ) tcp_client = _make_tcp_client_connection( - "address_client", "public_key_client", "127.0.0.1", port, + "address_client", + "public_key_client", + "127.0.0.1", + port, ) await tcp_server.connect() @@ -258,10 +291,16 @@ async def test_receive_raises_exception(self): """Test the case when a receive raises a generic exception.""" port = get_unused_tcp_port() tcp_server = _make_tcp_server_connection( - "address_server", "public_key_server", "127.0.0.1", port, + "address_server", + "public_key_server", + "127.0.0.1", + port, ) tcp_client = _make_tcp_client_connection( - "address_client", "public_key_client", "127.0.0.1", port, + "address_client", + "public_key_client", + "127.0.0.1", + port, ) await tcp_server.connect() diff --git a/tests/test_packages/test_connections/test_webhook/test_webhook.py b/tests/test_packages/test_connections/test_webhook/test_webhook.py index 069f7fb0ca..e7314d5ca8 100644 --- a/tests/test_packages/test_connections/test_webhook/test_webhook.py +++ b/tests/test_packages/test_connections/test_webhook/test_webhook.py @@ -99,7 +99,9 @@ def setup(self): connection_id=WebhookConnection.connection_id, ) self.webhook_connection = WebhookConnection( - configuration=configuration, data_dir=MagicMock(), identity=self.identity, + configuration=configuration, + data_dir=MagicMock(), + identity=self.identity, ) self.skill_dialogues = HttpDialogues(self.target_skill_id) @@ -165,7 +167,11 @@ async def test_send(self): body="", version="", ) - envelope = Envelope(to="addr", sender="my_id", message=http_message,) + envelope = Envelope( + to="addr", + sender="my_id", + message=http_message, + ) with patch.object(self.webhook_connection.logger, "warning") as mock_logger: await self.webhook_connection.send(envelope) await asyncio.sleep(0.01) diff --git a/tests/test_packages/test_connections/test_yoti/test_yoti.py b/tests/test_packages/test_connections/test_yoti/test_yoti.py index ee668617fd..41269693a9 100644 --- a/tests/test_packages/test_connections/test_yoti/test_yoti.py +++ b/tests/test_packages/test_connections/test_yoti/test_yoti.py @@ -154,7 +154,9 @@ async def test_yoti_profile_ok(): async def test_yoti_profile_error_on_handle(): """Test error message on bad provile.""" with patch.object( - yoti_connection, "YotiClient", FakeYotiClientBadProfile, + yoti_connection, + "YotiClient", + FakeYotiClientBadProfile, ): con = YotiConnection( configuration=mock_conf, data_dir=MagicMock(), logger=logging.getLogger() diff --git a/tests/test_packages/test_contracts/test_erc1155/test_contract.py b/tests/test_packages/test_contracts/test_erc1155/test_contract.py index 8ec581079e..7b9d91a167 100644 --- a/tests/test_packages/test_contracts/test_erc1155/test_contract.py +++ b/tests/test_packages/test_contracts/test_erc1155/test_contract.py @@ -192,14 +192,16 @@ def test_validate_mint_quantities(self): """Test the validate_mint_quantities method of the ERC1155 contract.""" # Valid NFTs self.contract.validate_mint_quantities( - token_ids=self.token_ids_a, mint_quantities=[1] * len(self.token_ids_a), + token_ids=self.token_ids_a, + mint_quantities=[1] * len(self.token_ids_a), ) # Valid FTs token_id = 680564733841876926926749214863536422912 mint_quantity = 1 self.contract.validate_mint_quantities( - token_ids=[token_id], mint_quantities=[mint_quantity], + token_ids=[token_id], + mint_quantities=[mint_quantity], ) # Invalid NFTs @@ -212,7 +214,8 @@ def test_validate_mint_quantities(self): ), ): self.contract.validate_mint_quantities( - token_ids=[token_id], mint_quantities=[mint_quantity], + token_ids=[token_id], + mint_quantities=[mint_quantity], ) # Invalid: neither NFT nor FT @@ -225,7 +228,8 @@ def test_validate_mint_quantities(self): ), ): self.contract.validate_mint_quantities( - token_ids=[token_id], mint_quantities=[mint_quantity], + token_ids=[token_id], + mint_quantities=[mint_quantity], ) def test_decode_id(self): diff --git a/tests/test_packages/test_protocols/test_acn.py b/tests/test_packages/test_protocols/test_acn.py index 6bc7bc25e2..7f18b57549 100644 --- a/tests/test_packages/test_protocols/test_acn.py +++ b/tests/test_packages/test_protocols/test_acn.py @@ -144,7 +144,8 @@ def test_acn_message_str_values(): def test_encoding_unknown_performative(): """Test that we raise an exception when the performative is unknown during encoding.""" msg = AcnMessage( - performative=AcnMessage.Performative.LOOKUP_REQUEST, agent_address="address", + performative=AcnMessage.Performative.LOOKUP_REQUEST, + agent_address="address", ) with pytest.raises(ValueError, match="Performative not valid:"): diff --git a/tests/test_packages/test_protocols/test_aggregation.py b/tests/test_packages/test_protocols/test_aggregation.py index f1729578ad..e47b32953e 100644 --- a/tests/test_packages/test_protocols/test_aggregation.py +++ b/tests/test_packages/test_protocols/test_aggregation.py @@ -61,7 +61,11 @@ def test_observation_serialization(): signature="some_signature", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -94,7 +98,11 @@ def test_aggregation_serialization(): signature="some_multisignature", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_contract_api.py b/tests/test_packages/test_protocols/test_contract_api.py index e2267181c2..b36f755849 100644 --- a/tests/test_packages/test_protocols/test_contract_api.py +++ b/tests/test_packages/test_protocols/test_contract_api.py @@ -64,7 +64,11 @@ def test_get_deploy_transaction_serialization(): kwargs=kwargs_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -99,7 +103,11 @@ def test_get_raw_transaction_serialization(): kwargs=kwargs_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -134,7 +142,11 @@ def test_get_raw_message_serialization(): kwargs=kwargs_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -169,7 +181,11 @@ def test_get_state_serialization(): kwargs=kwargs_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -200,7 +216,11 @@ def test_state_serialization(): state=state_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -232,7 +252,11 @@ def test_raw_transaction_serialization(): raw_transaction=raw_transaction_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -260,7 +284,11 @@ def test_raw_message_serialization(): raw_message=raw_message_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -289,7 +317,11 @@ def test_error_serialization(): data=b"some_error_data", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_fipa.py b/tests/test_packages/test_protocols/test_fipa.py index ae77d3a307..4a18de37d3 100644 --- a/tests/test_packages/test_protocols/test_fipa.py +++ b/tests/test_packages/test_protocols/test_fipa.py @@ -58,7 +58,11 @@ def test_cfp_serialization(): query=Query([Constraint("something", ConstraintType(">", 1))]), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -88,7 +92,11 @@ def test_propose_serialization(): proposal=Description({"foo1": 1, "bar1": 2}), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -117,7 +125,11 @@ def test_accept_serialization(): performative=FipaMessage.Performative.ACCEPT, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -146,7 +158,11 @@ def test_decline_serialization(): performative=FipaMessage.Performative.DECLINE, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -175,7 +191,11 @@ def test_match_accept_serialization(): performative=FipaMessage.Performative.MATCH_ACCEPT, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -205,7 +225,11 @@ def test_accept_with_inform_serialization(): info={"address": "dummy_address"}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -235,7 +259,11 @@ def test_match_accept_with_inform_serialization(): info={"address": "dummy_address", "signature": "my_signature"}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -265,7 +293,11 @@ def test_inform_serialization(): info={"foo": "bar"}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -294,7 +326,11 @@ def test_end_serialization(): performative=FipaMessage.Performative.END, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -342,7 +378,9 @@ def test_performative_string_value(): def test_encoding_unknown_performative(): """Test that we raise an exception when the performative is unknown during encoding.""" - msg = FipaMessage(performative=FipaMessage.Performative.ACCEPT,) + msg = FipaMessage( + performative=FipaMessage.Performative.ACCEPT, + ) with pytest.raises(ValueError, match="Performative not valid:"): with mock.patch.object(FipaMessage.Performative, "__eq__", return_value=False): @@ -351,7 +389,9 @@ def test_encoding_unknown_performative(): def test_decoding_unknown_performative(): """Test that we raise an exception when the performative is unknown during decoding.""" - msg = FipaMessage(performative=FipaMessage.Performative.ACCEPT,) + msg = FipaMessage( + performative=FipaMessage.Performative.ACCEPT, + ) encoded_msg = FipaMessage.serializer.encode(msg) with pytest.raises(ValueError, match="Performative not valid:"): diff --git a/tests/test_packages/test_protocols/test_gym.py b/tests/test_packages/test_protocols/test_gym.py index 1db376d8c5..c0ef4d02a2 100644 --- a/tests/test_packages/test_protocols/test_gym.py +++ b/tests/test_packages/test_protocols/test_gym.py @@ -54,7 +54,11 @@ def test_act_serialization(): step_id=1, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -88,7 +92,11 @@ def test_percept_serialization(): info=GymMessage.AnyObject("some_info"), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -122,7 +130,11 @@ def test_status_serialization(): content=content_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -151,7 +163,11 @@ def test_reset_serialization(): performative=GymMessage.Performative.RESET, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -180,7 +196,11 @@ def test_close_serialization(): performative=GymMessage.Performative.CLOSE, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_http.py b/tests/test_packages/test_protocols/test_http.py index 17adfd860f..c58158afdc 100644 --- a/tests/test_packages/test_protocols/test_http.py +++ b/tests/test_packages/test_protocols/test_http.py @@ -56,7 +56,11 @@ def test_request_serialization(): body=b"some_body", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -89,7 +93,11 @@ def test_response_serialization(): body=b"some_body", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_ledger_api.py b/tests/test_packages/test_protocols/test_ledger_api.py index 3e8940f11d..06663050ff 100644 --- a/tests/test_packages/test_protocols/test_ledger_api.py +++ b/tests/test_packages/test_protocols/test_ledger_api.py @@ -58,7 +58,11 @@ def test_get_balance_serialization(): address="some_address", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -94,7 +98,11 @@ def test_get_state_serialization(): kwargs=kwargs, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -134,7 +142,11 @@ def test_get_raw_transaction_serialization(): terms=terms_arg, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -165,7 +177,11 @@ def test_send_signed_transaction_serialization(): ), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -196,7 +212,11 @@ def test_get_transaction_receipt_serialization(): ), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -226,7 +246,11 @@ def test_balance_serialization(): balance=125, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -260,7 +284,11 @@ def test_state_serialization(): state=state, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -291,7 +319,11 @@ def test_raw_transaction_serialization(): ), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -322,7 +354,11 @@ def test_transaction_digest_serialization(): ), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -353,7 +389,11 @@ def test_transaction_receipt_serialization(): ), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -382,7 +422,11 @@ def test_error_serialization(): data=b"some_error_data", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_ml_trade.py b/tests/test_packages/test_protocols/test_ml_trade.py index 0d885e37ed..b88ab8a976 100644 --- a/tests/test_packages/test_protocols/test_ml_trade.py +++ b/tests/test_packages/test_protocols/test_ml_trade.py @@ -58,7 +58,11 @@ def test_cfp_serialization(): query=Query([Constraint("something", ConstraintType(">", 1))]), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -87,7 +91,11 @@ def test_terms_serialization(): terms=Description({"foo1": 1, "bar1": 2}), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -115,7 +123,11 @@ def test_accept_serialization(): tx_digest="some_tx_digest", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -143,7 +155,11 @@ def test_data_serialization(): payload=b"some_payload", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_oef_search.py b/tests/test_packages/test_protocols/test_oef_search.py index 1e2a333550..7d0335e5f0 100644 --- a/tests/test_packages/test_protocols/test_oef_search.py +++ b/tests/test_packages/test_protocols/test_oef_search.py @@ -56,7 +56,11 @@ def test_register_service_serialization(): service_description=Description({"foo1": 1, "bar1": 2}), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -85,7 +89,11 @@ def test_unregister_service_serialization(): service_description=Description({"foo1": 1, "bar1": 2}), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -112,7 +120,11 @@ def test_search_services_serialization(): query=Query([Constraint("something", ConstraintType(">", 1))]), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -145,7 +157,11 @@ def test_search_result_serialization(): ), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -177,7 +193,11 @@ def test_success_serialization(): ), ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -204,7 +224,11 @@ def test_oef_error_serialization(): oef_error_operation=OefSearchMessage.OefErrorOperation.OTHER, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_prometheus.py b/tests/test_packages/test_protocols/test_prometheus.py index 1dc8ccba4c..af5274c3b8 100644 --- a/tests/test_packages/test_protocols/test_prometheus.py +++ b/tests/test_packages/test_protocols/test_prometheus.py @@ -61,7 +61,11 @@ def test_add_metric_serialization(): labels={"label_key": "label_value"}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -94,7 +98,11 @@ def test_update_metric_serialization(): labels={"label_key": "label_value"}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -125,7 +133,11 @@ def test_response_serialization(): message="some_message", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) diff --git a/tests/test_packages/test_protocols/test_register.py b/tests/test_packages/test_protocols/test_register.py index a4d2ac3693..3d442b0fb3 100644 --- a/tests/test_packages/test_protocols/test_register.py +++ b/tests/test_packages/test_protocols/test_register.py @@ -86,14 +86,17 @@ def test_error(self): def test_consistency_check_negative(): """Test the consistency check, negative case.""" - tx_msg = RegisterMessage(performative=RegisterMessage.Performative.REGISTER,) + tx_msg = RegisterMessage( + performative=RegisterMessage.Performative.REGISTER, + ) assert not tx_msg._is_consistent() def test_serialization_negative(): """Test serialization when performative is not recognized.""" tx_msg = RegisterMessage( - performative=RegisterMessage.Performative.REGISTER, info={}, + performative=RegisterMessage.Performative.REGISTER, + info={}, ) with patch.object(RegisterMessage.Performative, "__eq__", return_value=False): diff --git a/tests/test_packages/test_protocols/test_signing.py b/tests/test_packages/test_protocols/test_signing.py index f40d6ec71d..6cafc71115 100644 --- a/tests/test_packages/test_protocols/test_signing.py +++ b/tests/test_packages/test_protocols/test_signing.py @@ -130,7 +130,9 @@ def test_error_message(self): def test_consistency_check_negative(): """Test the consistency check, negative case.""" - tx_msg = SigningMessage(performative=SigningMessage.Performative.SIGN_TRANSACTION,) + tx_msg = SigningMessage( + performative=SigningMessage.Performative.SIGN_TRANSACTION, + ) assert not tx_msg._is_consistent() diff --git a/tests/test_packages/test_protocols/test_state_update.py b/tests/test_packages/test_protocols/test_state_update.py index 91b190305c..338b7abcb7 100644 --- a/tests/test_packages/test_protocols/test_state_update.py +++ b/tests/test_packages/test_protocols/test_state_update.py @@ -62,7 +62,9 @@ def test_message_consistency(self): ) assert stum._is_consistent() assert len(stum.valid_performatives) == 3 - stum = StateUpdateMessage(performative=StateUpdateMessage.Performative.END,) + stum = StateUpdateMessage( + performative=StateUpdateMessage.Performative.END, + ) assert stum._is_consistent() def test_message_inconsistency(self): @@ -119,7 +121,9 @@ def test_serialization_apply(self): def test_serialization_end(self): """Test serialization of end message.""" - msg = StateUpdateMessage(performative=StateUpdateMessage.Performative.END,) + msg = StateUpdateMessage( + performative=StateUpdateMessage.Performative.END, + ) assert msg._is_consistent() assert len(msg.valid_performatives) == 3 encoded_msg = msg.serializer.encode(msg) diff --git a/tests/test_packages/test_protocols/test_tac.py b/tests/test_packages/test_protocols/test_tac.py index 01f54aeddd..9838997398 100644 --- a/tests/test_packages/test_protocols/test_tac.py +++ b/tests/test_packages/test_protocols/test_tac.py @@ -92,10 +92,15 @@ def test_tac_message_instantiation(): def test_register_serialization(): """Test the serialization for 'register' speech-act works.""" msg = TacMessage( - performative=TacMessage.Performative.REGISTER, agent_name="some_agent_name", + performative=TacMessage.Performative.REGISTER, + agent_name="some_agent_name", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -118,10 +123,16 @@ def test_register_serialization(): def test_unregister_serialization(): """Test the serialization for 'unregister' speech-act works.""" msg = TacMessage( - message_id=2, target=1, performative=TacMessage.Performative.UNREGISTER, + message_id=2, + target=1, + performative=TacMessage.Performative.UNREGISTER, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -157,7 +168,11 @@ def test_transaction_serialization(): counterparty_signature="some_counterparty_signature", ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -179,9 +194,15 @@ def test_transaction_serialization(): def test_cancelled_serialization(): """Test the serialization for 'cancelled' speech-act works.""" - msg = TacMessage(performative=TacMessage.Performative.CANCELLED,) + msg = TacMessage( + performative=TacMessage.Performative.CANCELLED, + ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -217,7 +238,11 @@ def test_game_data_serialization(): info={"key_1": "value_1", "key_2": "value_2"}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -246,7 +271,11 @@ def test_transaction_confirmation_serialization(): quantities_by_good_id={"key_1": 1, "key_2": 2}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -274,7 +303,11 @@ def test_tac_error_serialization(): info={"key_1": "value_1", "key_2": "value_2"}, ) msg.to = "receiver" - envelope = Envelope(to=msg.to, sender="sender", message=msg,) + envelope = Envelope( + to=msg.to, + sender="sender", + message=msg, + ) envelope_bytes = envelope.encode() actual_envelope = Envelope.decode(envelope_bytes) @@ -359,7 +392,9 @@ def test_error_code_to_msg(): def test_encoding_unknown_performative(): """Test that we raise an exception when the performative is unknown during encoding.""" - msg = TacMessage(performative=TacMessage.Performative.CANCELLED,) + msg = TacMessage( + performative=TacMessage.Performative.CANCELLED, + ) with pytest.raises(ValueError, match="Performative not valid:"): with mock.patch.object(TacMessage.Performative, "__eq__", return_value=False): @@ -368,7 +403,9 @@ def test_encoding_unknown_performative(): def test_decoding_unknown_performative(): """Test that we raise an exception when the performative is unknown during decoding.""" - msg = TacMessage(performative=TacMessage.Performative.CANCELLED,) + msg = TacMessage( + performative=TacMessage.Performative.CANCELLED, + ) encoded_msg = TacMessage.serializer.encode(msg) with pytest.raises(ValueError, match="Performative not valid:"): @@ -384,7 +421,9 @@ def test_decoding_unknown_performative(): def test_incorrect_message(mocked_enforce): """Test that we raise an exception when the message is incorrect.""" with mock.patch.object(tac_message_logger, "error") as mock_logger: - TacMessage(performative=TacMessage.Performative.CANCELLED,) + TacMessage( + performative=TacMessage.Performative.CANCELLED, + ) mock_logger.assert_any_call("some error") diff --git a/tests/test_packages/test_protocols/test_yoti.py b/tests/test_packages/test_protocols/test_yoti.py index 7ddf312b7c..02a20ff561 100644 --- a/tests/test_packages/test_protocols/test_yoti.py +++ b/tests/test_packages/test_protocols/test_yoti.py @@ -39,7 +39,10 @@ def test_encode_decode_get_profile(): def test_encode_decode_profile(): """Test encode decode profile.""" - msg = YotiMessage(performative=YotiMessage.Performative.PROFILE, info={},) + msg = YotiMessage( + performative=YotiMessage.Performative.PROFILE, + info={}, + ) assert YotiMessage.decode(msg.encode()) == msg @@ -53,7 +56,10 @@ def test_encode_decode_error(): def test_encoding_unknown_performative(): """Test that we raise an exception when the performative is unknown during encoding.""" - msg = YotiMessage(performative=YotiMessage.Performative.PROFILE, info={},) + msg = YotiMessage( + performative=YotiMessage.Performative.PROFILE, + info={}, + ) with pytest.raises(ValueError, match="Performative not valid:"): with mock.patch.object(YotiMessage.Performative, "__eq__", return_value=False): @@ -62,7 +68,10 @@ def test_encoding_unknown_performative(): def test_decoding_unknown_performative(): """Test that we raise an exception when the performative is unknown during decoding.""" - msg = YotiMessage(performative=YotiMessage.Performative.PROFILE, info={},) + msg = YotiMessage( + performative=YotiMessage.Performative.PROFILE, + info={}, + ) encoded_msg = YotiMessage.serializer.encode(msg) with pytest.raises(ValueError, match="Performative not valid:"): diff --git a/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py b/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py index 97b6911907..4c5f2a8c72 100644 --- a/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py +++ b/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py @@ -106,7 +106,8 @@ def test_handle_response(self): """Test the _handle_response method of the http handler to a valid response.""" # setup http_dialogue = self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_messages[:1], ) incoming_message = self.build_incoming_message_for_skill_dialogue( dialogue=http_dialogue, @@ -167,7 +168,8 @@ def test_handle_response_invalid_body(self): """Test the _handle_response method of the http handler to an unexpected response.""" # setup http_dialogue = self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_messages[:1], ) incoming_message = self.build_incoming_message_for_skill_dialogue( dialogue=http_dialogue, @@ -187,14 +189,16 @@ def test_handle_response_invalid_body(self): # after mock_logger.assert_any_call( - logging.WARNING, "No valid output for output1 found in response.", + logging.WARNING, + "No valid output for output1 found in response.", ) def test_handle_response_missing_output(self): """Test the _handle_response method of the http handler to a response with a missing output.""" # setup http_dialogue = self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_messages[:1], ) incoming_message = self.build_incoming_message_for_skill_dialogue( dialogue=http_dialogue, @@ -214,17 +218,20 @@ def test_handle_response_missing_output(self): # after mock_logger.assert_any_call( - logging.WARNING, "No valid output for output1 found in response.", + logging.WARNING, + "No valid output for output1 found in response.", ) mock_logger.assert_any_call( - logging.INFO, "Observation: {'output2': {'value': 'XXX'}}", + logging.INFO, + "Observation: {'output2': {'value': 'XXX'}}", ) def test_handle_response_bad_response_code(self): """Test the _handle_response method of the http handler to a response with a code that is not 200.""" # setup http_dialogue = self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_messages[:1], ) incoming_message = self.build_incoming_message_for_skill_dialogue( dialogue=http_dialogue, @@ -244,7 +251,8 @@ def test_handle_response_bad_response_code(self): # after mock_logger.assert_any_call( - logging.INFO, "got unexpected http message: code = 999", + logging.INFO, + "got unexpected http message: code = 999", ) def test_handle_request_get(self): @@ -295,7 +303,8 @@ def test_handle_request_post(self): self.http_handler.handle(incoming_message) mock_logger.assert_any_call( - logging.INFO, "method 'post' is not supported.", + logging.INFO, + "method 'post' is not supported.", ) # check that outbox is empty self.assert_quantity_in_outbox(0) @@ -324,7 +333,8 @@ def test_handle_request_no_http_server(self): ) mock_logger.assert_any_call( - logging.INFO, "http server is not enabled.", + logging.INFO, + "http server is not enabled.", ) # check that outbox is empty self.assert_quantity_in_outbox(0) @@ -382,7 +392,8 @@ def test_handle_response(self): """Test the _handle_response method of the prometheus handler to a valid response.""" # setup prometheus_dialogue = self.prepare_skill_dialogue( - dialogues=self.prometheus_dialogues, messages=self.list_of_messages[:1], + dialogues=self.prometheus_dialogues, + messages=self.list_of_messages[:1], ) incoming_message = self.build_incoming_message_for_skill_dialogue( dialogue=prometheus_dialogue, diff --git a/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py b/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py index 93b2eba5b4..a561cebf4b 100644 --- a/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py +++ b/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py @@ -85,7 +85,8 @@ def setup(cls): # behaviours cls.alice_behaviour = cast( - AliceBehaviour, cls._skill.skill_context.behaviours.alice, + AliceBehaviour, + cls._skill.skill_context.behaviours.alice, ) # dialogues diff --git a/tests/test_packages/test_skills/test_aries_alice/test_handlers.py b/tests/test_packages/test_skills/test_aries_alice/test_handlers.py index b2d1cb6f56..90b6c56053 100644 --- a/tests/test_packages/test_skills/test_aries_alice/test_handlers.py +++ b/tests/test_packages/test_skills/test_aries_alice/test_handlers.py @@ -70,7 +70,8 @@ def test_handle_i(self): # after mock_logger.assert_any_call( - logging.INFO, f"Received message content:{content}", + logging.INFO, + f"Received message content:{content}", ) mock_send.assert_any_call( method="POST", @@ -325,7 +326,8 @@ def test_handle_response_i(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -364,7 +366,8 @@ def test_handle_response_ii(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -481,7 +484,10 @@ def test_handle_success_i(self): # operation with patch.object(self.oef_search_handler.context.logger, "log") as mock_logger: - with patch.object(self.alice_behaviour, "register_service",) as mock_reg: + with patch.object( + self.alice_behaviour, + "register_service", + ) as mock_reg: self.oef_search_handler.handle(incoming_message) # after @@ -506,7 +512,10 @@ def test_handle_success_ii(self): # operation with patch.object(self.oef_search_handler.context.logger, "log") as mock_logger: - with patch.object(self.alice_behaviour, "register_genus",) as mock_reg: + with patch.object( + self.alice_behaviour, + "register_genus", + ) as mock_reg: self.oef_search_handler.handle(incoming_message) # after @@ -532,7 +541,8 @@ def test_handle_success_iii(self): # operation with patch.object(self.oef_search_handler.context.logger, "log") as mock_logger: with patch.object( - self.alice_behaviour, "register_classification", + self.alice_behaviour, + "register_classification", ) as mock_reg: self.oef_search_handler.handle(incoming_message) diff --git a/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py b/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py index dd656c7eea..358219783b 100644 --- a/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py +++ b/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py @@ -84,7 +84,8 @@ def setup(cls): # behaviours cls.faber_behaviour = cast( - FaberBehaviour, cls._skill.skill_context.behaviours.faber, + FaberBehaviour, + cls._skill.skill_context.behaviours.faber, ) # dialogues diff --git a/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py b/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py index e1cc3120f4..c735fa79b6 100644 --- a/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py +++ b/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py @@ -95,7 +95,8 @@ def test_act_is_searching(self): assert has_attributes, error_str mock_logger.assert_any_call( - logging.INFO, "Searching for Alice on SOEF...", + logging.INFO, + "Searching for Alice on SOEF...", ) def test_teardown(self): diff --git a/tests/test_packages/test_skills/test_aries_faber/test_handlers.py b/tests/test_packages/test_skills/test_aries_faber/test_handlers.py index 2d8998a6de..a8a2b88877 100644 --- a/tests/test_packages/test_skills/test_aries_faber/test_handlers.py +++ b/tests/test_packages/test_skills/test_aries_faber/test_handlers.py @@ -162,7 +162,8 @@ def test_handle_response_1(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -191,7 +192,8 @@ def test_handle_response_1(self): # after mock_logger.assert_any_call(logging.INFO, f"Received message: {str(body)}") mock_logger.assert_any_call( - logging.INFO, f"Registering Faber_ACA with seed {str(self.strategy.seed)}", + logging.INFO, + f"Registering Faber_ACA with seed {str(self.strategy.seed)}", ) mock_http_req.assert_any_call( method="POST", @@ -206,7 +208,8 @@ def test_handle_response_2(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -258,7 +261,8 @@ def test_handle_response_3(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -307,7 +311,8 @@ def test_handle_response_4(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -351,7 +356,8 @@ def test_handle_response_5(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -395,7 +401,8 @@ def test_handle_response_6(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -458,7 +465,8 @@ def test_handle_response_7(self): http_dialogue = cast( HttpDialogue, self.prepare_skill_dialogue( - dialogues=self.http_dialogues, messages=self.list_of_http_messages[:1], + dialogues=self.http_dialogues, + messages=self.list_of_http_messages[:1], ), ) @@ -607,7 +615,8 @@ def test_handle_search_i(self): # after mock_logger.assert_any_call( - logging.INFO, f"found agents {', '.join(agents)}, stopping search.", + logging.INFO, + f"found agents {', '.join(agents)}, stopping search.", ) assert self.strategy.is_searching is False @@ -643,7 +652,8 @@ def test_handle_search_ii(self): # after mock_logger.assert_any_call( - logging.INFO, "Waiting for more agents.", + logging.INFO, + "Waiting for more agents.", ) def test_handle_invalid(self): diff --git a/tests/test_packages/test_skills/test_aries_faber/test_strategy.py b/tests/test_packages/test_skills/test_aries_faber/test_strategy.py index eb2403ad40..72dfac3089 100644 --- a/tests/test_packages/test_skills/test_aries_faber/test_strategy.py +++ b/tests/test_packages/test_skills/test_aries_faber/test_strategy.py @@ -65,7 +65,8 @@ def test_get_location_and_service_query(self): service_key_constraint = Constraint( self.search_query["search_key"], ConstraintType( - self.search_query["constraint_type"], self.search_query["search_value"], + self.search_query["constraint_type"], + self.search_query["search_value"], ), ) assert query.constraints[1] == service_key_constraint diff --git a/tests/test_packages/test_skills/test_carpark_detection/temp_files_placeholder/detection_results.db b/tests/test_packages/test_skills/test_carpark_detection/temp_files_placeholder/detection_results.db deleted file mode 100644 index 5bd229bf75cca2f2081ef711168624b32c936e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeI)&u`jh7{GBmP9SMVXccKFnzX)`Xdt0QSq|N0Qq#_gqNLfDF>O&by>j3s@oH>l zzjQ&>4)nOcWY_%-JMO%HVA3wV^|;$!{~$Gm_FnY01ibI_8vHz;*G4i1zWwIJ*GlxG zc;IQVZ{4wM+j<~`Wm(V7?UuPsmx^huPCMq&F16p*d~SVu_hPiy1$A6ET~&A&E3 z-u$ihW9{D$p42`xAr=G>KmY**5I_I{1Q2+az~qySYGZfTp8Tr4i$L{!FNiKjN+#OV zqeLZhfm@Hx+=GrQItLF=TroE+nl~Z8CpzvAowiWJsCy;8bRQi(J~(NMNMET~dY3BH z@~IjZE5)j-{Aa2s2gzj-O42o^-PYvuYPGSyZ@*|{nd;aJ6R)fND3n)zqN8}cAhbS{ z?Sd6VQ(tGB6JMX1^v=%3v3ovE`RLSSAE|ztrW|@>6&IP6W2%UGgJ=|L@$l#{ds+^d zjkVnMO5=Rrw*0WCu9KewbBZLrk&d#yT#%LATM*ostgTfWJ3IE|aV8LY10{nfdO8|@ zR&G~jYA%n6W|8=Uiu*^rE1Tb6eOHp@SCxC^-kLdD*3%f?50uvAfn9BEZ`&`P zWSjH{<`_xx`<0oEwK+6!bi+ii=C z+hPzs^TW$Gqy1Q!_k^KmUTRugTLk75KR?2QD9l=|S}J!Zy< None: cls.fetch_agent("fetchai/aries_alice", cls.alice, is_local=True) # type: ignore cls.fetch_agent("fetchai/aries_alice", cls.bob, is_local=True) # type: ignore cls.fetch_agent("fetchai/aries_faber", cls.faber, is_local=True) # type: ignore - cls.create_agents(cls.controller,) # type: ignore + cls.create_agents( + cls.controller, # type: ignore + ) cls.set_agent_context(cls.controller) # type: ignore cls.add_item("connection", "fetchai/p2p_libp2p") @@ -210,7 +212,9 @@ def setup_class(cls) -> None: cls.generate_private_key("fetchai", "fetchai.key") cls.add_private_key("fetchai", "fetchai.key") cls.add_private_key( - "fetchai", "fetchai.key", connection=True, + "fetchai", + "fetchai.key", + connection=True, ) cls.nested_set_config( "vendor.fetchai.connections.p2p_libp2p.config", p2p_config @@ -339,7 +343,11 @@ def setup_class(cls) -> None: "http://localhost:9000/genesis", ), cls.start_acapy( - "bob", 8040, cls.bob_seed, acapy_host, "http://localhost:9000/genesis", + "bob", + 8040, + cls.bob_seed, + acapy_host, + "http://localhost:9000/genesis", ), cls.start_acapy( "faber", diff --git a/tests/test_packages/test_skills_integration/test_echo.py b/tests/test_packages/test_skills_integration/test_echo.py index 02501c30d4..a3c05b2366 100644 --- a/tests/test_packages/test_skills_integration/test_echo.py +++ b/tests/test_packages/test_skills_integration/test_echo.py @@ -86,7 +86,11 @@ def test_echo(self): dialogue_reference=default_dialogues.new_self_initiated_dialogue_reference(), content=message_content, ) - sent_envelope = Envelope(to=self.agent_name, sender=sender, message=message,) + sent_envelope = Envelope( + to=self.agent_name, + sender=sender, + message=message, + ) self.send_envelope_to_agent(sent_envelope, self.agent_name) diff --git a/tests/test_packages/test_skills_integration/test_ml_skills.py b/tests/test_packages/test_skills_integration/test_ml_skills.py index 8104560a74..39061a77c1 100644 --- a/tests/test_packages/test_skills_integration/test_ml_skills.py +++ b/tests/test_packages/test_skills_integration/test_ml_skills.py @@ -54,7 +54,8 @@ class TestMLSkills(AEATestCaseManyFlaky): reruns=MAX_FLAKY_RERUNS_INTEGRATION ) # cause possible network issues @pytest.mark.skipif( - _is_not_tensorflow_installed(), reason="This test requires Tensorflow.", + _is_not_tensorflow_installed(), + reason="This test requires Tensorflow.", ) def test_ml_skills(self, pytestconfig): """Run the ml skills sequence.""" @@ -238,7 +239,8 @@ class TestMLSkillsFetchaiLedger(AEATestCaseManyFlaky): reruns=MAX_FLAKY_RERUNS_INTEGRATION ) # cause possible network issues @pytest.mark.skipif( - _is_not_tensorflow_installed(), reason="This test requires Tensorflow.", + _is_not_tensorflow_installed(), + reason="This test requires Tensorflow.", ) def test_ml_skills(self, pytestconfig): """Run the ml skills sequence.""" diff --git a/tests/test_packages/test_skills_integration/test_simple_aggregation.py b/tests/test_packages/test_skills_integration/test_simple_aggregation.py index 176f3f8dc4..f18f2ac386 100644 --- a/tests/test_packages/test_skills_integration/test_simple_aggregation.py +++ b/tests/test_packages/test_skills_integration/test_simple_aggregation.py @@ -78,7 +78,8 @@ def test_simple_aggregation(self): self.add_item("connection", "fetchai/prometheus:0.9.2") self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.1") self.nested_set_config( - "agent.required_ledgers", [FetchAICrypto.identifier], + "agent.required_ledgers", + [FetchAICrypto.identifier], ) self.add_item("skill", "fetchai/advanced_data_request:0.7.2") self.add_item("skill", "fetchai/simple_aggregation:0.3.2") diff --git a/tests/test_packages/test_skills_integration/test_simple_oracle.py b/tests/test_packages/test_skills_integration/test_simple_oracle.py index 54c29d8989..0d14507c2f 100644 --- a/tests/test_packages/test_skills_integration/test_simple_oracle.py +++ b/tests/test_packages/test_skills_integration/test_simple_oracle.py @@ -52,7 +52,8 @@ class TestOracleSkillsFetchAI(AEATestCaseManyFlaky, UseLocalFetchNode): @pytest.mark.ledger # @pytest.mark.flaky(reruns=MAX_FLAKY_RERUNS_ETH) # cause possible network issues def test_oracle( - self, fund_fetchai_accounts, + self, + fund_fetchai_accounts, ): """Run the oracle skills sequence.""" oracle_agent_name = "oracle_aea" @@ -84,7 +85,8 @@ def test_oracle( self.set_config("agent.default_connection", "fetchai/ledger:0.21.1") self.set_config("agent.default_ledger", ledger_id) self.nested_set_config( - "agent.required_ledgers", [FetchAICrypto.identifier], + "agent.required_ledgers", + [FetchAICrypto.identifier], ) setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) @@ -160,7 +162,8 @@ def test_oracle( self.set_config("agent.default_connection", "fetchai/ledger:0.21.1") self.set_config("agent.default_ledger", ledger_id) self.nested_set_config( - "agent.required_ledgers", [FetchAICrypto.identifier], + "agent.required_ledgers", + [FetchAICrypto.identifier], ) default_routing = { @@ -218,7 +221,10 @@ def test_oracle( "Oracle value successfully updated!", ) missing_strings = self.missing_from_output( - oracle_aea_process, check_strings, timeout=60, is_terminating=False, + oracle_aea_process, + check_strings, + timeout=60, + is_terminating=False, ) assert ( missing_strings == [] @@ -249,7 +255,10 @@ def test_oracle( "Oracle value successfully requested!", ) missing_strings = self.missing_from_output( - client_aea_process, check_strings, timeout=60, is_terminating=False, + client_aea_process, + check_strings, + timeout=60, + is_terminating=False, ) assert ( missing_strings == [] @@ -271,7 +280,9 @@ class TestOracleSkillsETH(AEATestCaseManyFlaky, UseGanache): @pytest.mark.ledger @pytest.mark.flaky(reruns=MAX_FLAKY_RERUNS_ETH) # cause possible network issues def test_oracle( - self, erc20_contract, oracle_contract, + self, + erc20_contract, + oracle_contract, ): """Run the oracle skills sequence.""" oracle_agent_name = "oracle_aea" @@ -414,7 +425,10 @@ def test_oracle( "Oracle value successfully updated!", ) missing_strings = self.missing_from_output( - oracle_aea_process, check_strings, timeout=60, is_terminating=False, + oracle_aea_process, + check_strings, + timeout=60, + is_terminating=False, ) assert ( missing_strings == [] @@ -446,7 +460,10 @@ def test_oracle( "Oracle value successfully requested!", ) missing_strings = self.missing_from_output( - client_aea_process, check_strings, timeout=60, is_terminating=False, + client_aea_process, + check_strings, + timeout=60, + is_terminating=False, ) assert ( missing_strings == [] diff --git a/tests/test_packages/test_skills_integration/test_tac.py b/tests/test_packages/test_skills_integration/test_tac.py index d55034a51e..c8210f4e8f 100644 --- a/tests/test_packages/test_skills_integration/test_tac.py +++ b/tests/test_packages/test_skills_integration/test_tac.py @@ -74,7 +74,9 @@ def test_tac(self): # create tac controller, agent one and agent two self.create_agents( - tac_aea_one, tac_aea_two, tac_controller_name, + tac_aea_one, + tac_aea_two, + tac_controller_name, ) default_routing = { @@ -350,7 +352,9 @@ def test_tac(self): # create tac controller, agent one and agent two self.create_agents( - tac_aea_one, tac_aea_two, tac_controller_name, + tac_aea_one, + tac_aea_two, + tac_controller_name, ) # default routing (both for controller and participants) @@ -861,7 +865,9 @@ def test_tac(self): # create tac controller, agent one and agent two self.create_agents( - tac_aea_one, tac_aea_two, tac_controller_name, + tac_aea_one, + tac_aea_two, + tac_controller_name, ) # default routing (both for controller and participants) diff --git a/tests/test_packages/test_skills_integration/test_weather.py b/tests/test_packages/test_skills_integration/test_weather.py index 4cce95eca1..4b7be8fc6c 100644 --- a/tests/test_packages/test_skills_integration/test_weather.py +++ b/tests/test_packages/test_skills_integration/test_weather.py @@ -182,7 +182,10 @@ def test_weather(self): LIBP2P_SUCCESS_MESSAGE, ) missing_strings = self.missing_from_output( - weather_client_process, check_strings, timeout=30, is_terminating=False, + weather_client_process, + check_strings, + timeout=30, + is_terminating=False, ) assert ( missing_strings == [] @@ -382,7 +385,10 @@ def test_weather(self): LIBP2P_SUCCESS_MESSAGE, ) missing_strings = self.missing_from_output( - weather_client_process, check_strings, timeout=30, is_terminating=False, + weather_client_process, + check_strings, + timeout=30, + is_terminating=False, ) assert ( missing_strings == [] diff --git a/tests/test_protocols/test_dialogue/test_base.py b/tests/test_protocols/test_dialogue/test_base.py index e9d8005af5..e6efd3a310 100644 --- a/tests/test_protocols/test_dialogue/test_base.py +++ b/tests/test_protocols/test_dialogue/test_base.py @@ -1212,7 +1212,8 @@ def test_update_positive_existing_dialogue_2(self): opponent_dialogue_1 = self.opponent_dialogues.update(msg_1) msg_2 = dialogue.reply( - performative=DefaultMessage.Performative.BYTES, content=b"Hello again", + performative=DefaultMessage.Performative.BYTES, + content=b"Hello again", ) opponent_dialogue_2 = self.opponent_dialogues.update(msg_2) @@ -1397,7 +1398,9 @@ def test_update_negative_existing_dialogue_non_nonexistent(self): == b"Hello" ) - def test_complete_dialogue_reference_positive(self,): + def test_complete_dialogue_reference_positive( + self, + ): """Positive test for the '_complete_dialogue_reference' method.""" msg, dialogue = self.own_dialogues.create( self.opponent_address, DefaultMessage.Performative.BYTES, content=b"Hello" @@ -1425,7 +1428,9 @@ def test_complete_dialogue_reference_positive(self,): == valid_message_2_by_other.dialogue_reference ) - def test_complete_dialogue_reference_negative_incorrect_reference(self,): + def test_complete_dialogue_reference_negative_incorrect_reference( + self, + ): """Negative test for the '_complete_dialogue_reference' method: the input message has invalid dialogue reference.""" msg, dialogue = self.own_dialogues.create( self.opponent_address, DefaultMessage.Performative.BYTES, content=b"Hello" diff --git a/tests/test_protocols/test_generator/test_common.py b/tests/test_protocols/test_generator/test_common.py index 05d3b789a7..495b10915d 100644 --- a/tests/test_protocols/test_generator/test_common.py +++ b/tests/test_protocols/test_generator/test_common.py @@ -106,7 +106,9 @@ def test_camel_case_to_snake_case(self): output_1 = _camel_case_to_snake_case(input_text_1) assert output_1 == expected_1 - def test_match_brackets(self,): + def test_match_brackets( + self, + ): """Positive test the '_match_brackets' method.""" text_1 = "[so[met[hi]]ng]" assert _match_brackets(text_1, 0) == 14 @@ -120,7 +122,8 @@ def test_match_brackets(self,): self.assertEqual( str(cm.exception), "Index {} in 'text' is not an open bracket '['. It is {}".format( - index_2, text_2[index_2], + index_2, + text_2[index_2], ), ) @@ -130,7 +133,8 @@ def test_match_brackets(self,): self.assertEqual( str(cm.exception), "Index {} in 'text' is not an open bracket '['. It is {}".format( - index_3, text_2[index_3], + index_3, + text_2[index_3], ), ) @@ -143,7 +147,9 @@ def test_match_brackets(self,): + str(index_4), ) - def test_has_matched_brackets(self,): + def test_has_matched_brackets( + self, + ): """Positive test the '_has_matched_brackets' method.""" valid_text_1 = "[so[met[hi]]ng]" assert _has_matched_brackets(valid_text_1) is True @@ -166,7 +172,9 @@ def test_has_matched_brackets(self,): invalid_text_4 = "[[]" assert _has_matched_brackets(invalid_text_4) is False - def test_get_sub_types_of_compositional_types_positive(self,): + def test_get_sub_types_of_compositional_types_positive( + self, + ): """Positive test the '_get_sub_types_of_compositional_types' method.""" composition_type_1 = "pt:set[pt:int, integer, bool]" expected_1 = ("pt:int", "integer", "bool") @@ -243,7 +251,9 @@ def test_get_sub_types_of_compositional_types_positive(self,): ) assert _get_sub_types_of_compositional_types(composition_type_11) == expected_11 - def test_get_sub_types_of_compositional_types_negative(self,): + def test_get_sub_types_of_compositional_types_negative( + self, + ): """Negative test the '_get_sub_types_of_compositional_types' method""" composition_type_1 = "pt:int" with self.assertRaises(SyntaxError) as cm: @@ -269,7 +279,9 @@ def test_get_sub_types_of_compositional_types_negative(self,): "Bad formatting. No matching close bracket ']' for the open bracket at pt:set[", ) - def test_union_sub_type_to_protobuf_variable_name(self,): + def test_union_sub_type_to_protobuf_variable_name( + self, + ): """Test the '_union_sub_type_to_protobuf_variable_name' method""" content_name = "proposal" @@ -303,7 +315,9 @@ def test_union_sub_type_to_protobuf_variable_name(self,): == "proposal_type_DataModel" ) - def test_python_pt_or_ct_type_to_proto_type(self,): + def test_python_pt_or_ct_type_to_proto_type( + self, + ): """Test the '_python_pt_or_ct_type_to_proto_type' method""" content_type_bytes = "bytes" assert _python_pt_or_ct_type_to_proto_type(content_type_bytes) == "bytes" @@ -323,7 +337,9 @@ def test_python_pt_or_ct_type_to_proto_type(self,): content_type_ct = "Query" assert _python_pt_or_ct_type_to_proto_type(content_type_ct) == "Query" - def test_includes_custom_type(self,): + def test_includes_custom_type( + self, + ): """Test the '_includes_custom_type' method""" content_type_includes_1 = "Optional[DataModel]" assert _includes_custom_type(content_type_includes_1) is True @@ -393,7 +409,8 @@ def test_check_prerequisites_negative_isort_is_not_installed( check_prerequisites() @mock.patch( - "aea.protocols.generator.common.subprocess.call", return_value=1, + "aea.protocols.generator.common.subprocess.call", + return_value=1, ) def test_check_prerequisites_negative_protolint_is_not_installed( self, mocked_is_installed @@ -413,7 +430,9 @@ def test_check_prerequisites_negative_protoc_is_not_installed( with self.assertRaises(FileNotFoundError): check_prerequisites() - def test_load_protocol_specification(self,): + def test_load_protocol_specification( + self, + ): """Test the 'load_protocol_specification' method""" spec = load_protocol_specification(PATH_TO_T_PROTOCOL_SPECIFICATION) assert spec.name == T_PROTOCOL_NAME @@ -425,7 +444,9 @@ def test_load_protocol_specification(self,): assert spec.speech_acts is not None assert spec.protobuf_snippets is not None and spec.protobuf_snippets != "" - def test_create_protocol_file(self,): + def test_create_protocol_file( + self, + ): """Test the '_create_protocol_file' method""" file_name = "temp_file" file_content = "this is a temporary file" diff --git a/tests/test_protocols/test_generator/test_generator.py b/tests/test_protocols/test_generator/test_generator.py index 6a032c52c6..2b1755f282 100644 --- a/tests/test_protocols/test_generator/test_generator.py +++ b/tests/test_protocols/test_generator/test_generator.py @@ -90,7 +90,10 @@ def test_compare_latest_generator_output_with_test_protocol(self): # compare __init__.py init_file_generated = Path(self.t, T_PROTOCOL_NAME, "__init__.py") - init_file_original = Path(PATH_TO_T_PROTOCOL, "__init__.py",) + init_file_original = Path( + PATH_TO_T_PROTOCOL, + "__init__.py", + ) is_matched, diff = match_files(init_file_generated, init_file_original) assert ( is_matched or len(diff) == 194 @@ -98,13 +101,19 @@ def test_compare_latest_generator_output_with_test_protocol(self): # compare message.py message_file_generated = Path(self.t, T_PROTOCOL_NAME, "message.py") - message_file_original = Path(PATH_TO_T_PROTOCOL, "message.py",) + message_file_original = Path( + PATH_TO_T_PROTOCOL, + "message.py", + ) is_matched, diff = match_files(message_file_generated, message_file_original) assert is_matched, f"Difference Found between message.py files:\n{diff}" # compare serialization.py serialization_file_generated = Path(self.t, T_PROTOCOL_NAME, "serialization.py") - serialization_file_original = Path(PATH_TO_T_PROTOCOL, "serialization.py",) + serialization_file_original = Path( + PATH_TO_T_PROTOCOL, + "serialization.py", + ) is_matched, diff = match_files( serialization_file_generated, serialization_file_original ) @@ -112,7 +121,10 @@ def test_compare_latest_generator_output_with_test_protocol(self): # compare dialogues.py dialogue_file_generated = Path(self.t, T_PROTOCOL_NAME, "dialogues.py") - dialogue_file_original = Path(PATH_TO_T_PROTOCOL, "dialogues.py",) + dialogue_file_original = Path( + PATH_TO_T_PROTOCOL, + "dialogues.py", + ) is_matched, diff = match_files(dialogue_file_generated, dialogue_file_original) assert is_matched, f"Difference Found between dialogues.py files:\n{diff}" @@ -121,7 +133,8 @@ def test_compare_latest_generator_output_with_test_protocol(self): self.t, T_PROTOCOL_NAME, "{}.proto".format(T_PROTOCOL_NAME) ) proto_file_original = Path( - PATH_TO_T_PROTOCOL, "{}.proto".format(T_PROTOCOL_NAME), + PATH_TO_T_PROTOCOL, + "{}.proto".format(T_PROTOCOL_NAME), ) is_matched, diff = match_files(proto_file_generated, proto_file_original) assert is_matched, f"Difference Found between .proto files:\n{diff}" @@ -193,7 +206,10 @@ def test_compare_latest_generator_output_with_test_protocol(self): # compare __init__.py init_file_generated = Path(self.t, protocol_name, "__init__.py") - init_file_original = Path(path_to_protocol, "__init__.py",) + init_file_original = Path( + path_to_protocol, + "__init__.py", + ) is_matched, diff = match_files(init_file_generated, init_file_original) assert ( is_matched or len(diff) == 194 @@ -201,13 +217,19 @@ def test_compare_latest_generator_output_with_test_protocol(self): # compare message.py message_file_generated = Path(self.t, protocol_name, "message.py") - message_file_original = Path(path_to_protocol, "message.py",) + message_file_original = Path( + path_to_protocol, + "message.py", + ) is_matched, diff = match_files(message_file_generated, message_file_original) assert is_matched, f"Difference Found between message.py files:\n{diff}" # compare serialization.py serialization_file_generated = Path(self.t, protocol_name, "serialization.py") - serialization_file_original = Path(path_to_protocol, "serialization.py",) + serialization_file_original = Path( + path_to_protocol, + "serialization.py", + ) is_matched, diff = match_files( serialization_file_generated, serialization_file_original ) @@ -215,7 +237,10 @@ def test_compare_latest_generator_output_with_test_protocol(self): # compare dialogues.py dialogue_file_generated = Path(self.t, protocol_name, "dialogues.py") - dialogue_file_original = Path(path_to_protocol, "dialogues.py",) + dialogue_file_original = Path( + path_to_protocol, + "dialogues.py", + ) is_matched, diff = match_files(dialogue_file_generated, dialogue_file_original) assert is_matched, f"Difference Found between dialogues.py files:\n{diff}" @@ -223,7 +248,10 @@ def test_compare_latest_generator_output_with_test_protocol(self): proto_file_generated = Path( self.t, protocol_name, "{}.proto".format(protocol_name) ) - proto_file_original = Path(path_to_protocol, "{}.proto".format(protocol_name),) + proto_file_original = Path( + path_to_protocol, + "{}.proto".format(protocol_name), + ) is_matched, diff = match_files(proto_file_generated, proto_file_original) assert is_matched, f"Difference Found between .proto files:\n{diff}" @@ -1149,7 +1177,8 @@ def test_init_negative_extracting_specification_fails(self, mocked_extract): assert str(cm.exception) == expected_msg @mock.patch( - "aea.protocols.generator.base.validate", return_value=(False, "Some error!"), + "aea.protocols.generator.base.validate", + return_value=(False, "Some error!"), ) def test_extract_negative_invalid_specification(self, mocked_validate): """Negative test the 'extract' method: invalid protocol specification""" diff --git a/tests/test_protocols/test_generator/test_validate.py b/tests/test_protocols/test_generator/test_validate.py index 7522596b72..649905032d 100644 --- a/tests/test_protocols/test_generator/test_validate.py +++ b/tests/test_protocols/test_generator/test_validate.py @@ -800,7 +800,8 @@ def test_validate_content_name(self): assert ( invalid_msg_6 == "Invalid name for content '{}' of performative '{}'. This name is reserved.".format( - invalid_content_type_6, performative, + invalid_content_type_6, + performative, ) ) @@ -812,7 +813,8 @@ def test_validate_content_name(self): assert ( invalid_msg_7 == "Invalid name for content '{}' of performative '{}'. This name is reserved.".format( - invalid_content_type_7, performative, + invalid_content_type_7, + performative, ) ) @@ -926,7 +928,8 @@ def test_validate_content_type(self): assert ( invalid_msg_1 == "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ) ) @@ -938,7 +941,8 @@ def test_validate_content_type(self): assert ( invalid_msg_2 == "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ) ) @@ -950,7 +954,8 @@ def test_validate_content_type(self): assert ( invalid_msg_3 == "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ) ) @@ -962,7 +967,8 @@ def test_validate_content_type(self): assert ( invalid_msg_4 == "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ) ) @@ -974,7 +980,8 @@ def test_validate_content_type(self): assert ( invalid_msg_5 == "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ) ) @@ -986,7 +993,8 @@ def test_validate_content_type(self): assert ( invalid_msg_6 == "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ) ) @@ -998,11 +1006,14 @@ def test_validate_content_type(self): assert ( invalid_msg_7 == "Invalid type for content '{}' of performative '{}'. See documentation for the correct format of specification types.".format( - content_name, performative, + content_name, + performative, ) ) - @mock.patch("aea.configurations.base.ProtocolSpecification",) + @mock.patch( + "aea.configurations.base.ProtocolSpecification", + ) def test_validate_speech_acts_section(self, mocked_spec): """Test for the '_validate_speech_acts_section' method.""" valid_speech_act_content_config_1 = SpeechActContentConfig( @@ -1072,7 +1083,8 @@ def test_validate_speech_acts_section(self, mocked_spec): assert ( invalid_msg_2 == "Invalid name for content '{}' of performative '{}'. This name is reserved.".format( - "target", valid_perm, + "target", + valid_perm, ) ) assert invalid_all_per_2 is None @@ -1162,7 +1174,9 @@ def test_validate_speech_acts_section(self, mocked_spec): assert invalid_all_per_6 is None assert invalid_all_content_6 is None - @mock.patch("aea.configurations.base.ProtocolSpecification",) + @mock.patch( + "aea.configurations.base.ProtocolSpecification", + ) def test_validate_protocol_buffer_schema_code_snippets(self, mocked_spec): """Test for the '_validate_protocol_buffer_schema_code_snippets' method.""" valid_protobuf_snippet_1 = { @@ -1251,9 +1265,10 @@ def test_validate_field_existence(self): "keep_terminal_state_dialogues": True, } - valid_result_1, valid_msg_1, = _validate_field_existence( - valid_dialogue_config_1 - ) + ( + valid_result_1, + valid_msg_1, + ) = _validate_field_existence(valid_dialogue_config_1) assert valid_result_1 is True assert valid_msg_1 == "Dialogue section has all the required fields." @@ -1262,9 +1277,10 @@ def test_validate_field_existence(self): invalid_dialogue_config_1 = valid_dialogue_config_1.copy() invalid_dialogue_config_1.pop("initiation") - invalid_result_1, invalid_msg_1, = _validate_field_existence( - invalid_dialogue_config_1 - ) + ( + invalid_result_1, + invalid_msg_1, + ) = _validate_field_existence(invalid_dialogue_config_1) assert invalid_result_1 is False assert ( invalid_msg_1 @@ -1274,9 +1290,10 @@ def test_validate_field_existence(self): invalid_dialogue_config_2 = valid_dialogue_config_1.copy() invalid_dialogue_config_2.pop("reply") - invalid_result_2, invalid_msg_2, = _validate_field_existence( - invalid_dialogue_config_2 - ) + ( + invalid_result_2, + invalid_msg_2, + ) = _validate_field_existence(invalid_dialogue_config_2) assert invalid_result_2 is False assert ( invalid_msg_2 @@ -1663,7 +1680,9 @@ def test_validate_keep_terminal(self): == f"Invalid type for keep_terminal_state_dialogues. Expected bool. Found {type(invalid_keep_terminal_state_dialogues_1)}." ) - @mock.patch("aea.configurations.base.ProtocolSpecification",) + @mock.patch( + "aea.configurations.base.ProtocolSpecification", + ) def test_validate_dialogue_section(self, mocked_spec): """Test for the '_validate_dialogue_section' method.""" valid_dialogue_config_1 = { @@ -1693,9 +1712,10 @@ def test_validate_dialogue_section(self, mocked_spec): } mocked_spec.dialogue_config = valid_dialogue_config_1 - valid_result_1, valid_msg_1, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + valid_result_1, + valid_msg_1, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert valid_result_1 is True assert valid_msg_1 == "Dialogue section of the protocol specification is valid." @@ -1706,9 +1726,10 @@ def test_validate_dialogue_section(self, mocked_spec): mocked_spec.dialogue_config = invalid_dialogue_config_1 - invalid_result_1, invalid_msg_1, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + invalid_result_1, + invalid_msg_1, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert invalid_result_1 is False assert ( invalid_msg_1 @@ -1727,9 +1748,10 @@ def test_validate_dialogue_section(self, mocked_spec): mocked_spec.dialogue_config = invalid_dialogue_config_2 - invalid_result_2, invalid_msg_2, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + invalid_result_2, + invalid_msg_2, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert invalid_result_2 is False assert ( invalid_msg_2 @@ -1743,9 +1765,10 @@ def test_validate_dialogue_section(self, mocked_spec): mocked_spec.dialogue_config = invalid_dialogue_config_3 - invalid_result_3, invalid_msg_3, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + invalid_result_3, + invalid_msg_3, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert invalid_result_3 is False assert ( invalid_msg_3 @@ -1761,9 +1784,10 @@ def test_validate_dialogue_section(self, mocked_spec): mocked_spec.dialogue_config = invalid_dialogue_config_4 - invalid_result_4, invalid_msg_4, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + invalid_result_4, + invalid_msg_4, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert invalid_result_4 is False assert ( invalid_msg_4 @@ -1775,9 +1799,10 @@ def test_validate_dialogue_section(self, mocked_spec): mocked_spec.dialogue_config = invalid_dialogue_config_5 - invalid_result_5, invalid_msg_5, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + invalid_result_5, + invalid_msg_5, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert invalid_result_5 is False assert ( invalid_msg_5 @@ -1790,9 +1815,10 @@ def test_validate_dialogue_section(self, mocked_spec): invalid_dialogue_config_6.pop("termination") mocked_spec.dialogue_config = invalid_dialogue_config_6 - invalid_result_6, invalid_msg_6, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + invalid_result_6, + invalid_msg_6, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert invalid_result_6 is False assert ( invalid_msg_6 @@ -1804,9 +1830,10 @@ def test_validate_dialogue_section(self, mocked_spec): invalid_dialogue_config_7["keep_terminal_state_dialogues"] = invalid_value mocked_spec.dialogue_config = invalid_dialogue_config_7 - invalid_result_7, invalid_msg_7, = _validate_dialogue_section( - mocked_spec, valid_performatives_set_1 - ) + ( + invalid_result_7, + invalid_msg_7, + ) = _validate_dialogue_section(mocked_spec, valid_performatives_set_1) assert invalid_result_7 is False assert ( invalid_msg_7 @@ -1834,7 +1861,10 @@ def test_validate_positive( macked_validate_dialogue, ): """Positive test for the 'validate' method: invalid dialogue section.""" - valid_result_1, valid_msg_1, = validate(mocked_spec) + ( + valid_result_1, + valid_msg_1, + ) = validate(mocked_spec) assert valid_result_1 is True assert valid_msg_1 == "Protocol specification is valid." @@ -1847,7 +1877,10 @@ def test_validate_negative_invalid_speech_acts( self, mocked_spec, macked_validate_speech_acts ): """Negative test for the 'validate' method: invalid speech_acts.""" - invalid_result_1, invalid_msg_1, = validate(mocked_spec) + ( + invalid_result_1, + invalid_msg_1, + ) = validate(mocked_spec) assert invalid_result_1 is False assert invalid_msg_1 == "Some error on speech_acts." @@ -1864,7 +1897,10 @@ def test_validate_negative_invalid_protobuf_snippets( self, mocked_spec, macked_validate_speech_acts, macked_validate_protobuf ): """Negative test for the 'validate' method: invalid protobuf snippets.""" - invalid_result_1, invalid_msg_1, = validate(mocked_spec) + ( + invalid_result_1, + invalid_msg_1, + ) = validate(mocked_spec) assert invalid_result_1 is False assert invalid_msg_1 == "Some error on protobuf snippets." @@ -1889,6 +1925,9 @@ def test_validate_negative_invalid_dialogue_section( macked_validate_dialogue, ): """Negative test for the 'validate' method: invalid dialogue section.""" - invalid_result_1, invalid_msg_1, = validate(mocked_spec) + ( + invalid_result_1, + invalid_msg_1, + ) = validate(mocked_spec) assert invalid_result_1 is False assert invalid_msg_1 == "Some error on dialogue section." diff --git a/tests/test_registries/test_base.py b/tests/test_registries/test_base.py index b6be7e2c2f..87ce554a92 100644 --- a/tests/test_registries/test_base.py +++ b/tests/test_registries/test_base.py @@ -754,7 +754,9 @@ def test_register_and_unregister_dynamically(self): is_dynamically_added=True, ) assert len(self.registry._dynamically_added) == 1 - self.registry.unregister((PublicId.from_str("author/name:0.1.0"), "name"),) + self.registry.unregister( + (PublicId.from_str("author/name:0.1.0"), "name"), + ) assert len(self.registry._dynamically_added) == 0 def test_register_and_teardown_dynamically(self): diff --git a/tests/test_skills/test_base.py b/tests/test_skills/test_base.py index 2fcca22b71..228b42fdc3 100644 --- a/tests/test_skills/test_base.py +++ b/tests/test_skills/test_base.py @@ -130,7 +130,8 @@ def test_decision_maker_message_queue(self): def test_decision_maker_handler_context(self): """Test the decision_maker_handler_context.""" assert isinstance( - self.skill_context.decision_maker_handler_context, SimpleNamespace, + self.skill_context.decision_maker_handler_context, + SimpleNamespace, ) def test_storage(self): diff --git a/tests/test_skills/test_error.py b/tests/test_skills/test_error.py index a5d9237fe0..bd2426d8ae 100644 --- a/tests/test_skills/test_error.py +++ b/tests/test_skills/test_error.py @@ -131,7 +131,11 @@ def test_error_skill_unsupported_protocol(self): performative=FipaMessage.Performative.ACCEPT, ) msg.to = self.address - envelope = Envelope(to=msg.to, sender=self.address, message=msg,) + envelope = Envelope( + to=msg.to, + sender=self.address, + message=msg, + ) self.my_error_handler.send_unsupported_protocol(envelope) @@ -151,7 +155,11 @@ def test_error_decoding_error(self): performative=FipaMessage.Performative.ACCEPT, ) msg.to = self.address - envelope = Envelope(to=msg.to, sender=self.address, message=msg,) + envelope = Envelope( + to=msg.to, + sender=self.address, + message=msg, + ) self.my_error_handler.send_decoding_error(envelope) wait_for_condition(lambda: len(self.my_aea._inbox._history) >= 1, timeout=5) @@ -171,7 +179,11 @@ def test_error_unsupported_skill(self): ) msg.to = self.address msg.sender = self.address - envelope = Envelope(to=msg.to, sender=msg.sender, message=msg,) + envelope = Envelope( + to=msg.to, + sender=msg.sender, + message=msg, + ) self.my_error_handler.send_unsupported_skill(envelope=envelope) @@ -186,7 +198,10 @@ def test_error_unsupported_skill_when_skill_id_is_none(self): """Test the 'send_unsupported_skill' when the skill id in the envelope is None.""" protocol_id = PublicId.from_str("author/name:0.1.0") envelope = Envelope( - to="", sender="", protocol_specification_id=protocol_id, message=b"", + to="", + sender="", + protocol_specification_id=protocol_id, + message=b"", ) with unittest.mock.patch.object(self.skill_context.outbox, "put_message"): with unittest.mock.patch.object( diff --git a/tests/test_test_tools/test_test_contract.py b/tests/test_test_tools/test_test_contract.py index b510ff9635..b1cd22811f 100644 --- a/tests/test_test_tools/test_test_contract.py +++ b/tests/test_test_tools/test_test_contract.py @@ -201,7 +201,9 @@ def test_sign_send_confirm_receipt_multisig_transaction_digest_not_found( tx = "tx" with pytest.raises(ValueError, match="Transaction digest not found!"): self.sign_send_confirm_receipt_multisig_transaction( - tx, self.ledger_api, [self.deployer_crypto], + tx, + self.ledger_api, + [self.deployer_crypto], ) is_transaction_settled_mock.assert_not_called() get_transaction_receipt_mock.assert_not_called() diff --git a/tests/test_test_tools/test_test_skill.py b/tests/test_test_tools/test_test_skill.py index 04456799c1..478fc44424 100644 --- a/tests/test_test_tools/test_test_skill.py +++ b/tests/test_test_tools/test_test_skill.py @@ -432,7 +432,9 @@ def test_positive_build_incoming_message_for_skill_dialogue(self): performative = FipaMessage.Performative.PROPOSE proposal = "some_proposal" incoming_message = self.build_incoming_message_for_skill_dialogue( - dialogue=dialogue, performative=performative, proposal=proposal, + dialogue=dialogue, + performative=performative, + proposal=proposal, ) assert type(incoming_message) == FipaMessage @@ -455,7 +457,9 @@ def test_negative_build_incoming_message_for_skill_dialogue_dialogue_is_none(sel with pytest.raises(AEAEnforceError, match="dialogue cannot be None."): self.build_incoming_message_for_skill_dialogue( - dialogue=None, performative=performative, proposal=proposal, + dialogue=None, + performative=performative, + proposal=proposal, ) def test_negative_build_incoming_message_for_skill_dialogue_dialogue_is_empty(self): @@ -474,7 +478,9 @@ def test_negative_build_incoming_message_for_skill_dialogue_dialogue_is_empty(se with pytest.raises(AEAEnforceError, match="dialogue cannot be empty."): self.build_incoming_message_for_skill_dialogue( - dialogue=dialogue, performative=performative, proposal=proposal, + dialogue=dialogue, + performative=performative, + proposal=proposal, ) def test_provide_unspecified_fields(self): @@ -582,7 +588,9 @@ def test_prepare_skill_dialogue_valid_self_initiated(self): ), ) dialogue = self.prepare_skill_dialogue( - fipa_dialogues, dialogue_messages, "counterparty", + fipa_dialogues, + dialogue_messages, + "counterparty", ) assert type(dialogue) == FipaDialogue @@ -626,7 +634,9 @@ def test_prepare_skill_dialogue_valid_opponent_initiated(self): ), ) dialogue = self.prepare_skill_dialogue( - fipa_dialogues, dialogue_messages, "counterparty", + fipa_dialogues, + dialogue_messages, + "counterparty", ) assert type(dialogue) == FipaDialogue @@ -670,7 +680,9 @@ def test_negative_prepare_skill_dialogue_invalid_opponent_initiated(self): AEAEnforceError, match="Cannot update the dialogue with message number 1" ): self.prepare_skill_dialogue( - fipa_dialogues, dialogue_messages, "counterparty", + fipa_dialogues, + dialogue_messages, + "counterparty", ) def test_negative_prepare_skill_dialogue_empty_messages(self): @@ -684,7 +696,9 @@ def test_negative_prepare_skill_dialogue_empty_messages(self): AEAEnforceError, match="the list of messages must be positive." ): self.prepare_skill_dialogue( - fipa_dialogues, dialogue_messages, "counterparty", + fipa_dialogues, + dialogue_messages, + "counterparty", ) def test_negative_prepare_skill_dialogue_invalid(self): @@ -705,7 +719,9 @@ def test_negative_prepare_skill_dialogue_invalid(self): AEAEnforceError, match="Cannot update the dialogue with message number .*" ): self.prepare_skill_dialogue( - fipa_dialogues, dialogue_messages, "counterparty", + fipa_dialogues, + dialogue_messages, + "counterparty", ) diff --git a/tox.ini b/tox.ini index 2bbe0e9bdb..cf57d01405 100644 --- a/tox.ini +++ b/tox.ini @@ -7,127 +7,56 @@ ; the package installation). [tox] envlist = bandit, black, black-check, isort, isort-check, copyright_check, docs, flake8, liccheck, mypy, py{3.6,3.7,3.8,3.9,3.10}, dependencies_check, plugins_deps - +isolated_build = True [testenv] basepython = python3 -whitelist_externals = /bin/sh +whitelist_externals = + /bin/sh passenv = * extras = all -deps = - aiohttp>=3.7.4,<3.8 - aioprometheus>=20.0.0,<21.0.0 - black==19.10b0 - colorlog==4.1.0 - defusedxml==0.7.1 - docker==4.2.0 - gym==0.15.6 - isort==5.7.0 - mistune==2.0.0a4 - numpy>=1.18.1 - oef==0.8.1 - openapi-core==0.13.2 - openapi-spec-validator==0.2.8 - pexpect==4.8.0 - pytest==7.0.0 - pytest-asyncio==0.16.0 - pytest-cov==3.0.0 - pytest-custom-exit-code==0.3.0 - pytest-randomly==3.10.3 - pytest-rerunfailures==10.2 - scikit-image>=0.17.2 - sqlalchemy==1.4.17 - temper-py==0.0.3 - yoti==2.14.0 - ; Plugin dependencies. We need this - ; because we use --no-deps to install the plugins. - ; aea_ledger_cosmos/aea_ledger_fetchai - ecdsa==0.17.0 - asn1crypto==1.4.0 - bech32==1.2.0 - ; aea_ledger_ethereum - web3==5.12.0 - ipfshttpclient==0.6.1 - eth-account==0.5.2 - ; for password encryption in cosmos - pycryptodome==3.15.0 - blspy==1.0.14 - bip-utils==2.5.1 - python-mbedtls==2.2.0 - py-sr25519-bindings==0.1.4 - cosmpy>=0.5.0,<0.6.0 - - +deps = poetry commands = - ; for some reason tox installs aea without respect to the dependencies version specified in setup.py. at least in CI env - ; so install current aea in a normal way - pip install {toxinidir}[all] - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-ethereum - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-cosmos - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-fetchai - python -m pip install --no-deps file://{toxinidir}/plugins/aea-cli-ipfs - pytest -rfE tests/ --cov=aea --cov=packages/fetchai/connections --cov=packages/fetchai/contracts --cov=packages/fetchai/protocols --cov=packages/fetchai/skills --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov-config=.coveragerc {posargs} - -[testenv:py3.6] -basepython = python3.6 -deps = - {[testenv]deps} - tensorflow==2.4.0 + poetry install --only testing,main,packages -E all + poetry run pip install openapi-core==0.13.2 + poetry run pip install {toxinidir}[all] + poetry run python ./install_packages.py jsonschema + poetry run python -m pip install file://{toxinidir}/plugins/aea-ledger-ethereum + poetry run python -m pip install file://{toxinidir}/plugins/aea-ledger-cosmos + poetry run python -m pip install file://{toxinidir}/plugins/aea-ledger-fetchai + poetry run python -m pip install file://{toxinidir}/plugins/aea-cli-ipfs + poetry run python ./install_packages.py black isort + poetry run pytest -rfE tests/ --cov=aea --cov=packages/fetchai/connections --cov=packages/fetchai/contracts --cov=packages/fetchai/protocols --cov=packages/fetchai/skills --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov-config=.coveragerc {posargs} -[testenv:py3.7] -basepython = python3.7 -deps = - {[testenv]deps} - tensorflow==2.8.1 -[testenv:py3.7-cov] -basepython = python3.7 -usedevelop = True -deps = - {[testenv]deps} - tensorflow==2.8.1 [testenv:py3.8] basepython = python3.8 -deps = - {[testenv]deps} - tensorflow==2.8.1 + +[testenv:py3.8-cov] +basepython = python3.8 +usedevelop = True [testenv:py3.9] basepython = python3.9 -deps = - {[testenv]deps} - tensorflow==2.8.1 [testenv:py3.10] basepython = python3.10 -deps = - {[testenv]deps} - tensorflow==2.8.1 [plugins] commands = - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-ethereum - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-cosmos - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-fetchai - python -m pip install --no-deps file://{toxinidir}/plugins/aea-cli-ipfs - pytest -rfE plugins/aea-ledger-fetchai/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_ledger_fetchai --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} - pytest -rfE plugins/aea-ledger-ethereum/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_ledger_ethereum --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} - pytest -rfE plugins/aea-ledger-cosmos/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_ledger_cosmos --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} - pytest -rfE plugins/aea-cli-ipfs/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_cli_ipfs --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} - -[testenv:plugins-py3.6] -basepython = python3.6 -commands = {[plugins]commands} + poetry install --only main,testing -E all + poetry run python -m pip install .[all] + poetry run python -m pip install file://{toxinidir}/plugins/aea-ledger-ethereum + poetry run python -m pip install file://{toxinidir}/plugins/aea-ledger-cosmos + poetry run python -m pip install file://{toxinidir}/plugins/aea-ledger-fetchai + poetry run python -m pip install file://{toxinidir}/plugins/aea-cli-ipfs + poetry run pytest -rfE plugins/aea-ledger-fetchai/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_ledger_fetchai --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} + poetry run pytest -rfE plugins/aea-ledger-ethereum/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_ledger_ethereum --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} + poetry run pytest -rfE plugins/aea-ledger-cosmos/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_ledger_cosmos --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} + poetry run pytest -rfE plugins/aea-cli-ipfs/tests --cov-report=html --cov-report=xml --cov-report=term --cov-report=term-missing --cov=aea_cli_ipfs --cov-config=.coveragerc --suppress-no-test-exit-code {posargs} -[testenv:plugins-py3.7] -basepython = python3.7 -commands = {[plugins]commands} -[testenv:plugins-py3.7-cov] -basepython = python3.7 -usedevelop = True -commands = {[plugins]commands} [testenv:plugins-py3.8] basepython = python3.8 @@ -141,58 +70,63 @@ commands = {[plugins]commands} basepython = python3.10 commands = {[plugins]commands} +[testenv:plugins-py3.8-cov] +basepython = python3.8 +usedevelop = True +commands = {[plugins]commands} + [testenv:bandit] skipsdist = True skip_install = True -deps = - bandit==1.7.0 -commands = bandit -r aea benchmark examples packages \ +commands = + poetry run python ./install_packages.py bandit + poetry run bandit -r aea benchmark examples packages \ plugins/aea-ledger-fetchai/aea_ledger_fetchai \ plugins/aea-ledger-ethereum/aea_ledger_ethereum \ plugins/aea-ledger-cosmos/aea_ledger_cosmos \ plugins/aea-cli-ipfs/aea_cli_ipfs - bandit -s B101 -r tests scripts + poetry run bandit -s B101 -r tests scripts [testenv:black] skipsdist = True skip_install = True -deps = - black==19.10b0 -commands = black aea benchmark examples packages plugins scripts tests +commands = + poetry run python ./install_packages.py black + poetry run black aea benchmark examples packages plugins scripts tests [testenv:black-check] skipsdist = True skip_install = True -deps = - black==19.10b0 -commands =black aea benchmark examples packages plugins scripts tests --check --verbose +commands = + poetry run python ./install_packages.py black + poetry run black aea benchmark examples packages plugins scripts tests --check --verbose [testenv:isort] skipsdist = True skip_install = True -deps = - isort==5.7.0 -commands = isort aea benchmark examples packages plugins scripts tests +commands = + poetry run python ./install_packages.py isort + poetry run isort aea benchmark examples packages plugins scripts tests [testenv:isort-check] skipsdist = True skip_install = True -deps = - isort==5.7.0 -commands = isort --check-only --verbose aea benchmark examples packages plugins scripts tests +commands = + poetry run python ./install_packages.py isort + poetry run isort --check-only --verbose aea benchmark examples packages plugins scripts tests [testenv:copyright_check] skipsdist = True skip_install = True -deps = -commands = {toxinidir}/scripts/check_copyright_notice.py --directory {toxinidir} +commands = + python {toxinidir}/scripts/check_copyright_notice.py --directory {toxinidir} [testenv:hash_check] skipsdist = True usedevelop = True -deps = - ipfshttpclient==0.6.1 -commands = {toxinidir}/scripts/generate_ipfs_hashes.py --check {posargs} +commands = + poetry run python ./install_packages.py ipfshttpclient + poetry run python {toxinidir}/scripts/generate_ipfs_hashes.py --check {posargs} [testenv:package_version_checks] skipsdist = True @@ -209,103 +143,78 @@ commands = {toxinidir}/scripts/check_packages.py [testenv:docs] skipsdist = True skip_install = True -deps = - bs4==0.0.1 - jinja2==3.0.3 - markdown==3.3.6 - mkdocs==1.1 - pygments ==2.7.4 - mkdocs-material==6.2.8 - pymdown-extensions==9.1 -commands = pip3 install git+https://github.com/pugong/mkdocs-mermaid-plugin.git#egg=mkdocs-mermaid-plugin - mkdocs build --clean +commands = + poetry install --only docs + poetry run mkdocs build --clean [testenv:docs-serve] skipsdist = True skip_install = True -deps = - bs4==0.0.1 - jinja2==3.0.3 - markdown==3.3.6 - mkdocs==1.1 - mkdocs-material==6.2.8 - pymdown-extensions==9.1 -commands = pip3 install git+https://github.com/pugong/mkdocs-mermaid-plugin.git#egg=mkdocs-mermaid-plugin - mkdocs build --clean - python -c 'print("###### Starting local server. Press Control+C to stop server ######")' - mkdocs serve -a localhost:8080 +commands = + poetry install --only docs + poetry run mkdocs serve -a localhost:8080 + [testenv:flake8] skipsdist = True skip_install = True -deps = - flake8==3.7.9 - flake8-bugbear==20.1.4 - flake8-docstrings==1.6.0 - flake8-eradicate==0.4.0 - flake8-isort==4.0.0 - pydocstyle==3.0.0 -commands = flake8 aea benchmark examples packages plugins scripts tests +commands = + poetry run python ./install_packages.py "flake8.*" pydocstyle + poetry run flake8 aea benchmark examples packages plugins scripts tests [testenv:liccheck] skipsdist = True -usedevelop = True -deps = - liccheck==0.6.0 -commands = {toxinidir}/scripts/freeze_dependencies.py -o {envtmpdir}/requirements.txt - liccheck -s strategy.ini -r {envtmpdir}/requirements.txt -l PARANOID +commands = + poetry install --only packages,main + poetry run python ./install_packages.py liccheck + poetry run {toxinidir}/scripts/freeze_dependencies.py -o {envtmpdir}/tmp-requirements.txt + poetry run liccheck -s strategy.ini -r {envtmpdir}/tmp-requirements.txt -l PARANOID [testenv:mypy] skipsdist = True skip_install = True -deps = - aiohttp>=3.7.4,<3.8 - base58>=1.0.3 - bech32==1.2.0 - mypy==0.761 - packaging>=20.4,<=21.5 - web3==5.12.0 - yoti==2.14.0 - asn1crypto==1.4.0 -commands = mypy aea packages --disallow-untyped-defs - mypy benchmark examples --check-untyped-defs - mypy scripts tests +commands = + poetry install --only packages,main,testing,types + poetry run python ./install_packages.py mypy + poetry run mypy aea packages --disallow-untyped-defs + poetry run mypy benchmark examples --check-untyped-defs + poetry run mypy scripts + poetry run mypy tests --exclude "serialization.py" + + [testenv:pylint] whitelist_externals = /bin/sh skipsdist = True -deps = - pylint==2.6.0 - pytest==7.0.0 - gitpython>=3.1.14 - commands = - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-ethereum - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-cosmos - python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-fetchai - python -m pip install --no-deps file://{toxinidir}/plugins/aea-cli-ipfs - sh -c "pylint aea benchmark packages plugins/aea-ledger-fetchai/aea_ledger_fetchai plugins/aea-ledger-ethereum/aea_ledger_ethereum plugins/aea-ledger-cosmos/aea_ledger_cosmos plugins/aea-cli-ipfs/aea_cli_ipfs scripts examples/*" + poetry run python ./install_packages.py pylint pytest gitpython + # pytest gitpython installed for scripts and aea testing tools source code checks + poetry run python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-ethereum + poetry run python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-cosmos + poetry run python -m pip install --no-deps file://{toxinidir}/plugins/aea-ledger-fetchai + poetry run python -m pip install --no-deps file://{toxinidir}/plugins/aea-cli-ipfs + poetry run sh -c "pylint aea benchmark packages plugins/aea-ledger-fetchai/aea_ledger_fetchai plugins/aea-ledger-ethereum/aea_ledger_ethereum plugins/aea-ledger-cosmos/aea_ledger_cosmos plugins/aea-cli-ipfs/aea_cli_ipfs scripts examples/*" [testenv:safety] skipsdist = True skip_install = True -deps = - safety==1.10.3 -commands = safety check -i 37524 -i 38038 -i 37776 -i 38039 -i 39621 -i 40291 -i 39706 +commands = + poetry run python ./install_packages.py safety + poetry run safety check -i 37524 -i 38038 -i 37776 -i 38039 -i 39621 -i 40291 -i 39706 -i 44610 -i 50473 [testenv:vulture] skipsdist = True skip_install = True -deps = - vulture==2.3 -commands = vulture aea scripts/whitelist.py --exclude "*_pb2.py" +commands = + poetry run python ./install_packages.py vulture + poetry run vulture aea scripts/whitelist.py --exclude "*_pb2.py" [testenv:darglint] skipsdist = True skip_install = True -deps = - darglint==1.8.1 -commands = darglint aea benchmark examples libs packages plugins scripts +commands = + poetry run python ./install_packages.py darglint + poetry run darglint aea benchmark examples libs packages plugins scripts [testenv:check_doc_links] skipsdist = True @@ -316,18 +225,19 @@ commands = {toxinidir}/scripts/check_doc_links.py [testenv:check_api_docs] skipsdist = True usedevelop = True -deps = - pydoc-markdown==3.10.3 -commands = {toxinidir}/scripts/generate_api_docs.py --check-clean +commands = + poetry run python ./install_packages.py pydoc-markdown + poetry run {toxinidir}/scripts/generate_api_docs.py --check-clean [testenv:check_generate_all_protocols] skipsdist = True usedevelop = True -deps = - ipfshttpclient==0.6.1 - black==19.10b0 - isort==5.7.0 -commands = {toxinidir}/scripts/generate_all_protocols.py --no-bump --check-clean +setenv = + PYTHONPATH = {toxinidir} +commands = + poetry run pip install .[all] + poetry run python ./install_packages.py black isort ipfshttpclient + poetry run ./scripts/generate_all_protocols.py --no-bump --check-clean [testenv:spell_check] skipsdist = True From b831a7fa8a9e603bd1e0ff0bf99023c9bc930ba5 Mon Sep 17 00:00:00 2001 From: Yuri Turchenkov Date: Thu, 20 Oct 2022 18:44:50 +0300 Subject: [PATCH 4/7] fix (protocol generator): custom types within union (#2779) --- aea/protocols/generator/base.py | 85 +++- aea/protocols/generator/common.py | 15 + .../generator/extract_specification.py | 10 + aea/protocols/generator/validate.py | 19 +- .../data/generator/t_protocol/custom_types.py | 20 +- tests/data/generator/t_protocol/message.py | 53 ++- tests/data/generator/t_protocol/protocol.yaml | 10 +- .../generator/t_protocol/serialization.py | 370 +++++++++++------- .../generator/t_protocol/t_protocol.proto | 106 ++++- .../generator/t_protocol/t_protocol_pb2.py | 232 ++++++++--- .../generator/t_protocol_no_ct/protocol.yaml | 6 +- .../t_protocol_no_ct/serialization.py | 296 ++++++++------ .../t_protocol_no_ct/t_protocol_no_ct.proto | 49 ++- .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 34 +- tests/data/hashes.csv | 4 +- .../t_protocol/custom_types.py | 20 +- .../reference_protocols/t_protocol/message.py | 53 ++- .../t_protocol/protocol.yaml | 10 +- .../t_protocol/serialization.py | 370 +++++++++++------- .../t_protocol/t_protocol.proto | 106 ++++- .../t_protocol/t_protocol_pb2.py | 232 ++++++++--- .../t_protocol_no_ct/protocol.yaml | 6 +- .../t_protocol_no_ct/serialization.py | 296 ++++++++------ .../t_protocol_no_ct/t_protocol_no_ct.proto | 49 ++- .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 34 +- tests/data/sample_specification.yaml | 54 ++- .../sample_specification_no_custom_types.yaml | 11 +- .../test_extract_specification.py | 31 +- .../test_generator/test_generator.py | 49 ++- .../test_generator/test_validate.py | 62 +-- 30 files changed, 1810 insertions(+), 882 deletions(-) diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index 2f9d0e9c62..1b0aad019f 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -19,6 +19,7 @@ """This module contains the protocol generator.""" import itertools import os +import re import shutil # pylint: skip-file @@ -48,6 +49,7 @@ _create_protocol_file, _get_sub_types_of_compositional_types, _includes_custom_type, + _is_compositional_type, _python_pt_or_ct_type_to_proto_type, _to_camel_case, _union_sub_type_to_protobuf_variable_name, @@ -297,8 +299,10 @@ def _to_custom_custom(self, content_type: str) -> str: new_content_type = content_type if _includes_custom_type(content_type): for custom_type in self.spec.all_custom_types: - new_content_type = new_content_type.replace( - custom_type, self.spec.custom_custom_types[custom_type] + new_content_type = re.sub( + rf"(^|[ \[\,])({custom_type})($|[, \]])", + rf"\g<1>{self.spec.custom_custom_types[custom_type]}\g<3>", + new_content_type, ) return new_content_type @@ -1340,58 +1344,109 @@ def _custom_types_module_str(self) -> str: self._change_indent(-2) return cls_str + def _to_python_type(self, content_type: str) -> str: + """ + Return python type. + + :param content_type: str + :return: str + """ + if not _is_compositional_type(content_type): + return content_type + m = re.search(r"^(pt:)?([a-zA-Z0-9_]+)(\[.*)?", content_type) + if not m: + return content_type + type_ = m.groups()[1].lower() + if type_ == "frozenset": + return "(set, frozenset)" + if type_ == "tuple": + return "(list, tuple)" + + return type_ + def _encoding_message_content_from_python_to_protobuf( self, content_name: str, content_type: str, + performative_name: Optional[str] = None, ) -> str: """ Produce the encoding of message contents for the serialisation class. :param content_name: the name of the content to be encoded :param content_type: the type of the content to be encoded + :param performative_name: optional performative name of the content to be encoded :return: the encoding string """ + performative_name = performative_name or content_name encoding_str = "" if content_type in PYTHON_TYPE_TO_PROTO_TYPE.keys(): encoding_str += self.indent + "{} = msg.{}\n".format( - content_name, content_name + performative_name, content_name ) encoding_str += self.indent + "performative.{} = {}\n".format( - content_name, content_name + performative_name, performative_name ) elif content_type.startswith("FrozenSet") or content_type.startswith("Tuple"): encoding_str += self.indent + "{} = msg.{}\n".format( content_name, content_name ) encoding_str += self.indent + "performative.{}.extend({})\n".format( - content_name, content_name + performative_name, content_name ) elif content_type.startswith("Dict"): encoding_str += self.indent + "{} = msg.{}\n".format( content_name, content_name ) encoding_str += self.indent + "performative.{}.update({})\n".format( - content_name, content_name + performative_name, content_name ) + elif content_type.startswith("Union"): sub_types = _get_sub_types_of_compositional_types(content_type) + encoding_str += self.indent + f'if msg.is_set("{content_name}"):\n' + self._change_indent(1) + elif_add = "" for sub_type in sub_types: sub_type_name_in_protobuf = _union_sub_type_to_protobuf_variable_name( content_name, sub_type ) - encoding_str += self.indent + 'if msg.is_set("{}"):\n'.format( - sub_type_name_in_protobuf + extra = "" + if _is_compositional_type(sub_type): + subt = _get_sub_types_of_compositional_types(sub_type) + if "dict" in sub_type.lower(): + extra = f" and all(map(lambda x: isinstance(x[0], {subt[0]}) and isinstance(x[1], {subt[1]}), msg.{content_name}.items()))" + else: + extra = f" and all(map(lambda x: isinstance(x, {subt[0]}), msg.{content_name}))" + encoding_str += ( + self.indent + + f"{elif_add}if isinstance(msg.{content_name}, {self._to_python_type(sub_type)}){extra}:\n" ) self._change_indent(1) encoding_str += self.indent + "performative.{}_is_set = True\n".format( sub_type_name_in_protobuf ) encoding_str += self._encoding_message_content_from_python_to_protobuf( - sub_type_name_in_protobuf, sub_type + content_name, sub_type, performative_name=sub_type_name_in_protobuf ) self._change_indent(-1) + elif_add = "el" + + encoding_str += self.indent + f"elif msg.{content_name} is None:\n" + self._change_indent(1) + encoding_str += self.indent + "pass\n" + self._change_indent(-1) + + encoding_str += self.indent + "else:\n" + self._change_indent(1) + encoding_str += ( + self.indent + + f"raise ValueError(f'Bad value set to `{content_name}` {{msg.{content_name} }}')\n" + ) + self._change_indent(-1) + + self._change_indent(-1) elif content_type.startswith("Optional"): sub_type = _get_sub_types_of_compositional_types(content_type)[0] if not sub_type.startswith("Union"): @@ -1409,10 +1464,10 @@ def _encoding_message_content_from_python_to_protobuf( self._change_indent(-1) else: encoding_str += self.indent + "{} = msg.{}\n".format( - content_name, content_name + performative_name, content_name ) encoding_str += self.indent + "{}.encode(performative.{}, {})\n".format( - content_type, content_name, content_name + content_type, performative_name, performative_name ) return encoding_str @@ -1454,7 +1509,7 @@ def _decoding_message_content_from_protobuf_to_python( content_name, self.protocol_specification.name, performative, - content_name, + variable_name, ) decoding_str += self.indent + "{}_frozenset = frozenset({})\n".format( content_name, content_name @@ -1470,7 +1525,7 @@ def _decoding_message_content_from_protobuf_to_python( content_name, self.protocol_specification.name, performative, - content_name, + variable_name, ) decoding_str += self.indent + "{}_tuple = tuple({})\n".format( content_name, content_name @@ -1486,7 +1541,7 @@ def _decoding_message_content_from_protobuf_to_python( content_name, self.protocol_specification.name, performative, - content_name, + variable_name, ) decoding_str += self.indent + "{}_dict = dict({})\n".format( content_name, content_name @@ -1816,7 +1871,7 @@ def _content_to_proto_field_str( content_name, sub_type ) content_to_proto_field_str, tag_no = self._content_to_proto_field_str( - sub_type_name, sub_type, tag_no + sub_type_name, f"Optional[{sub_type}]", tag_no ) entry += content_to_proto_field_str elif content_type.startswith("Optional"): # it is an diff --git a/aea/protocols/generator/common.py b/aea/protocols/generator/common.py index c0feb726f9..888c44caaf 100644 --- a/aea/protocols/generator/common.py +++ b/aea/protocols/generator/common.py @@ -287,6 +287,7 @@ def _includes_custom_type(content_type: str) -> bool: :param content_type: the content type :return: Boolean result """ + if content_type.startswith("Optional"): sub_type = _get_sub_types_of_compositional_types(content_type)[0] result = _includes_custom_type(sub_type) @@ -574,3 +575,17 @@ def apply_protolint(path_to_proto_file: str, name: str) -> Tuple[bool, str]: lines_to_show.append(line) error_message = "\n".join(lines_to_show) return False, error_message + + +def _is_compositional_type(content_type: str) -> bool: + """Checks if content_type is compositional. + + :param content_type: the type string. + :return: bool. + """ + for valid_compositional_type in ( + SPECIFICATION_COMPOSITIONAL_TYPES + PYTHON_COMPOSITIONAL_TYPES + ): + if content_type.startswith(valid_compositional_type): + return True + return False diff --git a/aea/protocols/generator/extract_specification.py b/aea/protocols/generator/extract_specification.py index 5204b1a2f5..2e934b7da7 100644 --- a/aea/protocols/generator/extract_specification.py +++ b/aea/protocols/generator/extract_specification.py @@ -28,6 +28,7 @@ from aea.protocols.generator.common import ( SPECIFICATION_PRIMITIVE_TYPES, _get_sub_types_of_compositional_types, + _is_compositional_type, ) @@ -212,6 +213,15 @@ def extract( if content_type.startswith("ct:"): all_custom_types_set.add(pythonic_content_type) + for sub_type in ( + list(_get_sub_types_of_compositional_types(content_type)) + if _is_compositional_type(content_type) + else [] + ): + if sub_type.startswith("ct:"): + pythonic_content_type = _specification_type_to_python_type(sub_type) + all_custom_types_set.add(pythonic_content_type) + # sort the sets spec.all_performatives = sorted(all_performatives_set) spec.all_custom_types = sorted(all_custom_types_set) diff --git a/aea/protocols/generator/validate.py b/aea/protocols/generator/validate.py index 32c1eb8346..27d5417150 100644 --- a/aea/protocols/generator/validate.py +++ b/aea/protocols/generator/validate.py @@ -27,6 +27,7 @@ SPECIFICATION_PRIMITIVE_TYPES, _get_sub_types_of_compositional_types, _has_matched_brackets, + _is_compositional_type, ) @@ -38,7 +39,10 @@ PERFORMATIVE_REGEX_PATTERN = "^[a-zA-Z0-9]+$|^[a-zA-Z0-9]+(_?[a-zA-Z0-9]+)+$" CONTENT_NAME_REGEX_PATTERN = "^[a-zA-Z0-9]+$|^[a-zA-Z0-9]+(_?[a-zA-Z0-9]+)+$" -CT_CONTENT_TYPE_REGEX_PATTERN = "^ct:([A-Z]+[a-z]*)+$" # or maybe "ct:(?:[A-Z][a-z]+)+" or # "^ct:[A-Z][a-zA-Z0-9]*$" +CT_NAME_RE = ( + "[A-Z][a-zA-Z0-9]*" # or maybe "ct:(?:[A-Z][a-z]+)+" or # "^ct:([A-Z]+[a-z]*)+$" +) +CT_CONTENT_TYPE_REGEX_PATTERN = f"^ct:{CT_NAME_RE}$" ROLE_REGEX_PATTERN = "^[a-zA-Z0-9]+$|^[a-zA-Z0-9]+(_?[a-zA-Z0-9]+)+$" END_STATE_REGEX_PATTERN = "^[a-zA-Z0-9]+$|^[a-zA-Z0-9]+(_?[a-zA-Z0-9]+)+$" @@ -225,9 +229,9 @@ def _is_valid_union(content_type: str) -> bool: if not ( _is_valid_ct(sub_type) or _is_valid_pt(sub_type) - or _is_valid_set(sub_type) - or _is_valid_list(sub_type) or _is_valid_dict(sub_type) + or _is_valid_list(sub_type) + or _is_valid_set(sub_type) ): return False @@ -480,8 +484,13 @@ def _validate_speech_acts_section( content_names_types[content_name] = (performative, content_type) - if _is_valid_ct(content_type): - custom_types_set.add(content_type.strip()) + for sub_type in ( + list(_get_sub_types_of_compositional_types(content_type)) + if _is_compositional_type(content_type) + else [] + ) + [content_type]: + if _is_valid_ct(sub_type): + custom_types_set.add(sub_type.strip()) return True, "Speech-acts are valid.", performatives_set, custom_types_set diff --git a/tests/data/generator/t_protocol/custom_types.py b/tests/data/generator/t_protocol/custom_types.py index 0a2feeda2c..6887755b16 100644 --- a/tests/data/generator/t_protocol/custom_types.py +++ b/tests/data/generator/t_protocol/custom_types.py @@ -77,7 +77,7 @@ def decode(cls, data_model_protobuf_object) -> "DataModel": :param data_model_protobuf_object: the protocol buffer object whose type corresponds with this class. :return: A new instance of this class that matches the protocol buffer object in the 'data_model_protobuf_object' argument. """ - return DataModel( + return cls( bytes_field=data_model_protobuf_object.bytes_field, int_field=data_model_protobuf_object.int_field, float_field=data_model_protobuf_object.float_field, @@ -90,7 +90,7 @@ def decode(cls, data_model_protobuf_object) -> "DataModel": def __eq__(self, other): """Overrides the default implementation""" - if not isinstance(other, DataModel): + if not isinstance(other, self.__class__): return False return ( self.bytes_field == other.bytes_field @@ -103,3 +103,19 @@ def __eq__(self, other): and self.list_field == other.list_field and self.dict_field == other.dict_field ) + + +class DataModel1(DataModel): + """This class represents an instance of DataModel1.""" + + +class DataModel2(DataModel): + """This class represents an instance of DataModel2.""" + + +class DataModel3(DataModel): + """This class represents an instance of DataModel3.""" + + +class DataModel4(DataModel): + """This class represents an instance of DataModel3.""" diff --git a/tests/data/generator/t_protocol/message.py b/tests/data/generator/t_protocol/message.py index 63d0b7c2a3..933a026c43 100644 --- a/tests/data/generator/t_protocol/message.py +++ b/tests/data/generator/t_protocol/message.py @@ -28,6 +28,10 @@ from aea.protocols.base import Message from tests.data.generator.t_protocol.custom_types import DataModel as CustomDataModel +from tests.data.generator.t_protocol.custom_types import DataModel1 as CustomDataModel1 +from tests.data.generator.t_protocol.custom_types import DataModel2 as CustomDataModel2 +from tests.data.generator.t_protocol.custom_types import DataModel3 as CustomDataModel3 +from tests.data.generator.t_protocol.custom_types import DataModel4 as CustomDataModel4 _default_logger = logging.getLogger("aea.packages.fetchai.protocols.t_protocol.message") @@ -45,6 +49,14 @@ class TProtocolMessage(Message): DataModel = CustomDataModel + DataModel1 = CustomDataModel1 + + DataModel2 = CustomDataModel2 + + DataModel3 = CustomDataModel3 + + DataModel4 = CustomDataModel4 + class Performative(Message.Performative): """Performatives for the t_protocol protocol.""" @@ -111,6 +123,7 @@ class _SlotsCls: "content_str", "content_union_1", "content_union_2", + "content_union_3", "dialogue_reference", "message_id", "performative", @@ -384,9 +397,9 @@ def content_o_bool(self) -> Optional[bool]: return cast(Optional[bool], self.get("content_o_bool")) @property - def content_o_ct(self) -> Optional[CustomDataModel]: + def content_o_ct(self) -> Optional[CustomDataModel4]: """Get the 'content_o_ct' content from the message.""" - return cast(Optional[CustomDataModel], self.get("content_o_ct")) + return cast(Optional[CustomDataModel4], self.get("content_o_ct")) @property def content_o_dict_str_int(self) -> Optional[Dict[str, int]]: @@ -449,7 +462,7 @@ def content_str(self) -> str: def content_union_1( self, ) -> Union[ - CustomDataModel, + CustomDataModel1, bytes, int, float, @@ -463,7 +476,7 @@ def content_union_1( enforce(self.is_set("content_union_1"), "'content_union_1' content is not set.") return cast( Union[ - CustomDataModel, + CustomDataModel1, bytes, int, float, @@ -489,6 +502,7 @@ def content_union_2( Dict[str, int], Dict[int, float], Dict[bool, bytes], + int, ]: """Get the 'content_union_2' content from the message.""" enforce(self.is_set("content_union_2"), "'content_union_2' content is not set.") @@ -503,10 +517,19 @@ def content_union_2( Dict[str, int], Dict[int, float], Dict[bool, bytes], + int, ], self.get("content_union_2"), ) + @property + def content_union_3(self) -> Union[CustomDataModel2, CustomDataModel3]: + """Get the 'content_union_3' content from the message.""" + enforce(self.is_set("content_union_3"), "'content_union_3' content is not set.") + return cast( + Union[CustomDataModel2, CustomDataModel3], self.get("content_union_3") + ) + def _is_consistent(self) -> bool: """Check that the message follows the t_protocol protocol.""" try: @@ -1040,9 +1063,9 @@ def _is_consistent(self) -> bool: ), ) elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_MT: - expected_nb_of_contents = 2 + expected_nb_of_contents = 3 enforce( - isinstance(self.content_union_1, CustomDataModel) + isinstance(self.content_union_1, CustomDataModel1) or isinstance(self.content_union_1, bool) or isinstance(self.content_union_1, bytes) or isinstance(self.content_union_1, dict) @@ -1051,7 +1074,7 @@ def _is_consistent(self) -> bool: or type(self.content_union_1) is int or isinstance(self.content_union_1, str) or isinstance(self.content_union_1, tuple), - "Invalid type for content 'content_union_1'. Expected either of '['DataModel', 'bool', 'bytes', 'dict', 'float', 'frozenset', 'int', 'str', 'tuple']'. Found '{}'.".format( + "Invalid type for content 'content_union_1'. Expected either of '['DataModel1', 'bool', 'bytes', 'dict', 'float', 'frozenset', 'int', 'str', 'tuple']'. Found '{}'.".format( type(self.content_union_1) ), ) @@ -1083,8 +1106,9 @@ def _is_consistent(self) -> bool: enforce( isinstance(self.content_union_2, dict) or isinstance(self.content_union_2, frozenset) + or type(self.content_union_2) is int or isinstance(self.content_union_2, tuple), - "Invalid type for content 'content_union_2'. Expected either of '['dict', 'frozenset', 'tuple']'. Found '{}'.".format( + "Invalid type for content 'content_union_2'. Expected either of '['dict', 'frozenset', 'int', 'tuple']'. Found '{}'.".format( type(self.content_union_2) ), ) @@ -1136,14 +1160,21 @@ def _is_consistent(self) -> bool: ), "Invalid type for dictionary key, value in content 'content_union_2'. Expected 'bool','bytes' or 'int','float' or 'str','int'.", ) + enforce( + isinstance(self.content_union_3, CustomDataModel2) + or isinstance(self.content_union_3, CustomDataModel3), + "Invalid type for content 'content_union_3'. Expected either of '['DataModel2', 'DataModel3']'. Found '{}'.".format( + type(self.content_union_3) + ), + ) elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_O: expected_nb_of_contents = 0 if self.is_set("content_o_ct"): expected_nb_of_contents += 1 - content_o_ct = cast(CustomDataModel, self.content_o_ct) + content_o_ct = cast(CustomDataModel4, self.content_o_ct) enforce( - isinstance(content_o_ct, CustomDataModel), - "Invalid type for content 'content_o_ct'. Expected 'DataModel'. Found '{}'.".format( + isinstance(content_o_ct, CustomDataModel4), + "Invalid type for content 'content_o_ct'. Expected 'DataModel4'. Found '{}'.".format( type(content_o_ct) ), ) diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index 02dcae45d0..28f05f8556 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -8,12 +8,12 @@ license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: __init__.py: QmboLH5iRdWk7oeaDHxoA4WpTC8TCQUMKmLQfHVdFGwJCz - custom_types.py: QmWg8HFav8w9tfZfMrTG5Uo7QpexvYKKkhpGPD18233pLw + custom_types.py: QmPTzGJCB3waK3aQbBjdDpm8JRe4ApERsFqJ1RP5b9M45Z dialogues.py: Qmaaa73ZuSE85xwkXaiKHUFXjG7aMECvAGxAZQvmyWc55X - message.py: QmaPVDsoC7sdGE2x7u7KuVqeimHvPEsvJNcZzKb78kBqwS - serialization.py: Qmd4bz59ZHqrCtKnnmqBwLe4jCsmGJJnKifaQcmLyW7o1z - t_protocol.proto: QmXR8G9317z8a4XjRFGzKmpxEY2xtLLadBxSqmWFFeQpu4 - t_protocol_pb2.py: QmegXmkFAJqD5waFzfXSuJJrtBqRU96vCrzHQrFVyT6aWc + message.py: QmVUh2pW5ME3KVZvisqij6s1VV3Z1GgzLPbgo746byhr4Q + serialization.py: QmeDtjUVeVPKDyMs5hBiGUtgWi6GS3KVE8P4xqmj6L9Cx7 + t_protocol.proto: QmY6Gw3Y7iKY2zR4kK6cx8cR1jjJivhLsSnP6HDk8843si + t_protocol_pb2.py: QmWW1wUqN4X5VCQCmPP1TiHgpNpcNM1z59TnDPZuQ4L8aR fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol/serialization.py b/tests/data/generator/t_protocol/serialization.py index 50fbcc8149..0d4953f6d6 100644 --- a/tests/data/generator/t_protocol/serialization.py +++ b/tests/data/generator/t_protocol/serialization.py @@ -27,7 +27,13 @@ from aea.protocols.base import Message, Serializer from tests.data.generator.t_protocol import t_protocol_pb2 -from tests.data.generator.t_protocol.custom_types import DataModel +from tests.data.generator.t_protocol.custom_types import ( + DataModel, + DataModel1, + DataModel2, + DataModel3, + DataModel4, +) from tests.data.generator.t_protocol.message import TProtocolMessage @@ -130,130 +136,181 @@ def encode(msg: Message) -> bytes: t_protocol_msg.performative_pmt.CopyFrom(performative) elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_MT: performative = t_protocol_pb2.TProtocolMessage.Performative_Mt_Performative() # type: ignore - if msg.is_set("content_union_1_type_DataModel"): - performative.content_union_1_type_DataModel_is_set = True - content_union_1_type_DataModel = msg.content_union_1_type_DataModel - DataModel.encode( - performative.content_union_1_type_DataModel, - content_union_1_type_DataModel, - ) - if msg.is_set("content_union_1_type_bytes"): - performative.content_union_1_type_bytes_is_set = True - content_union_1_type_bytes = msg.content_union_1_type_bytes - performative.content_union_1_type_bytes = content_union_1_type_bytes - if msg.is_set("content_union_1_type_int"): - performative.content_union_1_type_int_is_set = True - content_union_1_type_int = msg.content_union_1_type_int - performative.content_union_1_type_int = content_union_1_type_int - if msg.is_set("content_union_1_type_float"): - performative.content_union_1_type_float_is_set = True - content_union_1_type_float = msg.content_union_1_type_float - performative.content_union_1_type_float = content_union_1_type_float - if msg.is_set("content_union_1_type_bool"): - performative.content_union_1_type_bool_is_set = True - content_union_1_type_bool = msg.content_union_1_type_bool - performative.content_union_1_type_bool = content_union_1_type_bool - if msg.is_set("content_union_1_type_str"): - performative.content_union_1_type_str_is_set = True - content_union_1_type_str = msg.content_union_1_type_str - performative.content_union_1_type_str = content_union_1_type_str - if msg.is_set("content_union_1_type_set_of_int"): - performative.content_union_1_type_set_of_int_is_set = True - content_union_1_type_set_of_int = msg.content_union_1_type_set_of_int - performative.content_union_1_type_set_of_int.extend( - content_union_1_type_set_of_int - ) - if msg.is_set("content_union_1_type_list_of_bool"): - performative.content_union_1_type_list_of_bool_is_set = True - content_union_1_type_list_of_bool = ( - msg.content_union_1_type_list_of_bool - ) - performative.content_union_1_type_list_of_bool.extend( - content_union_1_type_list_of_bool - ) - if msg.is_set("content_union_1_type_dict_of_str_int"): - performative.content_union_1_type_dict_of_str_int_is_set = True - content_union_1_type_dict_of_str_int = ( - msg.content_union_1_type_dict_of_str_int - ) - performative.content_union_1_type_dict_of_str_int.update( - content_union_1_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_set_of_bytes"): - performative.content_union_2_type_set_of_bytes_is_set = True - content_union_2_type_set_of_bytes = ( - msg.content_union_2_type_set_of_bytes - ) - performative.content_union_2_type_set_of_bytes.extend( - content_union_2_type_set_of_bytes - ) - if msg.is_set("content_union_2_type_set_of_int"): - performative.content_union_2_type_set_of_int_is_set = True - content_union_2_type_set_of_int = msg.content_union_2_type_set_of_int - performative.content_union_2_type_set_of_int.extend( - content_union_2_type_set_of_int - ) - if msg.is_set("content_union_2_type_set_of_str"): - performative.content_union_2_type_set_of_str_is_set = True - content_union_2_type_set_of_str = msg.content_union_2_type_set_of_str - performative.content_union_2_type_set_of_str.extend( - content_union_2_type_set_of_str - ) - if msg.is_set("content_union_2_type_list_of_float"): - performative.content_union_2_type_list_of_float_is_set = True - content_union_2_type_list_of_float = ( - msg.content_union_2_type_list_of_float - ) - performative.content_union_2_type_list_of_float.extend( - content_union_2_type_list_of_float - ) - if msg.is_set("content_union_2_type_list_of_bool"): - performative.content_union_2_type_list_of_bool_is_set = True - content_union_2_type_list_of_bool = ( - msg.content_union_2_type_list_of_bool - ) - performative.content_union_2_type_list_of_bool.extend( - content_union_2_type_list_of_bool - ) - if msg.is_set("content_union_2_type_list_of_bytes"): - performative.content_union_2_type_list_of_bytes_is_set = True - content_union_2_type_list_of_bytes = ( - msg.content_union_2_type_list_of_bytes - ) - performative.content_union_2_type_list_of_bytes.extend( - content_union_2_type_list_of_bytes - ) - if msg.is_set("content_union_2_type_dict_of_str_int"): - performative.content_union_2_type_dict_of_str_int_is_set = True - content_union_2_type_dict_of_str_int = ( - msg.content_union_2_type_dict_of_str_int - ) - performative.content_union_2_type_dict_of_str_int.update( - content_union_2_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_dict_of_int_float"): - performative.content_union_2_type_dict_of_int_float_is_set = True - content_union_2_type_dict_of_int_float = ( - msg.content_union_2_type_dict_of_int_float - ) - performative.content_union_2_type_dict_of_int_float.update( - content_union_2_type_dict_of_int_float - ) - if msg.is_set("content_union_2_type_dict_of_bool_bytes"): - performative.content_union_2_type_dict_of_bool_bytes_is_set = True - content_union_2_type_dict_of_bool_bytes = ( - msg.content_union_2_type_dict_of_bool_bytes - ) - performative.content_union_2_type_dict_of_bool_bytes.update( - content_union_2_type_dict_of_bool_bytes - ) + if msg.is_set("content_union_1"): + if isinstance(msg.content_union_1, DataModel1): + performative.content_union_1_type_DataModel1_is_set = True + content_union_1_type_DataModel1 = msg.content_union_1 + DataModel1.encode( + performative.content_union_1_type_DataModel1, + content_union_1_type_DataModel1, + ) + elif isinstance(msg.content_union_1, bytes): + performative.content_union_1_type_bytes_is_set = True + content_union_1_type_bytes = msg.content_union_1 + performative.content_union_1_type_bytes = content_union_1_type_bytes + elif isinstance(msg.content_union_1, int): + performative.content_union_1_type_int_is_set = True + content_union_1_type_int = msg.content_union_1 + performative.content_union_1_type_int = content_union_1_type_int + elif isinstance(msg.content_union_1, float): + performative.content_union_1_type_float_is_set = True + content_union_1_type_float = msg.content_union_1 + performative.content_union_1_type_float = content_union_1_type_float + elif isinstance(msg.content_union_1, bool): + performative.content_union_1_type_bool_is_set = True + content_union_1_type_bool = msg.content_union_1 + performative.content_union_1_type_bool = content_union_1_type_bool + elif isinstance(msg.content_union_1, str): + performative.content_union_1_type_str_is_set = True + content_union_1_type_str = msg.content_union_1 + performative.content_union_1_type_str = content_union_1_type_str + elif isinstance(msg.content_union_1, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_1) + ): + performative.content_union_1_type_set_of_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_set_of_int.extend(content_union_1) + elif isinstance(msg.content_union_1, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_1) + ): + performative.content_union_1_type_list_of_bool_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_list_of_bool.extend( + content_union_1 + ) + elif isinstance(msg.content_union_1, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_1.items(), + ) + ): + performative.content_union_1_type_dict_of_str_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_dict_of_str_int.update( + content_union_1 + ) + elif msg.content_union_1 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_1` {msg.content_union_1 }" + ) + if msg.is_set("content_union_2"): + if isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_set_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_2) + ): + performative.content_union_2_type_set_of_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_int.extend(content_union_2) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, str), msg.content_union_2) + ): + performative.content_union_2_type_set_of_str_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_str.extend(content_union_2) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, float), msg.content_union_2) + ): + performative.content_union_2_type_list_of_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_float.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bool_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bool.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_str_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_str_int.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], int) and isinstance(x[1], float), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_int_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_int_float.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], bool) and isinstance(x[1], bytes), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_bool_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_bool_bytes.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, int): + performative.content_union_2_type_int_is_set = True + content_union_2_type_int = msg.content_union_2 + performative.content_union_2_type_int = content_union_2_type_int + elif msg.content_union_2 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_2` {msg.content_union_2 }" + ) + if msg.is_set("content_union_3"): + if isinstance(msg.content_union_3, DataModel2): + performative.content_union_3_type_DataModel2_is_set = True + content_union_3_type_DataModel2 = msg.content_union_3 + DataModel2.encode( + performative.content_union_3_type_DataModel2, + content_union_3_type_DataModel2, + ) + elif isinstance(msg.content_union_3, DataModel3): + performative.content_union_3_type_DataModel3_is_set = True + content_union_3_type_DataModel3 = msg.content_union_3 + DataModel3.encode( + performative.content_union_3_type_DataModel3, + content_union_3_type_DataModel3, + ) + elif msg.content_union_3 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_3` {msg.content_union_3 }" + ) t_protocol_msg.performative_mt.CopyFrom(performative) elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_O: performative = t_protocol_pb2.TProtocolMessage.Performative_O_Performative() # type: ignore if msg.is_set("content_o_ct"): performative.content_o_ct_is_set = True content_o_ct = msg.content_o_ct - DataModel.encode(performative.content_o_ct, content_o_ct) + DataModel4.encode(performative.content_o_ct, content_o_ct) if msg.is_set("content_o_bool"): performative.content_o_bool_is_set = True content_o_bool = msg.content_o_bool @@ -418,11 +475,11 @@ def decode(obj: bytes) -> Message: content_dict_str_str_dict = dict(content_dict_str_str) performative_content["content_dict_str_str"] = content_dict_str_str_dict elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_MT: - if t_protocol_pb.performative_mt.content_union_1_type_DataModel_is_set: - pb2_content_union_1_type_DataModel = ( - t_protocol_pb.performative_mt.content_union_1_type_DataModel + if t_protocol_pb.performative_mt.content_union_1_type_DataModel1_is_set: + pb2_content_union_1_type_DataModel1 = ( + t_protocol_pb.performative_mt.content_union_1_type_DataModel1 ) - content_union_1 = DataModel.decode(pb2_content_union_1_type_DataModel) + content_union_1 = DataModel1.decode(pb2_content_union_1_type_DataModel1) performative_content["content_union_1"] = content_union_1 if t_protocol_pb.performative_mt.content_union_1_type_bytes_is_set: content_union_1 = ( @@ -446,65 +503,104 @@ def decode(obj: bytes) -> Message: content_union_1 = t_protocol_pb.performative_mt.content_union_1_type_str performative_content["content_union_1"] = content_union_1 if t_protocol_pb.performative_mt.content_union_1_type_set_of_int_is_set: - content_union_1 = t_protocol_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_pb.performative_mt.content_union_1_type_set_of_int + ) content_union_1_frozenset = frozenset(content_union_1) performative_content["content_union_1"] = content_union_1_frozenset if t_protocol_pb.performative_mt.content_union_1_type_list_of_bool_is_set: - content_union_1 = t_protocol_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_pb.performative_mt.content_union_1_type_list_of_bool + ) content_union_1_tuple = tuple(content_union_1) performative_content["content_union_1"] = content_union_1_tuple if ( t_protocol_pb.performative_mt.content_union_1_type_dict_of_str_int_is_set ): - content_union_1 = t_protocol_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_pb.performative_mt.content_union_1_type_dict_of_str_int + ) content_union_1_dict = dict(content_union_1) performative_content["content_union_1"] = content_union_1_dict if t_protocol_pb.performative_mt.content_union_2_type_set_of_bytes_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_set_of_bytes + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if t_protocol_pb.performative_mt.content_union_2_type_set_of_int_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_set_of_int + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if t_protocol_pb.performative_mt.content_union_2_type_set_of_str_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_set_of_str + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if t_protocol_pb.performative_mt.content_union_2_type_list_of_float_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_list_of_float + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if t_protocol_pb.performative_mt.content_union_2_type_list_of_bool_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_list_of_bool + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if t_protocol_pb.performative_mt.content_union_2_type_list_of_bytes_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_list_of_bytes + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_pb.performative_mt.content_union_2_type_dict_of_str_int_is_set ): - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_dict_of_str_int + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_pb.performative_mt.content_union_2_type_dict_of_int_float_is_set ): - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_dict_of_int_float + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_pb.performative_mt.content_union_2_type_dict_of_bool_bytes_is_set ): - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_dict_of_bool_bytes + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict + if t_protocol_pb.performative_mt.content_union_2_type_int_is_set: + content_union_2 = t_protocol_pb.performative_mt.content_union_2_type_int + performative_content["content_union_2"] = content_union_2 + if t_protocol_pb.performative_mt.content_union_3_type_DataModel2_is_set: + pb2_content_union_3_type_DataModel2 = ( + t_protocol_pb.performative_mt.content_union_3_type_DataModel2 + ) + content_union_3 = DataModel2.decode(pb2_content_union_3_type_DataModel2) + performative_content["content_union_3"] = content_union_3 + if t_protocol_pb.performative_mt.content_union_3_type_DataModel3_is_set: + pb2_content_union_3_type_DataModel3 = ( + t_protocol_pb.performative_mt.content_union_3_type_DataModel3 + ) + content_union_3 = DataModel3.decode(pb2_content_union_3_type_DataModel3) + performative_content["content_union_3"] = content_union_3 elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_O: if t_protocol_pb.performative_o.content_o_ct_is_set: pb2_content_o_ct = t_protocol_pb.performative_o.content_o_ct - content_o_ct = DataModel.decode(pb2_content_o_ct) + content_o_ct = DataModel4.decode(pb2_content_o_ct) performative_content["content_o_ct"] = content_o_ct if t_protocol_pb.performative_o.content_o_bool_is_set: content_o_bool = t_protocol_pb.performative_o.content_o_bool @@ -539,5 +635,5 @@ def decode(obj: bytes) -> Message: dialogue_reference=dialogue_reference, target=target, performative=performative, - **performative_content + **performative_content, ) diff --git a/tests/data/generator/t_protocol/t_protocol.proto b/tests/data/generator/t_protocol/t_protocol.proto index 1e5e15b1e9..efdeb1b627 100644 --- a/tests/data/generator/t_protocol/t_protocol.proto +++ b/tests/data/generator/t_protocol/t_protocol.proto @@ -16,6 +16,50 @@ message TProtocolMessage{ map dict_field = 8; } + message DataModel1{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + + message DataModel2{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + + message DataModel3{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + + message DataModel4{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + // Performatives and contents message Performative_Ct_Performative{ @@ -62,28 +106,52 @@ message TProtocolMessage{ } message Performative_Mt_Performative{ - DataModel content_union_1_type_DataModel = 1; - bytes content_union_1_type_bytes = 2; - int64 content_union_1_type_int = 3; - float content_union_1_type_float = 4; - bool content_union_1_type_bool = 5; - string content_union_1_type_str = 6; - repeated int64 content_union_1_type_set_of_int = 7; - repeated bool content_union_1_type_list_of_bool = 8; - map content_union_1_type_dict_of_str_int = 9; - repeated bytes content_union_2_type_set_of_bytes = 10; - repeated int64 content_union_2_type_set_of_int = 11; - repeated string content_union_2_type_set_of_str = 12; - repeated float content_union_2_type_list_of_float = 13; - repeated bool content_union_2_type_list_of_bool = 14; - repeated bytes content_union_2_type_list_of_bytes = 15; - map content_union_2_type_dict_of_str_int = 16; - map content_union_2_type_dict_of_int_float = 17; - map content_union_2_type_dict_of_bool_bytes = 18; + DataModel1 content_union_1_type_DataModel1 = 1; + bool content_union_1_type_DataModel1_is_set = 2; + bytes content_union_1_type_bytes = 3; + bool content_union_1_type_bytes_is_set = 4; + int64 content_union_1_type_int = 5; + bool content_union_1_type_int_is_set = 6; + float content_union_1_type_float = 7; + bool content_union_1_type_float_is_set = 8; + bool content_union_1_type_bool = 9; + bool content_union_1_type_bool_is_set = 10; + string content_union_1_type_str = 11; + bool content_union_1_type_str_is_set = 12; + repeated int64 content_union_1_type_set_of_int = 13; + bool content_union_1_type_set_of_int_is_set = 14; + repeated bool content_union_1_type_list_of_bool = 15; + bool content_union_1_type_list_of_bool_is_set = 16; + map content_union_1_type_dict_of_str_int = 17; + bool content_union_1_type_dict_of_str_int_is_set = 18; + repeated bytes content_union_2_type_set_of_bytes = 19; + bool content_union_2_type_set_of_bytes_is_set = 20; + repeated int64 content_union_2_type_set_of_int = 21; + bool content_union_2_type_set_of_int_is_set = 22; + repeated string content_union_2_type_set_of_str = 23; + bool content_union_2_type_set_of_str_is_set = 24; + repeated float content_union_2_type_list_of_float = 25; + bool content_union_2_type_list_of_float_is_set = 26; + repeated bool content_union_2_type_list_of_bool = 27; + bool content_union_2_type_list_of_bool_is_set = 28; + repeated bytes content_union_2_type_list_of_bytes = 29; + bool content_union_2_type_list_of_bytes_is_set = 30; + map content_union_2_type_dict_of_str_int = 31; + bool content_union_2_type_dict_of_str_int_is_set = 32; + map content_union_2_type_dict_of_int_float = 33; + bool content_union_2_type_dict_of_int_float_is_set = 34; + map content_union_2_type_dict_of_bool_bytes = 35; + bool content_union_2_type_dict_of_bool_bytes_is_set = 36; + int64 content_union_2_type_int = 37; + bool content_union_2_type_int_is_set = 38; + DataModel2 content_union_3_type_DataModel2 = 39; + bool content_union_3_type_DataModel2_is_set = 40; + DataModel3 content_union_3_type_DataModel3 = 41; + bool content_union_3_type_DataModel3_is_set = 42; } message Performative_O_Performative{ - DataModel content_o_ct = 1; + DataModel4 content_o_ct = 1; bool content_o_ct_is_set = 2; bool content_o_bool = 3; bool content_o_bool_is_set = 4; diff --git a/tests/data/generator/t_protocol/t_protocol_pb2.py b/tests/data/generator/t_protocol/t_protocol_pb2.py index fb341147a6..7fe683b94b 100644 --- a/tests/data/generator/t_protocol/t_protocol_pb2.py +++ b/tests/data/generator/t_protocol/t_protocol_pb2.py @@ -14,7 +14,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x10t_protocol.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xf8\x37\n\x10TProtocolMessage\x12s\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x8b\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32\x64.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12s\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12q\n\x0eperformative_o\x18\x08 \x01(\x0b\x32W.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_PerformativeH\x00\x12u\n\x10performative_pct\x18\t \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12u\n\x10performative_pmt\x18\n \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12s\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xb2\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12h\n\ndict_field\x18\x08 \x03(\x0b\x32T.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1ay\n\x1cPerformative_Ct_Performative\x12Y\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xc0\x18\n\x1dPerformative_Pmt_Performative\x12\x92\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x92\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x92\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x92\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x92\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xe7\x0c\n\x1cPerformative_Mt_Performative\x12m\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x03\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x03\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\xa9\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x03\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\xa9\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xad\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32}.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xaf\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32~.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xc2\x04\n\x1bPerformative_O_Performative\x12[\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12\x1b\n\x13\x63ontent_o_ct_is_set\x18\x02 \x01(\x08\x12\x16\n\x0e\x63ontent_o_bool\x18\x03 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x04 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x05 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x06 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x07 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x08 \x01(\x08\x12\x8f\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32o.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\n \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + b"\n\x10t_protocol.proto\x12)aea.some_author.some_protocol_name.v1_0_0\"\xcbK\n\x10TProtocolMessage\x12s\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x8b\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32\x64.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12s\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12q\n\x0eperformative_o\x18\x08 \x01(\x0b\x32W.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_PerformativeH\x00\x12u\n\x10performative_pct\x18\t \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12u\n\x10performative_pmt\x18\n \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12s\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xb2\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12h\n\ndict_field\x18\x08 \x03(\x0b\x32T.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel1\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel2\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel3\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel4\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1ay\n\x1cPerformative_Ct_Performative\x12Y\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xc0\x18\n\x1dPerformative_Pmt_Performative\x12\x92\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x92\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x92\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x92\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x92\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xdd\x16\n\x1cPerformative_Mt_Performative\x12o\n\x1f\x63ontent_union_1_type_DataModel1\x18\x01 \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1\x12.\n&content_union_1_type_DataModel1_is_set\x18\x02 \x01(\x08\x12\"\n\x1a\x63ontent_union_1_type_bytes\x18\x03 \x01(\x0c\x12)\n!content_union_1_type_bytes_is_set\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_int\x18\x05 \x01(\x03\x12'\n\x1f\x63ontent_union_1_type_int_is_set\x18\x06 \x01(\x08\x12\"\n\x1a\x63ontent_union_1_type_float\x18\x07 \x01(\x02\x12)\n!content_union_1_type_float_is_set\x18\x08 \x01(\x08\x12!\n\x19\x63ontent_union_1_type_bool\x18\t \x01(\x08\x12(\n content_union_1_type_bool_is_set\x18\n \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x0b \x01(\t\x12'\n\x1f\x63ontent_union_1_type_str_is_set\x18\x0c \x01(\x08\x12'\n\x1f\x63ontent_union_1_type_set_of_int\x18\r \x03(\x03\x12.\n&content_union_1_type_set_of_int_is_set\x18\x0e \x01(\x08\x12)\n!content_union_1_type_list_of_bool\x18\x0f \x03(\x08\x12\x30\n(content_union_1_type_list_of_bool_is_set\x18\x10 \x01(\x08\x12\xa9\x01\n$content_union_1_type_dict_of_str_int\x18\x11 \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12\x33\n+content_union_1_type_dict_of_str_int_is_set\x18\x12 \x01(\x08\x12)\n!content_union_2_type_set_of_bytes\x18\x13 \x03(\x0c\x12\x30\n(content_union_2_type_set_of_bytes_is_set\x18\x14 \x01(\x08\x12'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x15 \x03(\x03\x12.\n&content_union_2_type_set_of_int_is_set\x18\x16 \x01(\x08\x12'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x17 \x03(\t\x12.\n&content_union_2_type_set_of_str_is_set\x18\x18 \x01(\x08\x12*\n\"content_union_2_type_list_of_float\x18\x19 \x03(\x02\x12\x31\n)content_union_2_type_list_of_float_is_set\x18\x1a \x01(\x08\x12)\n!content_union_2_type_list_of_bool\x18\x1b \x03(\x08\x12\x30\n(content_union_2_type_list_of_bool_is_set\x18\x1c \x01(\x08\x12*\n\"content_union_2_type_list_of_bytes\x18\x1d \x03(\x0c\x12\x31\n)content_union_2_type_list_of_bytes_is_set\x18\x1e \x01(\x08\x12\xa9\x01\n$content_union_2_type_dict_of_str_int\x18\x1f \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x33\n+content_union_2_type_dict_of_str_int_is_set\x18 \x01(\x08\x12\xad\x01\n&content_union_2_type_dict_of_int_float\x18! \x03(\x0b\x32}.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x35\n-content_union_2_type_dict_of_int_float_is_set\x18\" \x01(\x08\x12\xaf\x01\n'content_union_2_type_dict_of_bool_bytes\x18# \x03(\x0b\x32~.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x12\x36\n.content_union_2_type_dict_of_bool_bytes_is_set\x18$ \x01(\x08\x12 \n\x18\x63ontent_union_2_type_int\x18% \x01(\x03\x12'\n\x1f\x63ontent_union_2_type_int_is_set\x18& \x01(\x08\x12o\n\x1f\x63ontent_union_3_type_DataModel2\x18' \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2\x12.\n&content_union_3_type_DataModel2_is_set\x18( \x01(\x08\x12o\n\x1f\x63ontent_union_3_type_DataModel3\x18) \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3\x12.\n&content_union_3_type_DataModel3_is_set\x18* \x01(\x08\x1a\x44\n\"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n\"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xc3\x04\n\x1bPerformative_O_Performative\x12\\\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4\x12\x1b\n\x13\x63ontent_o_ct_is_set\x18\x02 \x01(\x08\x12\x16\n\x0e\x63ontent_o_bool\x18\x03 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x04 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x05 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x06 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x07 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x08 \x01(\x08\x12\x8f\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32o.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\n \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3" ) @@ -23,6 +23,22 @@ _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = ( _TPROTOCOLMESSAGE_DATAMODEL.nested_types_by_name["DictFieldEntry"] ) +_TPROTOCOLMESSAGE_DATAMODEL1 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel1"] +_TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL1.nested_types_by_name["DictFieldEntry"] +) +_TPROTOCOLMESSAGE_DATAMODEL2 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel2"] +_TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL2.nested_types_by_name["DictFieldEntry"] +) +_TPROTOCOLMESSAGE_DATAMODEL3 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel3"] +_TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL3.nested_types_by_name["DictFieldEntry"] +) +_TPROTOCOLMESSAGE_DATAMODEL4 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel4"] +_TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL4.nested_types_by_name["DictFieldEntry"] +) _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ "Performative_Ct_Performative" ] @@ -166,6 +182,78 @@ # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel) }, ), + "DataModel1": _reflection.GeneratedProtocolMessageType( + "DataModel1", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL1, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1) + }, + ), + "DataModel2": _reflection.GeneratedProtocolMessageType( + "DataModel2", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL2, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2) + }, + ), + "DataModel3": _reflection.GeneratedProtocolMessageType( + "DataModel3", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL3, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3) + }, + ), + "DataModel4": _reflection.GeneratedProtocolMessageType( + "DataModel4", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL4, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4) + }, + ), "Performative_Ct_Performative": _reflection.GeneratedProtocolMessageType( "Performative_Ct_Performative", (_message.Message,), @@ -417,6 +505,14 @@ _sym_db.RegisterMessage(TProtocolMessage) _sym_db.RegisterMessage(TProtocolMessage.DataModel) _sym_db.RegisterMessage(TProtocolMessage.DataModel.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel1) +_sym_db.RegisterMessage(TProtocolMessage.DataModel1.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel2) +_sym_db.RegisterMessage(TProtocolMessage.DataModel2.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel3) +_sym_db.RegisterMessage(TProtocolMessage.DataModel3.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel4) +_sym_db.RegisterMessage(TProtocolMessage.DataModel4.DictFieldEntry) _sym_db.RegisterMessage(TProtocolMessage.Performative_Ct_Performative) _sym_db.RegisterMessage(TProtocolMessage.Performative_Pt_Performative) _sym_db.RegisterMessage(TProtocolMessage.Performative_Pct_Performative) @@ -490,6 +586,14 @@ DESCRIPTOR._options = None _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._options = None _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_options = b"8\001" _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = ( None ) @@ -611,143 +715,159 @@ b"8\001" ) _TPROTOCOLMESSAGE._serialized_start = 64 - _TPROTOCOLMESSAGE._serialized_end = 7224 + _TPROTOCOLMESSAGE._serialized_end = 9739 _TPROTOCOLMESSAGE_DATAMODEL._serialized_start = 931 _TPROTOCOLMESSAGE_DATAMODEL._serialized_end = 1237 _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_start = 1189 _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_end = 1237 - _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_start = 1239 - _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_end = 1360 - _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 1363 - _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 1503 - _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 1506 - _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 1802 - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 1805 - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 4941 + _TPROTOCOLMESSAGE_DATAMODEL1._serialized_start = 1240 + _TPROTOCOLMESSAGE_DATAMODEL1._serialized_end = 1548 + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_DATAMODEL2._serialized_start = 1551 + _TPROTOCOLMESSAGE_DATAMODEL2._serialized_end = 1859 + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_DATAMODEL3._serialized_start = 1862 + _TPROTOCOLMESSAGE_DATAMODEL3._serialized_end = 2170 + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_DATAMODEL4._serialized_start = 2173 + _TPROTOCOLMESSAGE_DATAMODEL4._serialized_end = 2481 + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_start = 2483 + _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_end = 2604 + _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 2607 + _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 2747 + _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 2750 + _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 3046 + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 3049 + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 6185 _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_start = ( - 4053 + 5297 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_end = ( - 4111 + 5355 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_start = ( - 4113 + 5357 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_end = ( - 4169 + 5413 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_start = ( - 4171 + 5415 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_end = ( - 4229 + 5473 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_start = ( - 4231 + 5475 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_end = ( - 4288 + 5532 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_start = ( - 4290 + 5534 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_end = ( - 4346 + 5590 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_start = ( - 4348 + 5592 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_end = ( - 4407 + 5651 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_start = ( - 4409 + 5653 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_end = ( - 4466 + 5710 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_start = ( - 4468 + 5712 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_end = ( - 4527 + 5771 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_start = ( - 4529 + 5773 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_end = ( - 4587 + 5831 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_start = ( - 4589 + 5833 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_end = ( - 4646 + 5890 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_start = ( - 4648 + 5892 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_end = ( - 4706 + 5950 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_start = ( - 4708 + 5952 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_end = ( - 4764 + 6008 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_start = ( - 4766 + 6010 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_end = ( - 4824 + 6068 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_start = ( - 4826 + 6070 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_end = ( - 4883 + 6127 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_start = ( - 4885 + 6129 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_end = ( - 4941 + 6185 ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 4944 - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6583 + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 6188 + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 9097 _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( - 6300 + 8814 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( - 6368 + 8882 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( - 6370 + 8884 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( - 6438 + 8952 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( - 6440 + 8954 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( - 6510 + 9024 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( - 6512 + 9026 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( - 6583 + 9097 ) - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6586 - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 7164 + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 9100 + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 9679 _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( - 7107 + 9622 ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( - 7164 + 9679 ) - _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = 7166 - _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = 7208 + _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = 9681 + _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = 9723 # @@protoc_insertion_point(module_scope) diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index 8dd33c3051..43045fd7c7 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -10,9 +10,9 @@ fingerprint: __init__.py: QmaR7viaQRnRb5woBhgaosWqW3Tmfvm25kb95erfXeABcb dialogues.py: QmQw2uWqsbwNma5yKnb6cRhaCHuU5nRa5F7eZoxRgUVekm message.py: QmVuM5P73nhZfTRW6yM4Ehz8tpegDGs38Vig3sYbHLMEKy - serialization.py: QmSofWb5kuojkb6Bt5tu2p7t4VMKx4FDdeNHihdcjeN8gn - t_protocol_no_ct.proto: QmVB1xEyeou9UvDUrKwxNhdUcvSdQvuFwFtgeEGneHNcG7 - t_protocol_no_ct_pb2.py: QmaFxo33ygWLxKSBSkV7nsK7Bz4HJy4JJ7cPK4xUj41Keu + serialization.py: QmVY4fb1CzTX8XtjqPrm5S8CZMa3wDGBiwUx2AoCRoQh1k + t_protocol_no_ct.proto: QmapyiDZBjF3K8yLZvCBYhjm3dFVwaLBKL8PLWUoYpTLez + t_protocol_no_ct_pb2.py: QmUeCxpxg2SYZfB26rjFentsmpFtJLgwU1ueMvPNQA4YbP fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/generator/t_protocol_no_ct/serialization.py b/tests/data/generator/t_protocol_no_ct/serialization.py index e626920770..72ae972575 100644 --- a/tests/data/generator/t_protocol_no_ct/serialization.py +++ b/tests/data/generator/t_protocol_no_ct/serialization.py @@ -124,116 +124,142 @@ def encode(msg: Message) -> bytes: t_protocol_no_ct_msg.performative_pmt.CopyFrom(performative) elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_MT: performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_Mt_Performative() # type: ignore - if msg.is_set("content_union_1_type_bytes"): - performative.content_union_1_type_bytes_is_set = True - content_union_1_type_bytes = msg.content_union_1_type_bytes - performative.content_union_1_type_bytes = content_union_1_type_bytes - if msg.is_set("content_union_1_type_int"): - performative.content_union_1_type_int_is_set = True - content_union_1_type_int = msg.content_union_1_type_int - performative.content_union_1_type_int = content_union_1_type_int - if msg.is_set("content_union_1_type_float"): - performative.content_union_1_type_float_is_set = True - content_union_1_type_float = msg.content_union_1_type_float - performative.content_union_1_type_float = content_union_1_type_float - if msg.is_set("content_union_1_type_bool"): - performative.content_union_1_type_bool_is_set = True - content_union_1_type_bool = msg.content_union_1_type_bool - performative.content_union_1_type_bool = content_union_1_type_bool - if msg.is_set("content_union_1_type_str"): - performative.content_union_1_type_str_is_set = True - content_union_1_type_str = msg.content_union_1_type_str - performative.content_union_1_type_str = content_union_1_type_str - if msg.is_set("content_union_1_type_set_of_int"): - performative.content_union_1_type_set_of_int_is_set = True - content_union_1_type_set_of_int = msg.content_union_1_type_set_of_int - performative.content_union_1_type_set_of_int.extend( - content_union_1_type_set_of_int - ) - if msg.is_set("content_union_1_type_list_of_bool"): - performative.content_union_1_type_list_of_bool_is_set = True - content_union_1_type_list_of_bool = ( - msg.content_union_1_type_list_of_bool - ) - performative.content_union_1_type_list_of_bool.extend( - content_union_1_type_list_of_bool - ) - if msg.is_set("content_union_1_type_dict_of_str_int"): - performative.content_union_1_type_dict_of_str_int_is_set = True - content_union_1_type_dict_of_str_int = ( - msg.content_union_1_type_dict_of_str_int - ) - performative.content_union_1_type_dict_of_str_int.update( - content_union_1_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_set_of_bytes"): - performative.content_union_2_type_set_of_bytes_is_set = True - content_union_2_type_set_of_bytes = ( - msg.content_union_2_type_set_of_bytes - ) - performative.content_union_2_type_set_of_bytes.extend( - content_union_2_type_set_of_bytes - ) - if msg.is_set("content_union_2_type_set_of_int"): - performative.content_union_2_type_set_of_int_is_set = True - content_union_2_type_set_of_int = msg.content_union_2_type_set_of_int - performative.content_union_2_type_set_of_int.extend( - content_union_2_type_set_of_int - ) - if msg.is_set("content_union_2_type_set_of_str"): - performative.content_union_2_type_set_of_str_is_set = True - content_union_2_type_set_of_str = msg.content_union_2_type_set_of_str - performative.content_union_2_type_set_of_str.extend( - content_union_2_type_set_of_str - ) - if msg.is_set("content_union_2_type_list_of_float"): - performative.content_union_2_type_list_of_float_is_set = True - content_union_2_type_list_of_float = ( - msg.content_union_2_type_list_of_float - ) - performative.content_union_2_type_list_of_float.extend( - content_union_2_type_list_of_float - ) - if msg.is_set("content_union_2_type_list_of_bool"): - performative.content_union_2_type_list_of_bool_is_set = True - content_union_2_type_list_of_bool = ( - msg.content_union_2_type_list_of_bool - ) - performative.content_union_2_type_list_of_bool.extend( - content_union_2_type_list_of_bool - ) - if msg.is_set("content_union_2_type_list_of_bytes"): - performative.content_union_2_type_list_of_bytes_is_set = True - content_union_2_type_list_of_bytes = ( - msg.content_union_2_type_list_of_bytes - ) - performative.content_union_2_type_list_of_bytes.extend( - content_union_2_type_list_of_bytes - ) - if msg.is_set("content_union_2_type_dict_of_str_int"): - performative.content_union_2_type_dict_of_str_int_is_set = True - content_union_2_type_dict_of_str_int = ( - msg.content_union_2_type_dict_of_str_int - ) - performative.content_union_2_type_dict_of_str_int.update( - content_union_2_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_dict_of_int_float"): - performative.content_union_2_type_dict_of_int_float_is_set = True - content_union_2_type_dict_of_int_float = ( - msg.content_union_2_type_dict_of_int_float - ) - performative.content_union_2_type_dict_of_int_float.update( - content_union_2_type_dict_of_int_float - ) - if msg.is_set("content_union_2_type_dict_of_bool_bytes"): - performative.content_union_2_type_dict_of_bool_bytes_is_set = True - content_union_2_type_dict_of_bool_bytes = ( - msg.content_union_2_type_dict_of_bool_bytes - ) - performative.content_union_2_type_dict_of_bool_bytes.update( - content_union_2_type_dict_of_bool_bytes - ) + if msg.is_set("content_union_1"): + if isinstance(msg.content_union_1, bytes): + performative.content_union_1_type_bytes_is_set = True + content_union_1_type_bytes = msg.content_union_1 + performative.content_union_1_type_bytes = content_union_1_type_bytes + elif isinstance(msg.content_union_1, int): + performative.content_union_1_type_int_is_set = True + content_union_1_type_int = msg.content_union_1 + performative.content_union_1_type_int = content_union_1_type_int + elif isinstance(msg.content_union_1, float): + performative.content_union_1_type_float_is_set = True + content_union_1_type_float = msg.content_union_1 + performative.content_union_1_type_float = content_union_1_type_float + elif isinstance(msg.content_union_1, bool): + performative.content_union_1_type_bool_is_set = True + content_union_1_type_bool = msg.content_union_1 + performative.content_union_1_type_bool = content_union_1_type_bool + elif isinstance(msg.content_union_1, str): + performative.content_union_1_type_str_is_set = True + content_union_1_type_str = msg.content_union_1 + performative.content_union_1_type_str = content_union_1_type_str + elif isinstance(msg.content_union_1, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_1) + ): + performative.content_union_1_type_set_of_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_set_of_int.extend(content_union_1) + elif isinstance(msg.content_union_1, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_1) + ): + performative.content_union_1_type_list_of_bool_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_list_of_bool.extend( + content_union_1 + ) + elif isinstance(msg.content_union_1, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_1.items(), + ) + ): + performative.content_union_1_type_dict_of_str_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_dict_of_str_int.update( + content_union_1 + ) + elif msg.content_union_1 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_1` {msg.content_union_1 }" + ) + if msg.is_set("content_union_2"): + if isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_set_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_2) + ): + performative.content_union_2_type_set_of_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_int.extend(content_union_2) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, str), msg.content_union_2) + ): + performative.content_union_2_type_set_of_str_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_str.extend(content_union_2) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, float), msg.content_union_2) + ): + performative.content_union_2_type_list_of_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_float.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bool_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bool.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_str_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_str_int.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], int) and isinstance(x[1], float), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_int_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_int_float.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], bool) and isinstance(x[1], bytes), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_bool_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_bool_bytes.update( + content_union_2 + ) + elif msg.content_union_2 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_2` {msg.content_union_2 }" + ) t_protocol_no_ct_msg.performative_mt.CopyFrom(performative) elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_O: performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_O_Performative() # type: ignore @@ -442,73 +468,97 @@ def decode(obj: bytes) -> Message: if ( t_protocol_no_ct_pb.performative_mt.content_union_1_type_set_of_int_is_set ): - content_union_1 = t_protocol_no_ct_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_no_ct_pb.performative_mt.content_union_1_type_set_of_int + ) content_union_1_frozenset = frozenset(content_union_1) performative_content["content_union_1"] = content_union_1_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_1_type_list_of_bool_is_set ): - content_union_1 = t_protocol_no_ct_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_no_ct_pb.performative_mt.content_union_1_type_list_of_bool + ) content_union_1_tuple = tuple(content_union_1) performative_content["content_union_1"] = content_union_1_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_1_type_dict_of_str_int_is_set ): - content_union_1 = t_protocol_no_ct_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_no_ct_pb.performative_mt.content_union_1_type_dict_of_str_int + ) content_union_1_dict = dict(content_union_1) performative_content["content_union_1"] = content_union_1_dict if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_bytes_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_bytes + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_int_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_int + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_str_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_str + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_float_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_float + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bool_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bool + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bytes_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bytes + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_str_int_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_str_int + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_int_float_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_int_float + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_bool_bytes_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_bool_bytes + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_O: @@ -548,5 +598,5 @@ def decode(obj: bytes) -> Message: dialogue_reference=dialogue_reference, target=target, performative=performative, - **performative_content + **performative_content, ) diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto index d3415e840c..b3c5d3c3c9 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct.proto @@ -46,22 +46,39 @@ message TProtocolNoCtMessage{ message Performative_Mt_Performative{ bytes content_union_1_type_bytes = 1; - int64 content_union_1_type_int = 2; - float content_union_1_type_float = 3; - bool content_union_1_type_bool = 4; - string content_union_1_type_str = 5; - repeated int64 content_union_1_type_set_of_int = 6; - repeated bool content_union_1_type_list_of_bool = 7; - map content_union_1_type_dict_of_str_int = 8; - repeated bytes content_union_2_type_set_of_bytes = 9; - repeated int64 content_union_2_type_set_of_int = 10; - repeated string content_union_2_type_set_of_str = 11; - repeated float content_union_2_type_list_of_float = 12; - repeated bool content_union_2_type_list_of_bool = 13; - repeated bytes content_union_2_type_list_of_bytes = 14; - map content_union_2_type_dict_of_str_int = 15; - map content_union_2_type_dict_of_int_float = 16; - map content_union_2_type_dict_of_bool_bytes = 17; + bool content_union_1_type_bytes_is_set = 2; + int64 content_union_1_type_int = 3; + bool content_union_1_type_int_is_set = 4; + float content_union_1_type_float = 5; + bool content_union_1_type_float_is_set = 6; + bool content_union_1_type_bool = 7; + bool content_union_1_type_bool_is_set = 8; + string content_union_1_type_str = 9; + bool content_union_1_type_str_is_set = 10; + repeated int64 content_union_1_type_set_of_int = 11; + bool content_union_1_type_set_of_int_is_set = 12; + repeated bool content_union_1_type_list_of_bool = 13; + bool content_union_1_type_list_of_bool_is_set = 14; + map content_union_1_type_dict_of_str_int = 15; + bool content_union_1_type_dict_of_str_int_is_set = 16; + repeated bytes content_union_2_type_set_of_bytes = 17; + bool content_union_2_type_set_of_bytes_is_set = 18; + repeated int64 content_union_2_type_set_of_int = 19; + bool content_union_2_type_set_of_int_is_set = 20; + repeated string content_union_2_type_set_of_str = 21; + bool content_union_2_type_set_of_str_is_set = 22; + repeated float content_union_2_type_list_of_float = 23; + bool content_union_2_type_list_of_float_is_set = 24; + repeated bool content_union_2_type_list_of_bool = 25; + bool content_union_2_type_list_of_bool_is_set = 26; + repeated bytes content_union_2_type_list_of_bytes = 27; + bool content_union_2_type_list_of_bytes_is_set = 28; + map content_union_2_type_dict_of_str_int = 29; + bool content_union_2_type_dict_of_str_int_is_set = 30; + map content_union_2_type_dict_of_int_float = 31; + bool content_union_2_type_dict_of_int_float_is_set = 32; + map content_union_2_type_dict_of_bool_bytes = 33; + bool content_union_2_type_dict_of_bool_bytes_is_set = 34; } message Performative_O_Performative{ diff --git a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py index 8315b49001..ccd2ad0afc 100644 --- a/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ b/tests/data/generator/t_protocol_no_ct/t_protocol_no_ct_pb2.py @@ -14,7 +14,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x16t_protocol_no_ct.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xd8\x32\n\x14TProtocolNoCtMessage\x12\x8f\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32h.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12w\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12u\n\x0eperformative_o\x18\x07 \x01(\x0b\x32[.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12y\n\x10performative_pct\x18\x08 \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12y\n\x10performative_pmt\x18\t \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12w\n\x0fperformative_pt\x18\n \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_PerformativeH\x00\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xfc\x18\n\x1dPerformative_Pmt_Performative\x12\x96\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x96\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x96\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x96\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x96\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x8a\x0c\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x03\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x03\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\xad\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x03\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\xad\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xb2\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32\x81\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xb4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32\x82\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xcc\x03\n\x1bPerformative_O_Performative\x12\x16\n\x0e\x63ontent_o_bool\x18\x01 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x02 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x03 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x05 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x06 \x01(\x08\x12\x93\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\x08 \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + b'\n\x16t_protocol_no_ct.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\x8f\x39\n\x14TProtocolNoCtMessage\x12\x8f\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32h.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12w\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12u\n\x0eperformative_o\x18\x07 \x01(\x0b\x32[.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12y\n\x10performative_pct\x18\x08 \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12y\n\x10performative_pmt\x18\t \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12w\n\x0fperformative_pt\x18\n \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_PerformativeH\x00\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xfc\x18\n\x1dPerformative_Pmt_Performative\x12\x96\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x96\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x96\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x96\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x96\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xc1\x12\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12)\n!content_union_1_type_bytes_is_set\x18\x02 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x03\x12\'\n\x1f\x63ontent_union_1_type_int_is_set\x18\x04 \x01(\x08\x12"\n\x1a\x63ontent_union_1_type_float\x18\x05 \x01(\x02\x12)\n!content_union_1_type_float_is_set\x18\x06 \x01(\x08\x12!\n\x19\x63ontent_union_1_type_bool\x18\x07 \x01(\x08\x12(\n content_union_1_type_bool_is_set\x18\x08 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\t \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_str_is_set\x18\n \x01(\x08\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x0b \x03(\x03\x12.\n&content_union_1_type_set_of_int_is_set\x18\x0c \x01(\x08\x12)\n!content_union_1_type_list_of_bool\x18\r \x03(\x08\x12\x30\n(content_union_1_type_list_of_bool_is_set\x18\x0e \x01(\x08\x12\xad\x01\n$content_union_1_type_dict_of_str_int\x18\x0f \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12\x33\n+content_union_1_type_dict_of_str_int_is_set\x18\x10 \x01(\x08\x12)\n!content_union_2_type_set_of_bytes\x18\x11 \x03(\x0c\x12\x30\n(content_union_2_type_set_of_bytes_is_set\x18\x12 \x01(\x08\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x13 \x03(\x03\x12.\n&content_union_2_type_set_of_int_is_set\x18\x14 \x01(\x08\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x15 \x03(\t\x12.\n&content_union_2_type_set_of_str_is_set\x18\x16 \x01(\x08\x12*\n"content_union_2_type_list_of_float\x18\x17 \x03(\x02\x12\x31\n)content_union_2_type_list_of_float_is_set\x18\x18 \x01(\x08\x12)\n!content_union_2_type_list_of_bool\x18\x19 \x03(\x08\x12\x30\n(content_union_2_type_list_of_bool_is_set\x18\x1a \x01(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x1b \x03(\x0c\x12\x31\n)content_union_2_type_list_of_bytes_is_set\x18\x1c \x01(\x08\x12\xad\x01\n$content_union_2_type_dict_of_str_int\x18\x1d \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x33\n+content_union_2_type_dict_of_str_int_is_set\x18\x1e \x01(\x08\x12\xb2\x01\n&content_union_2_type_dict_of_int_float\x18\x1f \x03(\x0b\x32\x81\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x35\n-content_union_2_type_dict_of_int_float_is_set\x18 \x01(\x08\x12\xb4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18! \x03(\x0b\x32\x82\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x12\x36\n.content_union_2_type_dict_of_bool_bytes_is_set\x18" \x01(\x08\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xcc\x03\n\x1bPerformative_O_Performative\x12\x16\n\x0e\x63ontent_o_bool\x18\x01 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x02 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x03 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x05 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x06 \x01(\x08\x12\x93\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\x08 \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ) @@ -566,7 +566,7 @@ b"8\001" ) _TPROTOCOLNOCTMESSAGE._serialized_start = 70 - _TPROTOCOLNOCTMESSAGE._serialized_end = 6558 + _TPROTOCOLNOCTMESSAGE._serialized_end = 7381 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 848 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 988 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 991 @@ -664,43 +664,43 @@ 4486 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 4489 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6035 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6858 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( - 5752 + 6575 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( - 5820 + 6643 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( - 5822 + 6645 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( - 5890 + 6713 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( - 5892 + 6715 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( - 5962 + 6785 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( - 5964 + 6787 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( - 6035 + 6858 ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6038 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 6498 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6861 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 7321 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( - 6441 + 7264 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( - 6498 + 7321 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = ( - 6500 + 7323 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = ( - 6542 + 7365 ) # @@protoc_insertion_point(module_scope) diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index 65cb999ddc..282f2287c1 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -2,7 +2,7 @@ dummy_author/agents/dummy_aea,QmbFrZ6aaiFGpF8qbYopCmy9KLq5HDqTP99RHKvNJfk9gT dummy_author/skills/dummy_skill,QmQJ6P1G3CzzvG6qtp9hnYSqaosczq91PXh6RGHj45u8qS fetchai/connections/dummy_connection,QmU7KYJcJeumFnBj7vHDvY6SQPwsG3TJqTRrWrDmgo3qCZ fetchai/contracts/dummy_contract,QmVvnWPgN5W5yfFvczTjHiiYJU11ScvBUJpumwTn9n4qia -fetchai/protocols/t_protocol,Qmdc6TbDeX74p39SgghHcWvU6pAc5o7m3m6ZJzAzngotdJ -fetchai/protocols/t_protocol_no_ct,QmdG6tDUZy6UARyz2v2fpd9kYUpFm171kqCt8JP76eSSAe +fetchai/protocols/t_protocol,QmdEjvgjqd3maYXczSYzJnfEUchV5ByVj3vfoQYHAWnEMQ +fetchai/protocols/t_protocol_no_ct,QmXsUfSPgvxydZT9ADobV2xwkLRrP6P9tgDWj9boviFDHZ fetchai/skills/dependencies_skill,QmTbwxnYVYt8dxW4mwVkbLib7tgSeax95tyaR8i4tksSgy fetchai/skills/exception_skill,QmdwB97g4DPZj1dmdWGaAeeddrfy97y2j6Zg6FUPqT2CAp diff --git a/tests/data/reference_protocols/t_protocol/custom_types.py b/tests/data/reference_protocols/t_protocol/custom_types.py index 0a2feeda2c..6887755b16 100644 --- a/tests/data/reference_protocols/t_protocol/custom_types.py +++ b/tests/data/reference_protocols/t_protocol/custom_types.py @@ -77,7 +77,7 @@ def decode(cls, data_model_protobuf_object) -> "DataModel": :param data_model_protobuf_object: the protocol buffer object whose type corresponds with this class. :return: A new instance of this class that matches the protocol buffer object in the 'data_model_protobuf_object' argument. """ - return DataModel( + return cls( bytes_field=data_model_protobuf_object.bytes_field, int_field=data_model_protobuf_object.int_field, float_field=data_model_protobuf_object.float_field, @@ -90,7 +90,7 @@ def decode(cls, data_model_protobuf_object) -> "DataModel": def __eq__(self, other): """Overrides the default implementation""" - if not isinstance(other, DataModel): + if not isinstance(other, self.__class__): return False return ( self.bytes_field == other.bytes_field @@ -103,3 +103,19 @@ def __eq__(self, other): and self.list_field == other.list_field and self.dict_field == other.dict_field ) + + +class DataModel1(DataModel): + """This class represents an instance of DataModel1.""" + + +class DataModel2(DataModel): + """This class represents an instance of DataModel2.""" + + +class DataModel3(DataModel): + """This class represents an instance of DataModel3.""" + + +class DataModel4(DataModel): + """This class represents an instance of DataModel3.""" diff --git a/tests/data/reference_protocols/t_protocol/message.py b/tests/data/reference_protocols/t_protocol/message.py index 63d0b7c2a3..933a026c43 100644 --- a/tests/data/reference_protocols/t_protocol/message.py +++ b/tests/data/reference_protocols/t_protocol/message.py @@ -28,6 +28,10 @@ from aea.protocols.base import Message from tests.data.generator.t_protocol.custom_types import DataModel as CustomDataModel +from tests.data.generator.t_protocol.custom_types import DataModel1 as CustomDataModel1 +from tests.data.generator.t_protocol.custom_types import DataModel2 as CustomDataModel2 +from tests.data.generator.t_protocol.custom_types import DataModel3 as CustomDataModel3 +from tests.data.generator.t_protocol.custom_types import DataModel4 as CustomDataModel4 _default_logger = logging.getLogger("aea.packages.fetchai.protocols.t_protocol.message") @@ -45,6 +49,14 @@ class TProtocolMessage(Message): DataModel = CustomDataModel + DataModel1 = CustomDataModel1 + + DataModel2 = CustomDataModel2 + + DataModel3 = CustomDataModel3 + + DataModel4 = CustomDataModel4 + class Performative(Message.Performative): """Performatives for the t_protocol protocol.""" @@ -111,6 +123,7 @@ class _SlotsCls: "content_str", "content_union_1", "content_union_2", + "content_union_3", "dialogue_reference", "message_id", "performative", @@ -384,9 +397,9 @@ def content_o_bool(self) -> Optional[bool]: return cast(Optional[bool], self.get("content_o_bool")) @property - def content_o_ct(self) -> Optional[CustomDataModel]: + def content_o_ct(self) -> Optional[CustomDataModel4]: """Get the 'content_o_ct' content from the message.""" - return cast(Optional[CustomDataModel], self.get("content_o_ct")) + return cast(Optional[CustomDataModel4], self.get("content_o_ct")) @property def content_o_dict_str_int(self) -> Optional[Dict[str, int]]: @@ -449,7 +462,7 @@ def content_str(self) -> str: def content_union_1( self, ) -> Union[ - CustomDataModel, + CustomDataModel1, bytes, int, float, @@ -463,7 +476,7 @@ def content_union_1( enforce(self.is_set("content_union_1"), "'content_union_1' content is not set.") return cast( Union[ - CustomDataModel, + CustomDataModel1, bytes, int, float, @@ -489,6 +502,7 @@ def content_union_2( Dict[str, int], Dict[int, float], Dict[bool, bytes], + int, ]: """Get the 'content_union_2' content from the message.""" enforce(self.is_set("content_union_2"), "'content_union_2' content is not set.") @@ -503,10 +517,19 @@ def content_union_2( Dict[str, int], Dict[int, float], Dict[bool, bytes], + int, ], self.get("content_union_2"), ) + @property + def content_union_3(self) -> Union[CustomDataModel2, CustomDataModel3]: + """Get the 'content_union_3' content from the message.""" + enforce(self.is_set("content_union_3"), "'content_union_3' content is not set.") + return cast( + Union[CustomDataModel2, CustomDataModel3], self.get("content_union_3") + ) + def _is_consistent(self) -> bool: """Check that the message follows the t_protocol protocol.""" try: @@ -1040,9 +1063,9 @@ def _is_consistent(self) -> bool: ), ) elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_MT: - expected_nb_of_contents = 2 + expected_nb_of_contents = 3 enforce( - isinstance(self.content_union_1, CustomDataModel) + isinstance(self.content_union_1, CustomDataModel1) or isinstance(self.content_union_1, bool) or isinstance(self.content_union_1, bytes) or isinstance(self.content_union_1, dict) @@ -1051,7 +1074,7 @@ def _is_consistent(self) -> bool: or type(self.content_union_1) is int or isinstance(self.content_union_1, str) or isinstance(self.content_union_1, tuple), - "Invalid type for content 'content_union_1'. Expected either of '['DataModel', 'bool', 'bytes', 'dict', 'float', 'frozenset', 'int', 'str', 'tuple']'. Found '{}'.".format( + "Invalid type for content 'content_union_1'. Expected either of '['DataModel1', 'bool', 'bytes', 'dict', 'float', 'frozenset', 'int', 'str', 'tuple']'. Found '{}'.".format( type(self.content_union_1) ), ) @@ -1083,8 +1106,9 @@ def _is_consistent(self) -> bool: enforce( isinstance(self.content_union_2, dict) or isinstance(self.content_union_2, frozenset) + or type(self.content_union_2) is int or isinstance(self.content_union_2, tuple), - "Invalid type for content 'content_union_2'. Expected either of '['dict', 'frozenset', 'tuple']'. Found '{}'.".format( + "Invalid type for content 'content_union_2'. Expected either of '['dict', 'frozenset', 'int', 'tuple']'. Found '{}'.".format( type(self.content_union_2) ), ) @@ -1136,14 +1160,21 @@ def _is_consistent(self) -> bool: ), "Invalid type for dictionary key, value in content 'content_union_2'. Expected 'bool','bytes' or 'int','float' or 'str','int'.", ) + enforce( + isinstance(self.content_union_3, CustomDataModel2) + or isinstance(self.content_union_3, CustomDataModel3), + "Invalid type for content 'content_union_3'. Expected either of '['DataModel2', 'DataModel3']'. Found '{}'.".format( + type(self.content_union_3) + ), + ) elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_O: expected_nb_of_contents = 0 if self.is_set("content_o_ct"): expected_nb_of_contents += 1 - content_o_ct = cast(CustomDataModel, self.content_o_ct) + content_o_ct = cast(CustomDataModel4, self.content_o_ct) enforce( - isinstance(content_o_ct, CustomDataModel), - "Invalid type for content 'content_o_ct'. Expected 'DataModel'. Found '{}'.".format( + isinstance(content_o_ct, CustomDataModel4), + "Invalid type for content 'content_o_ct'. Expected 'DataModel4'. Found '{}'.".format( type(content_o_ct) ), ) diff --git a/tests/data/reference_protocols/t_protocol/protocol.yaml b/tests/data/reference_protocols/t_protocol/protocol.yaml index 02dcae45d0..28f05f8556 100644 --- a/tests/data/reference_protocols/t_protocol/protocol.yaml +++ b/tests/data/reference_protocols/t_protocol/protocol.yaml @@ -8,12 +8,12 @@ license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: __init__.py: QmboLH5iRdWk7oeaDHxoA4WpTC8TCQUMKmLQfHVdFGwJCz - custom_types.py: QmWg8HFav8w9tfZfMrTG5Uo7QpexvYKKkhpGPD18233pLw + custom_types.py: QmPTzGJCB3waK3aQbBjdDpm8JRe4ApERsFqJ1RP5b9M45Z dialogues.py: Qmaaa73ZuSE85xwkXaiKHUFXjG7aMECvAGxAZQvmyWc55X - message.py: QmaPVDsoC7sdGE2x7u7KuVqeimHvPEsvJNcZzKb78kBqwS - serialization.py: Qmd4bz59ZHqrCtKnnmqBwLe4jCsmGJJnKifaQcmLyW7o1z - t_protocol.proto: QmXR8G9317z8a4XjRFGzKmpxEY2xtLLadBxSqmWFFeQpu4 - t_protocol_pb2.py: QmegXmkFAJqD5waFzfXSuJJrtBqRU96vCrzHQrFVyT6aWc + message.py: QmVUh2pW5ME3KVZvisqij6s1VV3Z1GgzLPbgo746byhr4Q + serialization.py: QmeDtjUVeVPKDyMs5hBiGUtgWi6GS3KVE8P4xqmj6L9Cx7 + t_protocol.proto: QmY6Gw3Y7iKY2zR4kK6cx8cR1jjJivhLsSnP6HDk8843si + t_protocol_pb2.py: QmWW1wUqN4X5VCQCmPP1TiHgpNpcNM1z59TnDPZuQ4L8aR fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/reference_protocols/t_protocol/serialization.py b/tests/data/reference_protocols/t_protocol/serialization.py index 50fbcc8149..0d4953f6d6 100644 --- a/tests/data/reference_protocols/t_protocol/serialization.py +++ b/tests/data/reference_protocols/t_protocol/serialization.py @@ -27,7 +27,13 @@ from aea.protocols.base import Message, Serializer from tests.data.generator.t_protocol import t_protocol_pb2 -from tests.data.generator.t_protocol.custom_types import DataModel +from tests.data.generator.t_protocol.custom_types import ( + DataModel, + DataModel1, + DataModel2, + DataModel3, + DataModel4, +) from tests.data.generator.t_protocol.message import TProtocolMessage @@ -130,130 +136,181 @@ def encode(msg: Message) -> bytes: t_protocol_msg.performative_pmt.CopyFrom(performative) elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_MT: performative = t_protocol_pb2.TProtocolMessage.Performative_Mt_Performative() # type: ignore - if msg.is_set("content_union_1_type_DataModel"): - performative.content_union_1_type_DataModel_is_set = True - content_union_1_type_DataModel = msg.content_union_1_type_DataModel - DataModel.encode( - performative.content_union_1_type_DataModel, - content_union_1_type_DataModel, - ) - if msg.is_set("content_union_1_type_bytes"): - performative.content_union_1_type_bytes_is_set = True - content_union_1_type_bytes = msg.content_union_1_type_bytes - performative.content_union_1_type_bytes = content_union_1_type_bytes - if msg.is_set("content_union_1_type_int"): - performative.content_union_1_type_int_is_set = True - content_union_1_type_int = msg.content_union_1_type_int - performative.content_union_1_type_int = content_union_1_type_int - if msg.is_set("content_union_1_type_float"): - performative.content_union_1_type_float_is_set = True - content_union_1_type_float = msg.content_union_1_type_float - performative.content_union_1_type_float = content_union_1_type_float - if msg.is_set("content_union_1_type_bool"): - performative.content_union_1_type_bool_is_set = True - content_union_1_type_bool = msg.content_union_1_type_bool - performative.content_union_1_type_bool = content_union_1_type_bool - if msg.is_set("content_union_1_type_str"): - performative.content_union_1_type_str_is_set = True - content_union_1_type_str = msg.content_union_1_type_str - performative.content_union_1_type_str = content_union_1_type_str - if msg.is_set("content_union_1_type_set_of_int"): - performative.content_union_1_type_set_of_int_is_set = True - content_union_1_type_set_of_int = msg.content_union_1_type_set_of_int - performative.content_union_1_type_set_of_int.extend( - content_union_1_type_set_of_int - ) - if msg.is_set("content_union_1_type_list_of_bool"): - performative.content_union_1_type_list_of_bool_is_set = True - content_union_1_type_list_of_bool = ( - msg.content_union_1_type_list_of_bool - ) - performative.content_union_1_type_list_of_bool.extend( - content_union_1_type_list_of_bool - ) - if msg.is_set("content_union_1_type_dict_of_str_int"): - performative.content_union_1_type_dict_of_str_int_is_set = True - content_union_1_type_dict_of_str_int = ( - msg.content_union_1_type_dict_of_str_int - ) - performative.content_union_1_type_dict_of_str_int.update( - content_union_1_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_set_of_bytes"): - performative.content_union_2_type_set_of_bytes_is_set = True - content_union_2_type_set_of_bytes = ( - msg.content_union_2_type_set_of_bytes - ) - performative.content_union_2_type_set_of_bytes.extend( - content_union_2_type_set_of_bytes - ) - if msg.is_set("content_union_2_type_set_of_int"): - performative.content_union_2_type_set_of_int_is_set = True - content_union_2_type_set_of_int = msg.content_union_2_type_set_of_int - performative.content_union_2_type_set_of_int.extend( - content_union_2_type_set_of_int - ) - if msg.is_set("content_union_2_type_set_of_str"): - performative.content_union_2_type_set_of_str_is_set = True - content_union_2_type_set_of_str = msg.content_union_2_type_set_of_str - performative.content_union_2_type_set_of_str.extend( - content_union_2_type_set_of_str - ) - if msg.is_set("content_union_2_type_list_of_float"): - performative.content_union_2_type_list_of_float_is_set = True - content_union_2_type_list_of_float = ( - msg.content_union_2_type_list_of_float - ) - performative.content_union_2_type_list_of_float.extend( - content_union_2_type_list_of_float - ) - if msg.is_set("content_union_2_type_list_of_bool"): - performative.content_union_2_type_list_of_bool_is_set = True - content_union_2_type_list_of_bool = ( - msg.content_union_2_type_list_of_bool - ) - performative.content_union_2_type_list_of_bool.extend( - content_union_2_type_list_of_bool - ) - if msg.is_set("content_union_2_type_list_of_bytes"): - performative.content_union_2_type_list_of_bytes_is_set = True - content_union_2_type_list_of_bytes = ( - msg.content_union_2_type_list_of_bytes - ) - performative.content_union_2_type_list_of_bytes.extend( - content_union_2_type_list_of_bytes - ) - if msg.is_set("content_union_2_type_dict_of_str_int"): - performative.content_union_2_type_dict_of_str_int_is_set = True - content_union_2_type_dict_of_str_int = ( - msg.content_union_2_type_dict_of_str_int - ) - performative.content_union_2_type_dict_of_str_int.update( - content_union_2_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_dict_of_int_float"): - performative.content_union_2_type_dict_of_int_float_is_set = True - content_union_2_type_dict_of_int_float = ( - msg.content_union_2_type_dict_of_int_float - ) - performative.content_union_2_type_dict_of_int_float.update( - content_union_2_type_dict_of_int_float - ) - if msg.is_set("content_union_2_type_dict_of_bool_bytes"): - performative.content_union_2_type_dict_of_bool_bytes_is_set = True - content_union_2_type_dict_of_bool_bytes = ( - msg.content_union_2_type_dict_of_bool_bytes - ) - performative.content_union_2_type_dict_of_bool_bytes.update( - content_union_2_type_dict_of_bool_bytes - ) + if msg.is_set("content_union_1"): + if isinstance(msg.content_union_1, DataModel1): + performative.content_union_1_type_DataModel1_is_set = True + content_union_1_type_DataModel1 = msg.content_union_1 + DataModel1.encode( + performative.content_union_1_type_DataModel1, + content_union_1_type_DataModel1, + ) + elif isinstance(msg.content_union_1, bytes): + performative.content_union_1_type_bytes_is_set = True + content_union_1_type_bytes = msg.content_union_1 + performative.content_union_1_type_bytes = content_union_1_type_bytes + elif isinstance(msg.content_union_1, int): + performative.content_union_1_type_int_is_set = True + content_union_1_type_int = msg.content_union_1 + performative.content_union_1_type_int = content_union_1_type_int + elif isinstance(msg.content_union_1, float): + performative.content_union_1_type_float_is_set = True + content_union_1_type_float = msg.content_union_1 + performative.content_union_1_type_float = content_union_1_type_float + elif isinstance(msg.content_union_1, bool): + performative.content_union_1_type_bool_is_set = True + content_union_1_type_bool = msg.content_union_1 + performative.content_union_1_type_bool = content_union_1_type_bool + elif isinstance(msg.content_union_1, str): + performative.content_union_1_type_str_is_set = True + content_union_1_type_str = msg.content_union_1 + performative.content_union_1_type_str = content_union_1_type_str + elif isinstance(msg.content_union_1, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_1) + ): + performative.content_union_1_type_set_of_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_set_of_int.extend(content_union_1) + elif isinstance(msg.content_union_1, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_1) + ): + performative.content_union_1_type_list_of_bool_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_list_of_bool.extend( + content_union_1 + ) + elif isinstance(msg.content_union_1, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_1.items(), + ) + ): + performative.content_union_1_type_dict_of_str_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_dict_of_str_int.update( + content_union_1 + ) + elif msg.content_union_1 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_1` {msg.content_union_1 }" + ) + if msg.is_set("content_union_2"): + if isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_set_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_2) + ): + performative.content_union_2_type_set_of_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_int.extend(content_union_2) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, str), msg.content_union_2) + ): + performative.content_union_2_type_set_of_str_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_str.extend(content_union_2) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, float), msg.content_union_2) + ): + performative.content_union_2_type_list_of_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_float.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bool_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bool.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_str_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_str_int.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], int) and isinstance(x[1], float), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_int_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_int_float.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], bool) and isinstance(x[1], bytes), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_bool_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_bool_bytes.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, int): + performative.content_union_2_type_int_is_set = True + content_union_2_type_int = msg.content_union_2 + performative.content_union_2_type_int = content_union_2_type_int + elif msg.content_union_2 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_2` {msg.content_union_2 }" + ) + if msg.is_set("content_union_3"): + if isinstance(msg.content_union_3, DataModel2): + performative.content_union_3_type_DataModel2_is_set = True + content_union_3_type_DataModel2 = msg.content_union_3 + DataModel2.encode( + performative.content_union_3_type_DataModel2, + content_union_3_type_DataModel2, + ) + elif isinstance(msg.content_union_3, DataModel3): + performative.content_union_3_type_DataModel3_is_set = True + content_union_3_type_DataModel3 = msg.content_union_3 + DataModel3.encode( + performative.content_union_3_type_DataModel3, + content_union_3_type_DataModel3, + ) + elif msg.content_union_3 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_3` {msg.content_union_3 }" + ) t_protocol_msg.performative_mt.CopyFrom(performative) elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_O: performative = t_protocol_pb2.TProtocolMessage.Performative_O_Performative() # type: ignore if msg.is_set("content_o_ct"): performative.content_o_ct_is_set = True content_o_ct = msg.content_o_ct - DataModel.encode(performative.content_o_ct, content_o_ct) + DataModel4.encode(performative.content_o_ct, content_o_ct) if msg.is_set("content_o_bool"): performative.content_o_bool_is_set = True content_o_bool = msg.content_o_bool @@ -418,11 +475,11 @@ def decode(obj: bytes) -> Message: content_dict_str_str_dict = dict(content_dict_str_str) performative_content["content_dict_str_str"] = content_dict_str_str_dict elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_MT: - if t_protocol_pb.performative_mt.content_union_1_type_DataModel_is_set: - pb2_content_union_1_type_DataModel = ( - t_protocol_pb.performative_mt.content_union_1_type_DataModel + if t_protocol_pb.performative_mt.content_union_1_type_DataModel1_is_set: + pb2_content_union_1_type_DataModel1 = ( + t_protocol_pb.performative_mt.content_union_1_type_DataModel1 ) - content_union_1 = DataModel.decode(pb2_content_union_1_type_DataModel) + content_union_1 = DataModel1.decode(pb2_content_union_1_type_DataModel1) performative_content["content_union_1"] = content_union_1 if t_protocol_pb.performative_mt.content_union_1_type_bytes_is_set: content_union_1 = ( @@ -446,65 +503,104 @@ def decode(obj: bytes) -> Message: content_union_1 = t_protocol_pb.performative_mt.content_union_1_type_str performative_content["content_union_1"] = content_union_1 if t_protocol_pb.performative_mt.content_union_1_type_set_of_int_is_set: - content_union_1 = t_protocol_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_pb.performative_mt.content_union_1_type_set_of_int + ) content_union_1_frozenset = frozenset(content_union_1) performative_content["content_union_1"] = content_union_1_frozenset if t_protocol_pb.performative_mt.content_union_1_type_list_of_bool_is_set: - content_union_1 = t_protocol_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_pb.performative_mt.content_union_1_type_list_of_bool + ) content_union_1_tuple = tuple(content_union_1) performative_content["content_union_1"] = content_union_1_tuple if ( t_protocol_pb.performative_mt.content_union_1_type_dict_of_str_int_is_set ): - content_union_1 = t_protocol_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_pb.performative_mt.content_union_1_type_dict_of_str_int + ) content_union_1_dict = dict(content_union_1) performative_content["content_union_1"] = content_union_1_dict if t_protocol_pb.performative_mt.content_union_2_type_set_of_bytes_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_set_of_bytes + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if t_protocol_pb.performative_mt.content_union_2_type_set_of_int_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_set_of_int + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if t_protocol_pb.performative_mt.content_union_2_type_set_of_str_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_set_of_str + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if t_protocol_pb.performative_mt.content_union_2_type_list_of_float_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_list_of_float + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if t_protocol_pb.performative_mt.content_union_2_type_list_of_bool_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_list_of_bool + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if t_protocol_pb.performative_mt.content_union_2_type_list_of_bytes_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_list_of_bytes + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_pb.performative_mt.content_union_2_type_dict_of_str_int_is_set ): - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_dict_of_str_int + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_pb.performative_mt.content_union_2_type_dict_of_int_float_is_set ): - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_dict_of_int_float + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_pb.performative_mt.content_union_2_type_dict_of_bool_bytes_is_set ): - content_union_2 = t_protocol_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_pb.performative_mt.content_union_2_type_dict_of_bool_bytes + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict + if t_protocol_pb.performative_mt.content_union_2_type_int_is_set: + content_union_2 = t_protocol_pb.performative_mt.content_union_2_type_int + performative_content["content_union_2"] = content_union_2 + if t_protocol_pb.performative_mt.content_union_3_type_DataModel2_is_set: + pb2_content_union_3_type_DataModel2 = ( + t_protocol_pb.performative_mt.content_union_3_type_DataModel2 + ) + content_union_3 = DataModel2.decode(pb2_content_union_3_type_DataModel2) + performative_content["content_union_3"] = content_union_3 + if t_protocol_pb.performative_mt.content_union_3_type_DataModel3_is_set: + pb2_content_union_3_type_DataModel3 = ( + t_protocol_pb.performative_mt.content_union_3_type_DataModel3 + ) + content_union_3 = DataModel3.decode(pb2_content_union_3_type_DataModel3) + performative_content["content_union_3"] = content_union_3 elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_O: if t_protocol_pb.performative_o.content_o_ct_is_set: pb2_content_o_ct = t_protocol_pb.performative_o.content_o_ct - content_o_ct = DataModel.decode(pb2_content_o_ct) + content_o_ct = DataModel4.decode(pb2_content_o_ct) performative_content["content_o_ct"] = content_o_ct if t_protocol_pb.performative_o.content_o_bool_is_set: content_o_bool = t_protocol_pb.performative_o.content_o_bool @@ -539,5 +635,5 @@ def decode(obj: bytes) -> Message: dialogue_reference=dialogue_reference, target=target, performative=performative, - **performative_content + **performative_content, ) diff --git a/tests/data/reference_protocols/t_protocol/t_protocol.proto b/tests/data/reference_protocols/t_protocol/t_protocol.proto index 1e5e15b1e9..efdeb1b627 100644 --- a/tests/data/reference_protocols/t_protocol/t_protocol.proto +++ b/tests/data/reference_protocols/t_protocol/t_protocol.proto @@ -16,6 +16,50 @@ message TProtocolMessage{ map dict_field = 8; } + message DataModel1{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + + message DataModel2{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + + message DataModel3{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + + message DataModel4{ + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; + } + // Performatives and contents message Performative_Ct_Performative{ @@ -62,28 +106,52 @@ message TProtocolMessage{ } message Performative_Mt_Performative{ - DataModel content_union_1_type_DataModel = 1; - bytes content_union_1_type_bytes = 2; - int64 content_union_1_type_int = 3; - float content_union_1_type_float = 4; - bool content_union_1_type_bool = 5; - string content_union_1_type_str = 6; - repeated int64 content_union_1_type_set_of_int = 7; - repeated bool content_union_1_type_list_of_bool = 8; - map content_union_1_type_dict_of_str_int = 9; - repeated bytes content_union_2_type_set_of_bytes = 10; - repeated int64 content_union_2_type_set_of_int = 11; - repeated string content_union_2_type_set_of_str = 12; - repeated float content_union_2_type_list_of_float = 13; - repeated bool content_union_2_type_list_of_bool = 14; - repeated bytes content_union_2_type_list_of_bytes = 15; - map content_union_2_type_dict_of_str_int = 16; - map content_union_2_type_dict_of_int_float = 17; - map content_union_2_type_dict_of_bool_bytes = 18; + DataModel1 content_union_1_type_DataModel1 = 1; + bool content_union_1_type_DataModel1_is_set = 2; + bytes content_union_1_type_bytes = 3; + bool content_union_1_type_bytes_is_set = 4; + int64 content_union_1_type_int = 5; + bool content_union_1_type_int_is_set = 6; + float content_union_1_type_float = 7; + bool content_union_1_type_float_is_set = 8; + bool content_union_1_type_bool = 9; + bool content_union_1_type_bool_is_set = 10; + string content_union_1_type_str = 11; + bool content_union_1_type_str_is_set = 12; + repeated int64 content_union_1_type_set_of_int = 13; + bool content_union_1_type_set_of_int_is_set = 14; + repeated bool content_union_1_type_list_of_bool = 15; + bool content_union_1_type_list_of_bool_is_set = 16; + map content_union_1_type_dict_of_str_int = 17; + bool content_union_1_type_dict_of_str_int_is_set = 18; + repeated bytes content_union_2_type_set_of_bytes = 19; + bool content_union_2_type_set_of_bytes_is_set = 20; + repeated int64 content_union_2_type_set_of_int = 21; + bool content_union_2_type_set_of_int_is_set = 22; + repeated string content_union_2_type_set_of_str = 23; + bool content_union_2_type_set_of_str_is_set = 24; + repeated float content_union_2_type_list_of_float = 25; + bool content_union_2_type_list_of_float_is_set = 26; + repeated bool content_union_2_type_list_of_bool = 27; + bool content_union_2_type_list_of_bool_is_set = 28; + repeated bytes content_union_2_type_list_of_bytes = 29; + bool content_union_2_type_list_of_bytes_is_set = 30; + map content_union_2_type_dict_of_str_int = 31; + bool content_union_2_type_dict_of_str_int_is_set = 32; + map content_union_2_type_dict_of_int_float = 33; + bool content_union_2_type_dict_of_int_float_is_set = 34; + map content_union_2_type_dict_of_bool_bytes = 35; + bool content_union_2_type_dict_of_bool_bytes_is_set = 36; + int64 content_union_2_type_int = 37; + bool content_union_2_type_int_is_set = 38; + DataModel2 content_union_3_type_DataModel2 = 39; + bool content_union_3_type_DataModel2_is_set = 40; + DataModel3 content_union_3_type_DataModel3 = 41; + bool content_union_3_type_DataModel3_is_set = 42; } message Performative_O_Performative{ - DataModel content_o_ct = 1; + DataModel4 content_o_ct = 1; bool content_o_ct_is_set = 2; bool content_o_bool = 3; bool content_o_bool_is_set = 4; diff --git a/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py b/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py index fb341147a6..7fe683b94b 100644 --- a/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py +++ b/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py @@ -14,7 +14,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x10t_protocol.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xf8\x37\n\x10TProtocolMessage\x12s\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x8b\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32\x64.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12s\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12q\n\x0eperformative_o\x18\x08 \x01(\x0b\x32W.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_PerformativeH\x00\x12u\n\x10performative_pct\x18\t \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12u\n\x10performative_pmt\x18\n \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12s\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xb2\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12h\n\ndict_field\x18\x08 \x03(\x0b\x32T.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1ay\n\x1cPerformative_Ct_Performative\x12Y\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xc0\x18\n\x1dPerformative_Pmt_Performative\x12\x92\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x92\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x92\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x92\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x92\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xe7\x0c\n\x1cPerformative_Mt_Performative\x12m\n\x1e\x63ontent_union_1_type_DataModel\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x02 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x03\x12"\n\x1a\x63ontent_union_1_type_float\x18\x04 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x05 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x06 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x07 \x03(\x03\x12)\n!content_union_1_type_list_of_bool\x18\x08 \x03(\x08\x12\xa9\x01\n$content_union_1_type_dict_of_str_int\x18\t \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\n \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x0b \x03(\x03\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0c \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\r \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\x0e \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0f \x03(\x0c\x12\xa9\x01\n$content_union_2_type_dict_of_str_int\x18\x10 \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xad\x01\n&content_union_2_type_dict_of_int_float\x18\x11 \x03(\x0b\x32}.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xaf\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x12 \x03(\x0b\x32~.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xc2\x04\n\x1bPerformative_O_Performative\x12[\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x12\x1b\n\x13\x63ontent_o_ct_is_set\x18\x02 \x01(\x08\x12\x16\n\x0e\x63ontent_o_bool\x18\x03 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x04 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x05 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x06 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x07 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x08 \x01(\x08\x12\x8f\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32o.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\n \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + b"\n\x10t_protocol.proto\x12)aea.some_author.some_protocol_name.v1_0_0\"\xcbK\n\x10TProtocolMessage\x12s\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x8b\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32\x64.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12s\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12q\n\x0eperformative_o\x18\x08 \x01(\x0b\x32W.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_PerformativeH\x00\x12u\n\x10performative_pct\x18\t \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12u\n\x10performative_pmt\x18\n \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12s\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xb2\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12h\n\ndict_field\x18\x08 \x03(\x0b\x32T.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel1\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel2\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel3\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel4\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1ay\n\x1cPerformative_Ct_Performative\x12Y\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xc0\x18\n\x1dPerformative_Pmt_Performative\x12\x92\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x92\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x92\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x92\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x92\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xdd\x16\n\x1cPerformative_Mt_Performative\x12o\n\x1f\x63ontent_union_1_type_DataModel1\x18\x01 \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1\x12.\n&content_union_1_type_DataModel1_is_set\x18\x02 \x01(\x08\x12\"\n\x1a\x63ontent_union_1_type_bytes\x18\x03 \x01(\x0c\x12)\n!content_union_1_type_bytes_is_set\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_int\x18\x05 \x01(\x03\x12'\n\x1f\x63ontent_union_1_type_int_is_set\x18\x06 \x01(\x08\x12\"\n\x1a\x63ontent_union_1_type_float\x18\x07 \x01(\x02\x12)\n!content_union_1_type_float_is_set\x18\x08 \x01(\x08\x12!\n\x19\x63ontent_union_1_type_bool\x18\t \x01(\x08\x12(\n content_union_1_type_bool_is_set\x18\n \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x0b \x01(\t\x12'\n\x1f\x63ontent_union_1_type_str_is_set\x18\x0c \x01(\x08\x12'\n\x1f\x63ontent_union_1_type_set_of_int\x18\r \x03(\x03\x12.\n&content_union_1_type_set_of_int_is_set\x18\x0e \x01(\x08\x12)\n!content_union_1_type_list_of_bool\x18\x0f \x03(\x08\x12\x30\n(content_union_1_type_list_of_bool_is_set\x18\x10 \x01(\x08\x12\xa9\x01\n$content_union_1_type_dict_of_str_int\x18\x11 \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12\x33\n+content_union_1_type_dict_of_str_int_is_set\x18\x12 \x01(\x08\x12)\n!content_union_2_type_set_of_bytes\x18\x13 \x03(\x0c\x12\x30\n(content_union_2_type_set_of_bytes_is_set\x18\x14 \x01(\x08\x12'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x15 \x03(\x03\x12.\n&content_union_2_type_set_of_int_is_set\x18\x16 \x01(\x08\x12'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x17 \x03(\t\x12.\n&content_union_2_type_set_of_str_is_set\x18\x18 \x01(\x08\x12*\n\"content_union_2_type_list_of_float\x18\x19 \x03(\x02\x12\x31\n)content_union_2_type_list_of_float_is_set\x18\x1a \x01(\x08\x12)\n!content_union_2_type_list_of_bool\x18\x1b \x03(\x08\x12\x30\n(content_union_2_type_list_of_bool_is_set\x18\x1c \x01(\x08\x12*\n\"content_union_2_type_list_of_bytes\x18\x1d \x03(\x0c\x12\x31\n)content_union_2_type_list_of_bytes_is_set\x18\x1e \x01(\x08\x12\xa9\x01\n$content_union_2_type_dict_of_str_int\x18\x1f \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x33\n+content_union_2_type_dict_of_str_int_is_set\x18 \x01(\x08\x12\xad\x01\n&content_union_2_type_dict_of_int_float\x18! \x03(\x0b\x32}.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x35\n-content_union_2_type_dict_of_int_float_is_set\x18\" \x01(\x08\x12\xaf\x01\n'content_union_2_type_dict_of_bool_bytes\x18# \x03(\x0b\x32~.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x12\x36\n.content_union_2_type_dict_of_bool_bytes_is_set\x18$ \x01(\x08\x12 \n\x18\x63ontent_union_2_type_int\x18% \x01(\x03\x12'\n\x1f\x63ontent_union_2_type_int_is_set\x18& \x01(\x08\x12o\n\x1f\x63ontent_union_3_type_DataModel2\x18' \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2\x12.\n&content_union_3_type_DataModel2_is_set\x18( \x01(\x08\x12o\n\x1f\x63ontent_union_3_type_DataModel3\x18) \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3\x12.\n&content_union_3_type_DataModel3_is_set\x18* \x01(\x08\x1a\x44\n\"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n\"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xc3\x04\n\x1bPerformative_O_Performative\x12\\\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4\x12\x1b\n\x13\x63ontent_o_ct_is_set\x18\x02 \x01(\x08\x12\x16\n\x0e\x63ontent_o_bool\x18\x03 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x04 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x05 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x06 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x07 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x08 \x01(\x08\x12\x8f\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32o.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\n \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3" ) @@ -23,6 +23,22 @@ _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = ( _TPROTOCOLMESSAGE_DATAMODEL.nested_types_by_name["DictFieldEntry"] ) +_TPROTOCOLMESSAGE_DATAMODEL1 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel1"] +_TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL1.nested_types_by_name["DictFieldEntry"] +) +_TPROTOCOLMESSAGE_DATAMODEL2 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel2"] +_TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL2.nested_types_by_name["DictFieldEntry"] +) +_TPROTOCOLMESSAGE_DATAMODEL3 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel3"] +_TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL3.nested_types_by_name["DictFieldEntry"] +) +_TPROTOCOLMESSAGE_DATAMODEL4 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel4"] +_TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY = ( + _TPROTOCOLMESSAGE_DATAMODEL4.nested_types_by_name["DictFieldEntry"] +) _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ "Performative_Ct_Performative" ] @@ -166,6 +182,78 @@ # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel) }, ), + "DataModel1": _reflection.GeneratedProtocolMessageType( + "DataModel1", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL1, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1) + }, + ), + "DataModel2": _reflection.GeneratedProtocolMessageType( + "DataModel2", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL2, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2) + }, + ), + "DataModel3": _reflection.GeneratedProtocolMessageType( + "DataModel3", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL3, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3) + }, + ), + "DataModel4": _reflection.GeneratedProtocolMessageType( + "DataModel4", + (_message.Message,), + { + "DictFieldEntry": _reflection.GeneratedProtocolMessageType( + "DictFieldEntry", + (_message.Message,), + { + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4.DictFieldEntry) + }, + ), + "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL4, + "__module__": "t_protocol_pb2" + # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4) + }, + ), "Performative_Ct_Performative": _reflection.GeneratedProtocolMessageType( "Performative_Ct_Performative", (_message.Message,), @@ -417,6 +505,14 @@ _sym_db.RegisterMessage(TProtocolMessage) _sym_db.RegisterMessage(TProtocolMessage.DataModel) _sym_db.RegisterMessage(TProtocolMessage.DataModel.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel1) +_sym_db.RegisterMessage(TProtocolMessage.DataModel1.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel2) +_sym_db.RegisterMessage(TProtocolMessage.DataModel2.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel3) +_sym_db.RegisterMessage(TProtocolMessage.DataModel3.DictFieldEntry) +_sym_db.RegisterMessage(TProtocolMessage.DataModel4) +_sym_db.RegisterMessage(TProtocolMessage.DataModel4.DictFieldEntry) _sym_db.RegisterMessage(TProtocolMessage.Performative_Ct_Performative) _sym_db.RegisterMessage(TProtocolMessage.Performative_Pt_Performative) _sym_db.RegisterMessage(TProtocolMessage.Performative_Pct_Performative) @@ -490,6 +586,14 @@ DESCRIPTOR._options = None _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._options = None _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_options = b"8\001" + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._options = None + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_options = b"8\001" _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = ( None ) @@ -611,143 +715,159 @@ b"8\001" ) _TPROTOCOLMESSAGE._serialized_start = 64 - _TPROTOCOLMESSAGE._serialized_end = 7224 + _TPROTOCOLMESSAGE._serialized_end = 9739 _TPROTOCOLMESSAGE_DATAMODEL._serialized_start = 931 _TPROTOCOLMESSAGE_DATAMODEL._serialized_end = 1237 _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_start = 1189 _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_end = 1237 - _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_start = 1239 - _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_end = 1360 - _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 1363 - _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 1503 - _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 1506 - _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 1802 - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 1805 - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 4941 + _TPROTOCOLMESSAGE_DATAMODEL1._serialized_start = 1240 + _TPROTOCOLMESSAGE_DATAMODEL1._serialized_end = 1548 + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_DATAMODEL2._serialized_start = 1551 + _TPROTOCOLMESSAGE_DATAMODEL2._serialized_end = 1859 + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_DATAMODEL3._serialized_start = 1862 + _TPROTOCOLMESSAGE_DATAMODEL3._serialized_end = 2170 + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_DATAMODEL4._serialized_start = 2173 + _TPROTOCOLMESSAGE_DATAMODEL4._serialized_end = 2481 + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_start = 1189 + _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_end = 1237 + _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_start = 2483 + _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_end = 2604 + _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 2607 + _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 2747 + _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 2750 + _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 3046 + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 3049 + _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 6185 _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_start = ( - 4053 + 5297 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_end = ( - 4111 + 5355 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_start = ( - 4113 + 5357 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_end = ( - 4169 + 5413 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_start = ( - 4171 + 5415 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_end = ( - 4229 + 5473 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_start = ( - 4231 + 5475 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_end = ( - 4288 + 5532 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_start = ( - 4290 + 5534 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_end = ( - 4346 + 5590 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_start = ( - 4348 + 5592 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_end = ( - 4407 + 5651 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_start = ( - 4409 + 5653 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_end = ( - 4466 + 5710 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_start = ( - 4468 + 5712 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_end = ( - 4527 + 5771 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_start = ( - 4529 + 5773 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_end = ( - 4587 + 5831 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_start = ( - 4589 + 5833 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_end = ( - 4646 + 5890 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_start = ( - 4648 + 5892 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_end = ( - 4706 + 5950 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_start = ( - 4708 + 5952 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_end = ( - 4764 + 6008 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_start = ( - 4766 + 6010 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_end = ( - 4824 + 6068 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_start = ( - 4826 + 6070 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_end = ( - 4883 + 6127 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_start = ( - 4885 + 6129 ) _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_end = ( - 4941 + 6185 ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 4944 - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6583 + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 6188 + _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 9097 _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( - 6300 + 8814 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( - 6368 + 8882 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( - 6370 + 8884 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( - 6438 + 8952 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( - 6440 + 8954 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( - 6510 + 9024 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( - 6512 + 9026 ) _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( - 6583 + 9097 ) - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6586 - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 7164 + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 9100 + _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 9679 _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( - 7107 + 9622 ) _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( - 7164 + 9679 ) - _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = 7166 - _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = 7208 + _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = 9681 + _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = 9723 # @@protoc_insertion_point(module_scope) diff --git a/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml b/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml index 8dd33c3051..43045fd7c7 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml +++ b/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml @@ -10,9 +10,9 @@ fingerprint: __init__.py: QmaR7viaQRnRb5woBhgaosWqW3Tmfvm25kb95erfXeABcb dialogues.py: QmQw2uWqsbwNma5yKnb6cRhaCHuU5nRa5F7eZoxRgUVekm message.py: QmVuM5P73nhZfTRW6yM4Ehz8tpegDGs38Vig3sYbHLMEKy - serialization.py: QmSofWb5kuojkb6Bt5tu2p7t4VMKx4FDdeNHihdcjeN8gn - t_protocol_no_ct.proto: QmVB1xEyeou9UvDUrKwxNhdUcvSdQvuFwFtgeEGneHNcG7 - t_protocol_no_ct_pb2.py: QmaFxo33ygWLxKSBSkV7nsK7Bz4HJy4JJ7cPK4xUj41Keu + serialization.py: QmVY4fb1CzTX8XtjqPrm5S8CZMa3wDGBiwUx2AoCRoQh1k + t_protocol_no_ct.proto: QmapyiDZBjF3K8yLZvCBYhjm3dFVwaLBKL8PLWUoYpTLez + t_protocol_no_ct_pb2.py: QmUeCxpxg2SYZfB26rjFentsmpFtJLgwU1ueMvPNQA4YbP fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/tests/data/reference_protocols/t_protocol_no_ct/serialization.py b/tests/data/reference_protocols/t_protocol_no_ct/serialization.py index e626920770..72ae972575 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/serialization.py +++ b/tests/data/reference_protocols/t_protocol_no_ct/serialization.py @@ -124,116 +124,142 @@ def encode(msg: Message) -> bytes: t_protocol_no_ct_msg.performative_pmt.CopyFrom(performative) elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_MT: performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_Mt_Performative() # type: ignore - if msg.is_set("content_union_1_type_bytes"): - performative.content_union_1_type_bytes_is_set = True - content_union_1_type_bytes = msg.content_union_1_type_bytes - performative.content_union_1_type_bytes = content_union_1_type_bytes - if msg.is_set("content_union_1_type_int"): - performative.content_union_1_type_int_is_set = True - content_union_1_type_int = msg.content_union_1_type_int - performative.content_union_1_type_int = content_union_1_type_int - if msg.is_set("content_union_1_type_float"): - performative.content_union_1_type_float_is_set = True - content_union_1_type_float = msg.content_union_1_type_float - performative.content_union_1_type_float = content_union_1_type_float - if msg.is_set("content_union_1_type_bool"): - performative.content_union_1_type_bool_is_set = True - content_union_1_type_bool = msg.content_union_1_type_bool - performative.content_union_1_type_bool = content_union_1_type_bool - if msg.is_set("content_union_1_type_str"): - performative.content_union_1_type_str_is_set = True - content_union_1_type_str = msg.content_union_1_type_str - performative.content_union_1_type_str = content_union_1_type_str - if msg.is_set("content_union_1_type_set_of_int"): - performative.content_union_1_type_set_of_int_is_set = True - content_union_1_type_set_of_int = msg.content_union_1_type_set_of_int - performative.content_union_1_type_set_of_int.extend( - content_union_1_type_set_of_int - ) - if msg.is_set("content_union_1_type_list_of_bool"): - performative.content_union_1_type_list_of_bool_is_set = True - content_union_1_type_list_of_bool = ( - msg.content_union_1_type_list_of_bool - ) - performative.content_union_1_type_list_of_bool.extend( - content_union_1_type_list_of_bool - ) - if msg.is_set("content_union_1_type_dict_of_str_int"): - performative.content_union_1_type_dict_of_str_int_is_set = True - content_union_1_type_dict_of_str_int = ( - msg.content_union_1_type_dict_of_str_int - ) - performative.content_union_1_type_dict_of_str_int.update( - content_union_1_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_set_of_bytes"): - performative.content_union_2_type_set_of_bytes_is_set = True - content_union_2_type_set_of_bytes = ( - msg.content_union_2_type_set_of_bytes - ) - performative.content_union_2_type_set_of_bytes.extend( - content_union_2_type_set_of_bytes - ) - if msg.is_set("content_union_2_type_set_of_int"): - performative.content_union_2_type_set_of_int_is_set = True - content_union_2_type_set_of_int = msg.content_union_2_type_set_of_int - performative.content_union_2_type_set_of_int.extend( - content_union_2_type_set_of_int - ) - if msg.is_set("content_union_2_type_set_of_str"): - performative.content_union_2_type_set_of_str_is_set = True - content_union_2_type_set_of_str = msg.content_union_2_type_set_of_str - performative.content_union_2_type_set_of_str.extend( - content_union_2_type_set_of_str - ) - if msg.is_set("content_union_2_type_list_of_float"): - performative.content_union_2_type_list_of_float_is_set = True - content_union_2_type_list_of_float = ( - msg.content_union_2_type_list_of_float - ) - performative.content_union_2_type_list_of_float.extend( - content_union_2_type_list_of_float - ) - if msg.is_set("content_union_2_type_list_of_bool"): - performative.content_union_2_type_list_of_bool_is_set = True - content_union_2_type_list_of_bool = ( - msg.content_union_2_type_list_of_bool - ) - performative.content_union_2_type_list_of_bool.extend( - content_union_2_type_list_of_bool - ) - if msg.is_set("content_union_2_type_list_of_bytes"): - performative.content_union_2_type_list_of_bytes_is_set = True - content_union_2_type_list_of_bytes = ( - msg.content_union_2_type_list_of_bytes - ) - performative.content_union_2_type_list_of_bytes.extend( - content_union_2_type_list_of_bytes - ) - if msg.is_set("content_union_2_type_dict_of_str_int"): - performative.content_union_2_type_dict_of_str_int_is_set = True - content_union_2_type_dict_of_str_int = ( - msg.content_union_2_type_dict_of_str_int - ) - performative.content_union_2_type_dict_of_str_int.update( - content_union_2_type_dict_of_str_int - ) - if msg.is_set("content_union_2_type_dict_of_int_float"): - performative.content_union_2_type_dict_of_int_float_is_set = True - content_union_2_type_dict_of_int_float = ( - msg.content_union_2_type_dict_of_int_float - ) - performative.content_union_2_type_dict_of_int_float.update( - content_union_2_type_dict_of_int_float - ) - if msg.is_set("content_union_2_type_dict_of_bool_bytes"): - performative.content_union_2_type_dict_of_bool_bytes_is_set = True - content_union_2_type_dict_of_bool_bytes = ( - msg.content_union_2_type_dict_of_bool_bytes - ) - performative.content_union_2_type_dict_of_bool_bytes.update( - content_union_2_type_dict_of_bool_bytes - ) + if msg.is_set("content_union_1"): + if isinstance(msg.content_union_1, bytes): + performative.content_union_1_type_bytes_is_set = True + content_union_1_type_bytes = msg.content_union_1 + performative.content_union_1_type_bytes = content_union_1_type_bytes + elif isinstance(msg.content_union_1, int): + performative.content_union_1_type_int_is_set = True + content_union_1_type_int = msg.content_union_1 + performative.content_union_1_type_int = content_union_1_type_int + elif isinstance(msg.content_union_1, float): + performative.content_union_1_type_float_is_set = True + content_union_1_type_float = msg.content_union_1 + performative.content_union_1_type_float = content_union_1_type_float + elif isinstance(msg.content_union_1, bool): + performative.content_union_1_type_bool_is_set = True + content_union_1_type_bool = msg.content_union_1 + performative.content_union_1_type_bool = content_union_1_type_bool + elif isinstance(msg.content_union_1, str): + performative.content_union_1_type_str_is_set = True + content_union_1_type_str = msg.content_union_1 + performative.content_union_1_type_str = content_union_1_type_str + elif isinstance(msg.content_union_1, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_1) + ): + performative.content_union_1_type_set_of_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_set_of_int.extend(content_union_1) + elif isinstance(msg.content_union_1, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_1) + ): + performative.content_union_1_type_list_of_bool_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_list_of_bool.extend( + content_union_1 + ) + elif isinstance(msg.content_union_1, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_1.items(), + ) + ): + performative.content_union_1_type_dict_of_str_int_is_set = True + content_union_1 = msg.content_union_1 + performative.content_union_1_type_dict_of_str_int.update( + content_union_1 + ) + elif msg.content_union_1 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_1` {msg.content_union_1 }" + ) + if msg.is_set("content_union_2"): + if isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_set_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, int), msg.content_union_2) + ): + performative.content_union_2_type_set_of_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_int.extend(content_union_2) + elif isinstance(msg.content_union_2, (set, frozenset)) and all( + map(lambda x: isinstance(x, str), msg.content_union_2) + ): + performative.content_union_2_type_set_of_str_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_set_of_str.extend(content_union_2) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, float), msg.content_union_2) + ): + performative.content_union_2_type_list_of_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_float.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bool), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bool_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bool.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, (list, tuple)) and all( + map(lambda x: isinstance(x, bytes), msg.content_union_2) + ): + performative.content_union_2_type_list_of_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_list_of_bytes.extend( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], str) and isinstance(x[1], int), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_str_int_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_str_int.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], int) and isinstance(x[1], float), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_int_float_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_int_float.update( + content_union_2 + ) + elif isinstance(msg.content_union_2, dict) and all( + map( + lambda x: isinstance(x[0], bool) and isinstance(x[1], bytes), + msg.content_union_2.items(), + ) + ): + performative.content_union_2_type_dict_of_bool_bytes_is_set = True + content_union_2 = msg.content_union_2 + performative.content_union_2_type_dict_of_bool_bytes.update( + content_union_2 + ) + elif msg.content_union_2 is None: + pass + else: + raise ValueError( + f"Bad value set to `content_union_2` {msg.content_union_2 }" + ) t_protocol_no_ct_msg.performative_mt.CopyFrom(performative) elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_O: performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_O_Performative() # type: ignore @@ -442,73 +468,97 @@ def decode(obj: bytes) -> Message: if ( t_protocol_no_ct_pb.performative_mt.content_union_1_type_set_of_int_is_set ): - content_union_1 = t_protocol_no_ct_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_no_ct_pb.performative_mt.content_union_1_type_set_of_int + ) content_union_1_frozenset = frozenset(content_union_1) performative_content["content_union_1"] = content_union_1_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_1_type_list_of_bool_is_set ): - content_union_1 = t_protocol_no_ct_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_no_ct_pb.performative_mt.content_union_1_type_list_of_bool + ) content_union_1_tuple = tuple(content_union_1) performative_content["content_union_1"] = content_union_1_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_1_type_dict_of_str_int_is_set ): - content_union_1 = t_protocol_no_ct_pb.performative_mt.content_union_1 + content_union_1 = ( + t_protocol_no_ct_pb.performative_mt.content_union_1_type_dict_of_str_int + ) content_union_1_dict = dict(content_union_1) performative_content["content_union_1"] = content_union_1_dict if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_bytes_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_bytes + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_int_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_int + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_str_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_str + ) content_union_2_frozenset = frozenset(content_union_2) performative_content["content_union_2"] = content_union_2_frozenset if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_float_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_float + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bool_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bool + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bytes_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bytes + ) content_union_2_tuple = tuple(content_union_2) performative_content["content_union_2"] = content_union_2_tuple if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_str_int_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_str_int + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_int_float_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_int_float + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict if ( t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_bool_bytes_is_set ): - content_union_2 = t_protocol_no_ct_pb.performative_mt.content_union_2 + content_union_2 = ( + t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_bool_bytes + ) content_union_2_dict = dict(content_union_2) performative_content["content_union_2"] = content_union_2_dict elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_O: @@ -548,5 +598,5 @@ def decode(obj: bytes) -> Message: dialogue_reference=dialogue_reference, target=target, performative=performative, - **performative_content + **performative_content, ) diff --git a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto index d3415e840c..b3c5d3c3c9 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto +++ b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto @@ -46,22 +46,39 @@ message TProtocolNoCtMessage{ message Performative_Mt_Performative{ bytes content_union_1_type_bytes = 1; - int64 content_union_1_type_int = 2; - float content_union_1_type_float = 3; - bool content_union_1_type_bool = 4; - string content_union_1_type_str = 5; - repeated int64 content_union_1_type_set_of_int = 6; - repeated bool content_union_1_type_list_of_bool = 7; - map content_union_1_type_dict_of_str_int = 8; - repeated bytes content_union_2_type_set_of_bytes = 9; - repeated int64 content_union_2_type_set_of_int = 10; - repeated string content_union_2_type_set_of_str = 11; - repeated float content_union_2_type_list_of_float = 12; - repeated bool content_union_2_type_list_of_bool = 13; - repeated bytes content_union_2_type_list_of_bytes = 14; - map content_union_2_type_dict_of_str_int = 15; - map content_union_2_type_dict_of_int_float = 16; - map content_union_2_type_dict_of_bool_bytes = 17; + bool content_union_1_type_bytes_is_set = 2; + int64 content_union_1_type_int = 3; + bool content_union_1_type_int_is_set = 4; + float content_union_1_type_float = 5; + bool content_union_1_type_float_is_set = 6; + bool content_union_1_type_bool = 7; + bool content_union_1_type_bool_is_set = 8; + string content_union_1_type_str = 9; + bool content_union_1_type_str_is_set = 10; + repeated int64 content_union_1_type_set_of_int = 11; + bool content_union_1_type_set_of_int_is_set = 12; + repeated bool content_union_1_type_list_of_bool = 13; + bool content_union_1_type_list_of_bool_is_set = 14; + map content_union_1_type_dict_of_str_int = 15; + bool content_union_1_type_dict_of_str_int_is_set = 16; + repeated bytes content_union_2_type_set_of_bytes = 17; + bool content_union_2_type_set_of_bytes_is_set = 18; + repeated int64 content_union_2_type_set_of_int = 19; + bool content_union_2_type_set_of_int_is_set = 20; + repeated string content_union_2_type_set_of_str = 21; + bool content_union_2_type_set_of_str_is_set = 22; + repeated float content_union_2_type_list_of_float = 23; + bool content_union_2_type_list_of_float_is_set = 24; + repeated bool content_union_2_type_list_of_bool = 25; + bool content_union_2_type_list_of_bool_is_set = 26; + repeated bytes content_union_2_type_list_of_bytes = 27; + bool content_union_2_type_list_of_bytes_is_set = 28; + map content_union_2_type_dict_of_str_int = 29; + bool content_union_2_type_dict_of_str_int_is_set = 30; + map content_union_2_type_dict_of_int_float = 31; + bool content_union_2_type_dict_of_int_float_is_set = 32; + map content_union_2_type_dict_of_bool_bytes = 33; + bool content_union_2_type_dict_of_bool_bytes_is_set = 34; } message Performative_O_Performative{ diff --git a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py index 8315b49001..ccd2ad0afc 100644 --- a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py @@ -14,7 +14,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x16t_protocol_no_ct.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\xd8\x32\n\x14TProtocolNoCtMessage\x12\x8f\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32h.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12w\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12u\n\x0eperformative_o\x18\x07 \x01(\x0b\x32[.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12y\n\x10performative_pct\x18\x08 \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12y\n\x10performative_pmt\x18\t \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12w\n\x0fperformative_pt\x18\n \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_PerformativeH\x00\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xfc\x18\n\x1dPerformative_Pmt_Performative\x12\x96\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x96\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x96\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x96\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x96\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x8a\x0c\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12 \n\x18\x63ontent_union_1_type_int\x18\x02 \x01(\x03\x12"\n\x1a\x63ontent_union_1_type_float\x18\x03 \x01(\x02\x12!\n\x19\x63ontent_union_1_type_bool\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x05 \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x06 \x03(\x03\x12)\n!content_union_1_type_list_of_bool\x18\x07 \x03(\x08\x12\xad\x01\n$content_union_1_type_dict_of_str_int\x18\x08 \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12)\n!content_union_2_type_set_of_bytes\x18\t \x03(\x0c\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\n \x03(\x03\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x0b \x03(\t\x12*\n"content_union_2_type_list_of_float\x18\x0c \x03(\x02\x12)\n!content_union_2_type_list_of_bool\x18\r \x03(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x0e \x03(\x0c\x12\xad\x01\n$content_union_2_type_dict_of_str_int\x18\x0f \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\xb2\x01\n&content_union_2_type_dict_of_int_float\x18\x10 \x03(\x0b\x32\x81\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\xb4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18\x11 \x03(\x0b\x32\x82\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xcc\x03\n\x1bPerformative_O_Performative\x12\x16\n\x0e\x63ontent_o_bool\x18\x01 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x02 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x03 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x05 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x06 \x01(\x08\x12\x93\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\x08 \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' + b'\n\x16t_protocol_no_ct.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\x8f\x39\n\x14TProtocolNoCtMessage\x12\x8f\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32h.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12w\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12u\n\x0eperformative_o\x18\x07 \x01(\x0b\x32[.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12y\n\x10performative_pct\x18\x08 \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12y\n\x10performative_pmt\x18\t \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12w\n\x0fperformative_pt\x18\n \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_PerformativeH\x00\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xfc\x18\n\x1dPerformative_Pmt_Performative\x12\x96\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x96\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x96\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x96\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x96\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xc1\x12\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12)\n!content_union_1_type_bytes_is_set\x18\x02 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x03\x12\'\n\x1f\x63ontent_union_1_type_int_is_set\x18\x04 \x01(\x08\x12"\n\x1a\x63ontent_union_1_type_float\x18\x05 \x01(\x02\x12)\n!content_union_1_type_float_is_set\x18\x06 \x01(\x08\x12!\n\x19\x63ontent_union_1_type_bool\x18\x07 \x01(\x08\x12(\n content_union_1_type_bool_is_set\x18\x08 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\t \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_str_is_set\x18\n \x01(\x08\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x0b \x03(\x03\x12.\n&content_union_1_type_set_of_int_is_set\x18\x0c \x01(\x08\x12)\n!content_union_1_type_list_of_bool\x18\r \x03(\x08\x12\x30\n(content_union_1_type_list_of_bool_is_set\x18\x0e \x01(\x08\x12\xad\x01\n$content_union_1_type_dict_of_str_int\x18\x0f \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12\x33\n+content_union_1_type_dict_of_str_int_is_set\x18\x10 \x01(\x08\x12)\n!content_union_2_type_set_of_bytes\x18\x11 \x03(\x0c\x12\x30\n(content_union_2_type_set_of_bytes_is_set\x18\x12 \x01(\x08\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x13 \x03(\x03\x12.\n&content_union_2_type_set_of_int_is_set\x18\x14 \x01(\x08\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x15 \x03(\t\x12.\n&content_union_2_type_set_of_str_is_set\x18\x16 \x01(\x08\x12*\n"content_union_2_type_list_of_float\x18\x17 \x03(\x02\x12\x31\n)content_union_2_type_list_of_float_is_set\x18\x18 \x01(\x08\x12)\n!content_union_2_type_list_of_bool\x18\x19 \x03(\x08\x12\x30\n(content_union_2_type_list_of_bool_is_set\x18\x1a \x01(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x1b \x03(\x0c\x12\x31\n)content_union_2_type_list_of_bytes_is_set\x18\x1c \x01(\x08\x12\xad\x01\n$content_union_2_type_dict_of_str_int\x18\x1d \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x33\n+content_union_2_type_dict_of_str_int_is_set\x18\x1e \x01(\x08\x12\xb2\x01\n&content_union_2_type_dict_of_int_float\x18\x1f \x03(\x0b\x32\x81\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x35\n-content_union_2_type_dict_of_int_float_is_set\x18 \x01(\x08\x12\xb4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18! \x03(\x0b\x32\x82\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x12\x36\n.content_union_2_type_dict_of_bool_bytes_is_set\x18" \x01(\x08\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xcc\x03\n\x1bPerformative_O_Performative\x12\x16\n\x0e\x63ontent_o_bool\x18\x01 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x02 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x03 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x05 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x06 \x01(\x08\x12\x93\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\x08 \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' ) @@ -566,7 +566,7 @@ b"8\001" ) _TPROTOCOLNOCTMESSAGE._serialized_start = 70 - _TPROTOCOLNOCTMESSAGE._serialized_end = 6558 + _TPROTOCOLNOCTMESSAGE._serialized_end = 7381 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 848 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 988 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 991 @@ -664,43 +664,43 @@ 4486 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 4489 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6035 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6858 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( - 5752 + 6575 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( - 5820 + 6643 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( - 5822 + 6645 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( - 5890 + 6713 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( - 5892 + 6715 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( - 5962 + 6785 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( - 5964 + 6787 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( - 6035 + 6858 ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6038 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 6498 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6861 + _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 7321 _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( - 6441 + 7264 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( - 6498 + 7321 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = ( - 6500 + 7323 ) _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = ( - 6542 + 7365 ) # @@protoc_insertion_point(module_scope) diff --git a/tests/data/sample_specification.yaml b/tests/data/sample_specification.yaml index 62d546240a..a4a530591e 100644 --- a/tests/data/sample_specification.yaml +++ b/tests/data/sample_specification.yaml @@ -32,6 +32,7 @@ speech_acts: # custom type inside of set, list, and dict isn't allowed. # content_dict_int_ct: pt:dict[pt:int, ct:DataModel] # content_dict_ct_ct: pt:dict[ct:DataModel, ct:DataModel] +# content_dict_ct_bool: pt:dict[ct:DataModel, pt:bool] # invalid in protobuf (key in map cannot be 'bytes', 'float', 'double', 'message') # content_dict_bytes_bytes: pt:dict[pt:bytes, pt:bytes] # content_dict_bytes_int: pt:dict[pt:bytes, pt:int] @@ -44,11 +45,11 @@ speech_acts: content_dict_int_bool: pt:dict[pt:int, pt:bool] content_dict_int_str: pt:dict[pt:int, pt:str] # invalid in protobuf (key in map cannot be 'bytes', 'float', 'double', 'message') -# content_dict_float_bytes: pt:dict[pt:int, pt:bytes] -# content_dict_float_int: pt:dict[pt:int, pt:int] -# content_dict_float_float: pt:dict[pt:int, pt:float] -# content_dict_float_bool: pt:dict[pt:int, pt:bool] -# content_dict_float_str: pt:dict[pt:int, pt:str] +# content_dict_float_bytes: pt:dict[pt:float, pt:bytes] +# content_dict_float_int: pt:dict[pt:float, pt:int] +# content_dict_float_float: pt:dict[pt:float, pt:float] +# content_dict_float_bool: pt:dict[pt:float, pt:bool] +# content_dict_float_str: pt:dict[pt:float, pt:str] content_dict_bool_bytes: pt:dict[pt:bool, pt:bytes] content_dict_bool_int: pt:dict[pt:bool, pt:int] content_dict_bool_float: pt:dict[pt:bool, pt:float] @@ -60,10 +61,11 @@ speech_acts: content_dict_str_bool: pt:dict[pt:str, pt:bool] content_dict_str_str: pt:dict[pt:str, pt:str] performative_mt: - content_union_1: pt:union[ct:DataModel, pt:bytes, pt:int, pt:float, pt:bool, pt:str, pt:set[pt:int], pt:list[pt:bool], pt:dict[pt:str, pt:int]] - content_union_2: pt:union[pt:set[pt:bytes], pt:set[pt:int], pt:set[pt:str], pt:list[pt:float], pt:list[pt:bool], pt:list[pt:bytes], pt:dict[pt:str, pt:int], pt:dict[pt:int, pt:float], pt:dict[pt:bool, pt:bytes]] + content_union_1: pt:union[ct:DataModel1, pt:bytes, pt:int, pt:float, pt:bool, pt:str, pt:set[pt:int], pt:list[pt:bool], pt:dict[pt:str, pt:int]] + content_union_2: pt:union[pt:set[pt:bytes], pt:set[pt:int], pt:set[pt:str], pt:list[pt:float], pt:list[pt:bool], pt:list[pt:bytes], pt:dict[pt:str, pt:int], pt:dict[pt:int, pt:float], pt:dict[pt:bool, pt:bytes], pt:int] + content_union_3: pt:union[ct:DataModel2, ct:DataModel3] performative_o: - content_o_ct: pt:optional[ct:DataModel] + content_o_ct: pt:optional[ct:DataModel4] content_o_bool: pt:optional[pt:bool] content_o_set_int: pt:optional[pt:set[pt:int]] content_o_list_bytes: pt:optional[pt:list[pt:bytes]] @@ -82,6 +84,42 @@ ct:DataModel: | repeated int64 set_field = 6; repeated string list_field = 7; map dict_field = 8; +ct:DataModel1: | + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; +ct:DataModel2: | + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; +ct:DataModel3: | + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; +ct:DataModel4: | + bytes bytes_field = 1; + int64 int_field = 2; + float float_field = 3; + bool bool_field = 4; + string str_field = 5; + repeated int64 set_field = 6; + repeated string list_field = 7; + map dict_field = 8; ... --- initiation: [performative_ct, performative_pt] diff --git a/tests/data/sample_specification_no_custom_types.yaml b/tests/data/sample_specification_no_custom_types.yaml index 73c14b1846..97df6ce5dd 100644 --- a/tests/data/sample_specification_no_custom_types.yaml +++ b/tests/data/sample_specification_no_custom_types.yaml @@ -30,6 +30,7 @@ speech_acts: # custom type inside of set, list, and dict isn't allowed. # content_dict_int_ct: pt:dict[pt:int, ct:DataModel] # content_dict_ct_ct: pt:dict[ct:DataModel, ct:DataModel] +# content_dict_ct_bool: pt:dict[ct:DataModel, pt:bool] # invalid in protobuf (key in map cannot be 'bytes', 'float', 'double', 'message') # content_dict_bytes_bytes: pt:dict[pt:bytes, pt:bytes] # content_dict_bytes_int: pt:dict[pt:bytes, pt:int] @@ -42,11 +43,11 @@ speech_acts: content_dict_int_bool: pt:dict[pt:int, pt:bool] content_dict_int_str: pt:dict[pt:int, pt:str] # invalid in protobuf (key in map cannot be 'bytes', 'float', 'double', 'message') -# content_dict_float_bytes: pt:dict[pt:int, pt:bytes] -# content_dict_float_int: pt:dict[pt:int, pt:int] -# content_dict_float_float: pt:dict[pt:int, pt:float] -# content_dict_float_bool: pt:dict[pt:int, pt:bool] -# content_dict_float_str: pt:dict[pt:int, pt:str] +# content_dict_float_bytes: pt:dict[pt:float, pt:bytes] +# content_dict_float_int: pt:dict[pt:float, pt:int] +# content_dict_float_float: pt:dict[pt:float, pt:float] +# content_dict_float_bool: pt:dict[pt:float, pt:bool] +# content_dict_float_str: pt:dict[pt:float, pt:str] content_dict_bool_bytes: pt:dict[pt:bool, pt:bytes] content_dict_bool_int: pt:dict[pt:bool, pt:int] content_dict_bool_float: pt:dict[pt:bool, pt:float] diff --git a/tests/test_protocols/test_generator/test_extract_specification.py b/tests/test_protocols/test_generator/test_extract_specification.py index a12d46d12a..66418a0f87 100644 --- a/tests/test_protocols/test_generator/test_extract_specification.py +++ b/tests/test_protocols/test_generator/test_extract_specification.py @@ -417,11 +417,12 @@ def test_extract_positive(self): "content_dict_str_str": "Dict[str, str]", }, "performative_mt": { - "content_union_1": "Union[DataModel, bytes, int, float, bool, str, FrozenSet[int], Tuple[bool, ...], Dict[str, int]]", - "content_union_2": "Union[FrozenSet[bytes], FrozenSet[int], FrozenSet[str], Tuple[float, ...], Tuple[bool, ...], Tuple[bytes, ...], Dict[str, int], Dict[int, float], Dict[bool, bytes]]", + "content_union_1": "Union[DataModel1, bytes, int, float, bool, str, FrozenSet[int], Tuple[bool, ...], Dict[str, int]]", + "content_union_2": "Union[FrozenSet[bytes], FrozenSet[int], FrozenSet[str], Tuple[float, ...], Tuple[bool, ...], Tuple[bytes, ...], Dict[str, int], Dict[int, float], Dict[bool, bytes], int]", + "content_union_3": "Union[DataModel2, DataModel3]", }, "performative_o": { - "content_o_ct": "Optional[DataModel]", + "content_o_ct": "Optional[DataModel4]", "content_o_bool": "Optional[bool]", "content_o_set_int": "Optional[FrozenSet[int]]", "content_o_list_bytes": "Optional[Tuple[bytes, ...]]", @@ -470,16 +471,30 @@ def test_extract_positive(self): "content_dict_str_float": "Dict[str, float]", "content_dict_str_bool": "Dict[str, bool]", "content_dict_str_str": "Dict[str, str]", - "content_union_1": "Union[DataModel, bytes, int, float, bool, str, FrozenSet[int], Tuple[bool, ...], Dict[str, int]]", - "content_union_2": "Union[FrozenSet[bytes], FrozenSet[int], FrozenSet[str], Tuple[float, ...], Tuple[bool, ...], Tuple[bytes, ...], Dict[str, int], Dict[int, float], Dict[bool, bytes]]", - "content_o_ct": "Optional[DataModel]", + "content_union_1": "Union[DataModel1, bytes, int, float, bool, str, FrozenSet[int], Tuple[bool, ...], Dict[str, int]]", + "content_union_2": "Union[FrozenSet[bytes], FrozenSet[int], FrozenSet[str], Tuple[float, ...], Tuple[bool, ...], Tuple[bytes, ...], Dict[str, int], Dict[int, float], Dict[bool, bytes], int]", + "content_union_3": "Union[DataModel2, DataModel3]", + "content_o_ct": "Optional[DataModel4]", "content_o_bool": "Optional[bool]", "content_o_set_int": "Optional[FrozenSet[int]]", "content_o_list_bytes": "Optional[Tuple[bytes, ...]]", "content_o_dict_str_int": "Optional[Dict[str, int]]", } - assert spec.all_custom_types == ["DataModel"] - assert spec.custom_custom_types == {"DataModel": "CustomDataModel"} + assert spec.all_custom_types == [ + "DataModel", + "DataModel1", + "DataModel2", + "DataModel3", + "DataModel4", + ] + assert spec.custom_custom_types == { + "DataModel": "CustomDataModel", + "DataModel1": "CustomDataModel1", + "DataModel2": "CustomDataModel2", + "DataModel3": "CustomDataModel3", + "DataModel4": "CustomDataModel4", + } + assert spec.initial_performatives == ["PERFORMATIVE_CT", "PERFORMATIVE_PT"] assert spec.reply == { "performative_ct": ["performative_pct"], diff --git a/tests/test_protocols/test_generator/test_generator.py b/tests/test_protocols/test_generator/test_generator.py index 2b1755f282..ff7b8c5b85 100644 --- a/tests/test_protocols/test_generator/test_generator.py +++ b/tests/test_protocols/test_generator/test_generator.py @@ -455,26 +455,30 @@ def test_generated_protocol_serialisation_pmt(self): def test_generated_protocol_serialisation_mt(self): """Test serialisation and deserialisation of a message involving an mt type.""" - pytest.skip( - "Currently, union type is not properly implemented in the generator." - ) some_dict = {1: True, 2: False, 3: True, 4: False} - data_model = TProtocolMessage.DataModel( - bytes_field=b"some bytes", - int_field=42, - float_field=42.7, - bool_field=True, - str_field="some string", - set_field={1, 2, 3, 4, 5}, - list_field=["some string 1", "some string 2"], - dict_field=some_dict, - ) + + def make_data_model(type_): + return type_( + bytes_field=b"some bytes", + int_field=42, + float_field=42.7, + bool_field=True, + str_field="some string", + set_field={1, 2, 3, 4, 5}, + list_field=["some string 1", "some string 2"], + dict_field=some_dict, + ) + + data_model1 = make_data_model(TProtocolMessage.DataModel1) + data_model2 = make_data_model(TProtocolMessage.DataModel2) message_ct = TProtocolMessage( message_id=1, dialogue_reference=(str(0), ""), target=0, performative=TProtocolMessage.Performative.PERFORMATIVE_MT, - content_union_1=data_model, + content_union_1=data_model1, + content_union_2=frozenset([1, 2, 3]), + content_union_3=data_model2, ) encoded_message_in_bytes = TProtocolMessage.serializer.encode(message_ct) @@ -490,6 +494,7 @@ def test_generated_protocol_serialisation_mt(self): assert decoded_message.target == message_ct.target assert decoded_message.performative == message_ct.performative assert decoded_message.content_union_1 == message_ct.content_union_1 + assert decoded_message.content_union_2 == message_ct.content_union_2 ##################### @@ -499,6 +504,7 @@ def test_generated_protocol_serialisation_mt(self): target=0, performative=TProtocolMessage.Performative.PERFORMATIVE_MT, content_union_1=b"some bytes", + content_union_2=2, ) encoded_message_in_bytes = TProtocolMessage.serializer.encode(message_pt_bytes) @@ -520,6 +526,7 @@ def test_generated_protocol_serialisation_mt(self): assert decoded_message.target == message_pt_bytes.target assert decoded_message.performative == message_pt_bytes.performative assert decoded_message.content_union_1 == message_pt_bytes.content_union_1 + assert decoded_message.content_union_2 == message_pt_bytes.content_union_2 ##################### @@ -529,6 +536,7 @@ def test_generated_protocol_serialisation_mt(self): target=0, performative=TProtocolMessage.Performative.PERFORMATIVE_MT, content_union_1=3453, + content_union_2=tuple([b"1", b"2", b"3"]), ) encoded_message_in_bytes = TProtocolMessage.serializer.encode(message_pt_int) @@ -550,15 +558,17 @@ def test_generated_protocol_serialisation_mt(self): assert decoded_message.target == message_pt_int.target assert decoded_message.performative == message_pt_int.performative assert decoded_message.content_union_1 == message_pt_int.content_union_1 + assert decoded_message.content_union_2 == message_pt_int.content_union_2 ##################### - + # float does not decoded properly + """ message_pt_float = TProtocolMessage( message_id=1, dialogue_reference=(str(0), ""), target=0, performative=TProtocolMessage.Performative.PERFORMATIVE_MT, - content_union_1=34.64, + content_union_1=34.4, ) encoded_message_in_bytes = TProtocolMessage.serializer.encode(message_pt_float) @@ -580,7 +590,7 @@ def test_generated_protocol_serialisation_mt(self): assert decoded_message.target == message_pt_float.target assert decoded_message.performative == message_pt_float.performative assert decoded_message.content_union_1 == message_pt_float.content_union_1 - + """ ##################### message_pt_bool = TProtocolMessage( @@ -642,6 +652,8 @@ def test_generated_protocol_serialisation_mt(self): assert decoded_message.content_union_1 == message_pt_str.content_union_1 ##################### + """ + NESTED TYPES AR NOT SUPPORTED message_set_int = TProtocolMessage( message_id=1, @@ -737,11 +749,12 @@ def test_generated_protocol_serialisation_mt(self): assert decoded_message.target == message_dict_str_int.target assert decoded_message.performative == message_dict_str_int.performative assert decoded_message.content_union_1 == message_dict_str_int.content_union_1 + """ def test_generated_protocol_serialisation_o(self): """Test serialisation and deserialisation of a message involving an optional type.""" some_dict = {1: True, 2: False, 3: True, 4: False} - data_model = TProtocolMessage.DataModel( + data_model = TProtocolMessage.DataModel4( bytes_field=b"some bytes", int_field=42, float_field=42.7, diff --git a/tests/test_protocols/test_generator/test_validate.py b/tests/test_protocols/test_generator/test_validate.py index 649905032d..a8cd23dded 100644 --- a/tests/test_protocols/test_generator/test_validate.py +++ b/tests/test_protocols/test_generator/test_validate.py @@ -168,6 +168,9 @@ def test_is_valid_ct(self): valid_content_type_6 = "ct:DataF" assert _is_valid_ct(valid_content_type_6) is True + valid_content_type_7 = "ct:DataModel2" + assert _is_valid_ct(valid_content_type_7) is True + ################################################### invalid_content_type_1 = "ct:data" @@ -179,9 +182,6 @@ def test_is_valid_ct(self): invalid_content_type_3 = "ct: DataModel" assert _is_valid_ct(invalid_content_type_3) is False - invalid_content_type_4 = "ct:E3" - assert _is_valid_ct(invalid_content_type_4) is False - def test_is_valid_pt(self): """Test for the '_is_valid_pt' method.""" valid_content_type_1 = "pt:bytes" @@ -377,33 +377,30 @@ def test_is_valid_dict(self): def test_is_valid_union(self): """Test for the '_is_valid_union' method.""" - valid_content_type_1 = ( - "pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str, pt:set[pt:bytes], " - "pt:set[pt:int], pt:set[pt:float], pt:set[pt:bool], pt:set[pt:str], " - "pt:list[pt:bytes], pt:list[pt:int], pt:list[pt:float], pt:list[pt:bool], pt:list[pt:str], " - "pt:dict[pt:bytes, pt:bytes], pt:dict[ pt:bytes , pt:int ] , pt:dict[pt:bytes, pt:float], pt:dict[pt:bytes, pt:bool], pt:dict[pt:bytes, pt:str], " - "pt:dict[pt:int, pt:bytes], pt:dict[pt:int, pt:int], pt:dict[pt:int, pt:float], pt:dict[pt:int, pt:bool], pt:dict[pt:int, pt:str], " - "pt:dict[pt:float, pt:bytes], pt:dict[pt:float, pt:int], pt:dict[pt:float, pt:float], pt:dict[pt:float, pt:bool], pt:dict[pt:float, pt:str], " - "pt:dict[pt:bool, pt:bytes], pt:dict[pt:bool, pt:int], pt:dict[pt:bool,pt:float], pt:dict[pt:bool, pt:bool], pt:dict[pt:bool, pt:str], " - "pt:dict[pt:str, pt:bytes], pt:dict[pt:str, pt:int], pt:dict[pt:str,pt:float], pt:dict[pt:str, pt:bool], pt:dict[pt:str, pt:str]]" - ) + valid_content_type_1 = "pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str]" assert _is_valid_union(valid_content_type_1) is True - valid_content_type_2 = "pt:union[pt:bytes, pt:set[pt:int]]" - assert _is_valid_union(valid_content_type_2) is True - valid_content_type_3 = "pt:union[pt:float, pt:bool]" assert _is_valid_union(valid_content_type_3) is True - valid_content_type_4 = "pt:union[pt:set[pt:int], pt:set[pt:float]]" - assert _is_valid_union(valid_content_type_4) is True + valid_content_type_3 = "pt:union[ct:DataModel, pt:bool]" + assert _is_valid_union(valid_content_type_3) is True + + valid_content_type_3 = "pt:union[ct:DataModel, ct:DataModel2]" + assert _is_valid_union(valid_content_type_3) is True valid_content_type_5 = "pt:union[pt:bool,pt:bytes]" assert _is_valid_union(valid_content_type_5) is True + valid_content_type_4 = "pt:union[pt:set[pt:int], pt:set[pt:float]]" + assert _is_valid_union(valid_content_type_4) is True + valid_content_type_6 = " pt:union[ pt:bytes , pt:set[ pt:int ] ] " assert _is_valid_union(valid_content_type_6) is True + valid_content_type_13 = "pt:union[pt:bytes, pt:set[pt:int]]" + assert _is_valid_union(valid_content_type_13) is True + ################################################### invalid_content_type_1 = "pt:onion[pt:bool, pt:str]" @@ -447,18 +444,11 @@ def test_is_valid_union(self): def test_is_valid_optional(self): """Test for the '_is_valid_optional' method.""" valid_content_type_1 = ( - "pt:optional[pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str, pt:set[pt:bytes], " - "pt:set[pt:int], pt:set[pt:float], pt:set[pt:bool], pt:set[pt:str], " - "pt:list[pt:bytes], pt:list[pt:int], pt:list[pt:float], pt:list[pt:bool], pt:list[pt:str], " - "pt:dict[pt:bytes, pt:bytes], pt:dict[ pt:bytes , pt:int ] , pt:dict[pt:bytes, pt:float], pt:dict[pt:bytes, pt:bool], pt:dict[pt:bytes, pt:str], " - "pt:dict[pt:int, pt:bytes], pt:dict[pt:int, pt:int], pt:dict[pt:int, pt:float], pt:dict[pt:int, pt:bool], pt:dict[pt:int, pt:str], " - "pt:dict[pt:float, pt:bytes], pt:dict[pt:float, pt:int], pt:dict[pt:float, pt:float], pt:dict[pt:float, pt:bool], pt:dict[pt:float, pt:str], " - "pt:dict[pt:bool, pt:bytes], pt:dict[pt:bool, pt:int], pt:dict[pt:bool,pt:float], pt:dict[pt:bool, pt:bool], pt:dict[pt:bool, pt:str], " - "pt:dict[pt:str, pt:bytes], pt:dict[pt:str, pt:int], pt:dict[pt:str,pt:float], pt:dict[pt:str, pt:bool], pt:dict[pt:str, pt:str]]]" + "pt:optional[pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str]]" ) assert _is_valid_optional(valid_content_type_1) is True - valid_content_type_2 = "pt:optional[pt:union[pt:bytes, pt:set[pt:int]]]" + valid_content_type_2 = "pt:optional[pt:union[pt:bytes, pt:str]]" assert _is_valid_optional(valid_content_type_2) is True valid_content_type_3 = "pt:optional[pt:bytes]" @@ -543,14 +533,7 @@ def test_is_valid_content_type_format(self): assert _is_valid_content_type_format(valid_content_type_5) is True valid_content_type_6 = ( - "pt:optional[pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str, pt:set[pt:bytes], " - "pt:set[pt:int], pt:set[pt:float], pt:set[pt:bool], pt:set[pt:str], " - "pt:list[pt:bytes], pt:list[pt:int], pt:list[pt:float], pt:list[pt:bool], pt:list[pt:str], " - "pt:dict[pt:bytes, pt:bytes], pt:dict[ pt:bytes , pt:int ] , pt:dict[pt:bytes, pt:float], pt:dict[pt:bytes, pt:bool], pt:dict[pt:bytes, pt:str], " - "pt:dict[pt:int, pt:bytes], pt:dict[pt:int, pt:int], pt:dict[pt:int, pt:float], pt:dict[pt:int, pt:bool], pt:dict[pt:int, pt:str], " - "pt:dict[pt:float, pt:bytes], pt:dict[pt:float, pt:int], pt:dict[pt:float, pt:float], pt:dict[pt:float, pt:bool], pt:dict[pt:float, pt:str], " - "pt:dict[pt:bool, pt:bytes], pt:dict[pt:bool, pt:int], pt:dict[pt:bool,pt:float], pt:dict[pt:bool, pt:bool], pt:dict[pt:bool, pt:str], " - "pt:dict[pt:str, pt:bytes], pt:dict[pt:str, pt:int], pt:dict[pt:str,pt:float], pt:dict[pt:str, pt:bool], pt:dict[pt:str, pt:str]]]" + "pt:optional[pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str]]" ) assert _is_valid_content_type_format(valid_content_type_6) is True @@ -884,14 +867,7 @@ def test_validate_content_type(self): ) valid_content_type_6 = ( - "pt:optional[pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str, pt:set[pt:bytes], " - "pt:set[pt:int], pt:set[pt:float], pt:set[pt:bool], pt:set[pt:str], " - "pt:list[pt:bytes], pt:list[pt:int], pt:list[pt:float], pt:list[pt:bool], pt:list[pt:str], " - "pt:dict[pt:bytes, pt:bytes], pt:dict[ pt:bytes , pt:int ] , pt:dict[pt:bytes, pt:float], pt:dict[pt:bytes, pt:bool], pt:dict[pt:bytes, pt:str], " - "pt:dict[pt:int, pt:bytes], pt:dict[pt:int, pt:int], pt:dict[pt:int, pt:float], pt:dict[pt:int, pt:bool], pt:dict[pt:int, pt:str], " - "pt:dict[pt:float, pt:bytes], pt:dict[pt:float, pt:int], pt:dict[pt:float, pt:float], pt:dict[pt:float, pt:bool], pt:dict[pt:float, pt:str], " - "pt:dict[pt:bool, pt:bytes], pt:dict[pt:bool, pt:int], pt:dict[pt:bool,pt:float], pt:dict[pt:bool, pt:bool], pt:dict[pt:bool, pt:str], " - "pt:dict[pt:str, pt:bytes], pt:dict[pt:str, pt:int], pt:dict[pt:str,pt:float], pt:dict[pt:str, pt:bool], pt:dict[pt:str, pt:str]]]" + "pt:optional[pt:union[pt:bytes, pt:int, pt:float, pt:bool, pt:str]]" ) valid_result_6, valid_msg_6 = _validate_content_type( valid_content_type_6, content_name, performative From bb783dc506b5a5498c93717f207e85d8e84d3fc5 Mon Sep 17 00:00:00 2001 From: Yuri Turchenkov Date: Mon, 31 Oct 2022 19:55:05 +0400 Subject: [PATCH 5/7] feat: release 1.2.2 (#2787) * plugins versions are updated * release history and updating are updated * packages versions bumped * documentation updated * bump_aea_version script updated to support pyproject.toml * aea version bumped to 1.2.2 * spelling fixes * small fixes * protocols versions bumped --- .spelling | 15 ++ HISTORY.md | 17 ++ aea/__version__.py | 2 +- docs/aggregation-demo.md | 24 +- docs/api/aea_builder.md | 10 +- docs/api/configurations/base.md | 10 +- docs/api/configurations/manager.md | 12 +- docs/api/configurations/pypi.md | 2 +- docs/api/context/base.md | 2 +- docs/api/crypto/base.md | 4 +- docs/api/crypto/registries/base.md | 32 +-- docs/api/crypto/wallet.md | 2 +- docs/api/helpers/async_utils.md | 8 +- docs/api/helpers/base.md | 4 +- docs/api/helpers/search/models.md | 56 ++--- docs/api/helpers/sym_link.md | 2 +- docs/api/manager/manager.md | 4 +- docs/api/multiplexer.md | 4 +- docs/api/plugins/aea_cli_ipfs/core.md | 12 +- docs/api/protocols/generator/base.md | 6 +- docs/api/skills/behaviours.md | 2 +- docs/api/test_tools/generic.md | 12 +- docs/api/test_tools/test_skill.md | 8 +- docs/aries-cloud-agent-demo.md | 26 +-- docs/build-aea-programmatically.md | 2 +- docs/car-park-skills.md | 38 +-- docs/cli-vs-programmatic-aeas.md | 2 +- docs/config.md | 6 +- docs/connect-a-frontend.md | 4 +- docs/connection.md | 2 +- docs/contract.md | 32 +-- docs/core-components-1.md | 2 +- docs/erc1155-skills.md | 38 +-- docs/generic-skills-step-by-step.md | 56 ++--- docs/generic-skills.md | 34 +-- docs/gym-skill.md | 8 +- docs/http-connection-and-skill.md | 8 +- docs/language-agnostic-definition.md | 6 +- docs/ledger-integration.md | 2 +- docs/logging.md | 4 +- docs/ml-skills.md | 36 +-- docs/multi-agent-manager.md | 8 +- docs/oracle-demo.md | 36 +-- docs/orm-integration.md | 36 +-- docs/p2p-connection.md | 20 +- docs/prometheus.md | 4 +- docs/protocol.md | 20 +- docs/questions-and-answers.md | 2 +- docs/quickstart.md | 6 +- docs/simple-oef-usage.md | 2 +- docs/skill-guide.md | 18 +- docs/skill.md | 2 +- docs/tac-skills-contract.md | 120 +++++----- docs/tac-skills.md | 52 ++--- docs/tac.md | 2 +- docs/thermometer-skills.md | 38 +-- docs/upgrading.md | 9 + docs/weather-skills.md | 38 +-- examples/tac_deploy/tac_run.sh | 2 +- .../agents/aries_alice/aea-config.yaml | 28 +-- .../agents/aries_faber/aea-config.yaml | 28 +-- .../agents/car_data_buyer/aea-config.yaml | 30 +-- .../agents/car_detector/aea-config.yaml | 30 +-- .../agents/coin_price_feed/aea-config.yaml | 32 +-- .../agents/coin_price_oracle/aea-config.yaml | 42 ++-- .../coin_price_oracle_client/aea-config.yaml | 32 +-- .../confirmation_aea_aw1/aea-config.yaml | 46 ++-- .../confirmation_aea_aw2/aea-config.yaml | 36 +-- .../confirmation_aea_aw3/aea-config.yaml | 46 ++-- .../confirmation_aea_aw5/aea-config.yaml | 46 ++-- .../agents/erc1155_client/aea-config.yaml | 38 +-- .../agents/erc1155_deployer/aea-config.yaml | 38 +-- .../agents/fipa_dummy_buyer/aea-config.yaml | 14 +- .../agents/generic_buyer/aea-config.yaml | 28 +-- .../agents/generic_seller/aea-config.yaml | 28 +-- .../fetchai/agents/gym_aea/aea-config.yaml | 16 +- .../agents/latest_block_feed/aea-config.yaml | 18 +- .../agents/ml_data_provider/aea-config.yaml | 30 +-- .../agents/ml_model_trainer/aea-config.yaml | 30 +-- .../agents/my_first_aea/aea-config.yaml | 10 +- .../registration_aea_aw1/aea-config.yaml | 40 ++-- .../agents/simple_aggregator/aea-config.yaml | 40 ++-- .../agents/simple_buyer_aw2/aea-config.yaml | 40 ++-- .../agents/simple_buyer_aw5/aea-config.yaml | 46 ++-- .../agents/simple_seller_aw2/aea-config.yaml | 50 ++-- .../agents/simple_seller_aw5/aea-config.yaml | 64 +++--- .../aea-config.yaml | 22 +- .../simple_service_search/aea-config.yaml | 22 +- .../agents/tac_controller/aea-config.yaml | 22 +- .../tac_controller_contract/aea-config.yaml | 42 ++-- .../agents/tac_participant/aea-config.yaml | 32 +-- .../tac_participant_contract/aea-config.yaml | 42 ++-- .../agents/thermometer_aea/aea-config.yaml | 30 +-- .../agents/thermometer_client/aea-config.yaml | 30 +-- .../agents/weather_client/aea-config.yaml | 30 +-- .../agents/weather_station/aea-config.yaml | 30 +-- packages/fetchai/connections/gym/README.md | 2 +- .../fetchai/connections/gym/connection.py | 2 +- .../fetchai/connections/gym/connection.yaml | 10 +- .../fetchai/connections/http_client/README.md | 2 +- .../connections/http_client/connection.py | 2 +- .../connections/http_client/connection.yaml | 10 +- .../fetchai/connections/http_server/README.md | 2 +- .../connections/http_server/connection.py | 2 +- .../connections/http_server/connection.yaml | 10 +- packages/fetchai/connections/ledger/README.md | 2 +- packages/fetchai/connections/ledger/base.py | 2 +- .../connections/ledger/connection.yaml | 14 +- .../fetchai/connections/local/connection.py | 2 +- .../fetchai/connections/local/connection.yaml | 6 +- packages/fetchai/connections/oef/README.md | 2 +- .../fetchai/connections/oef/connection.py | 2 +- .../fetchai/connections/oef/connection.yaml | 10 +- .../fetchai/connections/p2p_libp2p/README.md | 4 +- .../connections/p2p_libp2p/connection.py | 2 +- .../connections/p2p_libp2p/connection.yaml | 8 +- .../connections/p2p_libp2p_client/README.md | 2 +- .../p2p_libp2p_client/connection.py | 2 +- .../p2p_libp2p_client/connection.yaml | 8 +- .../connections/p2p_libp2p_mailbox/README.md | 2 +- .../p2p_libp2p_mailbox/connection.py | 2 +- .../p2p_libp2p_mailbox/connection.yaml | 8 +- .../fetchai/connections/prometheus/README.md | 2 +- .../connections/prometheus/connection.py | 2 +- .../connections/prometheus/connection.yaml | 10 +- packages/fetchai/connections/soef/README.md | 4 +- .../fetchai/connections/soef/connection.py | 2 +- .../fetchai/connections/soef/connection.yaml | 10 +- .../fetchai/connections/webhook/README.md | 2 +- .../fetchai/connections/webhook/connection.py | 2 +- .../connections/webhook/connection.yaml | 10 +- .../fetchai/connections/yoti/connection.py | 2 +- .../fetchai/connections/yoti/connection.yaml | 8 +- .../fetchai/contracts/erc1155/contract.py | 2 +- .../fetchai/contracts/erc1155/contract.yaml | 4 +- packages/fetchai/contracts/oracle/contract.py | 2 +- .../fetchai/contracts/oracle/contract.yaml | 4 +- .../contracts/oracle_client/contract.py | 2 +- .../contracts/oracle_client/contract.yaml | 4 +- .../contracts/staking_erc20/contract.py | 2 +- .../contracts/staking_erc20/contract.yaml | 4 +- packages/fetchai/protocols/acn/README.md | 2 +- packages/fetchai/protocols/acn/__init__.py | 2 +- packages/fetchai/protocols/acn/message.py | 2 +- packages/fetchai/protocols/acn/protocol.yaml | 8 +- .../fetchai/protocols/aggregation/README.md | 4 +- .../fetchai/protocols/aggregation/__init__.py | 2 +- .../protocols/aggregation/aggregation.proto | 2 +- .../protocols/aggregation/aggregation_pb2.py | 8 +- .../fetchai/protocols/aggregation/message.py | 4 +- .../protocols/aggregation/protocol.yaml | 14 +- .../fetchai/protocols/contract_api/README.md | 2 +- .../protocols/contract_api/__init__.py | 2 +- .../fetchai/protocols/contract_api/message.py | 2 +- .../protocols/contract_api/protocol.yaml | 8 +- .../fetchai/protocols/cosm_trade/README.md | 2 +- .../fetchai/protocols/cosm_trade/__init__.py | 2 +- .../fetchai/protocols/cosm_trade/message.py | 2 +- .../protocols/cosm_trade/protocol.yaml | 8 +- packages/fetchai/protocols/default/README.md | 2 +- .../fetchai/protocols/default/__init__.py | 2 +- packages/fetchai/protocols/default/message.py | 2 +- .../fetchai/protocols/default/protocol.yaml | 8 +- packages/fetchai/protocols/fipa/README.md | 2 +- packages/fetchai/protocols/fipa/__init__.py | 2 +- packages/fetchai/protocols/fipa/message.py | 2 +- packages/fetchai/protocols/fipa/protocol.yaml | 8 +- packages/fetchai/protocols/gym/README.md | 2 +- packages/fetchai/protocols/gym/__init__.py | 2 +- packages/fetchai/protocols/gym/message.py | 2 +- packages/fetchai/protocols/gym/protocol.yaml | 8 +- packages/fetchai/protocols/http/README.md | 2 +- packages/fetchai/protocols/http/__init__.py | 2 +- packages/fetchai/protocols/http/message.py | 2 +- packages/fetchai/protocols/http/protocol.yaml | 8 +- .../fetchai/protocols/ledger_api/README.md | 2 +- .../fetchai/protocols/ledger_api/__init__.py | 2 +- .../fetchai/protocols/ledger_api/message.py | 2 +- .../protocols/ledger_api/protocol.yaml | 8 +- packages/fetchai/protocols/ml_trade/README.md | 2 +- .../fetchai/protocols/ml_trade/__init__.py | 2 +- .../fetchai/protocols/ml_trade/message.py | 2 +- .../fetchai/protocols/ml_trade/protocol.yaml | 8 +- .../fetchai/protocols/oef_search/README.md | 2 +- .../fetchai/protocols/oef_search/__init__.py | 2 +- .../fetchai/protocols/oef_search/message.py | 2 +- .../protocols/oef_search/protocol.yaml | 8 +- .../fetchai/protocols/prometheus/README.md | 2 +- .../fetchai/protocols/prometheus/__init__.py | 2 +- .../fetchai/protocols/prometheus/message.py | 2 +- .../protocols/prometheus/protocol.yaml | 8 +- packages/fetchai/protocols/register/README.md | 2 +- .../fetchai/protocols/register/__init__.py | 2 +- .../fetchai/protocols/register/message.py | 2 +- .../fetchai/protocols/register/protocol.yaml | 8 +- packages/fetchai/protocols/signing/README.md | 2 +- .../fetchai/protocols/signing/__init__.py | 2 +- packages/fetchai/protocols/signing/message.py | 2 +- .../fetchai/protocols/signing/protocol.yaml | 8 +- .../fetchai/protocols/state_update/README.md | 2 +- .../protocols/state_update/__init__.py | 2 +- .../fetchai/protocols/state_update/message.py | 2 +- .../protocols/state_update/protocol.yaml | 8 +- packages/fetchai/protocols/tac/README.md | 2 +- packages/fetchai/protocols/tac/__init__.py | 2 +- packages/fetchai/protocols/tac/message.py | 2 +- packages/fetchai/protocols/tac/protocol.yaml | 8 +- packages/fetchai/protocols/yoti/README.md | 2 +- packages/fetchai/protocols/yoti/__init__.py | 2 +- packages/fetchai/protocols/yoti/message.py | 2 +- packages/fetchai/protocols/yoti/protocol.yaml | 8 +- .../skills/advanced_data_request/__init__.py | 2 +- .../skills/advanced_data_request/skill.yaml | 8 +- .../fetchai/skills/aries_alice/__init__.py | 2 +- .../fetchai/skills/aries_alice/skill.yaml | 12 +- .../fetchai/skills/aries_faber/__init__.py | 2 +- .../fetchai/skills/aries_faber/skill.yaml | 12 +- .../fetchai/skills/carpark_client/__init__.py | 2 +- .../fetchai/skills/carpark_client/skill.yaml | 16 +- .../skills/carpark_detection/__init__.py | 2 +- .../skills/carpark_detection/skill.yaml | 14 +- .../skills/confirmation_aw1/__init__.py | 2 +- .../skills/confirmation_aw1/skill.yaml | 16 +- .../skills/confirmation_aw2/__init__.py | 2 +- .../skills/confirmation_aw2/skill.yaml | 18 +- .../skills/confirmation_aw3/__init__.py | 2 +- .../skills/confirmation_aw3/skill.yaml | 20 +- packages/fetchai/skills/echo/__init__.py | 2 +- packages/fetchai/skills/echo/skill.yaml | 6 +- .../fetchai/skills/erc1155_client/__init__.py | 2 +- .../fetchai/skills/erc1155_client/skill.yaml | 20 +- .../fetchai/skills/erc1155_deploy/__init__.py | 2 +- .../fetchai/skills/erc1155_deploy/skill.yaml | 20 +- packages/fetchai/skills/error/__init__.py | 2 +- packages/fetchai/skills/error/skill.yaml | 6 +- .../fetchai/skills/fetch_block/__init__.py | 2 +- .../fetchai/skills/fetch_block/skill.yaml | 8 +- .../skills/fipa_dummy_buyer/__init__.py | 2 +- .../skills/fipa_dummy_buyer/skill.yaml | 6 +- .../fetchai/skills/generic_buyer/__init__.py | 2 +- .../fetchai/skills/generic_buyer/skill.yaml | 16 +- .../fetchai/skills/generic_seller/__init__.py | 2 +- .../fetchai/skills/generic_seller/skill.yaml | 14 +- packages/fetchai/skills/gym/__init__.py | 2 +- packages/fetchai/skills/gym/skill.yaml | 8 +- packages/fetchai/skills/http_echo/__init__.py | 2 +- packages/fetchai/skills/http_echo/skill.yaml | 8 +- .../skills/ml_data_provider/__init__.py | 2 +- .../skills/ml_data_provider/skill.yaml | 14 +- packages/fetchai/skills/ml_train/__init__.py | 2 +- packages/fetchai/skills/ml_train/skill.yaml | 18 +- .../skills/registration_aw1/__init__.py | 2 +- .../skills/registration_aw1/skill.yaml | 10 +- .../skills/simple_aggregation/__init__.py | 2 +- .../skills/simple_aggregation/skill.yaml | 10 +- .../fetchai/skills/simple_buyer/__init__.py | 2 +- .../fetchai/skills/simple_buyer/skill.yaml | 18 +- .../skills/simple_data_request/__init__.py | 2 +- .../skills/simple_data_request/skill.yaml | 8 +- .../fetchai/skills/simple_oracle/__init__.py | 2 +- .../fetchai/skills/simple_oracle/skill.yaml | 16 +- .../skills/simple_oracle_client/__init__.py | 2 +- .../skills/simple_oracle_client/skill.yaml | 14 +- .../fetchai/skills/simple_seller/__init__.py | 2 +- .../fetchai/skills/simple_seller/skill.yaml | 16 +- .../simple_service_registration/__init__.py | 2 +- .../simple_service_registration/skill.yaml | 6 +- .../skills/simple_service_search/__init__.py | 2 +- .../skills/simple_service_search/skill.yaml | 6 +- .../fetchai/skills/tac_control/__init__.py | 2 +- .../fetchai/skills/tac_control/skill.yaml | 12 +- .../skills/tac_control_contract/__init__.py | 2 +- .../skills/tac_control_contract/skill.yaml | 22 +- .../skills/tac_negotiation/__init__.py | 2 +- .../fetchai/skills/tac_negotiation/skill.yaml | 24 +- .../skills/tac_participation/__init__.py | 2 +- .../skills/tac_participation/skill.yaml | 12 +- .../fetchai/skills/thermometer/__init__.py | 2 +- .../fetchai/skills/thermometer/skill.yaml | 14 +- .../skills/thermometer_client/__init__.py | 2 +- .../skills/thermometer_client/skill.yaml | 16 +- .../fetchai/skills/weather_client/__init__.py | 2 +- .../fetchai/skills/weather_client/skill.yaml | 16 +- .../skills/weather_station/__init__.py | 2 +- .../fetchai/skills/weather_station/skill.yaml | 14 +- packages/hashes.csv | 216 +++++++++--------- plugins/aea-cli-ipfs/setup.py | 2 +- plugins/aea-ledger-ethereum/setup.py | 2 +- plugins/aea-ledger-fetchai/setup.py | 2 +- pyproject.toml | 2 +- scripts/bump_aea_version.py | 41 ++-- tests/conftest.py | 2 +- tests/data/aea-config.example.yaml | 14 +- tests/data/aea-config.example_w_keys.yaml | 14 +- tests/data/dependencies_skill/skill.yaml | 2 +- tests/data/dummy_aea/aea-config.yaml | 22 +- tests/data/dummy_connection/connection.yaml | 2 +- tests/data/dummy_skill/skill.yaml | 6 +- tests/data/generator/t_protocol/__init__.py | 2 +- tests/data/generator/t_protocol/protocol.yaml | 2 +- .../generator/t_protocol_no_ct/__init__.py | 2 +- .../generator/t_protocol_no_ct/protocol.yaml | 2 +- tests/data/gym-connection.yaml | 4 +- tests/data/hashes.csv | 12 +- .../t_protocol/__init__.py | 2 +- .../t_protocol/protocol.yaml | 2 +- .../t_protocol_no_ct/__init__.py | 2 +- .../t_protocol_no_ct/protocol.yaml | 2 +- tests/test_aea_builder.py | 2 +- tests/test_cli/test_upgrade.py | 8 +- tests/test_cli/test_utils/test_utils.py | 10 +- tests/test_components/test_loader.py | 2 +- tests/test_configurations/test_manager.py | 8 +- .../md_files/bash-aggregation-demo.md | 22 +- .../md_files/bash-aries-cloud-agent-demo.md | 24 +- .../md_files/bash-car-park-skills.md | 34 +-- .../md_files/bash-cli-vs-programmatic-aeas.md | 2 +- .../test_bash_yaml/md_files/bash-config.md | 6 +- .../md_files/bash-erc1155-skills.md | 50 ++-- .../bash-generic-skills-step-by-step.md | 56 ++--- .../md_files/bash-generic-skills.md | 34 +-- .../test_bash_yaml/md_files/bash-gym-skill.md | 6 +- .../bash-http-connection-and-skill.md | 6 +- .../test_bash_yaml/md_files/bash-logging.md | 4 +- .../test_bash_yaml/md_files/bash-ml-skills.md | 34 +-- .../md_files/bash-oracle-demo.md | 36 +-- .../md_files/bash-orm-integration.md | 36 +-- .../md_files/bash-p2p-connection.md | 14 +- .../md_files/bash-quickstart.md | 4 +- .../md_files/bash-skill-guide.md | 16 +- .../test_bash_yaml/md_files/bash-skill.md | 2 +- .../md_files/bash-tac-skills-contract.md | 120 +++++----- .../md_files/bash-tac-skills.md | 54 ++--- .../md_files/bash-thermometer-skills.md | 34 +-- .../md_files/bash-weather-skills.md | 34 +-- .../test_cli_vs_programmatic_aea.py | 2 +- tests/test_docs/test_docs_protocol.py | 4 +- .../test_orm_integration.py | 26 +-- .../test_skill_guide/test_skill_guide.py | 10 +- tests/test_manager/test_manager.py | 2 +- .../test_prometheus/test_prometheus.py | 2 +- .../test_skills_integration/test_carpark.py | 52 ++--- .../test_coin_price.py | 18 +- .../test_skills_integration/test_echo.py | 2 +- .../test_skills_integration/test_erc1155.py | 30 +-- .../test_fetch_block.py | 6 +- .../test_skills_integration/test_generic.py | 52 ++--- .../test_skills_integration/test_gym.py | 6 +- .../test_skills_integration/test_http_echo.py | 8 +- .../test_skills_integration/test_ml_skills.py | 52 ++--- .../test_simple_aggregation.py | 20 +- .../test_simple_oracle.py | 80 +++---- .../test_skills_integration/test_tac.py | 106 ++++----- .../test_thermometer.py | 52 ++--- .../test_skills_integration/test_weather.py | 54 ++--- 355 files changed, 2439 insertions(+), 2385 deletions(-) diff --git a/.spelling b/.spelling index 0bbcde41d1..faf5b38656 100644 --- a/.spelling +++ b/.spelling @@ -227,6 +227,20 @@ dockerised Mermaid-JS darglint aea-cli-ipfs +tensorflow +ethereum +mypy +ipfshttpclient +0.8.0a2 +int64 +int32 +cosmpy +tx +asyncio +golang +basecontracttesttool +linter +stargateworld - docs/language-agnostic-definition.md fetchai protocol_id @@ -236,6 +250,7 @@ CosmWasm - docs/ledger-integration.md atestfet v0.2.x +dorado-1 - docs/questions-and-answers.md state_update txt diff --git a/HISTORY.md b/HISTORY.md index 37df21b8fe..b6c7ec7e4f 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,23 @@ # Release History +## 1.2.1 (2022-10-17) + +AEA: +- Dependency management switched from pipenv to poetry. +- Protocol generator updated to support Unions +- Dependencies versions updates: click, mypy, black, ipfshttpclient +- Small code format improvements + +Plugins: +- Update web3 to version 5.31 +- Small code format improvements +- ipfshttpclient dependency version updated to 0.8.0a2 + +Packages: +- Protocols regenerated according to the latest protocol generator improvements: Union support +- Small code format improvements + ## 1.2.1 (2022-07-12) AEA: diff --git a/aea/__version__.py b/aea/__version__.py index a0ed0f4c39..98d9936f18 100644 --- a/aea/__version__.py +++ b/aea/__version__.py @@ -22,7 +22,7 @@ __title__ = "aea" __description__ = "Autonomous Economic Agent framework" __url__ = "https://github.com/fetchai/agents-aea.git" -__version__ = "1.2.1" +__version__ = "1.2.2" __author__ = "Fetch.AI Limited" __license__ = "Apache-2.0" __copyright__ = "2022 Fetch.AI Limited" diff --git a/docs/aggregation-demo.md b/docs/aggregation-demo.md index ebbe6d40bf..25331049ff 100644 --- a/docs/aggregation-demo.md +++ b/docs/aggregation-demo.md @@ -19,7 +19,7 @@ Repeat the following process four times in four different terminals (for each {` Fetch the aggregator AEA: ``` bash agent_name="agg$i" -aea fetch fetchai/simple_aggregator:0.5.1 --alias $agent_name +aea fetch fetchai/simple_aggregator:0.5.2 --alias $agent_name cd $agent_name aea install aea build @@ -34,15 +34,15 @@ Create the AEA. agent_name="agg$i" aea create agent_name cd agent_name -aea add connection fetchai/http_client:0.24.2 -aea add connection fetchai/http_server:0.23.2 -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/prometheus:0.9.2 -aea add skill fetchai/advanced_data_request:0.7.2 -aea add skill fetchai/simple_aggregation:0.3.2 - -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.1 +aea add connection fetchai/http_client:0.24.3 +aea add connection fetchai/http_server:0.23.3 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/prometheus:0.9.3 +aea add skill fetchai/advanced_data_request:0.7.3 +aea add skill fetchai/simple_aggregation:0.3.3 + +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.2 aea install aea build ``` @@ -126,8 +126,8 @@ aea config set vendor.fetchai.connections.http_server.config.port $((8000+i)) To publish the aggregated value to an oracle smart contract, add the ledger connection and simple oracle skill to one of the aggregators: ``` bash -aea add connection fetchai/ledger:0.21.1 -aea add skill fetchai/simple_oracle:0.16.1 +aea add connection fetchai/ledger:0.21.2 +aea add skill fetchai/simple_oracle:0.16.2 ``` Configure the simple oracle skill for the `fetchai` ledger: diff --git a/docs/api/aea_builder.md b/docs/api/aea_builder.md index 2828f57598..476d6d267f 100644 --- a/docs/api/aea_builder.md +++ b/docs/api/aea_builder.md @@ -224,9 +224,9 @@ Reset the builder. A full reset causes a reset of all data on the builder. A partial reset only resets: - - name, - - private keys, and - - component instances +- name, +- private keys, and +- component instances **Arguments**: @@ -544,7 +544,7 @@ Add a private key path. - `identifier`: the identifier for that private key path. - `private_key_path`: an (optional) path to the private key file. - If None, the key will be created at build time. +If None, the key will be created at build time. - `is_connection`: if the pair is for the connection cryptos **Returns**: @@ -677,7 +677,7 @@ Add a component, given its type and the directory. **Raises**: - `AEAException`: if a component is already registered with the same component id. # noqa: DAR402 - | or if there's a missing dependency. # noqa: DAR402 +| or if there's a missing dependency. # noqa: DAR402 **Returns**: diff --git a/docs/api/configurations/base.md b/docs/api/configurations/base.md index b0ede4efc4..7ab478177d 100644 --- a/docs/api/configurations/base.md +++ b/docs/api/configurations/base.md @@ -36,7 +36,7 @@ Transform a Dependencies object into a JSON object. **Returns**: a dictionary whose keys are package names and - values are the JSON version of a Dependency object. +values are the JSON version of a Dependency object. ## ProtocolSpecificationParseError Objects @@ -452,8 +452,8 @@ Check that the fingerprint are correct against a directory path. **Raises**: - `ValueError`: if - - the argument is not a valid package directory - - the fingerprints do not match. +- the argument is not a valid package directory +- the fingerprints do not match. #### check`_`public`_`id`_`consistency @@ -471,8 +471,8 @@ Check that the public ids in the init file match the config. **Raises**: - `ValueError`: if - - the argument is not a valid package directory - - the public ids do not match. +- the argument is not a valid package directory +- the public ids do not match. ## ConnectionConfig Objects diff --git a/docs/api/configurations/manager.md b/docs/api/configurations/manager.md index 9039ad0e41..4423523366 100644 --- a/docs/api/configurations/manager.md +++ b/docs/api/configurations/manager.md @@ -22,12 +22,12 @@ handle_dotted_path(value: str, author: str, aea_project_path: Union[str, Path] = Separate the path between path to resource and json path to attribute. Allowed values: - 'agent.an_attribute_name' - 'protocols.my_protocol.an_attribute_name' - 'connections.my_connection.an_attribute_name' - 'contracts.my_contract.an_attribute_name' - 'skills.my_skill.an_attribute_name' - 'vendor.author.[protocols|contracts|connections|skills].package_name.attribute_name +'agent.an_attribute_name' +'protocols.my_protocol.an_attribute_name' +'connections.my_connection.an_attribute_name' +'contracts.my_contract.an_attribute_name' +'skills.my_skill.an_attribute_name' +'vendor.author.[protocols|contracts|connections|skills].package_name.attribute_name We also return the component id to retrieve the configuration of a specific component. Notice that at this point we don't know the version, diff --git a/docs/api/configurations/pypi.md b/docs/api/configurations/pypi.md index 00c31dff82..03303720c7 100644 --- a/docs/api/configurations/pypi.md +++ b/docs/api/configurations/pypi.md @@ -45,7 +45,7 @@ False For other details, please refer to PEP440: - https://www.python.org/dev/peps/pep-0440 +https://www.python.org/dev/peps/pep-0440 **Arguments**: diff --git a/docs/api/context/base.md b/docs/api/context/base.md index c270894275..b1587a2e4a 100644 --- a/docs/api/context/base.md +++ b/docs/api/context/base.md @@ -16,7 +16,7 @@ Provide read access to relevant objects of the agent for the skills. #### `__`init`__` ```python - | __init__(identity: Identity, connection_status: MultiplexerStatus, outbox: OutBox, decision_maker_message_queue: Queue, decision_maker_handler_context: SimpleNamespace, task_manager: TaskManager, default_ledger_id: str, currency_denominations: Dict[str, str], default_connection: Optional[PublicId], default_routing: Dict[PublicId, PublicId], search_service_address: Address, decision_maker_address: Address, data_dir: str, storage_callable: Callable[[], Optional[Storage]] = lambda: None, send_to_skill: Optional[Callable] = None, **kwargs: Any) -> None + | __init__(identity: Identity, connection_status: MultiplexerStatus, outbox: OutBox, decision_maker_message_queue: Queue, decision_maker_handler_context: SimpleNamespace, task_manager: TaskManager, default_ledger_id: str, currency_denominations: Dict[str, str], default_connection: Optional[PublicId], default_routing: Dict[PublicId, PublicId], search_service_address: Address, decision_maker_address: Address, data_dir: str, storage_callable: Callable[[], Optional[Storage]] = lambda: None, send_to_skill: Optional[Callable] = None, **kwargs: Any, ,) -> None ``` Initialize an agent context. diff --git a/docs/api/crypto/base.md b/docs/api/crypto/base.md index 3bfe927c37..ebd3383ae6 100644 --- a/docs/api/crypto/base.md +++ b/docs/api/crypto/base.md @@ -28,8 +28,8 @@ Either way, the entity object will be accessible as a property. **Arguments**: - `private_key_path`: the path to the private key. - If None, the key will be generated by 'generate_private_key()'. - If not None, the path will be processed by 'load_private_key_from_path()'. +If None, the key will be generated by 'generate_private_key()'. +If not None, the path will be processed by 'load_private_key_from_path()'. - `password`: the password to encrypt/decrypt the private key. - `kwargs`: keyword arguments. diff --git a/docs/api/crypto/registries/base.md b/docs/api/crypto/registries/base.md index 0bcc7e8bbd..266d36e195 100644 --- a/docs/api/crypto/registries/base.md +++ b/docs/api/crypto/registries/base.md @@ -188,15 +188,15 @@ Create an instance of the associated type item id. **Arguments**: - `id_`: the id of the item class. Make sure it has been registered earlier - before calling this function. +before calling this function. - `module`: dotted path to a module. - whether a module should be loaded before creating the object. - this argument is useful when the item might not be registered - beforehand, and loading the specified module will make the registration. - E.g. suppose the call to 'register' for a custom object - is located in some_package/__init__.py. By providing module="some_package", - the call to 'register' in such module gets triggered and - the make can then find the identifier. +whether a module should be loaded before creating the object. +this argument is useful when the item might not be registered +beforehand, and loading the specified module will make the registration. +E.g. suppose the call to 'register' for a custom object +is located in some_package/__init__.py. By providing module="some_package", +the call to 'register' in such module gets triggered and +the make can then find the identifier. - `kwargs`: keyword arguments to be forwarded to the object. **Returns**: @@ -215,15 +215,15 @@ Load a class of the associated type item id. **Arguments**: - `id_`: the id of the item class. Make sure it has been registered earlier - before calling this function. +before calling this function. - `module`: dotted path to a module. - whether a module should be loaded before creating the object. - this argument is useful when the item might not be registered - beforehand, and loading the specified module will make the registration. - E.g. suppose the call to 'register' for a custom object - is located in some_package/__init__.py. By providing module="some_package", - the call to 'register' in such module gets triggered and - the make can then find the identifier. +whether a module should be loaded before creating the object. +this argument is useful when the item might not be registered +beforehand, and loading the specified module will make the registration. +E.g. suppose the call to 'register' for a custom object +is located in some_package/__init__.py. By providing module="some_package", +the call to 'register' in such module gets triggered and +the make can then find the identifier. **Returns**: diff --git a/docs/api/crypto/wallet.md b/docs/api/crypto/wallet.md index 197159d14d..739dd292fc 100644 --- a/docs/api/crypto/wallet.md +++ b/docs/api/crypto/wallet.md @@ -24,7 +24,7 @@ Initialize the crypto store. **Arguments**: - `crypto_id_to_path`: dictionary from crypto id to an (optional) path - to the private key. +to the private key. - `password`: the password to encrypt/decrypt the private key. diff --git a/docs/api/helpers/async_utils.md b/docs/api/helpers/async_utils.md index 4d5b8de343..e9608ec2bf 100644 --- a/docs/api/helpers/async_utils.md +++ b/docs/api/helpers/async_utils.md @@ -161,7 +161,7 @@ Provides better cancel behaviour: on cancel it will wait till cancelled complete #### `__`init`__` ```python - | __init__(coro: Awaitable, loop: AbstractEventLoop) -> None + | __init__(coro: Coroutine[Any, Any, Any], loop: AbstractEventLoop) -> None ``` Init the task. @@ -250,7 +250,7 @@ Run code inside thread. #### call ```python - | call(coro: Awaitable) -> Any + | call(coro: Coroutine[Any, Any, Any]) -> Any ``` Run a coroutine inside the event loop. @@ -336,7 +336,7 @@ Implement run logic respectful to CancelError on termination. #### wait`_`completed ```python - | wait_completed(sync: bool = False, timeout: float = None, force_result: bool = False) -> Awaitable + | wait_completed(sync: bool = False, timeout: float = None, force_result: bool = False) -> Union[Coroutine, Awaitable] ``` Wait runnable execution completed. @@ -364,7 +364,7 @@ Stop runnable. #### start`_`and`_`wait`_`completed ```python - | start_and_wait_completed(*args: Any, **kwargs: Any) -> Awaitable + | start_and_wait_completed(*args: Any, **kwargs: Any) -> Union[Coroutine, Awaitable] ``` Alias for start and wait methods. diff --git a/docs/api/helpers/base.md b/docs/api/helpers/base.md index c4cd811214..0116996eba 100644 --- a/docs/api/helpers/base.md +++ b/docs/api/helpers/base.md @@ -654,13 +654,13 @@ It can be used both as: @mydecorator def myfunction(): - ... +... or as: @mydecorator(arg1, kwarg1="value") def myfunction(): - ... +... **Arguments**: diff --git a/docs/api/helpers/search/models.md b/docs/api/helpers/search/models.md index f4d790f648..ec67c4575f 100644 --- a/docs/api/helpers/search/models.md +++ b/docs/api/helpers/search/models.md @@ -446,8 +446,8 @@ Initialize a constraint type. **Arguments**: - `type_`: the type of the constraint. - | Either an instance of the ConstraintTypes enum, - | or a string representation associated with the type. +| Either an instance of the ConstraintTypes enum, +| or a string representation associated with the type. - `value`: the value that defines the constraint. **Raises**: @@ -1018,39 +1018,39 @@ Check if a description satisfies the constraint. The implementation depends on t True if the description satisfies the constraint, False otherwise. Examples: - >>> attr_author = Attribute("author" , str, True, "The author of the book.") - >>> attr_year = Attribute("year", int, True, "The year of publication of the book.") - >>> attr_genre = Attribute("genre", str, True, "The genre of the book.") - >>> c1 = Constraint("author", ConstraintType("==", "Stephen King")) - >>> c2 = Constraint("year", ConstraintType(">", 1990)) - >>> c3 = Constraint("genre", ConstraintType("in", ("horror", "science_fiction"))) - >>> book_1 = Description({"author": "Stephen King", "year": 1991, "genre": "horror"}) - >>> book_2 = Description({"author": "George Orwell", "year": 1948, "genre": "horror"}) - - The "author" attribute instantiation satisfies the constraint, so the result is True. - - >>> c1.check(book_1) - True +>>> attr_author = Attribute("author" , str, True, "The author of the book.") +>>> attr_year = Attribute("year", int, True, "The year of publication of the book.") +>>> attr_genre = Attribute("genre", str, True, "The genre of the book.") +>>> c1 = Constraint("author", ConstraintType("==", "Stephen King")) +>>> c2 = Constraint("year", ConstraintType(">", 1990)) +>>> c3 = Constraint("genre", ConstraintType("in", ("horror", "science_fiction"))) +>>> book_1 = Description({"author": "Stephen King", "year": 1991, "genre": "horror"}) +>>> book_2 = Description({"author": "George Orwell", "year": 1948, "genre": "horror"}) + +The "author" attribute instantiation satisfies the constraint, so the result is True. + +>>> c1.check(book_1) +True - Here, the "author" does not satisfy the constraints. Hence, the result is False. +Here, the "author" does not satisfy the constraints. Hence, the result is False. - >>> c1.check(book_2) - False +>>> c1.check(book_2) +False - In this case, there is a missing field specified by the query, that is "year" - So the result is False, even in the case it is not required by the schema: +In this case, there is a missing field specified by the query, that is "year" +So the result is False, even in the case it is not required by the schema: - >>> c2.check(Description({"author": "Stephen King"})) - False +>>> c2.check(Description({"author": "Stephen King"})) +False - If the type of some attribute of the description is not correct, the result is False. - In this case, the field "year" has a string instead of an integer: +If the type of some attribute of the description is not correct, the result is False. +In this case, the field "year" has a string instead of an integer: - >>> c2.check(Description({"author": "Stephen King", "year": "1991"})) - False +>>> c2.check(Description({"author": "Stephen King", "year": "1991"})) +False - >>> c3.check(Description({"author": "Stephen King", "genre": False})) - False +>>> c3.check(Description({"author": "Stephen King", "genre": False})) +False #### is`_`valid diff --git a/docs/api/helpers/sym_link.md b/docs/api/helpers/sym_link.md index 42e30fb1c2..96fbb9a418 100644 --- a/docs/api/helpers/sym_link.md +++ b/docs/api/helpers/sym_link.md @@ -58,7 +58,7 @@ we want to compute: The resulting command on UNIX systems will be: - cd directory_1 && ln -s ../../directory_1/target_path symbolic_link +cd directory_1 && ln -s ../../directory_1/target_path symbolic_link **Arguments**: diff --git a/docs/api/manager/manager.md b/docs/api/manager/manager.md index 51adc5e981..47b4936c8c 100644 --- a/docs/api/manager/manager.md +++ b/docs/api/manager/manager.md @@ -388,7 +388,9 @@ the MultiAgentManager instance. ```python | @property | last_start_status() -> Tuple[ - | bool, Dict[PublicId, List[Dict]], List[Tuple[PublicId, List[Dict], Exception]], + | bool, + | Dict[PublicId, List[Dict]], + | List[Tuple[PublicId, List[Dict], Exception]], | ] ``` diff --git a/docs/api/multiplexer.md b/docs/api/multiplexer.md index b85e4ba21a..0606ede79a 100644 --- a/docs/api/multiplexer.md +++ b/docs/api/multiplexer.md @@ -83,8 +83,8 @@ Initialize the connection multiplexer. - `connections`: a sequence of connections. - `default_connection_index`: the index of the connection to use as default. - This information is used for envelopes which don't specify any routing context. - If connections is None, this parameter is ignored. +This information is used for envelopes which don't specify any routing context. +If connections is None, this parameter is ignored. - `loop`: the event loop to run the multiplexer. If None, a new event loop is created. - `exception_policy`: the exception policy used for connections. - `threaded`: if True, run in threaded mode, else async diff --git a/docs/api/plugins/aea_cli_ipfs/core.md b/docs/api/plugins/aea_cli_ipfs/core.md index b47f8d5a48..6afb4c5997 100644 --- a/docs/api/plugins/aea_cli_ipfs/core.md +++ b/docs/api/plugins/aea_cli_ipfs/core.md @@ -18,7 +18,7 @@ IPFS Commands #### process`_`result ```python -@ipfs.resultcallback() +@ipfs.result_callback() @click.pass_context process_result(click_context: click.Context, *_: Any) -> None ``` @@ -51,7 +51,10 @@ Add directory to ipfs, if not directory specified the current one will be added. ```python @ipfs.command() @click.argument( - "hash_", metavar="hash", type=str, required=True, + "hash_", + metavar="hash", + type=str, + required=True, ) @click.pass_context remove(click_context: click.Context, hash_: str) -> None @@ -65,7 +68,10 @@ Remove a directory from ipfs by it's hash. ```python @ipfs.command() @click.argument( - "hash_", metavar="hash", type=str, required=True, + "hash_", + metavar="hash", + type=str, + required=True, ) @click.argument( "target_dir", diff --git a/docs/api/protocols/generator/base.md b/docs/api/protocols/generator/base.md index 21b6cd39a6..d6f8d884e1 100644 --- a/docs/api/protocols/generator/base.md +++ b/docs/api/protocols/generator/base.md @@ -63,9 +63,9 @@ None Run the generator in "full" mode: Runs the generator in protobuf only mode: - a) validate the protocol specification. - b) create the protocol buffer schema file. - c) create the protocol buffer implementation file via 'protoc'. +a) validate the protocol specification. +b) create the protocol buffer schema file. +c) create the protocol buffer implementation file via 'protoc'. Additionally: d) generates python modules. e) applies black formatting diff --git a/docs/api/skills/behaviours.md b/docs/api/skills/behaviours.md index 1d8c743cd3..bafd4076d0 100644 --- a/docs/api/skills/behaviours.md +++ b/docs/api/skills/behaviours.md @@ -163,7 +163,7 @@ This behaviour is executed periodically with an interval. #### `__`init`__` ```python - | __init__(tick_interval: float = 1.0, start_at: Optional[datetime.datetime] = None, **kwargs: Any) -> None + | __init__(tick_interval: float = 1.0, start_at: Optional[datetime.datetime] = None, **kwargs: Any, ,) -> None ``` Initialize the ticker behaviour. diff --git a/docs/api/test_tools/generic.md b/docs/api/test_tools/generic.md index b7b4ac354b..74c2b79286 100644 --- a/docs/api/test_tools/generic.md +++ b/docs/api/test_tools/generic.md @@ -46,12 +46,12 @@ Set an AEA config with nested values. Run from agent's directory. Allowed dotted_path: - 'agent.an_attribute_name' - 'protocols.my_protocol.an_attribute_name' - 'connections.my_connection.an_attribute_name' - 'contracts.my_contract.an_attribute_name' - 'skills.my_skill.an_attribute_name' - 'vendor.author.[protocols|connections|skills].package_name.attribute_name +'agent.an_attribute_name' +'protocols.my_protocol.an_attribute_name' +'connections.my_connection.an_attribute_name' +'contracts.my_contract.an_attribute_name' +'skills.my_skill.an_attribute_name' +'vendor.author.[protocols|connections|skills].package_name.attribute_name **Arguments**: diff --git a/docs/api/test_tools/test_skill.md b/docs/api/test_tools/test_skill.md index f9b045b899..93a15932e7 100644 --- a/docs/api/test_tools/test_skill.md +++ b/docs/api/test_tools/test_skill.md @@ -184,10 +184,10 @@ Quickly create a dialogue. The 'messages' argument is a tuple of DialogueMessages. For every DialogueMessage (performative, contents, is_incoming, target): - - if 'is_incoming' is not provided: for the first message it is assumed False (outgoing), - for any other message, it is the opposite of the one preceding it. - - if 'target' is not provided: for the first message it is assumed 0, - for any other message, it is the index of the message before it in the tuple of messages + 1. +- if 'is_incoming' is not provided: for the first message it is assumed False (outgoing), +for any other message, it is the opposite of the one preceding it. +- if 'target' is not provided: for the first message it is assumed 0, +for any other message, it is the index of the message before it in the tuple of messages + 1. **Arguments**: diff --git a/docs/aries-cloud-agent-demo.md b/docs/aries-cloud-agent-demo.md index bee14d0135..975703d6e4 100644 --- a/docs/aries-cloud-agent-demo.md +++ b/docs/aries-cloud-agent-demo.md @@ -180,7 +180,7 @@ Now you can create **Alice_AEA** and **Faber_AEA** in terminals 3 and 4 respecti In the third terminal, fetch **Alice_AEA** and move into its project folder: ``` bash -aea fetch fetchai/aries_alice:0.32.1 +aea fetch fetchai/aries_alice:0.32.2 cd aries_alice ``` @@ -191,11 +191,11 @@ The following steps create Alice_AEA from scratch: ``` bash aea create aries_alice cd aries_alice -aea add connection fetchai/p2p_libp2p:0.27.1 -aea add connection fetchai/soef:0.27.2 -aea add connection fetchai/http_client:0.24.2 -aea add connection fetchai/webhook:0.20.2 -aea add skill fetchai/aries_alice:0.26.2 +aea add connection fetchai/p2p_libp2p:0.27.2 +aea add connection fetchai/soef:0.27.3 +aea add connection fetchai/http_client:0.24.3 +aea add connection fetchai/webhook:0.20.3 +aea add skill fetchai/aries_alice:0.26.3 ```