From 049e537b9273783e3b5ec66a114fab4b17f85fb3 Mon Sep 17 00:00:00 2001 From: qth2gi Date: Tue, 5 Aug 2025 16:46:56 +0200 Subject: [PATCH 1/2] GOODCASE tests of section INLINE_CODE reworked (and already adapted to new syntax without 'eval' keyword) --- JsonPreprocessor/JsonPreprocessor.pdf | Bin 356711 -> 357049 bytes .../release_items_JsonPreprocessor.json | 2 +- .../additional_docs/The JSONP format.tex | 15 +- test/component_test.py | 4 +- test/testconfig/TestConfig.py | 149 +++++++++++++----- test/testfiles/jpp-test_config_2100.jsonp | 40 +---- test/testfiles/jpp-test_config_2101.jsonp | 23 +++ test/testfiles/jpp-test_config_2102.jsonp | 26 +++ test/testfiles/jpp-test_config_2103.jsonp | 27 ++++ test/testfiles/jpp-test_config_2104.jsonp | 28 ++++ test/testfiles/jpp-test_config_2105.jsonp | 34 ++++ test/testfiles/jpp-test_config_2106.jsonp | 23 +++ test/testfiles/jpp-test_config_2107.jsonp | 22 +++ 13 files changed, 319 insertions(+), 74 deletions(-) create mode 100644 test/testfiles/jpp-test_config_2101.jsonp create mode 100644 test/testfiles/jpp-test_config_2102.jsonp create mode 100644 test/testfiles/jpp-test_config_2103.jsonp create mode 100644 test/testfiles/jpp-test_config_2104.jsonp create mode 100644 test/testfiles/jpp-test_config_2105.jsonp create mode 100644 test/testfiles/jpp-test_config_2106.jsonp create mode 100644 test/testfiles/jpp-test_config_2107.jsonp diff --git a/JsonPreprocessor/JsonPreprocessor.pdf b/JsonPreprocessor/JsonPreprocessor.pdf index b3c1f23ec618ac1675bb5d5e44a776958f7010c6..a8c5fa42f036e6e4918828ed5579078558b32cf4 100644 GIT binary patch delta 38829 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 Ay8r+H delta 38458 zcmXteV~{R96Xn>pZF}z6wr$&YJkQwn9ox2T+qP})`_=BIx|6C-PUlBX1)Xj`Mn643 z_YVec0)bWqW&XpNCKLuj1z5(@bJ%Qo;p-K~dLcTbpzEbZ*z|AV)Kj@?>8=ilBEAeV zp^Z?Kn4z=KqEI z1f7YW6B?pI!QwXW_k4SJetbP#L@Y!d(HxsQ6D_C0>*a68ci`{w27K=L9Pd{m#|*d= z{yh4i)jRTX6KhLCvo>Wu{-oVsx;tDqHMR=mcJnnq>i2xUo}VqgP0yddowbsJB=7s9 zCC@=Yiv^xf&%aaRP32<#b(;1_ zD}Nq5Fl5&xie=zuT40Zy!K}@2K{H~?@R)YAVJo5QlTpi(0QOS~SDv>9|rE8^TdW|Rks2T_INF=G2$-6z)~yU6fGdpaOM5~uiODa-MdoL~r2 z?@e>Q{<%aR2Oo7;+Pr=^Gv_kGIT`rl@SH?>PH}nu>eVRZNlVfeBwMvxrD^ngordME zu*F&8P+5{s0@P-oaM`2sbcp84&G2+rRAZ9sm?B9iG$YF9p~E|7E$4>W$`{o*p-T!E z$m)t0HU>jO`lX?Kp#=HyYeAVt+E9UNNJX)>fkYf5&`!J+iNSzh?q;ITWk!@44-kMl$H zv_%;gUPje5^FkWCoPh+;{)NMlgjXk?)^{K^`ZM6lm^;*(|q779@6EU>jl& zBzUlaClu@QSebF~KCQ1Ykf^JGpNwN9^)lB#3Vf9pw4<8Ly%vM$JuwH6*<3-v6iO&L z%GW%R*)dYBEO1!OW5qk*13z$WCr^lpm|>z((VkFI%UD42Ud`ZR;zTg#ED}`~JnG*N z&v9|Ky(C#`o@(A|9%!yHb?!?aLPyE^aS2owtF=%C0gAjuO(B4+6H$FADNr4cjXul5 zR*FfdUCk}F5kP)JN96~^J+fYW7}-0!@WeSBEa8dOQdF9X4jdGD^o${fVCJ&&xF$Bw z0$5$-{lY;Fq|gT5pi7?7^>QX;s7VqwL_7&0>w+G@dz5uSexo(qRzxNe%7oppa`R&`4Q25$wHw9wrT-kJyxp@I*Ka@A)E;B z<|@Z;og?k{PPrD+!mz=W^xuX(1>&Qtujn~rUp``)gPRY?D}H_;uh_mC(-55kYSS8^;>wmP#v5&$kMFVefn`T*N<0RKug8*C@@o-V?NRTsQ!vvvq- zBxGk$Tqt1oBJerrC|$<$WurdFK&V@S3m@Txd>I?{(#fv)JRigI*my6x4QRi#L4dGe zYJ#ow9pV1sN^)ai87~_%i6jgm{YKt&U}1P8!baCNgjA6dnKsMR?WaGozQV#fZ|@qa zl+J9(4B+7}(o@Q6Z63h-vbPZno7mZVd?MQE(caDz%l3n$Hwmov;ZpkUg29E!JnG%2 zp@|XmuW(mZ)q}SZd};hKXSzJpA1)fRM-r7p^KsijwURG}l)_bAbDA?Z@|zG^9feY- zlN%nn2N|{3mtkW!d`7$9Yg4ZF2#uEnU?>%O1;8~t)rq~}{oS-g-zq~{;lTwuIJUC- zs}~b{r+dn?0N%{x3ybFPqcQwMHL!X*enAIAoj6`)DP|mP2QMhgk=4O|_6;fUyAu!( zn5hHJg#T6ovakB;^amGVkFk2;;pJ^0U&8x!;3gh{BPMTK9cJ3emIh##`wJjVbYk+m$@q0h=7Vo+tSe*0%`qcj7+w+|a*7ts_~ zU?5vQdw`XK07~%=F8Xh~AV~ZwFOx06CGD_BX=mx!kxWAi?Q(KH?m78~(zKily0`J4 zinmzko3&(9a*op|Z0!*%0L$t08La#O2!ROXxNUpe!5W8TuK3>9{Bjviz@ga>3!BB5 z0}={~pM7KHV#}qVD10z2aDRIJgB*?v?El7_4eEndkt)#8H<9dd@A(^dZ9`fUyJ{v-(*TBWEjp5j;<_$U6y>utmX=dzb* z1zdqW1V0Im%GRr_5<+=>MAksgQ^7%*Gwj}ZtLI52zb9}AF_ z|Ftu=Ai>~i`wSqct!B<3tDvAj|TrE2w zC85)KKoCyM8xSJhSvP0h-KpKd>k&)=wq=S10}@ICj5rABu*qxfmJJ-Y(-7hV{ZIT*h^;XH&ImZ^tp>n4#ZySOtUZd6w8RzhiFo+slpG$L zn`Ffw&h7a`P!2?{C; z(4?cSt*#L$Et<$z;V2VIDj%Hw8=>T+#Ai;}Ob626rl>~4j7t_KYn#DsC%Uf3VPV&@ zj0bf(xfL)8|9aeceuKH92uap|7WhnrVgF;6Brpzct1BbWal;p{0 zBwLbXhuJ-S?6+8aBzTWPoqenZd(w0xkhK728tl}9KF_f6K2`Q)?8FJVg8-lHh-7UCWf8L_B*1bujd$r|`4SP4#lbhxWzaC!kGIRQN~oFsJ_RQOXg zlnoS;yfj>kAch%Ppt2ygy3wSfkVgMdSOnNEAM>1mZ1EThe)_A z+!)h-VB`Zr2}wVpQMF}w0Yz$Je@3ZvXdXGKLI`+!i3&uJ(xOnG?!yE`BH8qMXwg+ET5t(26><(|icywF*0=@#f>M0N=&3N5rVA^Tc}@?^mCm8rD} zSu0>suq`;lynLK2e|^(tgYv|G-=B3>?(@>2H*<^wJ(wv{ZS#Bh{M_hqufJN;c=E0c z1~<}7vUvT5F2RC!F5N zvBCtGfpB&mpl^UUs#p|WwQx6c1P(ETZu1Hl0#(*9*c17*WyiaAFXZa$Q@|+ko$tn; z2C#bGzjUd@>AS=8UXRugu8ObnyE<%~ZhN(9;=5g1@nvWD-RNi25yCr61$2O`tpWUj zxx6Nw!{<|J)6-XcLV6EnI78iiz+Bsx~;i1%V-wLaz+y66cwo# z5Kn*0XY#Ril-5#Hi3CZ# zJbHDgU~S4L99Nll4blQJH3<=zXI$jEgyRBHYwi+I`qEC#7I6Dt0b zy302jDh~Ybu`+*gj7+X&p(OfEjwkv#EV~45$iOw_HVA2LMRcuTF_L2%NSN43{;%3$ z)dgAEkiTdu5zEFK{yPjMTx^gHLp?AT!v{&d5Yke!qA7Eh&y~F(6}kGwZ`@QZCEO6a zGY(qP@M!zAoAMzpWW2`!n~F~s$c9Yk&kQh*WMMCZ0Ujy;Qbv^$dH$ns-%n$7wuSnK1D`!Di#(Tb^G<7{8%Sa<^|`lUv>688+(Bt%VxG>}C6QO`X6< z<-aIF^Z2)z+)E?J>C5O7PVw~x>VFU`2V-V$>f-8bW|S7W2?`6$l2)e)ir%Um2NEln z#v2EM(fYClf+~`>zXgKUicbVOhnogX1d7oL$_rYJmv+qqiq<-$396#|KNwmoZ8NAf zMH)u)e*-EvL2bCwQaAr|MvD&ihMR_g4u*!x!ov0E{~tXpM9f_5Y#eFK>0oH!EKFQX z%xT2i|HV8$%@lR*7QtZ-Z*Jfa`nUfpW{&P*dnmkrzz}b4ZU}fK>+<@y5!(r+a$Y|x zX3EQrU#xYueccSae*}dJiliBBPYgkl9qZhSEzAuMfWs#$rC3>k)6+Gv|IK_yF|Y`rSHE6<+>BsU10&YsDkXuVx{z%l+6FpGT)khwY#DKOW zz{E029*8S2cPHpHP_GOG71k#3uO1F49=PE2!o;xwj2fhi2BL`t(Vm{6jTuanyQjNT zBPS>~=*~KD#ey@Cm_*)pZ}jnxnIPnwy9>}1+|)1ptHbSXK-JZ+69)&oTb&DA%WFeJ zD^R-5ItXwiiZfhIPK_&&iFe~}=tv6#0O9s$6PY+AC%J#pP`5VuacjoZ*v?%`7mH$f(gJbU_YNInmM$hYZ)ctOljmhnv(d{Fl zslAzl`A;VtE2o6Gn>Q^bXI|4hu6%`c|78B?U49F`(o8^ZBp!nzv z_ETv3L+@AHKRY_#k8Jp(4>318f%o?J-g?@XnrP|gv zehN!}()xencGhMlRxWojZj&xgK6=0(5N!^zO!eO~_Qxbf$Ixsl4bJS%U#m-BGBrQmySCL=0n!Kz>b(x>?u-;AzlGig zEGn6=Izz|4Y`;ptyY6QI&*5u1{3$<1Tv#5+zP0uBHQ1Z)s$FEBzOZ*++G+osUpQ9( zg#MlW=WXyi{X)XNt$u94&1=7N9Vk`^AnGUN4^T7-0EyCH=?U=wgeme{XbVXE{+C3a z0;q6^a0t#Y`720sm+}eG7?f$^OX$|e88F9_`$hOPQ+fy4{Yd?T>GWUyEkp+-o+5CT zt?-QKb*l0iv{R|}8?>{|{u9-LS6lL>e~AE z{jYCov^k*vH3#SyR%_SAM*vO7q_dZ9r;_OxboYAtH?TKF9l&Dv4Zr;h_8)2Lz6*ct zZuU;TG@jf+qk8we2T}nG0EejJv_kT^AI2#6f6E4U-5M+Zc{E@D0^j8^{>1cgST#uL zHjs`6i2djRG6o56+&5n_j}0zfxA1??EB zo_BtokMcyo&dpo^6k@(x;pe_@B$|Tn%l5T>Is_tEA|W!fOWVyx%&Ef`8+lE>xKUb`t@7} z3CIytX-g4JI`Y9V=%>+eo$&r-B#1i5mI6QHWmcRjEo2!**`EA1A;wAo4Ke$DM!!A zyiKHVZ%51EmLf_1<0DCkXJNEU@S!gbY2BO>3vdlSqw>ynBa8n#HyS``!v>mOxOR;? z>KR#z&~XFxE@^kbl20Q!l1bmq<3jD$j!O!tHl8P8?}Fw}hhgZzR`BY9rp-FE5^lEZ z`^?v=Dx$Y0*Qy@NOv$dOs_oK6$u;g_>xI1S zLE)8@c#$%T@>oTE<>6ZAQiYx^Nx3iYFU>TThGlt4t~2uIas()g zqAW0JAc_$NF^D~1gqE_e@hP|OSCe+FBh25HJYLMY;ljBtp0ME9-&6U{ zP}Zn^;=)+X19rIo;XwTCV~G4`XBN=hTeZWYV%s>&uCgl(y=+4{g<7yT`CamuWeg{K zE*wIW=u2`j%JuOz>jx!1UiNo21%9b>Hy%*a+fqSE-dm>f1(ud8lvP+?kVWJH*Wd>< z2;!`z-#?*rq7J3a!f$pIrha;2ptuU$Ag9`{5YO9>n3$~Hf4+gk)wlDI5 zWX!`?O0-1Ce{XwQy&3KDRMt8G@oBn^<1#x3GC6nU3;96QgFKyRucRdGWA=a~TffUw zWSVpQ=UO&iih$X)bVE zX0L_U*`^{6MS&j!0OjWyBOhgB7TJivjRl^W>*@UcZmM>S!=JWG1UJWoPE+s{hsH=Al^c2jMFEs&A6@kK@$>iXHw7B!c;$^Ss z)W(;YkEopIEz`Vp^|cj0Xx5-3M6OQIyYRv7R`X(39Gwp}IY2S^206$nVWa?ggPd7l zj1JDd<{qt%DcTLLNGFYLNwi~9OCoweq;DG$A;aaE@aD_I!X#+2BW)mBWZ|1f!iWVe zthX+!{*+(y#BiaGtlcCPkk!GS;b{cAD!ix@g^5)UFfe?GSWI#Eg1|Wrp37(jRORQ> zp@(PQt6Go&AwUQpI&%_WZ0$}90b1wfIg23=gFV(WE8`Keyggyl-9?J}CGFk2brCOz z(rutFdzdn2*cXPt>Ye<^;b53=SlRF5ghm41`y#0qelN*uBR7Ne8}HB15y?k$cfB*^ ziP-nNkhD$O%3ZMxUYlDu9%mds+*Z=+f)tF?Z z2?TK?Sz`_v;=mjlej}2TU`*g_3!7vQ*?yPivsB++UTT z7d=_t9w7dX?)#YZm#P|F=W!C`Ln4BD*G#aN14uvp9feZXlM1^%G~qY}HZRgM{l2mL zDSV#DZAMlE3|M^C1Fczcq_aotf>k9;=Y_%C@H*Q1v0{)?+>X?e1{UXUbbW&eL3aj` z%n{!8>`Y=d*?6@+(9H(;sh^DE;#CmDp*ZYq1E7Ksp>5IXNErD;_wF5?i{?}AU{!h* z9y22q9+YS@DSPJwg(`hv(sO&K@)^?GS*53_;DDXLkHlLmC|fK{O;)WcIacE)-*$r6 zez3ucAbYjxrQq@BX1g`227$=nBFIBI=JFh=J23n?&#Bp|O`hi%h(X}eYqqqsvi_@n z8ZhEL7sP||f!F)683!#Kp=3ZrcJ%=J1co=WAqEjx<8ew|Cm_*Ru#ZkcFHM2iPT9T)fkHxBWs$I`84S(VfXHf=Mo(J&_nz8j01)QuLb9h!mDL-n_o{)zH10@z(lqo!glc`~ zMaW>&`8r`Vi4*xArqlbVMBBgTH>1rdltODQ0{kNZo;KmSnn4xzDh1;WR8sG(Bg-eW z)x{8mp5^%&V)a}1&PkiFL(S!!t$Y832D4UO=-C~_2xP7|#^;~Gz8|^;EXZH-0Q?iv zqvNEf6UNfVN8}XSHB(wfp5Kfou-e{%aycKO^Xk>F=ia9;7a(yKgpaFKBij097T!x> zsE$F4l-Nv2G5?N+&n7R;~7y5-*0x2SIWM z>I42Q*dJi^BLt$nVcfY~op&>A0nDJC;3dfdR#_7_X1;}vqCCC*8?$KJw{!ZvqvdPJ zWO7VwglX64>T^rL_H{YH;9g5xD3^W5dRltQ%Alc&pQDdoZLqsk&zI<=KYZ$RUff-p zA733?yg&GqUccSvYOj(Q^hrYw^{C+*5sA%q$($`&ej zs>!)%J5LaG+!#JJiMCaX&r#F~5|imnD8$-~eYBm%I9Zid+_(2`0FN$0X?Gyn<+es? zf8K%~lXZ$}K5q0bs?rMOJ*$211vBNcMNvso!~7rBd8jWX%>_!+UYte9G3a*POll0o z3V)CfQ90bCby{r^5DnntUI&%@kZm6ye?^C*1G=RdooBNYpn4;P+Gz;C>$%6>YG-OT zt^b6%g6;CixOl(^0}fhoH@)y+4?MlCjB?_Hn5`g0&^{-=1Ftz5jL;Bz*7U|*Ejo6) zY;tQGFt$j2arf8u%!+CL>`&i-$yR8vyL9+~>g$Mg6Vq5sS~?EdqnE(`Y2$BHY0%Zh zJ2i1*yR?)~>is)O`$#3{F8g$r{UYn>(`{$b<&4>2zn|;131CZ>!GNLdpnW{kcv}HM zKcK8PFByhi%wWQByFljaa_116H>Wc&-pIvuoJt2sI~o}aqY=qO{rfk5(4=HWnF2N@a_I8WW{>_U5T{OL!MuDyQ1^%nT%5 zZo`uw(P=W^6Jn3SPPhEU$#&lu%yWN|b%!H++F7-RF;6@aj^E!Z$@pNBQpAN5)({Z4IkTn=A08pCg&CmE?bR^J=UgSz*`l0P+ zNBrAOvi;e6jghBQ(+>pQ-S_N~EVv0>j=6YcOc0H6a-wWNkR+68pwN+5orBp5 zv|7)EnKp>b^7!UUtSq-KX=<8tk$wObSl5|n=z4LwMR*Ns$WslC!@=;?azlZ;2%cxC zTiD}9`t6k+ipGDsD}4b@McoZul+WB~ZynD@2w>+{BdlHuF_~e5v0N28K^d1A`a(hG zwkLDQL2L;4I&tn969L*l&5(mkKC=aND%?D2I2mNOdKGQb`%;-{6m(HtkM+_{d*Nli z)x}7Q5*kZfEg|LD*ctS%sTs@V1sQk&j*YX9j-sVc)^@0WEEK!+thBCo6}Ilr?;<$9 z1Jt?~Kelm|vYYLY;=2rIYA#Cb^o8(X-MM9os`%aRKjI#4LsA!llR94|>$CtbNtm{s zpUJV6qe}(RiPLCcO><7Ct=FG^Q*(m6AW{VF&HdS$h1o3JV}?(DT=v_|9B&ZltLmqB z<`2EU4P*V_=ZM6xsy79niL)_&j`x5n1^f)OVq+I8C!L}yXT!rplwUL{9k7hjJD?-c z3A9zfWdnVwf*L_5o7rw{+@@Zyh@ia*VTt5$_p;zLH~A>jmR9(W?NIjj3ZZg|3bzb_ z!#v^Z<;Z5VmdS;(sFrD~Lf8oPY901Z(vCBPPDyJot6=)w#D=gPqOuGT*l5;r1Hv{J zp!QQ{x6_SZ|N4R_werYVHQ{(&Cr4;%*DMRX)HPi4ou%P2&U9|GeADdmX4;U(Q<3XI z12O(3W~!=T_u*dPhcu!a(oEtmjn4>Wj+0$LWD*r2g5L(wGmR@f#>jmS9Vy@d;+tn_ zpxkgIs9dYSRqyrJXLpbDc!wW400anR-RfF4=7`1GjpgBX+2pSgOc90Jpa!uwop$ls zeZJ7fi$e76~{h}lja%UDl1B3 z_T~-EP)MDyP-acoAcqJ1o*dFXS&gD9YH7tjzQOqxe=CFSwZSBo3aA8U0pi=%+!&XC zFR2C75AHNzGcPGQRF?FG=v!jmg(wO8`Hz~)%P;T53u|vv!dSomBVT7AX@$P{-C!M`KO);K@>x?nQAuOX@ z)i=9Zo+fLs<<8>l#;(vU01Ewm3if11HwsQRyBCOe{JfQaXFyl(mOS0AJusH61$?e^ zPG^GwAPG+<&lI=0KRHNxnZz|OZTWlOp-J{kTqIEC_(nnubtiB!C}ci9j3^h?8*tWc zO{q8+Zm4kOHBgnT@wC+Gc98r!#GF1KExoS5W|gKI-^k6-7q-n)0Hv{<8QQ!!e>-HG zg<>q%Xp1=&;znlNPbN+E$@GvbWCRL~t?A{Uj&o1!_!(^eaQ)RfRwdWErWmq0{wF@T z?;LsK!Ji44UEPVhVSf$aaT#eoP`?#O}VZOEDH}uM z(S+(STNn~Ed!{r#9{rjz)}4=7^lH-KT&XBy6)dn%3KWaVQ|wjSRad)J>c$u5yEziI zuR}IIQAwB@)Z3h^=dd=*;&r~J=i;sT)eCOVWvQ^m@Y*0w0qVVjry8Mx=A1@7^H8~3 zfMys@+y3i3VEm_e2KiKwR)V>G=2zJT@lAML|CS#o`r<_6=13WJNkzD{OOI5EzHEWq z$|4JV-M81gIpXy(Di1So^|4;6?liicyG7S0i=yH|FCWP{{R4+j0^RZ1vA8)#9jDTd zYW+D&bP;dW;VK;x$F&=ubqm!BVZ_fQ2VwCnddV~R+!S@1ChUW=O{9%AMG zEej>ue}Pmxs*W9FzlL2Wu6>+3muS6p!?7UH0pr=NQu|DXdRkCpcZU1KG9488j9GLJ z*7UCDba^mJKwGRm`w>ULtO9?rfRXk6l;0?Pb6P*_J^xG~jvv{Dq1V&qCYZ4^41|P^ z0Ck(fAFN!ou$hr^M`5d&Ile;(^2M;Gv#7GmBBjka3)=RJ^XiP6PpM<5F! z`cIcV&aOy`>!_4G=Hp)&(=^zeVGoRVl|EK_viHj?0r&-G zVLoEN=|_Dcj~Zf_zRCbq03|MMC5Wb-_ql^J%g#T>h%wO~h@=&*KW4|5m}YfA)ty`8 zvoRRO&gPoA9ns&bTn*il;Wzh8o$lNm;XJe)UUwiHvv%Mp{~dH+Qair}D?TxYHSKoW zH>K##Nb}swJcE71>E=T7Vm+J>14Ju*7=VP* zp33bsQWd&B=*JhPJ{m(we{?j*z}ub-;nk7?y;Sax1RmFnLv?7jB;48V09%xfj`WbF z20+E<+hoBg z_J`X2I6m1Zp_hQ%^A~7lOjCWla{}&DaR|RWm0dXjRn$i}o8%5L!A<9!{P5L1vsbj2 zg2MF_s;8U2i(U=0fN6Q4azadSPy<8}K*Hpq)FHGWr>0)G%3lQo$ws*|G1#jxYj2i* zfp1+n^Etl1&^rXpD6k~6w$X)e&auMK;E`WiC3159nrNqnBu8up^M%>X!7{3K*-+RR zQm(!Zy#b+Mu)fkiJedVF9aK9n;?#$cme*4+ZNNrOhtZ0p06!eU>$(AF^SZmk;c<9L z5`Wq??Di(s%AoXP(AV`fIjYE6VI_wujMj}YRqVRPOIT;>ee$5@0#Cn|Gm(p*BD>-P z9Tfxe4^L7T+cVTs)LTLmlx)dGfV5V&vOjpEVR6TFW^;k20U}3H36?t*Lj)7-`xo7fQCsB| zoVB#g5K?e~#it!;QvO^aZZek=JwNu@LbD&?4m*E)6*+G8n9X`C7@pP>CoGBZt+^^g z_#{fojZ0gu))c#UgoGXf!(eC_%ss?|`?x&#N4WZ$uzi5Dahzz-Y!G|9a8o`BUu{rjl5 zNcn2&JWAGGIeJbRqiC0jk)l+M+&YD3UWVI*5P0(yo^L6{g5ynG$oVyzhT^g^;{6d8 zL!Vc93Q9<34rmw0qsrYr-_U%JCz)C|{OEO5z$?+lPq$EDAkiD=74}rSGZ2YDwlk+q z9-&#vE&*5gwLY3{-tF-Be0x+A|G#JAraa#9&45up=6nnEQT+(|U?BtL`#X#mRmUO_Q^365 zsvpX?#IUPer)@v%Uqc?9;XRt-Af!81AtAa{u}~xq8E;9oje}IdIiGyrfD45;K-J>Y zM;X~zqHNhI18Tg~A6L7|PjVMoWAV_7xH|ZQ-H%q}RerCmeDpTKcr7tCqD#&7B~du~ z1cK{14NC&KNH307kB7Y>)}Mss${mUYk2QI0=(r18r9Ad** z1zKcX$Qn=cYE#N?i#r`z$3!c}OS|6I(&SrktLnP|`e*3PF|w>yT$z2SJN-8egh9IU z9zwT3mCl11BrO6g+RKu$CK;FJv(Tcqd~0Zi6q5k3+SDRi3YxF6ND-U|Kms-=d~hno zhr(gUZ}qFx$Tr~7=i&X+@1}{lTlk$pzib`0QYB=3SU~*<8vH>S$yh#B;9?RW_(q@A zaN(*E^^pk%j{6Z;I@sl7jCfP9RR@O2*ho@1ufZXegc;)@fE5hPE&9f!VS1l>f;%JS z=^p%Qf8E9<#%!#7Ueu}rU<4DgHl+HJit%t?gq6+-vjnLNdXF#;9IKwK@y^N^;pV&K ztU7Q#C>9Mm4OB*HmW*K%Ik8Rn-us(4Xa8f~pq5S}H7NFRYT}Q4cSWsl-B-d(F>w~e zK{p^R+b2PrQwR@PWbma1T*HDmfc7?L$&8=J&87N#RXT35$_v!m9o zfkYNfLe1cA!G*2^3*O~%&7JxHi80)WvR#BGo7yAHCxzfPn6WCYCQO9Lz6`vK9wz zm0)Dr@tLx+VSWp-1JbPdwnb(f#sp!~6Yjh^T|rIOHccR5ju-KBK+0M}G;evhWjau<}j+AMXgYi=?*g>j~ga9Je6 z2#HY&plX6KU{n4$zdoFU<#}mls{XwR6U^dzwlXYNlalBY^sgf`NN?{z?*aDIEh{oy zhwPRC1Jw^Bv@tO^G?E(eV=4*`#M3a!%ZsT;zza475JJGp3bMv2ML(DD8=HD1B&;EE zpzj#Ay7SEOI5_4WM$pz8>dyqJMd1{IV`=fQI~mT=uRJ%{n9Ln>lQq2d&e9!)G*A3+VHZ(Zf!Ya(?r z&`jI`s*_*=vXun`cjB>zS)=QD;?RwyxQ^SKA`2)Tdxz(~4Q4t#REtL0Nb^W(@_D^a zSx~Y93OrbBPtct(t<^QFV$ib2jp902w#Qi!@;)jRhXP4YSZ+1rA*{-AV-oH|)dxQO zePn890;RM79h5Qb!z#FL&lBhbp45~G-CtKgm%3u+8;LKzOo(CB>>C6`_WL-}o|28q znm|<#G~!2dPrn#|9N{h@k7BI>B{5_Tp^jdJ2G=sxg_U|~ zs21NoNJVeMmCj)#{-$c;#T+jVf{NQ3hn-h!45JWK~NGBJj3Ing>Boh(A{-EQjR+i`Y z2OT@p?vJJy`Q_MEG-H%)MV)yn*rzxTGdbRp+SsPbmPQs%zxemgA%Vl^CW4vKb(&^< z21m;#_wUtUSQ){N!S48u;Fc-PbZv!WUWe{WFQZD!s4{5WY}bOXlE5wtw(>Th2zWd4 zIEc;ou4nF#%4w#JUm7x}`K3v2Wt0u{1Uxb?#46HAlmZ8>UXh$C>j7_qw$C#ApqO?~ z1JMj*t?^(LH%_gZ6|Fe17#BLTOVd);62j6aSW?W{nRPXs3)?#4X8-yqzAK}#Qn_P% zhbV96Fm|n;i6cU<>^)sr$jk4iI((3vv2d&;#VF5kgxFFz*+;8NGmNQ&iB zntaR^iW*4}3Z-qiX?IMFmcm*g!!pr)@6`wy2I1O~UXEU`78o>vP*L%Z?3w8a@5>V; z=#<}C-;Fv%Y)>|ay5zKOT%&T9C#y1-$BL!YZm;I*rotilHX2&Z9I4YW$=TuppWUTm>94-I@6s`wJc;Gf#`jad-B3krHXh3{an# z94GskLmxP=SW|{1Z&DmDhLI>pd5p)G6m^*v*Z1hoVl-W3cKA7_X1R`ql9G%GKd^y7 z;a^<~AgP!xwuICI6h{|Y_q+CIM&t+PRYg-HLbFxXh=uRI@&%J=&6$1l&7Thi2U1OE zc8u31*n4T3<<;P!Fa(epi;h-%IWKOaEz#rbf@JTz!P)yXzYix{@Qe7WzEy>%W^`zb zn4#a@zX>y`|Lk}{FEFpu*;L(~g6sd6y6G&9uS|61A#*bVm=*5tP$Nm;x}Am$MAm5~ z?8h~cmCiF;MAxA~d`hMW;$WJXs^nFyDa(??w1dme^_K3ArH`xZGOjEtNrf+OSW^XC zS2BMbE^dBX9Zkr@a{NrkQ=(019gOp-Qjj|r-mt`NVMfnZG;^;csI2L(>$Bi&70x~> zqd3^i>Q_($+!1*qIf(eS2`K6+kB+ll%?Q5+2DcGIofKAG$X;zk*?wEip_48%zA@Q(yag4jz zy%Sc0%E@5Ij>=3~rY6oy+G>4(>_M~ZQEri$)hGP{_~Tig-p9lt8S-N)%O^QH6I{m9 z?Ah8%fZ`f<%H#y~xpG>Zn%8qsf9Mb@E%<6aIt$|X#y@x>1s~y$W(ha8S>ZkS7M>Rqay56<%~TcHyz ztBHaGFd)(qv&X`=+V!$GrRG@nV1zwGuHDd%?HESmZ9=DnUre?TAnG6r+w&eYS3Q9` zuSh(j#~W!+t25Nt!5qN-Sg40j~5{N<&7LOrZ9h7`g%jUkN4^gKj&tvxt@;^6rT15 zVBR92&JknFn&M>v)J28K!Z7J0k9bk`L%ZUm_*8WF$0F^_2SC`}sJ)rd_+mf^s1q;) z|KOiyKqq(s=jXCdOJ!J>kiAQ-1h@$$z{2F3L~@B0R_JsLhTLfoKcthb!5W8s&Jsos zvGztP#-l4((EhWueFJc$P3JN4AUCfAc6=gjB7yB5>e_SfLzY~1GGcPngc0bG zP^RY=mGqJY|7H14!`0s>lKv_WV#UXS`dBxyBx@Ke4DMXG?i|9wST>E>K6cCxK4>Gt*}@sCrnk-nvg@{B-LL)x#c-}GO?d|5;hYOI4a))ifLxj zk!zQ0XYGU#C>x*n$fMgHq;jv>p&;0gz!)NE$Ui5K0+JkE)#_M~Uk}-nv-t(PXkJA$ zoyQxs2 z3re?h61^KJZV=^3ZpV5?kqgy0kq4N&O zqhe-zCu-wWeI1SW@N#@e^=aVB;|Z$*NTn$iLCFUZs)i^tp@B7@5{tE+h+r^kW95@F5#yt|xu>;qds~r=eo!P{#1!_W{Vu7 ziU3S=7>Rp;4O_l8nD&wgP<>0`i8Fd0Bub)jn}MHXu2Y>taT&`}#V6lkuu%^y#rzPu zjnHC7*cNWHXP$P~lUZBPtlp(48}{uA;|GkY*G_u7R62oy_ff;j}Weidage8=lmqG7(>6qkzq8AW)_f8UOh6etod@0X*0Y|NBa z4e?hpJGRl(B)@Xn`t;(@Hbl9z%!~lG)4DIpG!}s50cgyJ6agwSY^a%rCRx;F-5P6s zCsA9J9aQkc5g$q1%#qCZyw4Uc|*VWZBe;V6UlQjQv!{e$*{Z|&^c@i%w}W2J60Z}x=2stB=r)IpPO!?7y~!E zf8=xmx3dCfcFUl2V+>jT?2Nr`CfN9RS#Mz_!5@N4%RV$yzy@o!*wh8LL}+ zJGZKG_FNY*&)9bRI zK;k_KY9*`kXP%qOBfo3Fd;oT_`$K1Z^4Bfp zZze!#D8hw?)|O;c!r148T=IbDNH8Ko=(;kTmUikkeZWdYAaVg+$wl6<#V z#fY8lGIH1({UGKMex|@s%8h(8- zvnu9}{s5&LdHgkPF4M4RRD%FbbQKCc_l$cXlO=R#>F~>ZfwbWd6>jy{9FAxuPB);D zE%Q-Ba7I#uV$7&~7O&MJ933DD(#A*9?FGH6Majl}h4he|m=CBwgnM1XfxweWNcG}4H7Uo3MVT-o5W+%btCn!@r)=l!$ZT(nUg z$fcH%^H9dbzonJC;2hFY5c#-W2u;k)fzf&DVB{h50nF9K!*%V3upP2M});v#bYuOHjFrDdMdw8AVQ{~Ho^^; zITR14^^VhM8-Ru!!aGfdY7TmB{6xXtF4XZtXE3)ny#iSRsPJTW%aW0eDx5V3R zcm9I}1=2T&MnNL&mPz~E$`j5NLE}#?>nSJ4Hn4V^NTv7tcgA(^Civ0C=xRLMz1ofY zkaiftB#{ABNY>mH*I<;sR%8^@E-}DI$g=LO&v~v&e?+gmDqI`U!){c zx_f?kh)cwa7Fk6?NG|5Vm?3_(gN=>NKvJ%J_jeZU{vsn$q4P{WQuJ?%K8p#=zuhv2 zQI+AhJm7EuiOU!9*@;VF;U8V}@0@*KR-!d8*-qjKM|lATuVA z;uh<@*+!Pq$|Bp+Mcp4x*20M($|ts&)Xnfod5F`B9QT0NJP`h-^{XMq>n&1%_7EN+ zh&uE){szmIVy*4SN0edg?V56h#1bS(&aB;0e=gYKE~gxzEXW4=yR-eYVK`>2-2G+= z@)I5YqD%~ljdPRa9j1mOJC)^~zQUQs@Kj$WNM+05qk-ZHhE z#otxJWJXDupsguXyCCXtTe+Z`9pA=rxw)r4V(DAv891%4$mK${4oBg=v)zA*`fygSkAR3+6_f#Sja8P4n2*JH^ zvn;ykXMCm- zKz;{!(xU$*3`*ittKY+w>Gq4es6(5N9b_#{gqs7#(Cn#XEwE+&-3zu6==Fj==SD@IIwu-S#J4U&6rE)p09^H1#y(P#wd zkk2Tlzden&PwWp9XgVVk-FBHwq}<}|5}^@?4z_B zC(_!;&$X#Y`Wqhh;P=XK!E*!Hi3NDh&cxn#@S^&SrZbyNcr>3%@q05Koesq^-~vRe z$rB&j9tjZ@5mg$^aD#Tu9zJqZ^XVHVd>(szfWZ4z_fr`LM_Ut56vul9E3ob6?|4XZ z#~rQY(;y_lBZ89NvluJ$Utj&Y+x)a}P+%UTLetygh{sc{R$NCd|WEfoo)%N)BcDWpj!0F=s9_?RYrm2yl3s?=N!8#cm zo+(6^2vh%Lac#@@BE^VbutDNzWqpSrl5_z!z>vrJi1vQW9wYzuD!gMAij~m^Q_T<3 z&4$&2Hee?c^8vy2KNunaL;{$6f2!Sy=ssAD*3Vr$!L0|O`jIs;t!?H+jQOtuU}Lpj z0EstS!HxM=N;11uGBHLjgEvqf;dZt!UkC zvn=I58D=Z5D@55H>@P2e;c~hO9;uN+rnq^+{5pG_n7Mu{%a0?Hv?m9#jFIR4_>~ZO zh!(4|f^j&jBsJrGSzFKvDU?+>zX4LzS3Iq!x&)W^WgUXrRlZ5~R#rAqCo`@rq<*j< zEONq}^1C>kSE~^KUx>Qfh6jEstVkgkmZDzOC2OJGu;0yw#bf%3PPSTl+up%XfFrz3 z_po^zm|+IS#gsZ+Q94oQH%Yi?V9KW@NErfL@wN`BnD#PzfOeo2y3vtZhsJRW+55^pQf z!v9qiBu^uTJfb1+L!rlNK(@`fkUJtOf8*G<7=nMj2$JxmnZH@0(%UY{Ipx5oHhiE7 zB`5YPS>1o7mztjfn3mSELeVI>F-c_`+1dd9LgnHDo}@q6C1Mw3m3@d^2}Clf|A4Pq zz{IZP?}Gx6_9+mzL}#lG*7&Vuwv|lkeO=RvG@m*J7jQ@F^Y6?lr?&E@);e(`5wV~` zNhG+&M1~EcL(}N?U`qGJduGksFgP6(IUX(o1zUuJRfivwF2w9TRs^Yh@mDp1|G{ua z&qrx&CC~o)s?V{g`aC_lzetVFt2-N{JX=C#0-FQKd=lms;F}ZaWOjYA(>h8UTk@K% z4?7DIRhkQ$u_sgEoe1eQTccy4kqs5K+X*jvYJ=}aKj$FZJhYrOz0&p{VCiXgxnRW8 zBEFT`+>Irgl5QX%b-PCTmfa1AxMOzTnKlYzPgxXWF9lfAm|Ll@wRlH}rZt@iz!?UR zEQh|hLHc(gMP1`Q+bMwIcH6n8IOZZhbV(zID zia~tjIn1+PQX3At(6)#|HY048muLHM*@;Mzbh9i!H+cCwinc$dSB}=+<{{(ReQZZ6 zyObrRu)}I@g^xB0hAbG#yoFhEV)|ub`cnaRM-C7&qxOjx;g0*W~u2m(9( z%TE~RqHB0Xaq3_!9=|+8683S!Xc3Cw-~r?5?zC`H8L7;)S@9fh#R`q?trm&~9+YPq z=%r{0IoguwH=W7Hp20OX9rRB=(v+PX&?5yc(ltZbw-#O#y}W^06%Q4-*wMI>e&hg} z`?Vq$`jF2rQNR~YnNQK}W2e-k3%q%=y6QT9k>Tb`Ug0nu|BzI;Wl3+ccOV$+)u2Yn zgYaB_J;sS)upVq1#7L0J$i3}8@1>13@H+{pEs@l~Hqx8S7M#=kA@wqzPjXR|Q)Xw8 zTHZu)5$F)*zK|s$N8*`F@L?p&gg)RFk>7e~AM{}J^X0elt%w8kst<1qx{Wn>7iuGG z{i5p&#duzED$G0_h!e3XZztBrmK=aZ{gho9`lKg92~&@+&_f{}`V{ z?>3R0ZtItHWLQb*Q0@M}b@Rts`Nrxrzgrk#c{cNU{91I%)g+uLZOMA|!O#J=*}NF5 z@o*#77p=2UbS>v%0<2kZ%n6BNdJv?py z_Hug4#W*hrADo7%rGbhXHHoJHhhA@*$z5^c^x_4uc*IvOS3O+L%ymZtkm)Fb1Fg`0>`b3g*b}KJTDnu@h)V6`T?RTdxUEuc+FG^@lneiESC)K`qGyGd zSUW6sN;BHAor9`AZXn^zZFuDKFHs< zSh4SK#AX48e@wR&VI#;<$3)O5xFB0cF?vt#7$hWWMrZ+OP9DFebk5nlSC-WJfgQ~V zVf$QPoSmUJkiK6qI>EIUog!p6S2Vn->%U0jk|x+2q;>@EW>41ksz)KsK8|0 zCg^~X18J@V(}_WatWV)2JL>K_u>AfvpO|TbjmrwneILj<4p0J8tbew~lQR)^4W%lw zPf$cAUYjhtoo=sp%iWWVo@CGS-B&vlI& zl6DS5TLN-{i4*W zUOy~zpLCrUmxrAuv{Udk_+r(OUkk)6>ygVPlch&wu$gbQreC*-?o#cz=25*(REnrP zR6;hw@rMA$+X5NQv62aRESfSHqn`!$qfE7=zh$3dx66Q%c2O#C0G=V|3y-x|1r?S= z4eE^;BUYl|hNWafzbh{POa+{I1rrdj^Mp@JgzX7uR|X~Y^k%bv{Z~Sp-aZFb;khHs z2wv44>8j{<@qwKO?oWzq)z|OUHB8c4R5ZR>=zKtIy*E4=>~Hx3`-F&YLc-cVuYxXI zxtwdzNoiP;JdI&E!D3nCoY2`#+>eEmr+z!++U?E1t-falv>U%@kMU07^cQ9QVo>#I z_0fxKCA~V z;|s9pw+>TwBRk*~T>)>XWfx%M!s#9r1FEm9%gu;u5!Thdd|92x;pEo0|5W*nsfsPO zakn#PY3H?aeMRkN$>z6x0QNb{^c`yF^|4h_J8WURrvvkHm(2hoFuDUFkLxrnr`m>Cdv z7~%`tTAI5rjKsAME!=V|iKen+Xy0x%AD)+pS%t`d@zg~*;1^Gm@17pcG3}#r9&_I- z+=FwYP8--AEknmQZ9LdNfVXF72ctTJpcs!hJ zP-ez-6eA6Ekx@EN5^cpy1v+rz09i}+}+`?GPY znHGB_>y`no=_Wmo?&$0?5O5zF&V*_HF<=}-IWjPwKBI9+m9EGfm#=^C+j7NFx0! zXe)gZpO#JHtjd!e%obMO)@pcmxOJ8%##yHuK*!!G9cyu*-%S$L7*y{0#){16#on}< zExML+9Xztw|4jWNXERgDwJG$8*|3M#J}>hdy=|<<56%K;DW8#;5kL9E#qM4VXJPc_I#Ux!n~`M4Z6qW1F<)<#XBc<#;=9l;=x-kH z5gwX~eDY~4z z8s2b`9g+%IOSp=^ub{FiC-H~j0qd+GD}RDi5Ts1sW)A)!r4>g;RCsmqd64gJ@ad<4 z`B$FdVgLFLp4hsM^^U@|#JDh=oczr!;Dp!FwIS%^AKsHIWH4lIR^Dk-soUWl1<&VR zGEpZ9MwPF8J4*5$s-V}EH&_P`C0GM!kMPw8W<~-O*t~_BgTV6Gf!cVMw$+IK9gFX6 zTFUXmi0Jwr7@1TTld8yPERK$kd&eUd#t4DH+3il56@+qP*Li^B+*KujEw;3bTOKveIN`wY2kqp z2sr}$M&J^~`~xpoz!4?gawZ<+G5VAjSXZj4L(A$YoM63I4xeSrq!#BonQZJkPYp_7 zpz~XXlZ;<9G6deBCXyS)-G1u=eO%UFHN=+J5mkU<&Q;ya-IF51KiP`})7~}qTu3;c zmq(yzCSNlQ3KD32m~C0B5H~}SZZX;<1E>pd)740hTB|2q4W=txMsk$ZygRFLA)i)Y zpj=BEK?)8+WQg<6#*0{Ls(@oEYdbB!1Z+|Yjs7ZVe#5A4%;Fd%|2Is6v@+G(2V@Rw zy-!U;&~>OPZn>S@z+uivh|g0-NMg)a6?@m2YVi9Yxn-E@u`=afzy{~kuLKtD`c_N; zsSdw=5zY?$d5GcSoWrw??3-;Q3E$Bpkk$Mm{3_i^Af&N+bq;%T6){ zKU8Q^1~(h0RktW;vD<6^t@p|{Ay@izQHTb04v73qqf4A&7h%M-78_*an`i&s*E-X! zdE^se3HTbwoF>tMejAKXGhhTTB1Hi}Vlnnr?8p@_K5Jdu5H2{#t!(4Cbt1&c-`A3N zJTdGTOd9UmI=q@&LjLu5b-7|IYgqSCxz*P1nKk6inT71surR|j2$CX$$7 zN>Pum=`|CcA<+7HQU75bmA}7PV*_Iuj^0$N2%j*UoQAsL)3=-^@8&#aVOgpH?L0Sh z&z*;K$+Ur55?-vTsXd}$*Xu3eD}HW>c3<{e4kr38{B4`wcG|#X7p9kb{v1Fi3|)Ml zw}kb5okmv0w!qT+){y$;V*)t9F7w)o*dV54 z42hc(P8^$g!@btm@13v&`tkloLaakekg#IZ@bi|n7eOrsip?cnUfct>&N?v-RJbjV z_UajN29pkM-+Tf%%_P2kjfX&$Df7#w{k7IF?fWU^-&RjPTv!n?tt1o@t=p`Gk5z=- z#`8u6Fv3A12L6A&GUUqvG-VZC*48Y79^uS^5)o7QJ#M^u{1R=X9a6~ zV@Tq9wlZ4UEZv=EUaC)tgBY^AT&f5KfOpU(^_{dH+YK-k$85(jmZJ$*z;fOGGm~(B zk}qu&QlDn5WY7c$^oHq&NaMus2yf!}q;K_Kg`qc9mH5+E4>CCuhdHC-hKOO$O}cI1 zMcVY_E%D?XnI}O*TP&WnP7!8{a9cVP4txU7NQSRp!kK8s1wSDg$;T+23qO}dpPmg; z4^4|CE=+15&;?i=kojhB3lX3^u!$E<9J~02*MXw2AI4ux#9};(Bx?G0=>l2fh}SoN zB~LxScl%)bn~cVDDrq6{d(Y1!%;x3kZtY_DJx->RMUIcX&6<=xsh{L?6gv)mxawDJ z%=xAV{yJ)ot72LF(R8DO1Q=`a~!m~A)pU{d1goAqEAZSqfGn$U|;$1W;h6^nMy(3M6h0rvHbYNyNs= z!t%c)A(z@Z4qKxr{?B!PO&v3&3rD4=53{5YtB?v7qiM0bomD@=Rnclx?(aSVx8`=2BYQF)x01 zGp&Po<|If1k>m#R8_Hhd)us~6%Yf65uohbq=*BQ}Rk@nG4A$D3hq|xdWvUU7+vIiV z8WLh=qNZsxxQyQNCyJ(n^Wk9(s59KZ2>*s~^t5-QaL)9C)^@&Rt+Peo_d0?fX9Akg z0hkEcVcqptx-l`%#R4rvQ32zXG=u1eipexX&O_*|w*N}N#$&1lTRb%aB?ab!19c_~ zccC>TOqd2=NCP!wpx*?R1L`J*hbXs>EECl>giV3d5mFh#LIO_epVi%~7pF*&zG4#^ zaoYx!Vo)l1uE*yI1A_LcXKZc{@-j4K02H7e|J93YVsEun(M7%pre%veY99>X^wKq? zV{_~UpC>5iHG7($92}?_n%M1{E?O!~8~_6nJH~#)S_j7KHwLA^ij0GOfAZ8`R-sAiK$*ph|y56hB)JQ5Z!1%0h3e}I7lOIAY={fQQiV^vjl+Q#uh1;E4x zG#|ba%&KuS$0wuZLevvzKqx?FA!d{%2ezt+*~dXF|6uBa^R#d*hqQ#fK$HiR5mUCF zQ0;E@3|-SJ9+J$Ka#qTP*EAOzgeGnfElU614vcj#oba z+~ozm{05xdUz>wAqskKsO&3)k0q*(%;Wji&-hcvQ!4@Nhm`g|oSc7q<7!fYceIX&B zG2-Kwz?mG4di5iSP31+ZV@ThJGcrhS7?IMnb_nCOz{oYOA?SoFVp(CdFl>{kOzh}D%Os$o<;7$F`9pKfTLljdF=hH z1_bX|iP)Odb=mt8QUNgM0B@{%5L5PiDUwPfzir_J^a&BCaHiy1B!8#l5=u?BLv}Or z73znAnQ{9Wy?=*2NtB)@4JZ7K`gU-}$`IHp!;mwe2C9FHzrLAo z0AJAG9AgZZRQ3s!A=Sz20My#SuqCPD`m*l^MG~q|e<6<`->!*J#U-T(n84^xapw_g zqwLny*`Oe_ow!;#>zXkXPtpES0b_Xagep1_#I^b0s*RjD2gPW-op!v62;c!~zEviL zEJs^y{@8w*)#2N9NtrU?6@#hc$ z>X--R+7aT_dL4^Epn|ucpqjiF#5uY7UE4}ehjpEzb>N7v!Tdzd&X(wSnSTJo$&8hE zS~0~WwTyOy0v}#CltZuK>1{0>NEs!7JHBN5AWHcx9=v@XfT;fiK=z;+c||@!p5R{% z#ev3T38QcrSE7Xy113qC-mI)x5JV&rjy@LLUC%O!QPHg)Ynvm^h~>PrZCMelx=OQc z*Wy7XAsvg9g~2yOP;$^5^v1S6u+VehL_a$S1+GpaEA69bKt47^x;Ly{75#9sLLG1S zKv!L{S*ouCh(FMY558$7dRl7)H+JQ_!ZHtc=apUPkufJj$yzlJ@#v64(6>`y} zq~fB^I*t_ev_zb7WUp;Oze;XQv@Ss(fknO$`%~BmkiUrT!LJ@dc5I;33|(b+8ERjQ z5T&+mYqF$cLfgEJdR$cyylhxAaEOZGXTV%hYRF=+;8g3_E`C2ww!!jpa{c%>CkXI$ zb@m)}!OBoz(8z>gML?Wl-01SNYxE0D48lb>2J>mp!ia`JV4U`4>v(O+(9<8NVfBG) z8))zY#04uY`}g1Nlwk*OA{tKPU4V zEiO3S2lJXRFUWb#>eg+ZczuQ_ERr^CP)4H|mtOy6>D5PLe|+oK zN8hiYs;dztI$~-a=#C! z*^a1>SZMZU`5B>C*QSXNRQ1WaPYE>jZD2m7eyY$-K?b&tu_|H=Rt0*$xW@0E`)(oB z<>m1Eyi%+S$E*t%;osmBj*ea%g>O654-sn>wGQ1DkX!RMV_+5dkAC48@gwGh%-sBeN|rcnN?vnNh!Z+p zVm7JjR_A$sR_f%YAC0flB}_9|H+eDz93;L553YqDn!YtuL=>zeJj9H)D6}Peq3k57 za1cf~0qh75?T^}Mq1^KAqt)0!!Sd~=s<^(H%1wMI2DvG zHO5S8?a$gn0bLz)uTL|#Ujn`Uqq`E}aTA3Tumg+>v?{$+Uu&~Vq;}PY-#7o_CBqdG zn%i)Vi^lo}9L49P=q-f)+A}Ln%rG~^hP!%pzE##3e=S**$LIHef9l6mvhHw&zR3&! zY3KC@e;dBtk!`yi(yj}#EK-jENUk;2iWD9|QA#?@$*b5YL{DuY!x~$rVkiqEC}`o^xoPNRTUTF1w9=?yaAOOId=^AO zLIt1ZJBCouPWM*F+bSDT1FwjVcWFwY$w?!lK9tFrwC3#U8%#$t_Mm#{&mJcqT3$Mh zZGJJdNL0{>n6QhMT`4L7n&s{J#UQ!aHTu=UP4>W1pFJ~OQ(gN zPP`$!M^x^D*XWjURIQLS&{5`BbP-FE3^11N@US45nxdmY=ve60H+Uyh?pUd9c-LAd zN+Q1!Dt*^0Vg-}5CL&qPvWDd`#O@PJ3ZR3TCqld>;2~Da{i)j%sWat`nQK@oU|0) zCo3Jd@y?qGwiXic<-g-Kpk*(p>KdJk^b3Kq8bosS&p%gR{trIbouHpA5gO<`8ey{@ zd{*{Cn}kjGXV&QcfP3*|gY-T|qU^k6gIKb0xq`Pk_En)*hX536Dt;iDE1;@pngT?b zI{~U>%7R}}k@vvAtbKmHpbM^H3@mR*Vd z#VKPa)Sws{<`t-gVA{B3e$1c$={dF_M}c_)_?P`pFOWZgjbtrHdo29!%4Juk5Jaz+ z#EHKB@Jpc8NY$5w($^iS|;2mouCd-ZSNy?7o^A870jZFArMP`|J&*ea-fnio^ zFWvifMB*F$f**Cg!;#29q`vp*Ulv4ZF&XB7e}|j0`g)aZNf?rWlyl1%_FxxWTF?nc zbi=vK>#!dbzOMj1=uuI?@`26f|9(S(6gBU&J`DK{2-{@0J<|JlBJqdJ4kV0rxEx&4 z`!&{cGk5eylb)Bz&cZ8V=0WGha4YMpKL9lmx(i=oYv`mea-p>eG(NVf$Bfawnwu}; z_dfF6zWUFhUiy>k8dOdCER8Q%bSjHagdhy!42BEeGh_OQ#ap4j_x{k`%Zbd?W7%QL z*IYCsfW9J+Ze?;`Ps^bgJCa1N2Pk6b^#I0rH!?w-}c5W8p1IPpe+zEw7_HMU0# zqdsD}`!E*=$aDzT*MQ>pFh|C*7FYb<&Rt|=aq{~(mxx{SSaIDoB736x_E8{v(C<~s z@$M@i*^TF1tZ^S5_U$f)NB01`wFJ9M2wm#?TG5PTXa-8ozm2g@7Z3;Q4^(i(t?-wl z0K_P0T1fdoD_cX3uqXS!XMBEaH$i}i+TPwa0~4qv_7ExbRZyO+QJPJA%}nhPI6TN5 zrrJXYX6ge`%gvO{sS12%8Z$Y>`9Ec=`sSBW(g$CP+ICG5bdD&JC!?_h8xLmU%h19P;Z_f(*e}%Jx(+Ho|9x&WI6o%k9TCe78Ws!{ zGW!@(;@$zM$)&A;t~2rRf7~?F)FQrs{?#qTe+6}fN_=v>NVJOY&zq%*x z^H+Osaoq1dH-rK|5-sfkt*Nj-Wi*c&DnRy(5TrjqEmNYCHVi!kviqzihbd9(=Ga#> zknYSGhAZ#@B|_C4$y8NU*;Xc2&q%3rYV5D*0&?=X}U zal&%2^)M(VR5P$gp40uH_aHIpMVjqO@#OU5lU>F-Mp&wK$iGuOSo-;EUl zm{Tjibpy!K0hrRq$yGvD9|Vi_2Om#wN5G#Yr~b}IhyU;nBalrBk*}!zW_q7d+C-Y4 zuCxJkz4CQ1FCrdHuMDuyg&jZ_kva6!;k0#>(NnLsPSCQC80!wb>KcbZfN8zIT|(R1 zT|U46-g{54ZSt=}?I_2z{Pa|l8DBs!-B>*+tAnP~!w?QU zbi3l&eqkI>?RS3Y{x#?&9x2+|^wo%5YrD60XJs^;^c7KW^3~9acJ|`Wocp4lwMcIY zuz^kgohIG@E>F;5C)Pt$mj;S+g_tETcHQt5yma2M%lNQXNZ?9@ zjbtGQiz*_GZwmT|Dq@YlP;?5KI*ubE2=kNmoHfQ2?-w;^wz)0$^?MX-uK1%tr>gcHPD12GW{u|RA|BXYkHtEsd! z!p)pbV&r!y-h~^heYpIuY}fqwJ-X_Y@et?CW(_9MwQd#bRzVTn`4zlw*uENZzI}o6 zKHj_YF2c&)Q{PVsM^y-maUf1je51q4k7*WQ^Cs2aViN&AJ!ki1c^6eJ#wk}CZezA4 zcUdYNb(_quJ6mRl3?^~Aj7{Z;D_8H06@leOVlH3m4B@c{mHPUl1qTzg%r~)=eSAg> ztjjn0s0v;qsA5~_?Ds>SXBu3#xbYgzkSGU&UYOIjDYW5Eo>dwM=r^WoirB?`{$}S` zuaVWjo`wMH>d?NH>W+;JlZ<&5Cg+aup~`#38o}j`lxoD_Th%&(QN{I@t&{*+q>5W8 zz-soQV+Cf^kk5oy!JQ*DM8$HvG5XN@%ouVuB|(hh?X@~Hh_Ujhr6=Au18JBiUK9Ed ziRa($B$p6k9q*1YTelB2at;Z?_*A6^W*xUIOB29wRx>i}h&=?vla`Tc!}K(k`pf!Y zVP`CI4S5T}(2J(42?s8Sz5`qs`-Of1BSs=6n^!@fM|jf992A>te}ob*0KXAgGb%oQ zqiEoYn1A&t)`@@+L<^*8Acc)ivNj!WDll(I!1Lw&#lu95fG&y|qb%S&+a+}5r8+Hg z!x-?PcCKr}{Ivs%iM@QTz9;?S69Ny2{^THucM6A`^m8dZT$eWy771@~ko;}0nZrRa zb~jucKQ?P=t{W=r!gu6J_b>z{g>By_==**d-uHPBZs7lM`L<@@|8@DCFZh$GVax#V zR_1@dR^Fq>!LjN0dG8(i7BGr~sn`L@mIlZO$^(wAr>X$5MyUeD@yD6}!Kr_Gj_>pR z&^zy(^!wiHy5@kuz$N9Zi3eqY1}C!fL8!3V3J>zPsQ``Y37mIJ<;CLS(@^GViKBWg zE<`40#KBRzt14tpkM}DpDC{i1ysUN*xiH;@O7f_gg;G9g(Lqg!@x~X9YEVIA3j&~R z(hhYmo(=E;bVd-4HX@W%t%CUjO5iz+(aH+<{yFj&0H2}YRE=4E3$LkNnGyw+td$c> z$w>?%l`v>z#S$ITL%M=V#~q74(j6KabVGLp`w0}Ks1cC-lx2_DN;2t`p|}Mp^Gr;l z-XoxjTewhq8Xd_$fsz{!CGZIx03;>r#i&B7g+h3-$_a2B$9q0E&Zood1m1N_Qklzz ztT?KcDm8W?7UAItW!4T*QlJSxTdT02>%QXG&1X z6z@b@*J&+6D}yd#vf^Ed6z`S!2xU%wLvYu|y1xJ3%1*5EJcT{1`f!To;}OvJ@jmvA zK=CreRJe>L1UwH0l=m=u!U&}NzFiBj*LWYE-j$`U?)^J1{uFWQ_|d})(hCG#08;?W z1ndel$jiB{QY~|AK-~_2vXkrF+p6;Q8R}5ueh%|E?;5(n-xneX1xqMG%8^m`a95fV zKQqK?O}t}T(`wO76d6__c1-3B?U&m{2jLv);r!iGqpULot27TDnSLg!W@=p#wlH#)FP+=rJp6j3gAw zs-gEL;C?DHVFFnjsY7Ow?45Z`k~#%hW3(B59+H!1TSyT?sY3%cYx%Q9N%~ZWIy#LP zVNzh^9rESo+ed3CNYbNA%#rC7sW7Dqktq}5Qc!_Xm$>E~GLF>Dd(sSkbB9$x0Q<~8 zPD3gopbz~5%&Cxte9ftlhd|6W?O3Y1q4Q>jKg}Ij%TsyFiWeT!KZazrQG?xYI}^BO znyQ?L&xl_b;%KXSRAFyi*}w?5U1LCs9P@Z86T?}mKpkv6ryXw5w6OnPnmANP9h^8+ zg38g268T%E{PV3+*)yi!M)Gs@KHaKQhc-0Zb7i&x#ys^}j37YSk2FB_S{hlw37xP& zAh;AUEVScF#F^;Z6$#VY^e6+|WL#uKQd%2XkBva(%d53M1ja#S zpo2x2Y$!+=wFPGZ_0HfUU?HV8l|+_G9%3)aRnhAMd>M+R(Del}u!cgZ5JKNHk7KK- zrDDW@sg}*>w3RlspCOLpR0>B^_Eph|Y$>Vi88%*AHaBLsB7pe;Mt=@_Y*Vwg(ab!H z_8S@+TCN;i8WPh|^z_w43l;KHVnQPz!sr6yZ_zD52s4U|ur9uVV^*?5Q)j1`1R>(0 z0h4BMd#j`c^Plu_*f=LvM%4OUuifao9O4LQq!NRXg+>jPG8!P2ox`=j4706YHRexkp#y!-KKnWV1MH%3(>SWy^Wd~21>!u`jdqG=N zbo{EmNe`4T{sa}^z&nEX&$##SQDsQn+Cr5)*JxYGo{2zPK zN#J%$x2j^%kTl~7%}(sD1kg%1A}79GL?6_+Z~KvxH!3juDl><5S&N3e&8<}1Q5!YX z!Lc9_b@z5X#qmjuHdq*~jRSXKVp{4@he%_+tnEkDXthQPOtFR}_6{lz8m;8$FgJ1= zXC->opSvR>hZ638awAlx#I0@CO@$b+@Q8k4Yh%BN&NB%)M*KAb1pG~uf*v5hlY5M= zt=^sxYF9<#7Si-CdWMCvQK)AY()10AQ_HKoTBL2qJ=8*c8u?E(j%{%+?%cG>It*HJ4iO**%c=cf(xbAf z@4$n~AE0%U7Rhg$zAyp-0T5r3yBx z14#@M6xeU7ga{YXmeVG?kj{S;{*)s(OEjL)z>O0Ghn-za+{rU~WC?d^0>#p4r89(q?$I)WfwIw5qCP+s)jbKiOM=H2t&y!mFi-#(tErA)HXhc8{+W zyTbV-VnEhnMntw_;6XrqQUzxGL81p z&RG}weTF+eH}KWHyg;m^=s>U?>OJK6TJ7?A8Z*Y5#&2 z{=4%PYY#vrMpG3nnAzC=d@7!kX4AOZ z5gFI|Liv-GRrWo?Yix|w-C2OKR8q)uHnB~T@X&gv2)YZ9$Y?MgNV@j9N?Qa8n0UcE zqdrq)Wv0w=pz6VK((OV(K||(IjfqJv4-ZQO20Qk+1MNqQlOiTF}(? zATCk~oat0Vs=c<-NGX{1Rxev?4dypRGDwv+bo0%LY0K-cvaOU1h4@opje`d((uzO6 z6c>aIAn)z_@Oix(ERXAYI*?=*@?7<}Psf+__(5qrsWPOlZt_sur*h3V5o9JTt>~8; z<;{3s`nS8EQ>hyTu0`lxgJ#z9L(wjFL4T;FHN6@qq0qAex?V7ox&)@SAax#c$O7 zeijBRCTBY{$(@`&WT^Caq8mCi{-%<*x|x3f9w;feDk|HX_^|;&^>!{jyK#+ET5z@HY|f^7Ijg~6YoJs|pnK{a zqh^%B+1o3{VtgNU#=B?e%BIZyT`F!`ryX|Y4L7ir2p^l8+~0MGv{z+rjCtP}->CAQ zs@N0>qT2AMI9je=i|LFITP`*Ye@MmmZ1ZO<6@`9f^!!gs87phVokjG@wpxU;l*hMhqI;fa~1J# zy&ua-yEroTti%s=6ncZt!=z0Qo6(fFD}UgvC*3JZO@i@zCg$ZGWo^NuRGY&;hHreo zXI&KDbkNWbMkuQNJl(cEkI-SD6=m*xk2qy!#w%P4A^!fWSi(pQ5x<4TTLTavX~->c zDTpLQ<^~ud1O^L

Sh#*r`17wdWO9k%fREx4{3Rpx?p(rEIq-#nha=eSCQ(Bq9H* zwunQd{;4CLNYD{ql45GY6LiEmUH6-N^?AV+PVO_?S7)}JpCXsYi%?xsd}L1NAw16d z1P!yP{zYuc;wL#nc3Bm14wqO4wmm~iDVriD8_V}m673T*v-|@Es$tGk`O~xt?W|Yq#a)%n1a2cbjl+{zS1c=GllSsI4_7#v6x%^H z?xkQB)@BkW%{xVeWlG=!*R4wyudz5kNB|puVxy-m*i*~K6i}))m6%F0SUwbBi`&wE zk;pH?d0n~6$Vw10Z~`et$&TNX~< z%#S9PcPLe+FDqTPA&Zrs!j%oZxs;5$o{%nCrfG~)*suA#Qa^*c+BD>lvWc9c(+a7m zP7_lUNk(CjC-n&>pqHBi9KvS-2J8HXCJ#~(?ynR%)|Gh198SW)Ztns@46-(itg%r^ zsE>@##viT~`4lJ*A1PuDd_xQ}Y&MV^&?xzLNti~_hUsO<&tf~1DHZ>UmZLcNqZ4c% zuyRt<7C7!y3k0?#y%~P$Jp{7$Fj~wT^_3l)C(JL-dc_}1scUBcL z_VKa1UamydDsdSg55^Q>GZf!==5UU!54}TBu)>B01iI0d<8?=C@e@BCVmW7%5!(R( zgsT+3S1qsZs2-6~mv!jgGUt|=hv-^U5~4z4Lw#t=$J%dynKQOlYpSzXIG*t;$i`jslQ>1;Iocm20DO z*u2H-%Ax{%ez{+jiK4q<^q9d}k@0y{Sa9~TvivLlK)zo{CaMzFyZ1+nHXGq%KU2}S zK0QDuL;fhWF^Dk%GO5|1aUTrf6#oVG&j#H_j_P`kCRKesuqlQx&0iRD3I}D#%0<1J zFj?(6xxT}{!;jeEU#mufr2PW3akw}AGpv{Mkpg7ev}v5O*jIhJFS#DhJ%l`FvyTLl zsdFdEv19Z4^j~s`h4kE|qEyzR)8SpP|ARI6ibov|=rVh&RIdc_Y=|uUJdfoL<}@h8QURCi&_8$I*dkQfxEZrN zA>Dift7jmqSZML&45@a82>Nc)+$!2yNAuQXXa6KG$lb#OZ9Qu>#q$8=(cd^858rjJ zVc`8yZ2$9cXiI*a7(S3Yz_-hjkIYZ|t)-2Qo+hRxq*p2Qu>$~zkbX!hX5{?Xo>v?q zPN+?r@LGuTO7MykqJ|zGzQ3Z9ykK5KN-<4$2ajLPTmNjT@LI?zg2knj3BOU@BBW?Z zDTuVBgrbt7jIx@NjH0rlqN=Jq@840bsLB%_rDN~z=01^RmB1X+{S%y~}OvLP9zIS(R-n@FH z0=p}BH|&xCQNCa-nX1i&-rmBO_4VmG+(k)_&o&IqdWzuIImqp0rQuy}hrv@wed?0Y z$Xau3qIpxw_)$qSqBc8Blb{t|4l0BtP07@t(|jJ~OtHWv()J&PPubS6q>WY>VB@BI z`c*5SbR+FD@Ier|&9LSWu74BV?p>1#*9V!j^?8+Y8wI;IQ1)2gsJj7A22He0?N((y z2zF|q&2E`~d(`Gl?CRT@_HL%`8%fr9ZE?t>1^@_;h5tZ+>cZ_?jj(0Qv=v(cB{P-Z z0BL7dHPdOqZB@y^h<n7VupmFT=u( zPV{~n!b?$aT)_Y}+KcuoK7Tr8)?ZJrH{NQ1(ne(ks$&zUocqanpT&LPe$x)4ST5Yg zr{1g}Ud)LW$kPvG?ud%ZbE@YsjKNmY*dV%kf~auwcb-u2%mY7l2pxaIPx{uHqe>l+ zHIuMfW0ae{M9rj5tpVz$-BR@=v{oC#V(yA~7UP`qpr>cHsCJUxO#Rx*?DL}w?I+*8 zD;`dbNSgj30tdO@7=?X}F`a^b)^m1gKX=+}FLUB(w{pq~$GYA2Z0e4|MVC5Ptl#!( zc~}N(&2Q#?UMoaXJJ3~f;7%6ah6NARasjGpm+lVxGsJ#C!u|cjASAhma#@VvUrCXWP$P9&^^*0%wfGxm9LIGzfv|Ryv8& zqoXRw7li^Sy6CWw*xU)`dG*8j>!vilFgGoha~XMCE_A#rfD?iAB&Y49hf?Y<1Zvf7 zcQa>)8F{h~w3$K4R`ZZlp7f&a_Vq+23+$FL9G;Bs?QZqN0SnwuF8^4#97&WsFD|!h z?bMv_DDwGJm#TaW3z%4Jfw?JKdgtnFd+;%Xe4BcDl>XiDjW;idZgrCAM10!hyz+$k zFR=P+Bk|&GM0rH{_hOevT${872TQmf``AKvjrD2k-e+Vl{ubk0Q=DT zwmq06oqj~N6^VFQ!Ew}PHA#kFxYQI;>3Jc^fevO(YP$y|?Ohmq7XY8yOv5b~%bNApSz43Dj!9=bZU@p?caR;EV|FM44Vp@KUi}IAe>k6F z0AQLCvHuyvIlT%ePOs?-4-`hdjJMstrjN8DVg=BT+yG2y4>tfQ+RF`a-BzYxE|hCR z2c`6X0E78XOB1OY(|?1L80HA#BIc8&5!7j|uKU65dcnn63Hsa(kccRFzIuACWy9VO zhpeZDtnpz)A)9=dXh~_pseVn!2dE50dO=+Te1OPW@l8fd29zTLlO(>$`frTaYZR-( z+olaNug?iXQVwoQDvnZX3{D)46zP#7u}|?DeRPG3xE17XUKW~iueLRLig3LR)rP+6 z0pKNETevC0b6$QdsqE+IzfSG=@@vCBek3Ek@eWLHJ8~o=>9)S0tb|tpxlYH+xCV&} z|CR3pW7C8%#@$hHTc`e|X1&CO|H|Be#{v1Uop(F$7@AyU&wE1uQ!x#7iL z_gt4rJx%oRw&*uvTX)BuE$X@%W$=i9P9nmWJK9%&flZFA(@pyKVk2dA|M6?Jk<t)R{3jM+3Wk?)^%he#rxUV$V2W$R7C~XUj@@NJ5TQ>o7g1VHG z0*mRB#TOe?<=&+%3tJ_w60sPbZ}>Fn7KgZQ1%?5KtkUi<1}_{ct>fOFVlPku8Wk*7 zVs%yq&95GRJkU2h-?r|W`&i0iCYEt-+&6cD2~>1%{_vRX5I1_9YtY0?V4ekDobLpU zMM}%2y%j}#>N4f&%;AuFHm%_fY)G`(>~rJKdAg(4!9n4{G}sU;Q{|$LGCH6B3Y~lQ zyfx{wym_WzEoXeby>rvkC8wawz@NEZ)qJ|AkWe|b8>3ygP-gX#k?(!`Ue&U?+|69- zE+gNq2{D(^?+T|uoTb{S3XQDlo1@=(F2s|h-V`C0Te;p8jiY)@18fr#>3S#kyc4hp ziJme9mn}}(mebXi^Dsc@OS0GFLDp5hZZrNn@vD}*SHL;$4VA!vCw5{9-$tL}<*HcJ zyl&4d4hM?qn%=)avuXoX90lBE1d~D2?MhC>yyy)DEa8 zN6$kn!%IAA$~tN4DeC5>zJ)h>(zS%)cP?>v00XJ@=SAd@t2;yv^8!r~6FdJkn~*4Q zl3hHle3+`-P6tq6IyKn&|2uVsMRcP}F6UqLNfAU;a}r>`` +| ``\"C\" : <<${A} + ${B}>>`` *Result* diff --git a/packagedoc/additional_docs/The JSONP format.tex b/packagedoc/additional_docs/The JSONP format.tex index 09670c8..84a0704 100644 --- a/packagedoc/additional_docs/The JSONP format.tex +++ b/packagedoc/additional_docs/The JSONP format.tex @@ -1394,7 +1394,7 @@ \section{Python inline code} \begin{pythoncode} "A" : [1,2,3], "B" : [4,5,6], -"C" : <\textless{}\textless{}>eval ${A} + ${B}<\textgreater{}\textgreater{}> +"C" : <\textless{}\textless{}>${A} + ${B}<\textgreater{}\textgreater{}> \end{pythoncode} The expression \pcode{$\{A\} + $\{B\}} is handled as Python inline code. It is possible to use dollar operator expressions @@ -1405,12 +1405,23 @@ \section{Python inline code} The syntax of Python inline code is: \begin{pythoncode} -<\textless{}\textless{}>eval <(\emph{Python expression})><\textgreater{}\textgreater{}> +<\textless{}\textless{}><(\emph{Python expression})><\textgreater{}\textgreater{}> \end{pythoncode} The usage of Python inline code is limited to the right hand side of the colon (\emph{key values}). This feature cannot be used to create key names. +The Python inline code syntax cannot be used within strings: + +\begin{pythoncode} +"param" : "The value is <\textless{}\textless{}><(\emph{Python expression})><\textgreater{}\textgreater{}>" +\end{pythoncode} + + + + + + % -------------------------------------------------------------------------------------------------------------- diff --git a/test/component_test.py b/test/component_test.py index d198208..578a74c 100644 --- a/test/component_test.py +++ b/test/component_test.py @@ -22,8 +22,8 @@ # # -------------------------------------------------------------------------------------------------------------- # -VERSION = "0.61.0" -VERSION_DATE = "18.07.2025" +VERSION = "0.62.0" +VERSION_DATE = "05.08.2025" # # -------------------------------------------------------------------------------------------------------------- #TM*** diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index ddf952e..9bd868a 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -22,7 +22,7 @@ # # -------------------------------------------------------------------------------------------------------------- # -# 18.07.2025 +# 05.08.2025 # # !!! Temporarily tests are deactivated by the following line commented out: # # # listofdictUsecases.append(dictUsecase) @@ -4425,51 +4425,126 @@ del dictUsecase # -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- + +# dictUsecase['HINT'] = "Test needs to be adapted after bugfixing" +# dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" + dictUsecase = {} dictUsecase['TESTID'] = "JPP_2100" -dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with simple data types" dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" dictUsecase['SECTION'] = "INLINE_CODE" dictUsecase['SUBSECTION'] = "GOODCASE" -dictUsecase['HINT'] = "Test needs to be adapted after bugfixing" +dictUsecase['HINT'] = "Issue because of 'eval' still required" dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2100.jsonp" dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ -[DOTDICT] (18/1) > {A} [INT] : 0 -[DOTDICT] (18/2) > {B} [INT] : 1 -[DOTDICT] (18/3) > {L1} [LIST] (3/1) > [INT] : 1 -[DOTDICT] (18/3) > {L1} [LIST] (3/2) > [INT] : 2 -[DOTDICT] (18/3) > {L1} [LIST] (3/3) > [INT] : 3 -[DOTDICT] (18/4) > {L2} [LIST] (3/1) > [INT] : 4 -[DOTDICT] (18/4) > {L2} [LIST] (3/2) > [INT] : 5 -[DOTDICT] (18/4) > {L2} [LIST] (3/3) > [INT] : 6 -[DOTDICT] (18/5) > {kA} [STR] : 'kA' -[DOTDICT] (18/6) > {kB} [STR] : 'kB' -[DOTDICT] (18/7) > {D1} [DOTDICT] (2/1) > {kA} [STR] : 'vA' -[DOTDICT] (18/7) > {D1} [DOTDICT] (2/2) > {kB} [STR] : 'vB' -[DOTDICT] (18/8) > {choice} [BOOL] : True -[DOTDICT] (18/9) > {value01} [INT] : 10 -[DOTDICT] (18/10) > {value02} [LIST] (2/1) > [INT] : 1 -[DOTDICT] (18/10) > {value02} [LIST] (2/2) > [INT] : 2 -[DOTDICT] (18/11) > {value04} [INT] : 4 -[DOTDICT] (18/12) > {code04} [STR] : '0 if True else 1' -[DOTDICT] (18/13) > {value04b} [INT] : 4 -[DOTDICT] (18/14) > {value05} [INT] : 5 -[DOTDICT] (18/15) > {code05} [STR] : '0 if not True else 1' -[DOTDICT] (18/16) > {value05b} [INT] : 5 -[DOTDICT] (18/17) > {values01} [DOTDICT] (3/1) > {kA} [STR] : 'A' -[DOTDICT] (18/17) > {values01} [DOTDICT] (3/2) > {kB} [INT] : 0 -[DOTDICT] (18/17) > {values01} [DOTDICT] (3/3) > {kC} [STR] : 'Z' -[DOTDICT] (18/18) > {values02} [LIST] (4/1) > [INT] : 1 -[DOTDICT] (18/18) > {values02} [LIST] (4/2) > [INT] : 2 -[DOTDICT] (18/18) > {values02} [LIST] (4/3) > [INT] : 3 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/1) > [INT] : 4 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/2) > [INT] : 5 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/3) > [INT] : 6 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/4) > [INT] : 1 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/5) > [INT] : 2 -[DOTDICT] (18/18) > {values02} [LIST] (4/4) > [LIST] (6/6) > [INT] : 3 +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2101" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with composite data types" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2101.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2102" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with simple conditions" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2102.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2103" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code within lists and dictionaries" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2103.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2104" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code as list index and dictionary key" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2104.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2105" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code in more complex scenarios" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2105.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2106" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with slicing" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required; slicing still banned" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2106.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ +""" +listofdictUsecases.append(dictUsecase) +del dictUsecase +# -------------------------------------------------------------------------------------------------------------- +dictUsecase = {} +dictUsecase['TESTID'] = "JPP_2107" +dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with import paths" +dictUsecase['EXPECTATION'] = "JsonPreprocessor returns expected values" +dictUsecase['SECTION'] = "INLINE_CODE" +dictUsecase['SUBSECTION'] = "GOODCASE" +dictUsecase['HINT'] = "Issue because of 'eval' still required; entire import interpreted as path" +dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" +dictUsecase['JSONFILE'] = r"..\testfiles\jpp-test_config_2107.jsonp" +dictUsecase['EXPECTEDEXCEPTION'] = None +dictUsecase['EXPECTEDRETURN'] = """ """ listofdictUsecases.append(dictUsecase) del dictUsecase diff --git a/test/testfiles/jpp-test_config_2100.jsonp b/test/testfiles/jpp-test_config_2100.jsonp index 1fa3aa9..362e697 100644 --- a/test/testfiles/jpp-test_config_2100.jsonp +++ b/test/testfiles/jpp-test_config_2100.jsonp @@ -13,36 +13,12 @@ // limitations under the License. //************************************************************************** { - // Test needs to be adapted after bugfixing - // https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 - // - "A" : 0, - "B" : 1, - "L1" : [1,2,3], - "L2" : [4,5,6], - "kA" : "kA", - "kB" : "kB", - "D1" : {"kA" : "vA", "kB" : "vB"}, - "choice" : True, - // - "value01" : <>, - "value02" : <>, - // !err! "value03" : <>, - // - "value04" : <>, - "code04" : "${A} if ${choice} else ${B}", - "value04b" : <>, - "value05" : <>, - "code05" : "${A} if not ${choice} else ${B}", - "value05b" : <>, - // - "values01" : {"kA" : "A", - "kB" : <>, - "kC" : "Z"}, - // - "values02" : <> - // - // !err! "value06" : ${L1}[<>] - // - // !err! "value07" : ${D1}[<>] + // simple data types + "value1" : <<"ABC">>, + "value2" : <<25>>, + "value3" : <<2.5>>, + "value4" : <>, + "value5" : <>, + "value6" : <>, + "value7" : <> } diff --git a/test/testfiles/jpp-test_config_2101.jsonp b/test/testfiles/jpp-test_config_2101.jsonp new file mode 100644 index 0000000..3a73640 --- /dev/null +++ b/test/testfiles/jpp-test_config_2101.jsonp @@ -0,0 +1,23 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// 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. +//************************************************************************** +{ + // Composite data types + "value1" : <<[1, 2]>>, + "value2" : <<{"kA" : 1, "kB" : 2, "kC" : 3}>>, + "expression1" : [1, 2], + "value3" : <<${expression}>>, + "expression2" : {"kA" : 1, "kB" : 2}, + "value3" : <<${expression}>> +} diff --git a/test/testfiles/jpp-test_config_2102.jsonp b/test/testfiles/jpp-test_config_2102.jsonp new file mode 100644 index 0000000..dfae545 --- /dev/null +++ b/test/testfiles/jpp-test_config_2102.jsonp @@ -0,0 +1,26 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// 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. +//************************************************************************** +{ + // Simple conditions + // + "value1" : <<1 if True else 2>>, + // + "choice" : True, + "value2" : <<1 if ${choice} else 2>>, + // + "A" : 1, + "B" : 2, + "value3" : <<"${A}" if True else "${B}">> +} diff --git a/test/testfiles/jpp-test_config_2103.jsonp b/test/testfiles/jpp-test_config_2103.jsonp new file mode 100644 index 0000000..63ae163 --- /dev/null +++ b/test/testfiles/jpp-test_config_2103.jsonp @@ -0,0 +1,27 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// 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. +//************************************************************************** +{ + // Python inline code within lists and dictionaries + // + "A" : 1, + "B" : 2, + "choice" : True, + // + "values" : ["A", <<${A} if ${choice} else ${B}>>, "Z"], + // + "values" : {"kA" : "A", + "kB" : <<${A} if ${choice} else ${B}>>, + "kC" : "Z"} +} diff --git a/test/testfiles/jpp-test_config_2104.jsonp b/test/testfiles/jpp-test_config_2104.jsonp new file mode 100644 index 0000000..fde8a8c --- /dev/null +++ b/test/testfiles/jpp-test_config_2104.jsonp @@ -0,0 +1,28 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// 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. +//************************************************************************** +{ + // Python inline code as list index and dictionary key + // + "A" : 0, + "B" : 1, + "kA" : "kA", + "kB" : "kB", + // + "listval" : [1,2,3], + "dictval" : {"kA" : "vA", "kB" : "vB"}, + // + "value1" : ${listval}[<<${A} if True else ${B}>>], + "value2" : ${dictval}[<<"${kA}" if True else "${kB}">>] +} diff --git a/test/testfiles/jpp-test_config_2105.jsonp b/test/testfiles/jpp-test_config_2105.jsonp new file mode 100644 index 0000000..67aa2a6 --- /dev/null +++ b/test/testfiles/jpp-test_config_2105.jsonp @@ -0,0 +1,34 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// 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. +//************************************************************************** +{ + // More complex scenarios with Python inline code + // + "A" : [1,2,3], + "B" : [4,5,6], + "values" : <<${A} + [${B} + ${A}]>>, + // + "dict" : {"kA" : "vA", "kB" : "vB"}, + "key_list" : <>, + // + "value1" : <<(${A}[0] if True else ${B.1) + 1>>, + "code1" : (${A}[0] if True else ${B.1) + 1, + "value1b" : <<(${code04}) + 4>>, + // + "C" : "C", + "D" : "D", + "value2" : <<${C} + ${D}>>, + // ?? with or without quotes ?? + "value3" : <<"${C}" + "${D}">> +} diff --git a/test/testfiles/jpp-test_config_2106.jsonp b/test/testfiles/jpp-test_config_2106.jsonp new file mode 100644 index 0000000..f1f7f7f --- /dev/null +++ b/test/testfiles/jpp-test_config_2106.jsonp @@ -0,0 +1,23 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// 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. +//************************************************************************** +{ + // Python inline code with slicing + "A" : [1,2,3], + "B" : [4,5,6], + "index" : 2, + "values1" : <<${A}[:${index}]>>, + // + "values2" : <<${A} + ${B}[-1]>> +} diff --git a/test/testfiles/jpp-test_config_2107.jsonp b/test/testfiles/jpp-test_config_2107.jsonp new file mode 100644 index 0000000..1ca5ea0 --- /dev/null +++ b/test/testfiles/jpp-test_config_2107.jsonp @@ -0,0 +1,22 @@ +// Copyright 2020-2025 Robert Bosch GmbH +// +// 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. +//************************************************************************** +{ + // Python inline code with import paths + // + "path_1" : "./dynamic_imports/AA/imported.AA.jsonp", + "path_2" : "./dynamic_imports/AA/BB/imported.BB.jsonp", + // + "[import]" : <<${path_1} if True else ${path_2}>> +} From dd2d62ea8384816272c9e1d897406d9ef916381e Mon Sep 17 00:00:00 2001 From: qth2gi Date: Tue, 5 Aug 2025 16:56:17 +0200 Subject: [PATCH 2/2] Reworked tests commented out (JsonPreprocessor adaptions required) --- test/JPP_TestUsecases.csv | 1 - test/JPP_TestUsecases.html | 37 +---------------- test/JPP_TestUsecases.rst | 16 +------- test/JPP_TestUsecases.txt | 8 +--- .../test_27_INLINE_CODE_GOODCASE.py | 40 ------------------- test/testconfig/TestConfig.py | 20 ++++------ 6 files changed, 11 insertions(+), 111 deletions(-) delete mode 100644 test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py diff --git a/test/JPP_TestUsecases.csv b/test/JPP_TestUsecases.csv index 89f68e5..4cbf5d3 100644 --- a/test/JPP_TestUsecases.csv +++ b/test/JPP_TestUsecases.csv @@ -202,4 +202,3 @@ JPP_2055|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing s JPP_2056|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (7) JPP_2057|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (8) JPP_2058|PARAMETER_SCOPE|BADCASE|JSON file containing a parameter with missing scope (9) -JPP_2100|INLINE_CODE|GOODCASE|JSON file containing Python inline code diff --git a/test/JPP_TestUsecases.html b/test/JPP_TestUsecases.html index 5c61962..3904c5f 100644 --- a/test/JPP_TestUsecases.html +++ b/test/JPP_TestUsecases.html @@ -6737,47 +6737,12 @@ - - - - - -203 - - - - - -JPP_2100 - - - - -INLINE_CODE - - - - -GOODCASE - - - - -JSON file containing Python inline code
-Expected: JsonPreprocessor returns expected values -
-https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 -
-Test needs to be adapted after bugfixing -
- -

 

-
Generated: 18.07.2025 - 16:02:56
+
Generated: 05.08.2025 - 16:52:10
 
diff --git a/test/JPP_TestUsecases.rst b/test/JPP_TestUsecases.rst index 3a48202..89a6e45 100644 --- a/test/JPP_TestUsecases.rst +++ b/test/JPP_TestUsecases.rst @@ -2125,19 +2125,5 @@ Test Use Cases ---- -* **Test JPP_2100** - - [INLINE_CODE / GOODCASE] - - **JSON file containing Python inline code** - - Expected: JsonPreprocessor returns expected values - - *Comment: https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454* - - *Hint: Test needs to be adapted after bugfixing* - ----- - -Generated: 18.07.2025 - 16:02:56 +Generated: 05.08.2025 - 16:52:10 diff --git a/test/JPP_TestUsecases.txt b/test/JPP_TestUsecases.txt index 6c7bc27..8cd44d9 100644 --- a/test/JPP_TestUsecases.txt +++ b/test/JPP_TestUsecases.txt @@ -868,11 +868,5 @@ Test JPP_2058 / PARAMETER_SCOPE / BADCASE Description: JSON file containing a parameter with missing scope (9) Expectation: No values are returned, and JsonPreprocessor throws an exception ------------------------------------------------------------------------------------------------------------------------ -Test JPP_2100 / INLINE_CODE / GOODCASE -Description: JSON file containing Python inline code -Expectation: JsonPreprocessor returns expected values -Comment....: https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454 -Hint.......: Test needs to be adapted after bugfixing ------------------------------------------------------------------------------------------------------------------------- -Generated: 18.07.2025 - 16:02:56 +Generated: 05.08.2025 - 16:52:10 diff --git a/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py b/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py deleted file mode 100644 index 2d0decd..0000000 --- a/test/pytest/pytestfiles/test_27_INLINE_CODE_GOODCASE.py +++ /dev/null @@ -1,40 +0,0 @@ -# ************************************************************************************************************** -# Copyright 2020-2023 Robert Bosch GmbH -# -# 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. -# -------------------------------------------------------------------------------------------------------------- -# -# test_27_INLINE_CODE_GOODCASE.py -# -# XC-HWP/ESW3-Queckenstedt -# -# 18.07.2025 - 16:02:56 -# -# -------------------------------------------------------------------------------------------------------------- - -import pytest -from pytestlibs.CExecute import CExecute - -# -------------------------------------------------------------------------------------------------------------- - -class Test_INLINE_CODE_GOODCASE: - -# -------------------------------------------------------------------------------------------------------------- - # Expected: JsonPreprocessor returns expected values - @pytest.mark.parametrize( - "Description", ["JSON file containing Python inline code",] - ) - def test_JPP_2100(self, Description): - nReturn = CExecute.Execute("JPP_2100") - assert nReturn == 0 -# -------------------------------------------------------------------------------------------------------------- diff --git a/test/testconfig/TestConfig.py b/test/testconfig/TestConfig.py index 9bd868a..7b4d195 100644 --- a/test/testconfig/TestConfig.py +++ b/test/testconfig/TestConfig.py @@ -4425,10 +4425,6 @@ del dictUsecase # -------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------- - -# dictUsecase['HINT'] = "Test needs to be adapted after bugfixing" -# dictUsecase['COMMENT'] = "https://github.com/test-fullautomation/python-jsonpreprocessor/issues/454" - dictUsecase = {} dictUsecase['TESTID'] = "JPP_2100" dictUsecase['DESCRIPTION'] = "JSON file containing Python inline code with simple data types" @@ -4441,7 +4437,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4456,7 +4452,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4471,7 +4467,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4486,7 +4482,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4501,7 +4497,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4516,7 +4512,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4531,7 +4527,7 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # -------------------------------------------------------------------------------------------------------------- dictUsecase = {} @@ -4546,6 +4542,6 @@ dictUsecase['EXPECTEDEXCEPTION'] = None dictUsecase['EXPECTEDRETURN'] = """ """ -listofdictUsecases.append(dictUsecase) +# # # listofdictUsecases.append(dictUsecase) del dictUsecase # --------------------------------------------------------------------------------------------------------------