From 23dfdad454b5142773e5b9571bde85222e98b67b Mon Sep 17 00:00:00 2001 From: Nicholas Tindle Date: Wed, 5 Jun 2024 00:14:08 -0500 Subject: [PATCH] feat(autogpt,autogpt_server): Build AutoGPT's Constituent Parts for deployment (#7188) --- assets/gpt_dark_RGB.icns | Bin 0 -> 83742 bytes assets/gpt_dark_RGB.ico | Bin 0 -> 1143198 bytes autogpt/poetry.lock | 334 +++++++-- autogpt/pyproject.toml | 2 + autogpt/setup.py | 60 ++ rnd/autogpt_server/.gitignore | 1 + rnd/autogpt_server/autogpt_server/app.py | 13 +- .../autogpt_server/server/server.py | 2 +- rnd/autogpt_server/poetry.lock | 677 ++++++++---------- rnd/autogpt_server/pyproject.toml | 44 +- rnd/autogpt_server/setup.py | 56 ++ rnd/autogpt_server/test/test_app.py | 4 +- 12 files changed, 727 insertions(+), 466 deletions(-) create mode 100644 assets/gpt_dark_RGB.icns create mode 100644 assets/gpt_dark_RGB.ico create mode 100644 autogpt/setup.py create mode 100644 rnd/autogpt_server/.gitignore create mode 100644 rnd/autogpt_server/setup.py diff --git a/assets/gpt_dark_RGB.icns b/assets/gpt_dark_RGB.icns new file mode 100644 index 0000000000000000000000000000000000000000..c2efadc4e9e5ac16635ae4dc3dfd08b7ddb5ed69 GIT binary patch literal 83742 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 literal 0 HcmV?d00001 diff --git a/assets/gpt_dark_RGB.ico b/assets/gpt_dark_RGB.ico new file mode 100644 index 0000000000000000000000000000000000000000..3fc58e36fc5c5912d72857b1955a2216350f5a25 GIT binary patch literal 1143198 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 z zg!C@*d&eXmNB+X+`uM)r_vkg4|Ok#XM%$$oe(8;U~z*4Hr;jB#RYIKo4dJ1D?7 zp(fh%;)#hqdnP6NT!(=5YpbF>H|7KyC&qYci@mhUFdXmZ+qPmp-jpQYeK(GXrb5Ev ztbo6HXcU1$w<~JPA))34SC>WpEF}9~KRoJGNtnkXzU`L;{C^u6Yu!)AQkGcR!T%~x zzRTyVs{!FF8Gr+a2!YYzG(iD0uS-=Ki+4vG6Jp@(!0q2 zQlDg9JSb?tSjMmM8N{j>uO)ZYCHyWVJ6<~?<};Yr+3S43klQT;+PEc)GXo#Ld}zdh zeHGEx8!DoyBkUR$d1Os)@T(A0z9z|AUjdq9z(0GaSIR9b1_eFu$Yw0IHx-BdC(=Wk z=d8Av@8e>eeL{lI?!CjK+gRAk(K)9j``*I$vl7Vvw~{f|+sGKo5-Uj|^#4V~{|ey$ zBH;fKi|MI~bHG*~*sphK1=J0F(+l4Zo+nEFhumHPn+AtHFQj*o?<|k}0CI<>^4*>| z^LRRFtCr>j-6C$a zV<=mDGEN_4RHx2L^}F|)vdH6mheuK1i#`E=i@0)F#LxBd-dFS8P71mHZLbaHu#MPR z67f@C?a24<*5(HD&RMqQb>@0bfN}CJ@F%`)(%0jGZ~p@C+Roy$%!$DNH<8iSo5^U( z63a=x`1pVDgqBm)3+bsU2jH|pcgrrVfV!avdcj^JbbdcrGUrHvMSSu9+#u6f7;A64 ze{3QZ0@f6S{1xUViDvxCwhh2}igoec>+h~hI3)yI;x(W>F*ad)own=PAB1O`OV;EB zzj=K*a6XUNQx@5}B0K0GFb_UUZ2eAK8}(&9KgcwLPh0lqSi4IjPYnz6Skaeq2;nyv zN1B=9cTaz8z~^uGlts1W1{$aGX&dDK8-f2p15lP&CPw}r($I2hLUkAMJEUd{1dIvNB?{lUdm5KFsyss)FEt{NW&)yz)V}3{r z#9_i&+oeC}Pw>(WzhY>_PrWU>v-Yox@w%cXakZY7`3(Qp0{_#bI=6M`0$A@(AJ}SxD&YN&@36Gh34hWCi|D~pE}ejSp;HrZy1+h$zf z#vO$@fc5saK#rP};ByPahN-JCIl<>PY{%`d#ofMxhP5or2zbU-c0Jd5E*}#9Yn-R9 z)E#ULG56_Ll|-C6S9x9aH<(ZH0oF5Lc1<8Y<=2xM>t0erSz^jvC- zv$TM%Ht0?haNGK!4Gs>Ub)>*kT>XETTN`;*dDQ3k)Fn{X03Gsb`RZX2)K$1_aM-U|{)S2R*Wzy9jVguj+T5Uj zxyr8RIuFEm-n3|xq3&Q~h#w^g#jY3T2YWtoSVVHf$Ny#HT279c zL%UE1>s7+WJc6UA)r@mV3v45@(aDMHSM4vmmE2pcsT~Zi&5a!PC7FUS}{@(-q4;p~7 zg!uShp?j}wSet%Y&6Ojud$Li)#EI=Gu+B zxjOb|)*J=z);tcmQm1hDxjQWV4eA((t^9|zZSnj|2L;_{YtwXJ{rK(0VZZMh8ctn} zON&B(PV?3OX*|OA`oz8-X42$hIbCgA`}18sIP64TpmC1a?P+`c1%amdP_C2qWp(xU zZAGEK@af0##JhYqsj^;6swhh=AcI8K{|ElB7}IjHeirS(I9Q$q&;{dcw1KTo;MQ$5 zg6;ZQdcj63U_8MtmT;h|@kqYN_MocmB9V1&=Bv9`O~ywuVY8opX99@wGH$YEBkWi-CPjz z9prCz%KK^^mEGCfLrvG;)%BHsG-B=j zuOTBSONf&HD@V7SoG^o)g$B?A_UO_GoK}D(rwzJWcIk!A7y@bq2YTT^&D10L-r|b? z*C+T~ddH|Z${GtY1MXBSWcuFTGeX~gXqdn8)TF#bIr%?8}{ZX0q?&_`b%zmP3fY!#VeJQv9Cb z%E)p#JltaoUp7Mizlu~?uO=0gCFYSV@%8_!fd3~>rzajLikpY%ab z;s`k2Fqc@A}mkl*p!*Lxi1R}R@<6WiKXyYTh9%Ss|Xf*b&uSdQXg(@Nmq z)4)%Z6`*h24s#IP_BnvsXwN;YY-@Yok&%`wAs3Onul_5<-{JVx_*n1#w&i5C4mxiO zUp9&(UgcMk;nrPbIAw{sB=bp~sPg~A_2NJz(tvS@Q}sEqlIwSBh@jrb_ctm$|U zU{$zf$BrW4eulWLD9l6Jfgp4!rvqRUrx%bSCBHw60=AK^#7HjnKPnOD0J_Rs%befZ7S`;RL}z5 zp+h5}PT~e~U&DzA)AAE!OtklpFL*kU_=kJL>HHo5gqR|CfiFn^@Zy z&p$54lUM%VK}xNclTykOvq-x5_`h~!%ZWzde-5@V1+|M4+i_cY~)P}V39bA6?yYV#XBO zf$6YBG7~p;Is57z3vj4ve30B;VIpG~@pm|DO&0f5=fs zS;JlVKM4B&mjnN^wy!P!j|lhJc?q;#tT8ImbDulT`HZn>M{F1r^b>3Q!WhJhCY7S& znNMf(v8#{G@jq+(;`zt$%>Ua-iS;s4LRn&l82P^r_dj_EBi({J+u= zbJLc*VC&YrV9F9x;=Lbpw`bFk3$y(Ub6DDyJ9k5@*8>`b%_%$1YnvM!3> z{{J@Mf6xGwB}B>pV}So>O`_exRu|Z=+v@{+O~8G3qz&wJfhhSu4fwwb_@6QIgWPlc zzk~lvfd3iW_maVX@c*!2^VW-VgWI>{22+-ppX~P@#Gs6>?ms&7d>wt$5c77HcID1p z9d5bK9pft;|8wPJx#W}oqaps^M21)|B||7nG?El?#s8Hs|8HDn%ZWJ?=ow6eWhZ9C zvJ0ROW_QA&R)D{sOCxZafzt*y%L5a~AIbLJ>b6qdR50WiO%F?R~{SmjA>%5_oFQB%AI>~kZGeU%kHXk z!E?)sVbK5Q%E@v$8v6f`$C{V<{}TWA&4YBv|MkHCbAkWu(WMDc8`$UqT<_8axZV?O zU^Bj8s}XP=bisj1^}zo=q8k673H*N(@IPy~Gyh)({Lk9HTWt70)mt}pV|L*2%{f7o zCDvsH{F3CQ8{fCPUYNgv+_b^V)BXR;(yn-JsNWNrzIwNM?+;hw9sD0`YGQ3;JpbrO z3y=J7Dc?#4TQ4DlDN9TfWB-4AMa%K|IxmToj7q{~h`N!cFR-Ycm6W*)%AKvPNmJc{|sx zyTdZpLtC>hEAV&Lc3qtj@FQM}JJ{5|49Nc_!2hgmjOVY7;E(^Kh^2fBDYkAU#grwc zl4SA4{~Lh+7mTN80rUWBfSP=4#zd;p`W%JQ0lP*a2|M9}?K*}0Z;=G(ZDV~2` zvhT-O&tkTxqig5*UkG-t;hFz81OEdkOH39c|4#z`Up$U>VG*pK1t)0(n>fOO>2;#x z|LMU0`+)yhBiBv&UoMj=Cnow_&)U9t4P1K)&xCnQi1B=8eP#d^0xCkx*I}E^U7uK& zpkszFPxbpj2sWJ<f8r?GgFScVv!KS&p%OX#(vN4?dxUGGG7c|3xbJqd?3juSJd_MEiDC5r6 z<_rCA$hBb8JwmW2UPEP=`6hSJRNd7(mTNHZzYuI)%`^XB2>cJAEHP1x{6D3v<@mBO zv|HHf0$lHnE@fY!kQ#!JQAU-i{0Q|Bl8ek}xh!ZlcPd=0B?>)V~y zJNQ4q*dzp7SBLW3|KCXRtN_Xq6G*)H`v22PTaK@&qkqD3*wzKm2g^HQuN9WU_Ac}- zj_}>=QR3tOWZ?gD;D5$&Xa2`AfN4p-`&rqzF4pUEyarnih%~7ym!vx?6m>+{XB7m19M0HR1oN0)LVaM zwLj+np9cJY9dJKuHQ#b6gA>oHyZD;8Fe->go^W2}UpTRQ#$ur`-KU$sU zPlbX?9@|pevO0S`%&0D1km&oZQ0%xU$@hDRN2EKu+^mkz@xKu4&8N>I|F0uCRsdy* z@gz=E{ePI(tbKlB@vFyH)zag(xB$L)0kpvdHt0?(;5JSh*e|=Z0>%?;;s`c+;eT_h z55;+!I-ap&b#L_MydC_X8rkM5TkkH7XdMw@ zxe(r$4*$;n!1Wl$L|7hMmFiE0f+b0Qza)F=ro)x~>3Yw;df|M7Isg7+BP>q}#fEqt z6QVr-0nbzh3CBwOUJ3Glk-xD?2sW<_;kW<4jtm0+9|Zi*4&zBI@V~;7-&%9t(NuD| z>gKA<=3}cz(X#+r05t)J9%%zdx}XQz;Dg5Ue|ziHKF%vCzeh&?p9=hcE$}~UxI6!2 z&3WsTk;}6KUvibL=cW5UW>za4K3iYtZ@6S-s$csBseV)_m=Wv!??An(fL~8{&e3ol zWuBj5(~4xj(?YQyUPpPb=?2J=uX0YQ*&p=`{~MZwVDk|?@_#t=|JRaiD}b^@J&6$& z|D#7P%!*igbWM%**qR!8Y%KtnYwYv@>H}`uDp>D;UCaRWLRZYdE`DII4KSY2p$jl> zFq+;`opYaFsnD~(Lwa@vUHo4P{LdHzf&Z~qqAl7X7v+b125|tV*&L6(E;sm}AtrT4 zzCTCa5N=dgEKc(MZDood6%y(rEiZVg6@q^rAkm_owlLB6Cn4Exd9q(?mbZR|qdIqo z?a2S2U7Lhp_ljWt`v2j?RKA*ISpk$K#)**s^MgGLzg=E&I~A4A~2_aKh2JUd!cb8b2QN4{WDTONE9diN38Pg3b4sRf@>&uAS93n3y1sGHFJG zZu&xKHpA;_h_t+^mdnhn?Bj~_LLDdyfd7SH|KUNv|1y5w{}%@QzmjBF0hA@ikSNjd zKl)u`ddRH9YbuT&+gL@9ZLIzS8(^KodRXs*jaER-V5<>q*EwxqzqHW``)e}qHmDQ^ zSNK0)=Rp3S4EztgL0My<@jup~heitc)*uel|;1nrw%SD3jMw=#_MXBV-VFF z|A;Yb#xIQbKDIQ`hYAqZQK9B1VJ>@CZ_4DXeR0lYvPC;@cC6R;0<={}{SEOq>_&cc zmJNh(Tr6L{uf9nLbxu1u9&$}@eGmKB<0CBZEKcyD zLPbM_<$Z{^kL9bM)ms~3H5rxikRm_Bt~s&ZKMB=N3*voFMHe3^}HjSVixCoXPfgb1%9XbKE!g=%p z>H&-=*y@80jZjUGuCKQ4sZ6<1uM*F^KkjDd_#gV7lr^#kSp1)>18xbic$JS%6_e_t zuNxKZc?HDrU)q!(@?YrJA8slN`?0Ag^aotxcZe5!H7C{o@zOAlwNW10!5YPx_xfg}??*Kqlw1RpDa3KetWynh+&XSmi&qeyXO{}wezv`Ia#F3jU4;MZ26+6S)-bliKO z=Xw?Y>8-B_VSlXuT;P8p)I}+e{2xk;<;#Ho0hA@g%>T&4+sfmv_~oLC)5kVIf4GpKPk?n7A+x-8% ztryJIhnx=MNj@P)bry{0=OMz)n*1Q6I^C#N_tx7 z84KdQ+a^RzuBSN+dcWn@#xY~&}>CSbSZ0q2E zAAJ*7Zk9{%58mSc$p1@7iWNXvViXA%ZT}w~GQg+_yl-O0Uw^;2!g}=L3W_*pkIk^H z3!oEFE1Xj={5gj3&xM0O9U9>++IN@2c&2`0yiYU4oGEK$`APiGq%nn);(W2nAk$wL z#CcOOU|y_uE9iiaK?hvy4;;d3^th&?e$}r zLG89Ve{Js#tfw5{e<9Qh-~7KA_#Z%7qDJKWkG>M^t&hEbQpTgdZZ2;-x@9>16FPOl zpY%bOCgAiz_uAmCd4(UAMtKjn^-Hm>OZ+dk8gt(D#+fzK=frrPm>=s!#e}JmmhUP8 zjSpvf={7idEkc*+ZQq1amfD@ z;=P-%7#v1fL+byt^%$7n7B)K6{MtO=5;0;8j$0^?nAmQ1g=57X7^I691pqL<4Gv6pMDntSGP3 zbE3Vdo52d@;oxp%qjjO?cVXNja-cXX@_)9Mu1N?!I>e8^{(ms^|L2ngD}b^@H3@Ya z{^#zAlmKJe=JM!E-&>yl$r?!VX)rg7mpND5b+KF`|2M>WH}5D8qpXoBjsLTBg^qI@;2F2N5c5AF{!Jx_!v-^> zJWr=uw5yprj|(q=<9{LeDDpo%yQAZy_{jhBfd2uMC92$z|FM453b{JcOBdac?mu}? zUBXR&pP&8OJInJv`gnEW*PpK|`u3w$1z)|hEbpV27v{Y4mucybT~roz$>2!O5`UvQ zz@2!X^VJUij|KiO0{&-=OkZjKA6G97mokVWFKvvp90y*Z5`=GqF(KxE!Prd%L!WW^ zsgeJ)JatV%@XumjKKWl?K8M6x0hA?1kPx@)|Jyq$JUb;bs1?QtPhI4o5OXf_e0GRA z2lauMUgfQj%RttNdwk!%%=X`r|HsFAHD6W~N?9Y*S1&#PXJ0`KzGDoaGSK+Kj7STW zAZ!~nMp#a#dT7>xn*b#aoDcGUrl+<^2>w~@tLLr%A4K%!vq_v4Kv`l033hw_A2@f5 zEj zF96>x_TiWRXOUPdfU-md2?G9?dor(R=>nW;0g3;eYF^PE9Q?uz?b=<9;T9@Em^PRc z>hW8&Q9VPnPS%eLNB++M{uhF87J2i_|1(L96+l^HIPkw(;{Sels5pL#{9hmA)x51B zgtCUz{}-0e_-GV)V}eazO$+y+5`<@i!9MzXAkTqOSYG3rtKs-x2!2`Ut>ZENuPdKH zqOAbR62nQL#Q&~wWu|A5_@Aly1$}aCW0TFAwUa|VPE8H-pb~^*gV8~zFMQOBTtPdK z6E6;ZGu=bmBm|!<;F13WiLShnL|FlpCCW&E#Q#q8U!fct`F~urS94Q-2xX0QA8G!d zQ2c_s4vk#qUE-sEY)Yt^N)Uz(CWe@g$D7p4ppJkB2j=Gt|7)6r;FASj*#9TIJpYIM zKMnXFKv|+x;{O40VK1^&MT_@6Z-{uidp`DzqJH37zdPYy9t3G8i9}k+=`I>Zo2wcZ)__wq7cIr1-v_UneKFIXzB+vj7*x8`c-vICTl_xs2wncDo zj{k+=i+Mcqe*n>zPbT430A-01;wSOH2=0UaUZTYR{k0&!zt^diy3BB&?5Txu)32CN zaP^}rs-Ajr!|2yrwom*5f$M)=UiBpYZAxKWV_K+phE}D}@_QA3J{rt3Gh}*bu4xD| zwN3~!Q3K!8>`;?K1+@U|fTr}is)qVAU2!|p(y|LvwZt;cVfN6!V^=fiCiKD%jF z$?a8XVKqjL%Bgd~wF+5ap_lF<&;V3|Yi%$#(D+-7LA?Zc&uwy#_osP9{!an^7lI%1 z$^ZVq{}V~56+l^HsKo#MaZl0w7Wuyp`2S+yf7Td?{Es=M^P~L>@0ee9-}ifF{CY0F zcl5VoH_x*kymrRVcg`=rzaS={$eDSnJyi0v;Xe8g>I02bf@^FrHo$l?)ui45F&L9* z8WtyCDDr=@N!=s_9~@-S@YetLCz|pG5@H2VmKaQYr2fB?eOL&G@8JJPOY`QOAj%r4 z-ns#m{}*HZvxX$j`(($YuN-lEZ?|LY0FR0B1ZVk|uUb(88lYudfRRdYt_^_u+o6AX z_duWTXYb1${BKk@3BmscdGO2sr{4Vi7n|j4Ld>4<&x%AL=Gk@zX z$DeQi!`ILJee2lV?cPSMkF!b_q*0Ek_SGL4>u;bEoMVGA{)YB^i}oSCLN?&?`<~Bl zk^hr`|ApXt*=GLu-w*o#^(4p&pe#{LyrusC`JB)V{*L@V8v6g61_e>p7%2UJ9H+mq zHhasFy|a#=kIVb|_up@t+qQFJ;WZ|$$|*5pY=6VF${AHY`h#Qq3{(Q|Hn8Sg!!o5B8M9`@7%&UEO%NCL?0>Ih~*%f5dh;SfdSVpdWQd1O+xUuOp}_o`G3AdU0z25tN_Xq1;kV0f49Gj2$A^Tb(I|KX$W~@ z)yU`j%jv!S{j+OFy%g$YbmkbcEI_RoRbtWptJX(PCG^b(qkQzOnMU<~ty~u5I6LjNb1o^HRx+3O%&1)_Ci!04ky9HmLN{{gS9xT>_&?mEd3|O8 zWsPJv9{-<^7cwM>JBoJS4*m}V{?7pZ zXN+V|_niM9>1&R9WAoVeoyF@tJ?`t9#=aLHU`cSLvl4tGo z7LNbdrUy{ga994%jq=N98T;q-0X}zFo*Yu)z!jXfSuP`5hy~Q=7}PJ7duUHpcxdTB zM2T5*I8mp%-XNFZ`+KE6e?L5q<9{LeQHoBrAADTbkK%Ow^bG%d0{?pg|Fc6jF-rX3 zRV(hhg8W|%{r@%T{**P6Jhg6_|Gz#bdcx70=eBb^%xa1637RoDVKysohUePCqP5B` z#YXj) zynuS2YVp-Lw62IEM5{_}cB&vxMWUkHAa z#3TQE5oP&s;C}#RiA;(Ad*+BD-%H|u=T@LhMr51n23^9c&u@R;ZS{FqIJd+-J3922 z)E0$oNSsD-b&*l^%`lU?z0{0P=s7M$se$ ze@WEx*Z)WUFC%6vfU-me(Lbq_p8xBOONw$|CG`I*L(I(=r20|TNVK?L{9i7U$+wKj z*=EnftiB6{|GAq5pA&$1Kzfu~u`O4x`mn^PK2d4}9Uwkf2OHFf)3wUS1C;Wq@C;-i zauioiY00kzI{04={4W4MN!0Mk|BCWbVzL4#OQaK>#Q*%dtRRmj@xSw{WkG535*&MH z#rd}9#rF<6zr=kygADr0;Xz9IycCV{!D7Ao#}b3e3ZO#95QFMeu1?hwqgGt$rI1&` zoPKkkN-zDWR~A72j|Bb~f^Q^f6ugc9dlE%?2{Bp$lqJ$6{_mAPigjn?{}IstUzy@Z zS;HOs|L7NE2Stq+%J~2E;`muY_f_Cfi%BjU6sD4INYf~v&(kTt9;{cL9I97Q0l-?M zQ~feXt89r^EB5;;<>NrNL|`04=yr9d>qGvJP$`-O;13l20P3HY`G3g&Ly5r(pe&I} zv{L`yoo*NhWs&&bfnj*uTo4mbg!%Vu`{69szqzLIhsw0Dkvta7*@u#0y9(n2nGhFP z9IH~?l&Mj^3Hj%~1?StI6LSzH26-mA+{t)4A&{+BBO~Du8_4xn$Y(?<<-3y9ipR4xicfPi%KznQ zls^<|mB)&-%GP47lJ)}a@S9WlTIDaf8s))38pW3xYQ?+pD#hJlO8I6_g{)F9lO?HS zM4H3TQ(gA=Fv$PmN_kT+>bN)l(5ro8RdU|?{}$-~4<>pmfU-mi(MbLO{yM1$evkY= z9Qc1(k}qYA1P}L{|A#K1Q!8~h&Met)%f&3#?^;m)fL5i@ioh*4NSlxO5t3obS1s90P;WRwx&Xjg0e=8lF$CXyu65L ztpLgrNfQ6}#vMhwZwLPenVOd-`cT%0_t3ay{y%h%U{6B`%lH4j-_-C)n71)pw2mrW zxMTqv3n2f8D&$QCY6WEtKKb8+$jb|f#tNV;kw{d~|0kX{CYM&-&;kW=cE=00G zKP`a#AEJ;o<*DS9HKG(U-sb;#5LtO1QCR_$CE_Li@27`~L~B917e{=aiw zSP(}?{x1tOHZO|zrmPX?=KX)HaJ5pd#&_`idgGka&ej0G+%V_VCF620bEi4~g1Bj< zi(qa6j{gTKL}3L`mWU+oF8^&si!k_B9E0p$N6nXD;GE~BgwF5|ENZ-V}R7Li*4 zlqF(_OyYmnyS2;DsFVT!2N;_d#CcQJ7%2RYmF#EM`R|@uyceI#<2w$3$J{e*@C`mD zt*^@+N;;uCSwIdGMh)FOJ86dP`1~a1M_}^l;(r%>W#-||L;fEI{68P~pEY6!K>Xjf$}D<~=c=lVb)R1``TzLR0AF4?^}99I85_(x zwe%huTVqS>_7;FwQxg?5qB=Dp;RZsAJ>XRpK7=gvCuCzVA-h5d*#i%Z-Wx&41Kj~$ zYxs=z&k--P(cH~QN3P0fHRN(nq;P?&Dj@}td$m@xO z{3n@^gQn*eR# zROq8$5lzU`!1MoyTTxRb-@FS`J@5Ifl47+n>W%?T27k^`a9O?VOv;cA{_OmdS8cE1Q(7*Z|`sKg%vOn+Cm^$hY;DYa< zO@0IVXxqVgheH1hLb*L3)0OyNc>RCiR1^9hyd-Nb_};_ddtZR>{Vp)yI|(s@|HTmU z5;)vu5CQoRo4|e(T>ilOApZ~bGc?bM_M)sI@&DQWr&lZW0Ur9m7=Mr0SbvW=1g`sg z=mU`Rp@Rp_p!AU}Kx7bG4}-qe4Cr6q1Kj#;AL6J^<@|GSfED!#w8t+(dwelyfg#Wk z>&{oF68{T_|H1d7fb-{o@7;~MPE5XsV_p~+^CM&}I9(?A)qol!;P`)bv?pZ^iT}^n z>Pdf>EbxZ~Fop@S%p4r&gfY(#fJcv>gJ)UsdvDI$4*c;A^c^3<`CJea2t=O$qr`u# zN&L^2|FN%+eP5_}(!w`yOf*hzop)^AbE@eoSXf0Nl*IKOOwODdf+EP%XkCS(-OJBP8&AE4cB7jxU&-L(UsoPhCx*YLRljBVK4QR06# z{10Nxg1(15+39<(9Lw*GmhAJs;Cn|QCh$DOG-iVag=qus8)rrS9|HV83%H*(q9y*f zZ|0=$k_Eaf0K9KB!Si9z_TCF^?~mQ_rn_x}e%UFQH~2Qp8NU#8KqMCrkoe!F{4WFE zH$%U8bQB?vb@G0n`Bf}F3Oe8z_}-iNe4)GQ0ObF{!2dHNJt=EQ{NL5oODmEEx-0;^ zuS4F4PH;1fSN;U;r`z?p&c_L$16py61Lto;Tih{M5dOR5e7|$W-`)B7f6!SP@V()Y zgggR#D5!a)uBcl)2l(D;&;f7Zb2Kn60AT_5`JCZ@ee;Y+3uO(7|J}#0q>}Jr0U6Av zPJ-vBu7z>&1FmZCgnS<0pc4?Aebz$Aco=)WQV7@Tj{J`{hVlJkd}dDay)&^E)IS*i zKrN2Ch?hH@@j*KH-v{_V0{EXXB>rdY4ASWZV*%)A_(ETIaRTJg0giLK@%{etHpD@G z0bcs9zsKR@_wLC57~==~egpOyaIvQI`2^VJ5a^;kpv~bCM{$3U|BHeDrvvx1MwB%E zFK%a&uD;(Ez;SJy(;or(%W(Yhd~K2Rcju0S_r$*L$p1Yl_W<9g9mWLSg)xCCFg^#j ztT;c&|3$$6jo}u`8c_ym{=YcANV;l1EC6$?JmERyRq!0r*8{w571i7_iT~MaFjn^q z#-Sh{GVL$ZL_EC8{@1mKZo=<^?E)s{); z?Hi9t{NFdbxsktF;aSx;%R!(_h6oJZ{NEks(!K?wfAS)UE==%&;K3%0P`ijh4|eXjN|dsIynC*$p3}F|5Jhc zStC;F|2x0Jr85Y|0yu7n`E9V>a93^|2<4LaU*dnx&vDKUychc>H6am#X=u)IA;|v) zUb^Nfp=Qb&k$Nfqe~zk>{^Uj$!1?`{I~CfC0r^Zd*Iv5AQsRG!|84ykb5+C;@^^Tj z0IUjoP5{UMlY#$PBSPYTH)1%cD2^-u1B9WNKNT8>leX=Kv@T8_k@#Pn_2%sR4WAFd z+(|;#0A2ha0{qVy68}453~9T&SOEG2X_!L<+8*hdekZ=a-q~%t?eQi4m-ye-A8gkl zLBM}JAa63v^MR0`@IDHN|K~&ee-dy%Ye@VrJpYich(8NpEx`v1Y-e=`NLS?J7Q|D zq-*Utr%C+Zb6X8$zv|QgGoWFDM}LIzLH^IRXqy{?Oq4akb<+HQVR(gf6?|C$o&$=4 z@&3OJ9%P#T1#Q#0@anJzYSO{r=_C*jHKp`U?{69X>NLeFXr~Ce_+R3GM_lh{J3bqT@A+cg?jipV^3XPq3ougF2$TB%tldF6 zKMxjwz@9dcknPg*{R4v+B>o>5_3Vht`??+G13wKhLP!O|?j!L(JKIZVc1sJ$V4m+R zcrVzIzP1a}@5IF?690>KMP=9{{%u>1ki>^WBm+b4-)@N{Lja|5B-Ns1eod<|Nw}%k22l^F|9?1D0 zi;{x!lg6tW&xP*9~?`_D+8omlExMsj4ep~FY!O0Z2R zRlGG+=QxnW|K~7{^e4#zjx8XA=XO^?j=xiU-unVRRy&ln6|PTuzQIlhNc`_~{B%bBH@`e)#zd@_)KP-8|AuM_D6St&raT!%wwJM{%+R;GMpiFz4@6 zcWaMO&%pD@-$GpD4Qzve+nQm1!!1FC>;S#94)Pi|!S@?+8@$`-p%_B`0fUwQhCC*} zyPGX~S{{l2`Qd-$c*vdgHTd4^;9HNPUBS<80-xLFPssWJLN-Hed>?GT4d1H;`@Ial z_Zj%!(Vo_oSoVW59rq?=o|Bugj`#l{|5pS5vxda~&aQ3g_o?OVb3#=)R>4)|UKIGqQ09k^Jx9~u0?1ilvv zzL#Mpq!N5@c?2O3pnd?~JJyqW6Z$@=gU}Y;T7ajG*#A!h{;%@XQPv2O`u{xDs&p7< zS^(OpLC{D3M(FLwxvmd$6+pZDH1w-3g7RcTduv8r(@(o$yR5@@*+R$!;Ke(jfA%?C zhg**sNc`VB{s+DJLlhxT;`kZNbx#GKF`i3j_RuHga2!4GWftT(hqi+LSr%xF3*ot@53#=|VB7S0{8r-s9`U~w=e6Oz1HM-YdJ`UXcisnlPYt>@ z58?_J<2W70xy0yuafG}BdKyA=&iNq!r|MPBl@={!4T=AqQ^(R#`Lh7T#tX&R_lN%e z5sb}aY#;hbuyEZ6`*zqbgZ|!XXp8>^?XX+L10?=GH~+)^asX`vPFDoJ2VH*GebDzH zuWk(JfGwS|s6OjF7Wx6kGERUJsIt|x6(-{^#!~aU)e+}?ITS)xxj2f1X$(IE% zevS8{kT~AawLqNxBMTu7(C|XnL6{%VQ?baM*iUp+4l!((`2Q^ax1z3tKvMI+S&3w8Lk8Z@(^Hs z;NY{Ud_TL$5+Ap?Ee!nTkeudh7 zP!zN93CAFb<(A`9)c--G|4N_Ge>rLt*N~e4YpTlQ{%Z2b@5=s6xt~3l*K^nav&jbd z&6Uoo^=A>T|5kebeWd*~j1Jv{+Ma=O?OaSgzGG@_XKdq>jXXn6%H&M2kN*e7kp3%t zX6P~gm$PnhEqMrVJ~3K{tJ)mn%_x5=jSDC|A@mRGhxH^R>xg&A>?aVx`p1;w z>`R(3d^=wd9;LC(<`_ZfPknNV+U)_dS+WXf|3S5|Zmb-UsQ;Xoj@uMH`#!P*UZ-~U zxwPH!zv*ZD*+$3{gooIt6DoUrtWnqG`KFH_vzKf>RhScu^*Ch0nC-Dd*h0T zYH8H%>mOyXDSbl!<*HR&M=k>Kf-s5uI;GxsH}|#gi%x&z(O8A-g=%`1Q`}!uf4tT# z2o&<9-oBXig2p?%hl|T~cWU{0Bd-cCG&%ToEYHEh+$qQ7s zzo4~tLn#jB7f+urn14r!0RJMFPX+p4x90KxAaIrdzhksMcy}=0?O@%D`(qxnu}{FD z()nBF&*MfatE%@6ictOc*(T$*$38W(1J;l)iayk52Tf{VWEX(r20u@qhl;D6SwE0eUxL$q)FyU}>@v_o2SHl6{?Vf-su;JlW!k z^e)IZD2< zK620!^}nx0Z&UhA(`m5&Uye$}HDn<`{_$4i0}QFPXukGA^qjxaSo;#{52$NV*AY*9 z1<*vrAHF_YpuY$G_f7xBdf}Kh%Kx;K+MY#SEziD5@qC_h7t5-W&l=8GAO|bf|008K zUmvsHrt}H@m!n2;4Y>$#oDIGEB`SI6efGC{T7HfVpd4e@)0mq~0rebglhC@S`#pV* zVE-NT-#`85`l7aXn*8loP<&vVdRm@+;X-`AAUqcAHs$Vq)aLe)!-S^p{5zok{_(@N z!&aGB~chjeos~I+Y0^nU;p_%A{(HD;!(D;y{DRn zM+Hd`gvn}adqslqo*cFk>wlqMyRVl?XH)u2h5uho%|4>bLhpqokJc@Po4$MUJY)k@ zaO@K?peYb_98{KAs*i^~DSxp42Kq0L{&T&tAAsWmR4o6={B7V&@n)+fF%4*_yO z_Mm=9mFs_l)d$h~z|UxmL0yeH4zkJe$nW`Xu%6%3`#}HY)qmzr_52Ry2%urNIu2@k z1std7X`2Yb-&uKWtiN=i|Nauh_rsAuoFI%Md*9>yCP8@L10Mh9>KRDe?xH?|%pr9g z6q9j{t8yy&Gw8qk`p@-Ab$unZI%BJuxu9>B3aTNO=%?6T41kWkg$K+yld=s)@2ex|n9 zPZbT13PJN>^Jq*^t(JZukK$qcjR9o+FVJcBb<=BYN}tIZ`2W??)+4zbWKipQ?4g$T zTI4(FCvnu+xO(Eq^bKQrbrE|0yHZ+Z6Q1RbdDeJ!nfCI3zF zNpI1-1ihZVAJBi_+2NbvNr3ws>eKI4^4(U`y=feFh{j?4)ll11H!*pF@SvLbK>q`$ z|1{_R1BpMmp_D&ptesFG2>($_+ap`#8)8Fwlg`v#+yOV^jJ}(g?`^uYC6!@g*SrPb8<> zk809irOQGN*kiO7u%j9p2Q5bEO>+_lm1ZK|ANn6y{bxTn1)tECfyy7Tf-r>Mh2vt~ zEBt9?Ti72e(0_mE;k)5TfMRNLIrdoLcUzJ5ehob{jWsGc{#gz6&1h5iRt|LMJ`p^2x9{cJX}e4W}}3i%_{vi?LC z{coxf_I1<3=7gV8i@gN>uisYW zt{Ym9d$k(c9?cEL)4IDiBVwc_qX0Q&E` zKc_VjFA^T=GL%2^RJ0cm^xt)Rky9IT1mO;9c#7u%ApMUc-_!r(d^UfsMRw6%dK-Oy zC!zn!_hl%7x(Go3UH9kI@4f6#Un6HN=RyBf6(8b{hI#T`(*HZ5|MlNX(*LVy@K0um zZwK_>H*WY=_!5Br*Y9VzkB0uc=7RCRYc8JXx~G2w{ddh6ZIAMDZYC5y zzmxF)E7Xv1Th$VP{x{eMU#o^nBN0d@U&Jda>Vvn*#f9{LFg=%5EzhQwa!{Q6dbt?; za~;zEB+3oCUnN|4{oi7Lo(KBx4?TQ090^davF4QH;}?~@I$H_j{(bVKe1o?9X**lBbD^`UdE~Kb48^f`AJG zY~!~={@+@52lv6zg3!wauAu*jHInM*dzI)v?@x1)To5S7awpOk)#Nr-17oV|ADD|= zjQzO|<=gMqmU3aMfeV$vN_Nq7f1U^9e}CxVyWvQH^q=?tQHzhSmJTb`?{L0d8vD>R ztnx>kAdIFy_@q)Sr1vGesFd=SEs%=}EpTr|ZSPCzJtFy%uK{kabNA*jyJ zsH9G;WRDE==Xs$2{?NmB!;t{J6EW21ysVOUTow9HamLrEA^wWnTZ$koS4-WH9U^OP zdYaqFBU|fjwLG5+%27k}D_g1BeU5RHvyY-!&pj$&V($~k4mm|Wxt{(!AN1cJdiZWQ z5}&6>u}r47lcRDQYSnIM*bptJ$*munUMe2cYOF}7!sg?hJhU2*Qw<_ zSGpXmN4)My4OLBZ5E--)>?cYy5${iX!SLR+g>tc>wr8SzLidW-kMz%`f^Z*c6q#7c zAC9@1&(u;U90N=KA~H#QKcN4NVZX&oP21mp_fKxFzFv>(BTq&9O>gs#-kUeLZ{+HYy>N?oZ*-8+; zQwuAx9K24CNKrQ||3S|0Aw0(`-Yc9xDW>BD=a=O8PWegtcSWj);nWBGsW$$O{Sf_b zd(eOX+6TTJz68j>mO#$ku#W*GKlTCI!)6ur1*(~I6>@8C5Eq_w3oJ+o}WRk)jjEJ%Ocu$P;LD$m#5%t-k*T7;}`&r z$x!3-`&cF`wY{%c_o?mmC+(psR_8%BacA;PsB#ZbdUx+(`%n&Y(0@57;u_&ffL^i= z)Mp*=vA>he=67{}j+vrCz*}^_K?BiWXqq^5IVUdk_Zh|SL;pn* z_ymFa1nB)RlOOh9YU~TROsxIfr&5QS7fWl=$zL&p_b7Lqv*H9{Bn`5P$-$b)&q7Za zP|d1O(EFcI0reD*u$nYRb-q_-&RR#>+{^nX^X?mL15y3Hrq;GsAPCP=gKEjXXd2HC zVqcl0?aie2IFx?hirXI5Dg9YUv^^v3@w=0CR*l?SQ(h=~->GQw9Ms0J|DQZ4ag{J7 zKw7j?t^EOY1T{RiqCPeuOz>;yL8eka_X|Cn%dw}@Kc{i;3qgui*V01xZAw3HL-(h5 zqKf18Swq65?Xi!7?7O24J+sn3C!6aTIeA0>!=&ZnF#<+_$2e?vEB)>_bbq!@I8Kqr zSpkC(qzluyx^FSXCp7e|YWO*8a*%NF#<%^{tVcZ0L_D_0sY$_NTjxHSc-r%e;yQm+ zLmO+L3|6vF7S}1aU;hjJ_X{7s903IA9pPB)`x|&CRWU~8`B=wTjNGoFd64$^r1@l3 z#`}qNPj=w1tjWP5On!!x0*W;h@2|#BYI~>p#So*#FfIA01d2X^Eg|47uERbumSdxX3#Jpqz*0hzav}HT5vUTm6nOL z_{m`F9L+yntoF7?K8ll^lZJdyG>i_ZLz^H7)2QuzDXnKU{+r@q|1NjigZ_t9TSZ|N zB0%wV`7}0tSB?FGv`l0Jlu|sv9R@)lcYyj2iVHJv+!&3$zLh?Q8vjiiT+Q>t!KTXd zPc-&ZUH-$mbwq9N49!DbNA@R~0_s0lOQ}8=u}`P&v#9O=*}h7kxEQ&qLjUC^itB|d z0g4OWMg2mJ+WLmNwuu$i)r#B1j3 z*0UP_pW0q|o*?|2Y!<3kPA{jis4Iu zV!sEH7N}|;da<8q?2|f=1LSMp?C@WcDG=O)`WZ{SAdD}dSa$XiH&#|P{*H4jC~ZF_ z(EKk6=}9&6X{1awq+eh1_?7gRFb4miwinC3h~|RuKWclGjg(c5w!D?z+wDXxAnz>n zKltqtcMM$uYI$9<2h`~UAvLS6Rqi4$Sn}KgE}l7jrY?@_b22F!V{q~&tI1- zmHRM_{rd!tlxJ5aA3#DgL3pli`9k6Ud7g*jXWwBvfZAS5Y8w<%8_+|`bNr=QYvDD6!f^>3DR0@*{jBORDI>U99B@jz_cGg-JNTU;_>_e3&*`U>=Y2VN~fg9okVJvGjp^$BC%lg4SI z*_)NdMaO7d_BPMclD5pE#@~*|?DUMW)G1T<+;HDRzt_>ud1HS{a~l!4}YekNO{S1{XGWA`G~sl@kbf1XJ#-(`OgwY_)Q4&}DT<6L^a zG)dc|Cg$?c&@c4#chTJTXilpc*%G5zE6G3dJk=TJj#lHoQT1%g#_EFXq_63Hq(2GV zK@3%+|BbN-^zYbCB;McV(b^Rn6OAYT1AWM6mjXYBk6NCpjpCFCl*YXi6B@!h~&b@~KfZ2ljyeH{6EEt~^BXDi@LQPo@A4 z5U5Rnw4so5f(7w*Kuf|x= z`11_SN6+)THTeFQ(ErBkgzJK1RmcfIZYUfeP>Xj45Udev9z}E=w5K08t zF3h8tk#OycBJsJ%@Aq4*APiS~JLK5;=Cr0g66+{jpP76*KSk3X*uiRh(0}*(&uxvy zc&Er9yC7Kgg8PIH0eWA1alCuD_DPZSTs)q3*!ncRqy8ga5XNyFeI(UUxIQbjy-IR8 zZK763vK*WP`tOnc-Q`UZkdA1 zmr|>v<`>)p`tMy`aoeVxC$~{W(U1=Z2-G5=;ry(akM;hYQd%=Omkh1*rDazkduTXM z4rxiq<_1=}4JdJcnzyN@^<_6I&_d4YE zxKpD4Q^P$uhaA1nEdtgkf^=c(%PpLf3b6p*_vuQtLlTh}$>Ee2q$X1DHqd|X+X~s( zr#WABJ(&0b2oM1pM<#Hb2=yr;v%kGk{h!kJC0qVm3g#IQE)AF01m+9E<4SYI{oU&d z%@uwcMSIRD+4i9S?(4}_Tc$NadzGv=+*{oQICp13nC#Qys{Mz<&v>4O=WEp6lDsb+ zEnI9vK8-iSp^n1!87S8D=Qu$aL$ymTL*)+Wzi;}VCkPMoI8V8n!=2SmfcxPh+TSc( z`>;@cE{fwlLHT`G@qCTi+mSEjqjYl%V;g|RVxNXL^^xNZMaYc^dbS-AQg4^&HTD=)ZbeV_28OZUd0t z=&Nw;XkT~KFO@bhtM>fDAHP=zNmW^Ufj*|B8RGaqmTLArs{zqJI zsN4f<*$+VR03U{HU#G_BBJDp#{qHX7>j-~j9^?nmli@Rg=PlJ(N8wr~(teIJT|;fp zqQ;g7{r64(xeurKzkD^;Daxd70yO#8mDXpyL4BSzT>Cw>JQv4WQ~!IBTKnH1w^a5) z4W`)T_tjEA;am>(w{T8IwZ!_lYHQGc-}Jvg5T4>aUtBT8&p^N(0gfHXqcx;7CyjmE zD5rKHbbw-Xex!9)^Qr%(v^Y3K0%U)7X(kB&CFaOa6`;09ewJ^^-!e(3>T?8kJ9MZb>x)29QWe-V65E3eO`vFL9tJVi{?qb%K}=wd^g#j z$Wtw^4Pb3fdq_vqnjaU~Rre$4zxVpj^NEx$Yjezr{7uy~*ngSknub!_Bl!=l1N!fI zU2}a?T*o)`u8_+N2MEYdfZoR#8bHjX@z_Vyw;(pqjW2*+#6Kw(=Nj_4lKTWUxj!wE z#4CyCqR79wpZYq)1~%UIYG};=8|U;PUvQ2;+?D(;^xt#+C)>D;*K$&Q5jGqk5I6#) zXU!-!@CMSiBN&g>e@7kTu9w(%P2(D{`v5&f}g4Yhx~B0@)wOZI9>qsqK;5DfAEMzi0YS{@4#Jg3vMa zYaCAyY6QqH8^?J>s4sqt`=Chei#f)Md?GjT_>}69x-J}nCP3qzbke(3)c<`#ZLc~~ z+aB-tLcadp)b{9~;nVh@|L*ml+Wtq;g3vqA?;5TT0*w(MCwD&e#TQe1{FwUUNLjaS zpJ$~B*1yp^*o*or>Vk0unShp{7xUT*j(?)IR~ZR*0NXoca~^WEy&j<$-{-EKK>r)n ze=E)N{FnNjp6)o}_aG1q0^A3Y?=gq$fRz+?{6F%|hHLI1EBjgDVP(*gX2KGf!+Y8sV0^Ih#;`kf#`F0BDwg>%pt^b@8gLC{*UyF7A4R;Cnje-Q& z4xqIHGx7!D5srhWFGSSPr6UjAK`sK|Ig_^`+GRvn%2SI&v948hMEBm5KuP( zYNxT}qw2x-DvitDr2aUh@(1vH$MdV4w~zAm&mp@eGZOkt>(%b;gWfYU2iTnHnL6}BuuL-q1daTGe)TIApf1P1lGMFdL@BBvNjn50n zj-~jHo$Tu;CiH;=1VWC0hWoF0K^V`r0F7ln;V}*CtIGQ18Y)u-y?cl9XiW{rQ`4R_ z-KgKiSU=>NoU_2}6UZYCoyxWV^{HP{+vE8GwfUsD?Uj?g`4hFh2g!%Alm>YnsqN9! zM&uo8(tql+u8E~_cbp)M4$?V>?l+iXTiUQ48+o;lCk|Hv)Snr69L-}h@}+Mh`}S$- zlfNL_ntcO7?~_^Ysn7kfkmikPPX7)b=hJ)F((&F=adCtT0n!vR+o9B?0j z9%HvtC{~5_o@~v7)b`$>ws#xZDCd#b7g9N?`;Y8HP5MuBnX@CiHt_Ty5EueHz9GGB z6)y-Ad47}kDWU%GHR>0Cp?Fu|L}3XAUsZX{Z*v* z=aW;d7fqdwrPtVR^K$K7v(NqMg#g`)b?7_TtqJ2CxO}?ec)(_0QA2hGWai&YajpuAOHd&5W)nY{~=s?C^`s$00@8p2>3_< z`tKt+d<_IZ00ck)1VWeq^go0v4@Cz75C8!X00AEfK>vLNhp&ME2!H?xfItWnfc}SY z<)P>x00JNY0wCZc0qDPv;P5pN009sH0T2jb0?_{ut~?YS1V8`;KmY`MBmn*Q5gfh- z0w4eaAOHd(OaS^H!j*@jg8&GC00@A9j|8CqK7zy7KmY_l00clFgb6_ZL%8x#bPxam z5C8!X@R0!Y-$!ux8VG;@2!H?xgfIbz{@>d{5Nt}HiGnaYgi)gCAOHd&00JNoG6Xb& zV8{`K+m+USzCZLoWSR{M3IZSi0w53u1TqC-m(u#*P7q4t1z|!M;KU<<00@8p2!KFH z5J(k-i%I{jO4xstLFgS4z)(mK009sH0T2iS0yOR(*H#dYDyjcPg7B_U5c0wR zCmsO=KmY_l00csU0O@W)u^@b{r2gj$!o3uWpbrUPC?p7g00@8p2!sIvjsa{c2>(z@ z|7q^OEJ+aNg#k)D0tkQr2!H?xgcN}UL72iZcuLp+Ed}8-@v_@&5(d z252t`<&<}555*qREpdPV2!H?xfB*<6O~5P&Z3_kA^+4GGr2Q3Hf^d^g5NOH)2MB-w z2!H?xfPh*ESOlR%GeP(-*#NTU1*A0wXB^s3Oa5?x00@8p2!H?xsEvR@5VA?DuWcg; zM`Z8?)KHG!gOqD{6^;Aj)b^|>4+ww&2!H?xfWSEdG(T@7u^yQ(2#->{-f>^-0J0zc zr2KyOP=5cObY-mbJBJtl0s#;J0T2KIRTH560Lig}FpT^G*HgZpPf64NAYXnN&E;3u zu?cE;exGCeIj3;8Alypd8%&~4A2>h&1V8`;KmY_nkpSlkW?O*w>Pr!XWf_97gVqfG z&2ipA_Q4IjpCF0-aGF2J;J**W=R}!700ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_l00ck)1V8`; zKmY_l00ck)1V8`;KmY_l00ck)1V8`;KmY_lKqR0MG#ZmeZ%WoiC8uhmQ^k}2-=NVU z-}=KPR3~B+q^FhJ>*< zu8Qfsx}Pb(U%b{F9|n(&M*sm3009sHfrul(WBn{`eAXgM_r=d9E`08%)Qvw^WbUc5 zX706Fn_PMB%%Xp1?XjPg*}JNL%G~htbEylSKR>$5!VFz3rRl~20w4eaAOHd&5DEmM zHOA=a<_HH(> z@*{f_Mqb6S0+GrT&kX_~00JNY0%|5uq)RP&G;ZEw6={2`tZ7%uaxNzWa;8)t8N@100JNY0w4eaN)w3Hm}2jYnRZuo%GEVa{g>JR z;v9gtJ^;t~-|h#<-EFJL-C6zj4^#Qn;0}yS1Q#sp8E{yH5g4Y*BI(Ixj2!McR1gN*rnDkmxYP2z}YffDEiEYxR zPHmSyLp;Y6r;Klz7Tqe|tWPlLG{{Bb8CLvNgcInh&*}PA!iI0`+RyqgwE^sN0N%y{ zoLvi8Hx5wLf0_rd?Qe4N*By;bIz>2oJU$43fExljtwxuZXvv?}K7HnGlZ)^E@S+}H z{c4ajz}q;0MtlHl16-dt=0>wdZ;o90cybT`fyM|VM;TI9^~t^D zm1SMtKE7jM<(XZBY@VKM4?H}#{nHcLq)mx7>S7wZ4}J#%kw~C}E~~@A#4U%c$=BA_ ze{X#N9^C)yl`yCfC^7F-__q8 zy1d`9TPGF&y+vwtal?1SZ$KdO2yC(p*;JWyb+uFfz4ZaOS_{awfS41o5g$Nh?iJQc zl;a2*x;K6f0+B)> zUSp1bF?QL1tw}ug7f;C?fIA-m=K}H}ACS}s@Lbx07cd79DJ>4q2?C81VC`Sqzv*S{ zyZ2S+8~fg;YkD3ST$nTrHbCR`fZv8cflj*YPT#~|cA$p!-)RGQ5C`DNT0nO`09p%Z zrSr=sYrZKqq{1&3{>=?f2m*}~;5fg<-LsZ+JYQoP?(gq7esDmu#KDag2EPP>Fefn1 z(0bg7gxx1=>%Y4=0LlgIZ5*JBoWPg&X=&#-nknulz(>%YSWI5!7S z#|I$h0`g}qU?V<&4RHf53rD_qCJ+Dt_XM;Wjh5&9k8k&GeV@N}!1tH+`F%)X(s1`B z#9x3wcoEPGTKyi&m@B3FU(W|1<^pgR2k321V9CBf90Ra1Zs4ZyqKl^i0TA$%KtZyl z`MWE-e|F{y&)4?*tNr5l@15S}LF5MTw5ITP;X*(sXmz#pzn%}kgE;`1;sBuk;nJ$` z93bF5fdyT%7N6WPsM@aoLAC*Y*x2WAx16{h-j^ER0D;gY;MD&Fn*V3*m+HTCEr2T@ zfOH(egYIt^xw;C*V^5r9J>(@&S1p2jK7lK>yX>UQj|12n2!gt^TKXU4 zIe_<8cmKRNExL6eo)6aq0W}h+rT=y20D|oUfc~qog`i9z5O@NY^v&B~*M1)VE93*< z7=Zo-iGu?Fw73HZsDr>c{lDH;Bh`PoeE=Tp3k3aFN1H$?Kp@xzwhwK-$EE%U(FbsH z=fLVoZPTU&``K|n5KxMMUH{Fr{x89y|56*kmwZ5V*8+I4FA(%!saAmdf`D=aOnR;9 zFXM~vIJ0BO*|EQK{Lirf!Hol)-XUYQawKqP5C|@T+WN1o4*>cf+`7lzKtK%yc(0#3 zCbzz~mi{|!0Mh>;+5pghHM9tnAy@>Q`XA5QudELM`X8)X$9+IRJp@?)|2C=hKD+)a z>;r)QtEXL{B!MTu`TwpokKJ42)PH|{0KV@F1pNc0X$0O-HkS_jG# zXaeg^gV)>j-)RF-9w2|?0DQ;?1pN6?pgsb2{hufq|10PNfc~qmeV{~vC9v4o zb8&6`_tFO-)4o90CXBw0=OY69w75D5fPk6^IQ4%!#s9JPOZ7j11tGa&Vp+cL4zqPy+$h|K}HUdDW@^3i$w_|7vIr zC_}IbjM29qb1Zhx@ml&X^#O?c0?VBfm~#V)d4Xwf;O9~nKA)U%?aFq58$oT z3*X7s#b*bf0PY9^AfOb17OBz2pRexo{h4j7{SN(i=L4YqdU?-YInNI+>b}2qdQ4lT zIN-h@pag-wx`Mt3W48TlAOB1BKNvm$ar{r8`_nJ^sz9GqpacWl69hm&83G+L<2wDa zVc_v|`mc-+;QiIzzi5>n-9{M-xGM-KL!h%Rr}H<_mmg?U|NYGeRM!XKVqc)c8JquX zZAi!d+sZTp+!X{AA<#W1q1W-vLn`h1@6HDhz_oxcFYEGFcDy-95eT>`2q;9Lr8d3g zr_t*_bLzj;2Vmb5z{`9Qc3Sq!)K>!34ATYUg#(5{V z46XJ^{{xs0==sH+UQLZQrYV2`w*&#j2xMyFGT(~2`0bil$^pRIFV%nP9Du(*05|!7 z$}@LWjxiUHRSX1f3<4k!bOMXIm=b5d; zZ1$72U#kD^;s9mb8~C2{THhbUN5`!|Ks5xOv@ChbuKx=90IHkpso4@cWUFeRpdcUs z0s$qU(`aWF%nFY79@!?)*YM{SUGa;M5fZts4jDZR~F55SW+Kw1;eN~N_cso}cOSr!^lit+n_Eu^W7K#w5C8!Ofq5OX7arL-q|~ne3i<%PzpT&i z$o+$68L0&FHOcwEM_qBaCWf`&q5r=40Fr5cVEain0OtV`PY?3}Rb^gjT^`l*!bq(L zJU0kL5`k?43wM=l8E!j!O6CB(_5t{}FVLGSx_y)qZNT1Rk<|F`tWE-)1L$MR`cKa3 zzdIj5;PwUD8#n4Iji8~W!8kww1j3a-ltCAD$N0AUN;XUM-<=P@RX!kTPCy^`1bSe0 zyT@Zpy4Y}KjpqV^#t6h~Eb)(<7e7%GO}a1j0f_kkrTKuQIROK(H}E5ga~@65S`r#7 zFMbCCAQ0LFvf|9yFE8l+<~jXmJ3tv9z_nwGZZ_$)rqCve(u06+1dM{tc%yOhO||vE zjt_u!Up(zO0R!U$_$cL~PnzlyoBH-7_!bC&KqwGsn;zT#;3X9M$K!u*d;qR;0{Xcx z&_#W7FAW7|C?g02iom6Y!I#?g-xD8zEIEO%wpr`$3z)Ijb}D1%8SDcTs9MH#K|mb@ zMi-@xJGpUqRc-xu=K~mGJL5|KrE>sY<^(*sb71wdrlzQ7og6*KoyyLs%BX_&Q^v3?g|1R5DWqr z_sm~+=JF9WPW_kq04V;i(R=`|;sAW~0erWi&u@M669)w2nQ;#gP%D9cx@P@;j@o&s zw*J?d1CYi6$l?QVy)V!;abvDU44_(D3d#in{t?h?HTwG|cldY7_f}?k6g|H1lb4hT++hlO&UGoaYDOEq4Xf&l0a&- zG3~vjeLkzF|8;x-uJ;9$Hz)9u3p%`j*ngMRgdau_0kdE*KWAS4d`0o7l6NU0Hpcu;sEQc1-LwB@Mc*b z4i^If5Kx=|@A-TEh}O51Y#M1R+2ol2cNqr|cpm`m`*V6ki{#OYLqP#RKm`Q)XbbwB zj=JWIQ~$m70l3NsBwY*Og%9ANgxL?rYs~Q~z=9%x00_uLAT!3)3P%g7iywd z`yKi(hY!GqeSyl-_EbzTx0x8h)qzI`fv_WRVb{FXr!N~}E!oKae|K{Lf%O60JfY>^ z%zCXk>>%TTK)?qA20>@I&N%7%bNcVC4?y0Wz}Lo(xej>%e5go#1q4(`fY<&1b5f^= zOE!+O)zW`|eE_cV0ZDTLHn1vXxaJmIsI482XH9$@?QrSn+*(cq$oZJfB+Gg)~d10yHm(f?`|mp%ZQ z_60h9#h{vP!sfo*c-?Z+7#`WLdoWR$5oD=vzi3^{#XbhOE3sU{#HXtA;fs7ba z<{R_+ykD}uj{bY?1CS>t@V{oYeKgjjkCXEmaV-!C7Xl_hZ@Sqq^)F}j-%T7~5cUQ7 zKIO6>dl+(igbQCh2M9zGfpJ9{6MtDf?AST|XFEXZ1EBanclm&%IRPmSz#kvLntn~! zM-qQLD+qW?V1cg3f^y3Z6>9MTtdAaueY(7@MEpGnC``bp(;BZG(&lEn_Vf5(VIRPu zP5q8x-M_+(0=HK^0geIq*1YvQS$qI8>-u(9oGIH`K>Py)K%gFh7{L_tf@#HzH5T^&OXmRUt_Acm z4uJLptl>QYrTYSUus86@v@1>zF%}N3S5W)_1VBKw1m?EQIsfF^(N!hu#+)7dd*lP4 zeS!VW3G6B#5ak58ZBnbdHI!6bwZKp?5Ksw$%k;x8tFqi!9WWn&m-_>qhGYfe;|jCp)>{w-*fg#i{=d*#Itc0?Ob6sIxE7fpvX;X`T{= z{v!n14vMHefecMt##^RK-mWzV;B7vj`0H&o_MAXu1GtI<@WKaBp1!AYWmF&R*`<8b zKnXygQ36_xM!UUl%iSfHlHZ?C*8Ya{zpf9!zAv!MIf2O*_~-Pt5675vv5giSzXSmg zuoKV;THPMQxGU}YuM!`?vx$qIOVLKBpo%~M1k_6)KR&A9o%#JgDYH{F(|3kAnJQZ!!MF*P&?gs*)On~FLv7!#?fYxHjMxs|Jqi9A1VDfZ@H&A1Gp%{k zGyV569}uqz;9Nj_x>^g6N_zo{r`-m)%4SWw%Eo&FwAE*{MGb)f2&jiZ|D2S8hn9~x z;+6jUofEiDPCzjRkUz-=_~&`;AI5$^>S-e=NoWz!3bd9-KYB-P{dW@w=;gjZcKvtS z0N2>8DU!36{-50&xH^4r&F+|ydqRsON(%zvOMr9z-#)zK-K8}4=d+d#V2=TCw-$i* z1gg6h(9eB=j&B)Kxv)$2((t8@Cj)`N6Bwi|8uW{K*RQp00MY+ncMc#pK7fyt*L;e6 zK!LA&+yMkUA<#EFrT=$JhW%2y#)ba#JV0Y{fPVV`T<;D1{)N51C{BxM?MeCZHy{84 zt_kpd0MDB)e4)1f`{@JlGanH90Jg>q-NtzeT$dU@1pyEU1_93Xd-IU?x0S9LZ>y#M z(l`KDJ^*n)0IB|a>jP+HU!dD2w7y%X)u4X}MkByI!kWNJUH_GpmK&>T+W<280Lb@W zI}U*S|H&@q0C+Ay5(lt9`O>cnbt#2m4IU2%0xBoaH6yY6_e+NVD%Jmba{zMt0K|2G z{3)≪i{YW7D9Lam8tqRE`eC1A&krP^3vK`p&%V``Y@itPh|neXsTM=pma!0w4+r z0%1tNq|=&i8r=TY(u;ZQFP?7Z0Nkwwl)(q^%A)RXr^Oi4!w@+h2?T;pz$_Tdw;HD3 z=G1?`a{}|;0Fr$HeDnc)p1gK{dwpj6paa1TK>!4VLAj|zzFR!}7rXvDZGf}-FTW4K zgMEPx3+m4xWoxOP${4EH8K;r}wHBpKG zHLiNessG;k09g0MQ`{F&1|Pt|)J=!F8FIQcUV8i%1VBJe0weP?#{7Q4=o6(EO|ZGN z0bH#GbQcF8!@fZGOm25S&r8Vpthg2kfPf$@*Y#UoX}+m`9H6&802y-vvk!px1+Zug z7Ss_4fI#30q(+(2o}SqIMZ5Mlr2h)|0RFga$eGbCQpW|J0PX++kw>7pCbjt&rpx!M z$_GIDe>ipPpQBC1VZ;n-5A{x@U;$mRo}{Qy142lVXRt}mxX z8`FYM1a}01@F$=bwEErpaeG|qzrsF%=MxvdkgknE%y0NNLp-5^1PT*kir$(z@Way8 zXp04r%co7G1V$-n7WnFVuD2N8P27$0A&{x~6??KZQKfAO6 zg1Ik{G#>!@07}z#m#>cMdr{a|03Hwo6e6J0Xmq>#w7I%u)x?_8)e~#$e?vBaD<6QX zd_Zgmh&F%^aRBcu>GetTq$uPAQK)U;wvj=A_ujk9F#GQ=^}ntUAeQq1%bXLK_Xnu8 zFTmM-fjAC;*8_IYH^F{ik|lWs*U zU?6KB*N#L2iDqNc!()0rY1e+%f2j>1&H?!A0}#jmUgiYezoP#SZPH@fMPj|+nL!}f z1b8jrW5y+qJN4h&wSaLq)L9EyCm)cHdjqrnA5GhSe6qRilwdQ#{XigG3GldjWryY$ zA74J9+@=02>;t%QWb0eadaXHJ`Qy1jKy3u3={ik2Zoc}2(*{tH58#cY3*RizB^9WR z8Oj3!p-7-pT4I+^W)J(ibj2iF=}J1q@xMDCfUBIq_4Wm#d4G5LfEvjO{N3t-zxK;Z z8W@UPQDzVbRRRebOTvGQ%b#`XzuZ0mA9Dh;51=yr%Id3PM_+By=#d8`R2vw|tqKD1 zCPTu$;oa`HYky<<@6HF{Dh|+HJ|O8lKm%(5?ikm0AM*XEqN$(|5k_FTuJiN~^Yx`p z8^9AE0Q>&MQ_Ke_b53Bk0sctcc4U&d?c@ln5)L|1b~W zSzY3!4TLtvh+`@GYZ zYtJ}s0AKe7k~t?Z>p$-id|TY4+oLpwsNm4RT|gi_2&7m{sSl0n^@LsfS^qt?0Yo1F z?*}BF0q_BQzk1Mb1M-pwhX-vu1qg&D0rmkrYrOC|r~Z5E18_A5Aj7^utp9wTNZ)a4 zj-~V5(4>n}gFx^J=(QUC`p(6hPAr>PQM%lr{od-oH){dCjRV*?%67}Bws#nHT4V6( z;Eo^w0#X8#bR8zC)d#>fz!xcNzwBbj?jkKS{tW^k;F`ebye8v*m_O#X(&bZZwe(+V z1MoTk=~@7}@&UPv1E4s-pH>g~qjyeHU)QC_PeA|#f=M7r6P5J1ap@C5^#O1mAn_FQ z0oKV0EcyVf8GCI{CoOm;O&f!~L4w&ZaIcUf&^$h-@YP9!-Y&g>wcnxtYVZNra{`aD zmC#zi>xZ|#1?&Aou4$pbVN77Ow$122%zOTH+5ip30R$x{aP6FctpAl6d#d-wjk+pY zV~h^tYQUp`fX@UHO~$0#2X?*NuKle4QX9aV7yx&1fPSn6_;l%j1D!JB;mh;6mhnXp zke@(|V2ZiNFlV1r|Les8&^`dsbjC>b1c-IB7SP`~07ndf-48%Ez@O<`kIuDpo~IEs z$P+Gq6TlTin1Dg6HC)=U0(=f0QnpYO|lU#{YHV09g0MQyK#x%?IeO4?x@(Sh6qRJLmWPq%bMEg|E+u?|}da z1df17(3`H-PrRnua+9^54G?|P+3~-(J^`tNEEAdo%)``*Cya{?c|WMtX$ z&UveNFM<$4i=u)+L=kAINpJbFX~QS3_1|FwIOhOl-W%9e9AMhnb%0L&Cm%p{=9M+~ zBuv|vs*O&KsLH{^f^6WWIf3290f^&&>AryM2k^rOP?5Q(YFF%t-N+53vc`kr z1dTwd#gumEfNuLrmrSdvr~iTU0eHDD(BX?loE~44F)3(Za3c@^0iOw^YGP8KHZFT6 zI6eTH1CY)Gc<2ML(mcS)jGd=fNB6l%Cuns(KPqKiw-bWx3`LGi0>gF1!+$sLKJ2j%K-?3EKV9VnbmarE zkNYe zU>vOnpp*9m=9BXPil-wE;Pb_UzU!C~-#PMX2~P|Hp-aFh=!`cTrv4=$J^=Fl*RcPe zPjL>woe!YST0qu*@jQ^e?z>^8qT!)S8zlz;&j_&g&o0cH_tWh0zn3jO@2u|E)qi(! zfI;#BoVa9k<(lrz)+6T6v%1A!fqU~gdOdO&d=fb^ejfY(wkc%w+4QY0Gy zTnGeIK%i%OYVUU^j{Kx-A!~mf{cp$yaODHA?+H*RA5dfY0DRaN=*-%&HG2lMx(56E zsi5JY2q54mf$rM8?%$ZV9H?ajc;W+a6$ekJrZyd#7yS3|lSzSE&!+m6?6tDoBWKrV4l{1PFkDUj#Vc z{t|ufC8sRcoURe)0KAO@2!s!SashEpV5be>@Bvgc*<*bqY0jg?`m|!d9voi=0fh;4 zPD$$e#<=0{mYvVq@6dmLeE{xq0R7s#pq4j+Ks50JH|=7p3+FSaqHw~-M8E(HQXBhWE9sq;&thQ4ms zey9Gc*9TCtW?aqQ0j;ky>9nSxLBfqd00e?Uprbas<7cLgpEu|O@F))O`r2`T(wu-E zc7lB0FM6?Pfu(B7i$52STf=_#QQf` zrT7I1garYMV6fa~n0|Y0{r7e)pqD-XQU9fJfNs_T^7!9=+HHW{HSeTe_+EEoPIr!F z2#boqLxddx&h0ZMCwtrnwBOHsK&MuZtJ>VF z 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 literal 0 HcmV?d00001 diff --git a/autogpt/poetry.lock b/autogpt/poetry.lock index ff43aa11f..914e94ba7 100644 --- a/autogpt/poetry.lock +++ b/autogpt/poetry.lock @@ -1155,6 +1155,99 @@ build = ["cibuildwheel", "wheel"] dev = ["autoflake (==1.4)", "coverage (==6.4.1)", "cryptography (==38.0.3)", "flake8 (==6.0.0)", "flake8-bugbear (==22.7.1)", "flake8-pie (==0.15.0)", "httpx (==0.23.1)", "mypy (==0.971)", "nest-asyncio (==1.6.0)", "pytest (==7.1.2)", "pytest-asyncio (==0.19.0)", "pytest-trio (==0.7.0)", "ruff (==0.1.14)", "trio (==0.21.0)", "trio-typing (==0.7.0)", "trustme (==0.9.0)", "types-certifi (==2021.10.8.2)", "uvicorn (==0.18.3)", "websockets (==11.0.3)"] test = ["cryptography (==38.0.3)", "fastapi (==0.100.0)", "httpx (==0.23.1)", "nest-asyncio (==1.6.0)", "proxy.py (==2.4.3)", "pytest (==7.1.2)", "pytest-asyncio (==0.19.0)", "pytest-trio (==0.7.0)", "python-multipart (==0.0.6)", "trio (==0.21.0)", "trio-typing (==0.7.0)", "trustme (==0.9.0)", "types-certifi (==2021.10.8.2)", "uvicorn (==0.18.3)", "websockets (==11.0.3)"] +[[package]] +name = "cx-freeze" +version = "7.0.0" +description = "Create standalone executables from Python scripts" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cx_Freeze-7.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:421920dbee2b4aab53a81f6c99d18b00baf622a328eae8e489f162154a46192a"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fa1ca4cf20c6ce45ce2e26bf8b2086525aaaa774e2ee1b16da4e0f9f18c7272"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a520bc6772325c0e38924da1d827fe370702f8df397f483691b94d36179beef6"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b89ed99a2f99fd2f3e28a91c85bdd75b4bfaf11b04729ba3282bfebdadadf880"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5174821c82826e5a57e43960877087f5af6073e3877b0b38a0be244111fe1a76"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cfd18cc00f3240b03d5bdf9515d59ace0881b5b5b6f2e7655d857d1fb71f351d"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bac44e65bdfce0839b9a6d15373ea084fda3cdbd902351cde530991b450c2b2d"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51a374f273d575827efe4f7ed9a88b6cab78abffacb858c829d7cbe4dc4ff56e"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-win32.whl", hash = "sha256:6603e6c47a15bd84bfbb20d92dc01d5e586b54928eb618461d2f14305471d570"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:d7ec847af5afbe3c638a096aae4ff5982a17d95e2fb7975e525ecf9505a185ea"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04b7a2e5c53f5d537f3d958ebf2b0a0a7cbe8daf980cb0087559a3e698abc582"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:50e7e78001d4f78e70a403ecb5507685854ce1e6c3ff37bec1920eb6f2256534"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d37ed560e86ca7958684701a6ae7f3300226d0d7c861ca5b90c78bf4c619ad2"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42145dc5c2c7a98c620b30b7e25661954817a13355c50c4219a4a4954b39db39"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f9034d6f9c10d84d7edc0e4f4020e878de367e83c5877c039aa3c8b733bc318"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:adc6bdba9ff8705745831620efb6ee5eff9ec6d31d9b8c56d2a61d6555299157"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:37a3234c0e54b4afd561b47be4f22a6496f9436275fb7b59d90d7a3269fb4d6f"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:83549f9f817cafa59ea2f6e2045c8fe119628458ff14bb732649b01b0a637f6d"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-win32.whl", hash = "sha256:c508cd354728367311a7deb5bb616eee441bf79c900e3129a49fd54a372dc223"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:8fb71d23dba27dc40393a8b460bbf64759899246cd595860f66493cee64f27a5"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:648fd0acb439efe22dced2430cbaeca87e5ca9ab315d148933104376cca9553d"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3125a8408da3ff4b0cf767689d678909f840dfe08633f5f2d3cfe333111dc334"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07e56b06c7ca0bd2fc37e3783908767dbe1926e1e2609edcaefcc749ab584329"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25531d5c61bb5e974d8a5d042f29a37a786e91c1d6f66e018fc50342a416f4e1"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f97154b4b60f6e1953ebce05803a5e11a35047d097fad60d7c181303b7c6ef6e"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2333db5cfa6db700c79fd45d614d38e9d698f1df2a3c7e21ccbcc63cc8a7a9b7"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:d45a58e0a9b010e0823c30fb8eb2077560d2bb0f78e4481a55bdb6ad0729f390"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0422dbd426fd9f4f4ec0cadc7e3192d38227464daa3eb215b03eb577cd9a49d4"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-win32.whl", hash = "sha256:2018e9cbf8172da09b311cfc3906503ee6ae88665ec77c543013173b2532b731"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae5facd782b220bca6828eb6fb1834540cf431b1a615cc63652641bd070b11e6"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f06368dd41568572818c4abfcf9b45449dced3fa9f1b5f29e3523ba4ff7fcfbb"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e203d90d8fa1cc4489b15edac7dfdd983518a02999f275897160fc0ecfa98e4c"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f800b0bc2df14c66fcf2f220ecf273c5942d0b982268d8e5ccc9ef2fa56e576f"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-win32.whl", hash = "sha256:c52641ce2484222f4d60f0acbc79b2dfbfb984493101a4806c5af0ad379ebc82"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:92a15613be3fcc7a310e825c92ae3e83a7e689ade00ce2ea981403e4317c7234"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:60a0f674b6a55fdf46d0cc59122551a79221ceecd038fed8533dcbceb9714435"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb15314e8395e9658a8a5e4e19558d0e096a68b76c744ba81ebc249061b7dd9e"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3290127acc67e830265265a911d9018640ffffb7fddb86eacb1e3d83ed4136c4"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-win32.whl", hash = "sha256:aa885f2fb29b9f7d9a7d8af223d38d98905484cc2356c474bb1d6fd1704323ad"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:fe4dbbfd52454c8ddb550f112713ee2ac36cc024303557763b605e35cdb6b9a8"}, + {file = "cx_freeze-7.0.0.tar.gz", hash = "sha256:b03f2854a15dd1e8962660d18882a71fefba0e1b6f68337193d4a072d1fc36e6"}, +] + +[package.dependencies] +cx-Logging = {version = ">=3.1", markers = "sys_platform == \"win32\""} +filelock = {version = ">=3.11.0", markers = "sys_platform == \"linux\""} +lief = {version = ">=0.12.0,<0.15.0", markers = "sys_platform == \"win32\""} +patchelf = {version = ">=0.14", markers = "sys_platform == \"linux\" and (platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"i686\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"x86_64\")"} +setuptools = ">=62.6,<70" +wheel = ">=0.42.0,<=0.43.0" + +[package.extras] +dev = ["bump-my-version (==0.20.1)", "cibuildwheel (==2.17.0)", "pre-commit (==3.7.0)"] +doc = ["furo (==2024.1.29)", "myst-parser (==2.0.0)", "sphinx (==7.3.7)", "sphinx-new-tab-link (==0.4.0)", "sphinx-tabs (==3.4.5)"] +test = ["coverage (==7.4.4)", "pluggy (==1.4.0)", "pytest (==8.1.1)", "pytest-cov (==5.0.0)", "pytest-datafiles (==3.0.0)", "pytest-mock (==3.14.0)", "pytest-timeout (==2.3.1)", "pytest-xdist[psutil] (==3.6.0)"] + +[[package]] +name = "cx-logging" +version = "3.2.0" +description = "Python and C interfaces for logging" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cx_Logging-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d40c1a4dcd54eff3335f34a2f9af9e29f29b45441fa99f90d6710ffae130a826"}, + {file = "cx_Logging-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705c1baf94ac49ba7bc807deeef18e1613b27ebdfacb15ab5702ec07f5f04446"}, + {file = "cx_Logging-3.2.0-cp310-cp310-win32.whl", hash = "sha256:3a0e153c9ed70ea5f8cea27c34052fd815d93d0858c7867f926274b5ccb04ee5"}, + {file = "cx_Logging-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:20ff0e7ee0da525ca8b31bd4af49819aee220307896f98a68d8794a5c1f6fde2"}, + {file = "cx_Logging-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:369dc509e65ceb3244281e89a8db99a7d67bde524d7bc9ab650282d44e153a06"}, + {file = "cx_Logging-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12e7713ffed11d7020b35623470c24af3223175ae38ea93797712e55219648e1"}, + {file = "cx_Logging-3.2.0-cp311-cp311-win32.whl", hash = "sha256:77449b6c48902ec24d876643d66a37d841c6aa425f4f0ae7ff64bf53e3565e11"}, + {file = "cx_Logging-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:e0cfcd5c88694e062465db50410be53ce5a957ad3d50b90a8f4bd03c98f73c7b"}, + {file = "cx_Logging-3.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031fe74ca61bf6084d64e835a7801b3c8d8758737fcadae234ba8b09a16d1368"}, + {file = "cx_Logging-3.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d29550bec4fdd7ce05b23ae6d3539a33060feb24ff39d5cbb89925d59b018b7"}, + {file = "cx_Logging-3.2.0-cp312-cp312-win32.whl", hash = "sha256:4328097f6034be241e02146af8e199382e7f30019272c26768e4cd3e5122d3f9"}, + {file = "cx_Logging-3.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2496386a36f63233fe77e7e68539910b9429df2f922be1af71309be59dca11f3"}, + {file = "cx_Logging-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03b725bbbe455a87c92c125e246a8c0c1f44bb20c7af0048e4c209cfc2a1a180"}, + {file = "cx_Logging-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac2957603ec1b1d3f7274b834ade52fb3004e0d4b9e3414b8593c60de5e3cf39"}, + {file = "cx_Logging-3.2.0-cp38-cp38-win32.whl", hash = "sha256:08bf89fa288c4aae9ad34534813aea1e275beb052bc40c7e4ef76862954c61b7"}, + {file = "cx_Logging-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:e7c883b1cfd76a44ded9677333bebb01e50970b52bdc5746cc2f45a661cebb7a"}, + {file = "cx_Logging-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00f23737f81d6b88a74b4f33bce5ea114283aab153a0d6c290b0626e5deb7978"}, + {file = "cx_Logging-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f40486414ba63fef003167c6942a08fd699b3197d359ca56441ddf2d82a7e6d"}, + {file = "cx_Logging-3.2.0-cp39-cp39-win32.whl", hash = "sha256:7d85861c70012c24415e488cff14ec6ba029d097b4d2b4d3effd6a5b1d5ce287"}, + {file = "cx_Logging-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:aafd5c2156751e473b4a8d331d01e70e872b235068da2158a29e377777baac63"}, + {file = "cx_Logging-3.2.0.tar.gz", hash = "sha256:bdbad6d2e6a0cc5bef962a34d7aa1232e88ea9f3541d6e2881675b5e7eab5502"}, +] + [[package]] name = "cycler" version = "0.12.1" @@ -2774,6 +2867,45 @@ files = [ [package.extras] data = ["language-data (>=1.1,<2.0)"] +[[package]] +name = "lief" +version = "0.14.1" +description = "Library to instrument executable formats" +optional = false +python-versions = ">=3.8" +files = [ + {file = "lief-0.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a9a94882f9af110fb01b4558a58941d2352b9a4ae3fef15570a3fab921ff462"}, + {file = "lief-0.14.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bcc06f24f64fa6f20372d625ce60c40a7a6f669e11bdd02c2f0b8c5c6d09a5ee"}, + {file = "lief-0.14.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d22f804eee7f1b4a4b37e7a3d35e2003c4c054f3450d40389e54c8ac9fc2a5db"}, + {file = "lief-0.14.1-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:26134815adecfd7f15dfbdf12cc64df25bcf3d0db917cf115fc3b296d09be496"}, + {file = "lief-0.14.1-cp310-cp310-win32.whl", hash = "sha256:6ca0220189698599df30b8044f43fb1fc7ba919fb9ef6047c892f9faee16393a"}, + {file = "lief-0.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:c321234b50997c217107c09e69f53518c37fac637f8735c968c258dd4c748fb2"}, + {file = "lief-0.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ca365c704c6b6b1ce631b92fea2eddaf93d66c897a0ec4ab51e9ab9e3345920"}, + {file = "lief-0.14.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:1f3c40eadff07a4c8fa74f1e268f9fa70b68f39b6795a00cd82160ca6782d5c3"}, + {file = "lief-0.14.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:c202ed13b641db2e1f8a24743fb0c85595b32ea92cc3c517d3f7a9977e16dcb4"}, + {file = "lief-0.14.1-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:fd481bfdfef04e8be4d200bca771d0d9394d9146c6cd403f9e58c80c4196a24e"}, + {file = "lief-0.14.1-cp311-cp311-win32.whl", hash = "sha256:473e9a37beef8db8bab1a777271aa49cce44dfe35af65cb8fad576377518c0bd"}, + {file = "lief-0.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:24f687244e14d4a8307430babc5c712a1dd4e519172886ad4aeb9825f88f7569"}, + {file = "lief-0.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6df40e3750b8b26f88a6b28ac01db7338cdb6158f28363c755bf36452ce20d28"}, + {file = "lief-0.14.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:e7f7a55db2fcf269569f9e9fa5ea752620396de17bd9d29fc8b29e176975ecdb"}, + {file = "lief-0.14.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:50795b51884b76a78c481d6d069d992561c217180bd81cf12554180389eff0a3"}, + {file = "lief-0.14.1-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:497b88f9c9aaae999766ba188744ee35c5f38b4b64016f7dbb7037e9bf325382"}, + {file = "lief-0.14.1-cp312-cp312-win32.whl", hash = "sha256:08bad88083f696915f8dcda4042a3bfc514e17462924ec8984085838b2261921"}, + {file = "lief-0.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:e131d6158a085f8a72124136816fefc29405c725cd3695ce22a904e471f0f815"}, + {file = "lief-0.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:df650fa05ca131e4dfeb42c77985e1eb239730af9944bc0aadb1dfac8576e0e8"}, + {file = "lief-0.14.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b4e76eeb48ca2925c6ca6034d408582615f2faa855f9bb11482e7acbdecc4803"}, + {file = "lief-0.14.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:016e4fac91303466024154dd3c4b599e8b7c52882f72038b62a2be386d98c8f9"}, + {file = "lief-0.14.1-cp38-cp38-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:9a5c7732a3ce53b306c8180ab64fdfb36d8cd9df91aedd9e2b4dad9faf47492b"}, + {file = "lief-0.14.1-cp38-cp38-win32.whl", hash = "sha256:7030c22a4446ea2ac673fd50128e9c639121c0a4dae11ca1cd8cc20d62d26e7e"}, + {file = "lief-0.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a35ceeee74bb9bb4c7171f4bca814576a3aa6dec16a0a9469e5743db0a9ba0c"}, + {file = "lief-0.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:abb15e4de34e70661fd35e87e2634abf0ae57a8c8ac78d02ad4259f5a5817e26"}, + {file = "lief-0.14.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:33d062340c709c1a33539d221ea3cb764cbb8d7c9ee8aae28bf9797bc8715a0b"}, + {file = "lief-0.14.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:66deb1b26de43acb2fd0b2fc5e6be70093eaaa93797332cc4613e163164c77e7"}, + {file = "lief-0.14.1-cp39-cp39-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:c1c15bd3e5b15da6dcc0ba75d5549f15bfbf9214c0d8e3938f85877a40c352d9"}, + {file = "lief-0.14.1-cp39-cp39-win32.whl", hash = "sha256:ebcbe4eadd33d8cf2c6015f44d6c9b72f81388af745938e633c4bb90262b2036"}, + {file = "lief-0.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:2db3eb282a35daf51f89c6509226668a08fb6a6d1f507dd549dd9f077585db11"}, +] + [[package]] name = "litellm" version = "1.17.13" @@ -3157,85 +3289,101 @@ tests = ["pytest (>=4.6)"] [[package]] name = "multidict" -version = "6.0.4" +version = "6.0.5" description = "multidict implementation" optional = false python-versions = ">=3.7" files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, ] [[package]] @@ -3819,6 +3967,25 @@ files = [ qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] testing = ["docopt", "pytest (<6.0.0)"] +[[package]] +name = "patchelf" +version = "0.17.2.1" +description = "A small utility to modify the dynamic linker and RPATH of ELF executables." +optional = false +python-versions = "*" +files = [ + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:fc329da0e8f628bd836dfb8eaf523547e342351fa8f739bf2b3fe4a6db5a297c"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:ccb266a94edf016efe80151172c26cff8c2ec120a57a1665d257b0442784195d"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:f47b5bdd6885cfb20abdd14c707d26eb6f499a7f52e911865548d4aa43385502"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_s390x.manylinux2014_s390x.musllinux_1_1_s390x.whl", hash = "sha256:a9e6ebb0874a11f7ed56d2380bfaa95f00612b23b15f896583da30c2059fcfa8"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_5_i686.manylinux1_i686.musllinux_1_1_i686.whl", hash = "sha256:3c8d58f0e4c1929b1c7c45ba8da5a84a8f1aa6a82a46e1cfb2e44a4d40f350e5"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:d1a9bc0d4fd80c038523ebdc451a1cce75237cfcc52dbd1aca224578001d5927"}, + {file = "patchelf-0.17.2.1.tar.gz", hash = "sha256:a6eb0dd452ce4127d0d5e1eb26515e39186fa609364274bc1b0b77539cfa7031"}, +] + +[package.extras] +test = ["importlib-metadata", "pytest"] + [[package]] name = "pathspec" version = "0.12.1" @@ -4819,6 +4986,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -6549,6 +6717,20 @@ files = [ {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, ] +[[package]] +name = "wheel" +version = "0.43.0" +description = "A built-package format for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "wheel-0.43.0-py3-none-any.whl", hash = "sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81"}, + {file = "wheel-0.43.0.tar.gz", hash = "sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85"}, +] + +[package.extras] +test = ["pytest (>=6.0.0)", "setuptools (>=65)"] + [[package]] name = "wrapt" version = "1.16.0" @@ -6766,4 +6948,4 @@ benchmark = ["agbenchmark"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "e5777f5d9e9edcfd83b59b03419c921011bae3b745cbbcd1c21193cb666c5b07" +content-hash = "a378031626ad6640c66c53d2b58266d7d464462b69f0b5b5b95c317bd20c6b79" diff --git a/autogpt/pyproject.toml b/autogpt/pyproject.toml index faa0a572e..b5d08fb7b 100644 --- a/autogpt/pyproject.toml +++ b/autogpt/pyproject.toml @@ -56,6 +56,8 @@ openapi-python-client = "^0.14.0" agbenchmark = { path = "../benchmark", optional = true } # agbenchmark = {git = "https://github.com/Significant-Gravitas/AutoGPT.git", subdirectory = "benchmark", optional = true} psycopg2-binary = "^2.9.9" +multidict = "6.0.5" +cx-freeze = "7.0.0" [tool.poetry.extras] benchmark = ["agbenchmark"] diff --git a/autogpt/setup.py b/autogpt/setup.py new file mode 100644 index 000000000..5fa328f35 --- /dev/null +++ b/autogpt/setup.py @@ -0,0 +1,60 @@ +from pkgutil import iter_modules +from shutil import which + +from cx_Freeze import Executable, setup + +packages = [ + m.name + for m in iter_modules() + if m.ispkg + and m.module_finder + and ("poetry" in m.module_finder.path) # type: ignore +] + +icon = ( + "../../assets/gpt_dark_RGB.icns" + if which("sips") + else "../../assets/gpt_dark_RGB.ico" +) + + +setup( + executables=[ + Executable( + "autogpt/__main__.py", target_name="autogpt", base="console", icon=icon + ), + ], + options={ + "build_exe": { + "packages": packages, + "includes": [ + "autogpt", + "spacy", + "spacy.lang", + "spacy.vocab", + "spacy.lang.lex_attrs", + "uvicorn.loops.auto", + "srsly.msgpack.util", + "blis", + "uvicorn.protocols.http.auto", + "uvicorn.protocols.websockets.auto", + "uvicorn.lifespan.on", + ], + "excludes": ["readability.compat.two"], + }, + "bdist_mac": { + "bundle_name": "AutoGPT", + "iconfile": "../assets/gpt_dark_RGB.icns", + "include_resources": [""], + }, + "bdist_dmg": { + "applications_shortcut": True, + "volume_label": "AutoGPT", + }, + "bdist_msi": { + "target_name": "AutoGPT", + "add_to_path": True, + "install_icon": "../assets/gpt_dark_RGB.ico", + }, + }, +) diff --git a/rnd/autogpt_server/.gitignore b/rnd/autogpt_server/.gitignore new file mode 100644 index 000000000..d16386367 --- /dev/null +++ b/rnd/autogpt_server/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/rnd/autogpt_server/autogpt_server/app.py b/rnd/autogpt_server/autogpt_server/app.py index 51598bb3a..d836dd0b5 100644 --- a/rnd/autogpt_server/autogpt_server/app.py +++ b/rnd/autogpt_server/autogpt_server/app.py @@ -1,6 +1,9 @@ -from autogpt_server.server import start_server -from autogpt_server.executor import start_executor_manager +from multiprocessing import freeze_support +from multiprocessing.spawn import freeze_support as freeze_support_spawn + from autogpt_server.data import ExecutionQueue +from autogpt_server.executor import start_executor_manager +from autogpt_server.server import start_server def main() -> None: @@ -10,4 +13,10 @@ def main() -> None: if __name__ == "__main__": + # These directives are required to make multiprocessing work with cx_Freeze + # and are both required and safe across platforms (Windows, macOS, Linux) + # They must be placed at the beginning of the executions before any other + # multiprocessing code is run + freeze_support() + freeze_support_spawn() main() diff --git a/rnd/autogpt_server/autogpt_server/server/server.py b/rnd/autogpt_server/autogpt_server/server/server.py index adc827a29..6fcdcbda2 100644 --- a/rnd/autogpt_server/autogpt_server/server/server.py +++ b/rnd/autogpt_server/autogpt_server/server/server.py @@ -1,5 +1,5 @@ import uvicorn -from fastapi import FastAPI, APIRouter +from fastapi import APIRouter, FastAPI from autogpt_server.data import ExecutionQueue diff --git a/rnd/autogpt_server/poetry.lock b/rnd/autogpt_server/poetry.lock index 477b488c2..6c8a895c0 100644 --- a/rnd/autogpt_server/poetry.lock +++ b/rnd/autogpt_server/poetry.lock @@ -70,39 +70,97 @@ files = [ ] [[package]] -name = "dnspython" -version = "2.6.1" -description = "DNS toolkit" +name = "cx-freeze" +version = "7.0.0" +description = "Create standalone executables from Python scripts" optional = false python-versions = ">=3.8" files = [ - {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, - {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, -] - -[package.extras] -dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] -dnssec = ["cryptography (>=41)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] -doq = ["aioquic (>=0.9.25)"] -idna = ["idna (>=3.6)"] -trio = ["trio (>=0.23)"] -wmi = ["wmi (>=1.5.1)"] - -[[package]] -name = "email-validator" -version = "2.1.1" -description = "A robust email address syntax and deliverability validation library." -optional = false -python-versions = ">=3.8" -files = [ - {file = "email_validator-2.1.1-py3-none-any.whl", hash = "sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05"}, - {file = "email_validator-2.1.1.tar.gz", hash = "sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:421920dbee2b4aab53a81f6c99d18b00baf622a328eae8e489f162154a46192a"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fa1ca4cf20c6ce45ce2e26bf8b2086525aaaa774e2ee1b16da4e0f9f18c7272"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a520bc6772325c0e38924da1d827fe370702f8df397f483691b94d36179beef6"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b89ed99a2f99fd2f3e28a91c85bdd75b4bfaf11b04729ba3282bfebdadadf880"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5174821c82826e5a57e43960877087f5af6073e3877b0b38a0be244111fe1a76"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cfd18cc00f3240b03d5bdf9515d59ace0881b5b5b6f2e7655d857d1fb71f351d"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:bac44e65bdfce0839b9a6d15373ea084fda3cdbd902351cde530991b450c2b2d"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51a374f273d575827efe4f7ed9a88b6cab78abffacb858c829d7cbe4dc4ff56e"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-win32.whl", hash = "sha256:6603e6c47a15bd84bfbb20d92dc01d5e586b54928eb618461d2f14305471d570"}, + {file = "cx_Freeze-7.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:d7ec847af5afbe3c638a096aae4ff5982a17d95e2fb7975e525ecf9505a185ea"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04b7a2e5c53f5d537f3d958ebf2b0a0a7cbe8daf980cb0087559a3e698abc582"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:50e7e78001d4f78e70a403ecb5507685854ce1e6c3ff37bec1920eb6f2256534"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d37ed560e86ca7958684701a6ae7f3300226d0d7c861ca5b90c78bf4c619ad2"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:42145dc5c2c7a98c620b30b7e25661954817a13355c50c4219a4a4954b39db39"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f9034d6f9c10d84d7edc0e4f4020e878de367e83c5877c039aa3c8b733bc318"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:adc6bdba9ff8705745831620efb6ee5eff9ec6d31d9b8c56d2a61d6555299157"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:37a3234c0e54b4afd561b47be4f22a6496f9436275fb7b59d90d7a3269fb4d6f"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:83549f9f817cafa59ea2f6e2045c8fe119628458ff14bb732649b01b0a637f6d"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-win32.whl", hash = "sha256:c508cd354728367311a7deb5bb616eee441bf79c900e3129a49fd54a372dc223"}, + {file = "cx_Freeze-7.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:8fb71d23dba27dc40393a8b460bbf64759899246cd595860f66493cee64f27a5"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:648fd0acb439efe22dced2430cbaeca87e5ca9ab315d148933104376cca9553d"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3125a8408da3ff4b0cf767689d678909f840dfe08633f5f2d3cfe333111dc334"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07e56b06c7ca0bd2fc37e3783908767dbe1926e1e2609edcaefcc749ab584329"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25531d5c61bb5e974d8a5d042f29a37a786e91c1d6f66e018fc50342a416f4e1"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f97154b4b60f6e1953ebce05803a5e11a35047d097fad60d7c181303b7c6ef6e"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2333db5cfa6db700c79fd45d614d38e9d698f1df2a3c7e21ccbcc63cc8a7a9b7"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:d45a58e0a9b010e0823c30fb8eb2077560d2bb0f78e4481a55bdb6ad0729f390"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0422dbd426fd9f4f4ec0cadc7e3192d38227464daa3eb215b03eb577cd9a49d4"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-win32.whl", hash = "sha256:2018e9cbf8172da09b311cfc3906503ee6ae88665ec77c543013173b2532b731"}, + {file = "cx_Freeze-7.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae5facd782b220bca6828eb6fb1834540cf431b1a615cc63652641bd070b11e6"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f06368dd41568572818c4abfcf9b45449dced3fa9f1b5f29e3523ba4ff7fcfbb"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e203d90d8fa1cc4489b15edac7dfdd983518a02999f275897160fc0ecfa98e4c"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f800b0bc2df14c66fcf2f220ecf273c5942d0b982268d8e5ccc9ef2fa56e576f"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-win32.whl", hash = "sha256:c52641ce2484222f4d60f0acbc79b2dfbfb984493101a4806c5af0ad379ebc82"}, + {file = "cx_Freeze-7.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:92a15613be3fcc7a310e825c92ae3e83a7e689ade00ce2ea981403e4317c7234"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:60a0f674b6a55fdf46d0cc59122551a79221ceecd038fed8533dcbceb9714435"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb15314e8395e9658a8a5e4e19558d0e096a68b76c744ba81ebc249061b7dd9e"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3290127acc67e830265265a911d9018640ffffb7fddb86eacb1e3d83ed4136c4"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-win32.whl", hash = "sha256:aa885f2fb29b9f7d9a7d8af223d38d98905484cc2356c474bb1d6fd1704323ad"}, + {file = "cx_Freeze-7.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:fe4dbbfd52454c8ddb550f112713ee2ac36cc024303557763b605e35cdb6b9a8"}, + {file = "cx_freeze-7.0.0.tar.gz", hash = "sha256:b03f2854a15dd1e8962660d18882a71fefba0e1b6f68337193d4a072d1fc36e6"}, ] [package.dependencies] -dnspython = ">=2.0.0" -idna = ">=2.0.0" +cx-Logging = {version = ">=3.1", markers = "sys_platform == \"win32\""} +filelock = {version = ">=3.11.0", markers = "sys_platform == \"linux\""} +lief = {version = ">=0.12.0,<0.15.0", markers = "sys_platform == \"win32\""} +patchelf = {version = ">=0.14", markers = "sys_platform == \"linux\" and (platform_machine == \"aarch64\" or platform_machine == \"armv7l\" or platform_machine == \"i686\" or platform_machine == \"ppc64le\" or platform_machine == \"s390x\" or platform_machine == \"x86_64\")"} +setuptools = ">=62.6,<70" +wheel = ">=0.42.0,<=0.43.0" + +[package.extras] +dev = ["bump-my-version (==0.20.1)", "cibuildwheel (==2.17.0)", "pre-commit (==3.7.0)"] +doc = ["furo (==2024.1.29)", "myst-parser (==2.0.0)", "sphinx (==7.3.7)", "sphinx-new-tab-link (==0.4.0)", "sphinx-tabs (==3.4.5)"] +test = ["coverage (==7.4.4)", "pluggy (==1.4.0)", "pytest (==8.1.1)", "pytest-cov (==5.0.0)", "pytest-datafiles (==3.0.0)", "pytest-mock (==3.14.0)", "pytest-timeout (==2.3.1)", "pytest-xdist[psutil] (==3.6.0)"] + +[[package]] +name = "cx-logging" +version = "3.2.0" +description = "Python and C interfaces for logging" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cx_Logging-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d40c1a4dcd54eff3335f34a2f9af9e29f29b45441fa99f90d6710ffae130a826"}, + {file = "cx_Logging-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705c1baf94ac49ba7bc807deeef18e1613b27ebdfacb15ab5702ec07f5f04446"}, + {file = "cx_Logging-3.2.0-cp310-cp310-win32.whl", hash = "sha256:3a0e153c9ed70ea5f8cea27c34052fd815d93d0858c7867f926274b5ccb04ee5"}, + {file = "cx_Logging-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:20ff0e7ee0da525ca8b31bd4af49819aee220307896f98a68d8794a5c1f6fde2"}, + {file = "cx_Logging-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:369dc509e65ceb3244281e89a8db99a7d67bde524d7bc9ab650282d44e153a06"}, + {file = "cx_Logging-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12e7713ffed11d7020b35623470c24af3223175ae38ea93797712e55219648e1"}, + {file = "cx_Logging-3.2.0-cp311-cp311-win32.whl", hash = "sha256:77449b6c48902ec24d876643d66a37d841c6aa425f4f0ae7ff64bf53e3565e11"}, + {file = "cx_Logging-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:e0cfcd5c88694e062465db50410be53ce5a957ad3d50b90a8f4bd03c98f73c7b"}, + {file = "cx_Logging-3.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:031fe74ca61bf6084d64e835a7801b3c8d8758737fcadae234ba8b09a16d1368"}, + {file = "cx_Logging-3.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d29550bec4fdd7ce05b23ae6d3539a33060feb24ff39d5cbb89925d59b018b7"}, + {file = "cx_Logging-3.2.0-cp312-cp312-win32.whl", hash = "sha256:4328097f6034be241e02146af8e199382e7f30019272c26768e4cd3e5122d3f9"}, + {file = "cx_Logging-3.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2496386a36f63233fe77e7e68539910b9429df2f922be1af71309be59dca11f3"}, + {file = "cx_Logging-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03b725bbbe455a87c92c125e246a8c0c1f44bb20c7af0048e4c209cfc2a1a180"}, + {file = "cx_Logging-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac2957603ec1b1d3f7274b834ade52fb3004e0d4b9e3414b8593c60de5e3cf39"}, + {file = "cx_Logging-3.2.0-cp38-cp38-win32.whl", hash = "sha256:08bf89fa288c4aae9ad34534813aea1e275beb052bc40c7e4ef76862954c61b7"}, + {file = "cx_Logging-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:e7c883b1cfd76a44ded9677333bebb01e50970b52bdc5746cc2f45a661cebb7a"}, + {file = "cx_Logging-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00f23737f81d6b88a74b4f33bce5ea114283aab153a0d6c290b0626e5deb7978"}, + {file = "cx_Logging-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f40486414ba63fef003167c6942a08fd699b3197d359ca56441ddf2d82a7e6d"}, + {file = "cx_Logging-3.2.0-cp39-cp39-win32.whl", hash = "sha256:7d85861c70012c24415e488cff14ec6ba029d097b4d2b4d3effd6a5b1d5ce287"}, + {file = "cx_Logging-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:aafd5c2156751e473b4a8d331d01e70e872b235068da2158a29e377777baac63"}, + {file = "cx_Logging-3.2.0.tar.gz", hash = "sha256:bdbad6d2e6a0cc5bef962a34d7aa1232e88ea9f3541d6e2881675b5e7eab5502"}, +] [[package]] name = "exceptiongroup" @@ -120,47 +178,38 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.111.0" +version = "0.109.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0"}, - {file = "fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7"}, + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, ] [package.dependencies] -email_validator = ">=2.0.0" -fastapi-cli = ">=0.0.2" -httpx = ">=0.23.0" -jinja2 = ">=2.11.2" -orjson = ">=3.2.1" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" -python-multipart = ">=0.0.7" -starlette = ">=0.37.2,<0.38.0" +starlette = ">=0.36.3,<0.37.0" typing-extensions = ">=4.8.0" -ujson = ">=4.0.1,<4.0.2 || >4.0.2,<4.1.0 || >4.1.0,<4.2.0 || >4.2.0,<4.3.0 || >4.3.0,<5.0.0 || >5.0.0,<5.1.0 || >5.1.0" -uvicorn = {version = ">=0.12.0", extras = ["standard"]} [package.extras] -all = ["email_validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] -name = "fastapi-cli" -version = "0.0.4" -description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" +name = "filelock" +version = "3.14.0" +description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "fastapi_cli-0.0.4-py3-none-any.whl", hash = "sha256:a2552f3a7ae64058cdbb530be6fa6dbfc975dc165e4fa66d224c3d396e25e809"}, - {file = "fastapi_cli-0.0.4.tar.gz", hash = "sha256:e2e9ffaffc1f7767f488d6da34b6f5a377751c996f397902eb6abb99a67bde32"}, + {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, + {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, ] -[package.dependencies] -typer = ">=0.12.3" - [package.extras] -standard = ["fastapi", "uvicorn[standard] (>=0.15.0)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] [[package]] name = "h11" @@ -306,29 +355,44 @@ MarkupSafe = ">=2.0" i18n = ["Babel (>=2.7)"] [[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" +name = "lief" +version = "0.14.1" +description = "Library to instrument executable formats" optional = false python-versions = ">=3.8" files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, + {file = "lief-0.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a9a94882f9af110fb01b4558a58941d2352b9a4ae3fef15570a3fab921ff462"}, + {file = "lief-0.14.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bcc06f24f64fa6f20372d625ce60c40a7a6f669e11bdd02c2f0b8c5c6d09a5ee"}, + {file = "lief-0.14.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d22f804eee7f1b4a4b37e7a3d35e2003c4c054f3450d40389e54c8ac9fc2a5db"}, + {file = "lief-0.14.1-cp310-cp310-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:26134815adecfd7f15dfbdf12cc64df25bcf3d0db917cf115fc3b296d09be496"}, + {file = "lief-0.14.1-cp310-cp310-win32.whl", hash = "sha256:6ca0220189698599df30b8044f43fb1fc7ba919fb9ef6047c892f9faee16393a"}, + {file = "lief-0.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:c321234b50997c217107c09e69f53518c37fac637f8735c968c258dd4c748fb2"}, + {file = "lief-0.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ca365c704c6b6b1ce631b92fea2eddaf93d66c897a0ec4ab51e9ab9e3345920"}, + {file = "lief-0.14.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:1f3c40eadff07a4c8fa74f1e268f9fa70b68f39b6795a00cd82160ca6782d5c3"}, + {file = "lief-0.14.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:c202ed13b641db2e1f8a24743fb0c85595b32ea92cc3c517d3f7a9977e16dcb4"}, + {file = "lief-0.14.1-cp311-cp311-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:fd481bfdfef04e8be4d200bca771d0d9394d9146c6cd403f9e58c80c4196a24e"}, + {file = "lief-0.14.1-cp311-cp311-win32.whl", hash = "sha256:473e9a37beef8db8bab1a777271aa49cce44dfe35af65cb8fad576377518c0bd"}, + {file = "lief-0.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:24f687244e14d4a8307430babc5c712a1dd4e519172886ad4aeb9825f88f7569"}, + {file = "lief-0.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6df40e3750b8b26f88a6b28ac01db7338cdb6158f28363c755bf36452ce20d28"}, + {file = "lief-0.14.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:e7f7a55db2fcf269569f9e9fa5ea752620396de17bd9d29fc8b29e176975ecdb"}, + {file = "lief-0.14.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:50795b51884b76a78c481d6d069d992561c217180bd81cf12554180389eff0a3"}, + {file = "lief-0.14.1-cp312-cp312-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:497b88f9c9aaae999766ba188744ee35c5f38b4b64016f7dbb7037e9bf325382"}, + {file = "lief-0.14.1-cp312-cp312-win32.whl", hash = "sha256:08bad88083f696915f8dcda4042a3bfc514e17462924ec8984085838b2261921"}, + {file = "lief-0.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:e131d6158a085f8a72124136816fefc29405c725cd3695ce22a904e471f0f815"}, + {file = "lief-0.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:df650fa05ca131e4dfeb42c77985e1eb239730af9944bc0aadb1dfac8576e0e8"}, + {file = "lief-0.14.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b4e76eeb48ca2925c6ca6034d408582615f2faa855f9bb11482e7acbdecc4803"}, + {file = "lief-0.14.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:016e4fac91303466024154dd3c4b599e8b7c52882f72038b62a2be386d98c8f9"}, + {file = "lief-0.14.1-cp38-cp38-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:9a5c7732a3ce53b306c8180ab64fdfb36d8cd9df91aedd9e2b4dad9faf47492b"}, + {file = "lief-0.14.1-cp38-cp38-win32.whl", hash = "sha256:7030c22a4446ea2ac673fd50128e9c639121c0a4dae11ca1cd8cc20d62d26e7e"}, + {file = "lief-0.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a35ceeee74bb9bb4c7171f4bca814576a3aa6dec16a0a9469e5743db0a9ba0c"}, + {file = "lief-0.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:abb15e4de34e70661fd35e87e2634abf0ae57a8c8ac78d02ad4259f5a5817e26"}, + {file = "lief-0.14.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:33d062340c709c1a33539d221ea3cb764cbb8d7c9ee8aae28bf9797bc8715a0b"}, + {file = "lief-0.14.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:66deb1b26de43acb2fd0b2fc5e6be70093eaaa93797332cc4613e163164c77e7"}, + {file = "lief-0.14.1-cp39-cp39-manylinux_2_28_x86_64.manylinux_2_27_x86_64.whl", hash = "sha256:c1c15bd3e5b15da6dcc0ba75d5549f15bfbf9214c0d8e3938f85877a40c352d9"}, + {file = "lief-0.14.1-cp39-cp39-win32.whl", hash = "sha256:ebcbe4eadd33d8cf2c6015f44d6c9b72f81388af745938e633c4bb90262b2036"}, + {file = "lief-0.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:2db3eb282a35daf51f89c6509226668a08fb6a6d1f507dd549dd9f077585db11"}, ] -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - [[package]] name = "markupsafe" version = "2.1.5" @@ -398,81 +462,15 @@ files = [ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] -[[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, -] - [[package]] name = "nodeenv" -version = "1.9.0" +version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.9.0-py2.py3-none-any.whl", hash = "sha256:508ecec98f9f3330b636d4448c0f1a56fc68017c68f1e7857ebc52acf0eb879a"}, - {file = "nodeenv-1.9.0.tar.gz", hash = "sha256:07f144e90dae547bf0d4ee8da0ee42664a42a04e02ed68e06324348dafe4bdb1"}, -] - -[[package]] -name = "orjson" -version = "3.10.3" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.8" -files = [ - {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, - {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, - {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, - {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, - {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, - {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, - {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, - {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, - {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, - {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, - {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, - {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, - {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, - {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, - {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, - {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] [[package]] @@ -486,6 +484,36 @@ files = [ {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] +[[package]] +name = "pastel" +version = "0.2.1" +description = "Bring colors to your terminal." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364"}, + {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"}, +] + +[[package]] +name = "patchelf" +version = "0.17.2.1" +description = "A small utility to modify the dynamic linker and RPATH of ELF executables." +optional = false +python-versions = "*" +files = [ + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:fc329da0e8f628bd836dfb8eaf523547e342351fa8f739bf2b3fe4a6db5a297c"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:ccb266a94edf016efe80151172c26cff8c2ec120a57a1665d257b0442784195d"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:f47b5bdd6885cfb20abdd14c707d26eb6f499a7f52e911865548d4aa43385502"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_17_s390x.manylinux2014_s390x.musllinux_1_1_s390x.whl", hash = "sha256:a9e6ebb0874a11f7ed56d2380bfaa95f00612b23b15f896583da30c2059fcfa8"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_5_i686.manylinux1_i686.musllinux_1_1_i686.whl", hash = "sha256:3c8d58f0e4c1929b1c7c45ba8da5a84a8f1aa6a82a46e1cfb2e44a4d40f350e5"}, + {file = "patchelf-0.17.2.1-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:d1a9bc0d4fd80c038523ebdc451a1cce75237cfcc52dbd1aca224578001d5927"}, + {file = "patchelf-0.17.2.1.tar.gz", hash = "sha256:a6eb0dd452ce4127d0d5e1eb26515e39186fa609364274bc1b0b77539cfa7031"}, +] + +[package.extras] +test = ["importlib-metadata", "pytest"] + [[package]] name = "pluggy" version = "1.5.0" @@ -501,6 +529,24 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "poethepoet" +version = "0.26.1" +description = "A task runner that works well with poetry." +optional = false +python-versions = ">=3.8" +files = [ + {file = "poethepoet-0.26.1-py3-none-any.whl", hash = "sha256:aa43b443fec5d17d7e76771cccd484e5285805301721a74f059c483ad3276edd"}, + {file = "poethepoet-0.26.1.tar.gz", hash = "sha256:aaad8541f6072617a60bcff2562d00779b58b353bd0f1847b06d8d0f2b6dc192"}, +] + +[package.dependencies] +pastel = ">=0.2.1,<0.3.0" +tomli = ">=1.2.2" + +[package.extras] +poetry-plugin = ["poetry (>=1.0,<2.0)"] + [[package]] name = "prisma" version = "0.13.1" @@ -529,18 +575,18 @@ node = ["nodejs-bin"] [[package]] name = "pydantic" -version = "2.7.2" +version = "2.7.3" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.7.2-py3-none-any.whl", hash = "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7"}, - {file = "pydantic-2.7.2.tar.gz", hash = "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7"}, + {file = "pydantic-2.7.3-py3-none-any.whl", hash = "sha256:ea91b002777bf643bb20dd717c028ec43216b24a6001a280f83877fd2655d0b4"}, + {file = "pydantic-2.7.3.tar.gz", hash = "sha256:c46c76a40bb1296728d7a8b99aa73dd70a48c3510111ff290034f860c99c419e"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.18.3" +pydantic-core = "2.18.4" typing-extensions = ">=4.6.1" [package.extras] @@ -548,118 +594,104 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.18.3" +version = "2.18.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.18.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:744697428fcdec6be5670460b578161d1ffe34743a5c15656be7ea82b008197c"}, - {file = "pydantic_core-2.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37b40c05ced1ba4218b14986fe6f283d22e1ae2ff4c8e28881a70fb81fbfcda7"}, - {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a9a75622357076efb6b311983ff190fbfb3c12fc3a853122b34d3d358126c"}, - {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2e253af04ceaebde8eb201eb3f3e3e7e390f2d275a88300d6a1959d710539e2"}, - {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:855ec66589c68aa367d989da5c4755bb74ee92ccad4fdb6af942c3612c067e34"}, - {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d3e42bb54e7e9d72c13ce112e02eb1b3b55681ee948d748842171201a03a98a"}, - {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6ac9ffccc9d2e69d9fba841441d4259cb668ac180e51b30d3632cd7abca2b9b"}, - {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c56eca1686539fa0c9bda992e7bd6a37583f20083c37590413381acfc5f192d6"}, - {file = "pydantic_core-2.18.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426"}, - {file = "pydantic_core-2.18.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:98ed737567d8f2ecd54f7c8d4f8572ca7c7921ede93a2e52939416170d357812"}, - {file = "pydantic_core-2.18.3-cp310-none-win32.whl", hash = "sha256:9f9e04afebd3ed8c15d67a564ed0a34b54e52136c6d40d14c5547b238390e779"}, - {file = "pydantic_core-2.18.3-cp310-none-win_amd64.whl", hash = "sha256:45e4ffbae34f7ae30d0047697e724e534a7ec0a82ef9994b7913a412c21462a0"}, - {file = "pydantic_core-2.18.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b9ebe8231726c49518b16b237b9fe0d7d361dd221302af511a83d4ada01183ab"}, - {file = "pydantic_core-2.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b8e20e15d18bf7dbb453be78a2d858f946f5cdf06c5072453dace00ab652e2b2"}, - {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0d9ff283cd3459fa0bf9b0256a2b6f01ac1ff9ffb034e24457b9035f75587cb"}, - {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f7ef5f0ebb77ba24c9970da18b771711edc5feaf00c10b18461e0f5f5949231"}, - {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73038d66614d2e5cde30435b5afdced2b473b4c77d4ca3a8624dd3e41a9c19be"}, - {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6afd5c867a74c4d314c557b5ea9520183fadfbd1df4c2d6e09fd0d990ce412cd"}, - {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd7df92f28d351bb9f12470f4c533cf03d1b52ec5a6e5c58c65b183055a60106"}, - {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80aea0ffeb1049336043d07799eace1c9602519fb3192916ff525b0287b2b1e4"}, - {file = "pydantic_core-2.18.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaee40f25bba38132e655ffa3d1998a6d576ba7cf81deff8bfa189fb43fd2bbe"}, - {file = "pydantic_core-2.18.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9128089da8f4fe73f7a91973895ebf2502539d627891a14034e45fb9e707e26d"}, - {file = "pydantic_core-2.18.3-cp311-none-win32.whl", hash = "sha256:fec02527e1e03257aa25b1a4dcbe697b40a22f1229f5d026503e8b7ff6d2eda7"}, - {file = "pydantic_core-2.18.3-cp311-none-win_amd64.whl", hash = "sha256:58ff8631dbab6c7c982e6425da8347108449321f61fe427c52ddfadd66642af7"}, - {file = "pydantic_core-2.18.3-cp311-none-win_arm64.whl", hash = "sha256:3fc1c7f67f34c6c2ef9c213e0f2a351797cda98249d9ca56a70ce4ebcaba45f4"}, - {file = "pydantic_core-2.18.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f0928cde2ae416a2d1ebe6dee324709c6f73e93494d8c7aea92df99aab1fc40f"}, - {file = "pydantic_core-2.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9"}, - {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e862823be114387257dacbfa7d78547165a85d7add33b446ca4f4fae92c7ff5c"}, - {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a36f78674cbddc165abab0df961b5f96b14461d05feec5e1f78da58808b97e7"}, - {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba905d184f62e7ddbb7a5a751d8a5c805463511c7b08d1aca4a3e8c11f2e5048"}, - {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fdd362f6a586e681ff86550b2379e532fee63c52def1c666887956748eaa326"}, - {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24b214b7ee3bd3b865e963dbed0f8bc5375f49449d70e8d407b567af3222aae4"}, - {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:691018785779766127f531674fa82bb368df5b36b461622b12e176c18e119022"}, - {file = "pydantic_core-2.18.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:60e4c625e6f7155d7d0dcac151edf5858102bc61bf959d04469ca6ee4e8381bd"}, - {file = "pydantic_core-2.18.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4e651e47d981c1b701dcc74ab8fec5a60a5b004650416b4abbef13db23bc7be"}, - {file = "pydantic_core-2.18.3-cp312-none-win32.whl", hash = "sha256:ffecbb5edb7f5ffae13599aec33b735e9e4c7676ca1633c60f2c606beb17efc5"}, - {file = "pydantic_core-2.18.3-cp312-none-win_amd64.whl", hash = "sha256:2c8333f6e934733483c7eddffdb094c143b9463d2af7e6bd85ebcb2d4a1b82c6"}, - {file = "pydantic_core-2.18.3-cp312-none-win_arm64.whl", hash = "sha256:7a20dded653e516a4655f4c98e97ccafb13753987434fe7cf044aa25f5b7d417"}, - {file = "pydantic_core-2.18.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:eecf63195be644b0396f972c82598cd15693550f0ff236dcf7ab92e2eb6d3522"}, - {file = "pydantic_core-2.18.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c44efdd3b6125419c28821590d7ec891c9cb0dff33a7a78d9d5c8b6f66b9702"}, - {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e59fca51ffbdd1638b3856779342ed69bcecb8484c1d4b8bdb237d0eb5a45e2"}, - {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70cf099197d6b98953468461d753563b28e73cf1eade2ffe069675d2657ed1d5"}, - {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63081a49dddc6124754b32a3774331467bfc3d2bd5ff8f10df36a95602560361"}, - {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:370059b7883485c9edb9655355ff46d912f4b03b009d929220d9294c7fd9fd60"}, - {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a64faeedfd8254f05f5cf6fc755023a7e1606af3959cfc1a9285744cc711044"}, - {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19d2e725de0f90d8671f89e420d36c3dd97639b98145e42fcc0e1f6d492a46dc"}, - {file = "pydantic_core-2.18.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:67bc078025d70ec5aefe6200ef094576c9d86bd36982df1301c758a9fff7d7f4"}, - {file = "pydantic_core-2.18.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:adf952c3f4100e203cbaf8e0c907c835d3e28f9041474e52b651761dc248a3c0"}, - {file = "pydantic_core-2.18.3-cp38-none-win32.whl", hash = "sha256:9a46795b1f3beb167eaee91736d5d17ac3a994bf2215a996aed825a45f897558"}, - {file = "pydantic_core-2.18.3-cp38-none-win_amd64.whl", hash = "sha256:200ad4e3133cb99ed82342a101a5abf3d924722e71cd581cc113fe828f727fbc"}, - {file = "pydantic_core-2.18.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:304378b7bf92206036c8ddd83a2ba7b7d1a5b425acafff637172a3aa72ad7083"}, - {file = "pydantic_core-2.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c826870b277143e701c9ccf34ebc33ddb4d072612683a044e7cce2d52f6c3fef"}, - {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e201935d282707394f3668380e41ccf25b5794d1b131cdd96b07f615a33ca4b1"}, - {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5560dda746c44b48bf82b3d191d74fe8efc5686a9ef18e69bdabccbbb9ad9442"}, - {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b32c2a1f8032570842257e4c19288eba9a2bba4712af542327de9a1204faff8"}, - {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:929c24e9dea3990bc8bcd27c5f2d3916c0c86f5511d2caa69e0d5290115344a9"}, - {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a8376fef60790152564b0eab376b3e23dd6e54f29d84aad46f7b264ecca943"}, - {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dccf3ef1400390ddd1fb55bf0632209d39140552d068ee5ac45553b556780e06"}, - {file = "pydantic_core-2.18.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41dbdcb0c7252b58fa931fec47937edb422c9cb22528f41cb8963665c372caf6"}, - {file = "pydantic_core-2.18.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:666e45cf071669fde468886654742fa10b0e74cd0fa0430a46ba6056b24fb0af"}, - {file = "pydantic_core-2.18.3-cp39-none-win32.whl", hash = "sha256:f9c08cabff68704a1b4667d33f534d544b8a07b8e5d039c37067fceb18789e78"}, - {file = "pydantic_core-2.18.3-cp39-none-win_amd64.whl", hash = "sha256:4afa5f5973e8572b5c0dcb4e2d4fda7890e7cd63329bd5cc3263a25c92ef0026"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:77319771a026f7c7d29c6ebc623de889e9563b7087911b46fd06c044a12aa5e9"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:df11fa992e9f576473038510d66dd305bcd51d7dd508c163a8c8fe148454e059"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d531076bdfb65af593326ffd567e6ab3da145020dafb9187a1d131064a55f97c"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d33ce258e4e6e6038f2b9e8b8a631d17d017567db43483314993b3ca345dcbbb"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1f9cd7f5635b719939019be9bda47ecb56e165e51dd26c9a217a433e3d0d59a9"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cd4a032bb65cc132cae1fe3e52877daecc2097965cd3914e44fbd12b00dae7c5"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f2718430098bcdf60402136c845e4126a189959d103900ebabb6774a5d9fdb"}, - {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c0037a92cf0c580ed14e10953cdd26528e8796307bb8bb312dc65f71547df04d"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b95a0972fac2b1ff3c94629fc9081b16371dad870959f1408cc33b2f78ad347a"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a62e437d687cc148381bdd5f51e3e81f5b20a735c55f690c5be94e05da2b0d5c"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b367a73a414bbb08507da102dc2cde0fa7afe57d09b3240ce82a16d608a7679c"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd4435b8d83f0c9561a2a9585b1de78f1abb17cb0cef5f39bf6a4b47d19bafe3"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:616221a6d473c5b9aa83fa8982745441f6a4a62a66436be9445c65f241b86c94"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7e6382ce89a92bc1d0c0c5edd51e931432202b9080dc921d8d003e616402efd1"}, - {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff58f379345603d940e461eae474b6bbb6dab66ed9a851ecd3cb3709bf4dcf6a"}, - {file = "pydantic_core-2.18.3.tar.gz", hash = "sha256:432e999088d85c8f36b9a3f769a8e2b57aabd817bbb729a90d1fe7f18f6f1f39"}, + {file = "pydantic_core-2.18.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f76d0ad001edd426b92233d45c746fd08f467d56100fd8f30e9ace4b005266e4"}, + {file = "pydantic_core-2.18.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:59ff3e89f4eaf14050c8022011862df275b552caef8082e37b542b066ce1ff26"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a55b5b16c839df1070bc113c1f7f94a0af4433fcfa1b41799ce7606e5c79ce0a"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d0dcc59664fcb8974b356fe0a18a672d6d7cf9f54746c05f43275fc48636851"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8951eee36c57cd128f779e641e21eb40bc5073eb28b2d23f33eb0ef14ffb3f5d"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4701b19f7e3a06ea655513f7938de6f108123bf7c86bbebb1196eb9bd35cf724"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00a3f196329e08e43d99b79b286d60ce46bed10f2280d25a1718399457e06be"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97736815b9cc893b2b7f663628e63f436018b75f44854c8027040e05230eeddb"}, + {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6891a2ae0e8692679c07728819b6e2b822fb30ca7445f67bbf6509b25a96332c"}, + {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bc4ff9805858bd54d1a20efff925ccd89c9d2e7cf4986144b30802bf78091c3e"}, + {file = "pydantic_core-2.18.4-cp310-none-win32.whl", hash = "sha256:1b4de2e51bbcb61fdebd0ab86ef28062704f62c82bbf4addc4e37fa4b00b7cbc"}, + {file = "pydantic_core-2.18.4-cp310-none-win_amd64.whl", hash = "sha256:6a750aec7bf431517a9fd78cb93c97b9b0c496090fee84a47a0d23668976b4b0"}, + {file = "pydantic_core-2.18.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:942ba11e7dfb66dc70f9ae66b33452f51ac7bb90676da39a7345e99ffb55402d"}, + {file = "pydantic_core-2.18.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2ebef0e0b4454320274f5e83a41844c63438fdc874ea40a8b5b4ecb7693f1c4"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a642295cd0c8df1b86fc3dced1d067874c353a188dc8e0f744626d49e9aa51c4"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f09baa656c904807e832cf9cce799c6460c450c4ad80803517032da0cd062e2"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98906207f29bc2c459ff64fa007afd10a8c8ac080f7e4d5beff4c97086a3dabd"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19894b95aacfa98e7cb093cd7881a0c76f55731efad31073db4521e2b6ff5b7d"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fbbdc827fe5e42e4d196c746b890b3d72876bdbf160b0eafe9f0334525119c8"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f85d05aa0918283cf29a30b547b4df2fbb56b45b135f9e35b6807cb28bc47951"}, + {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e85637bc8fe81ddb73fda9e56bab24560bdddfa98aa64f87aaa4e4b6730c23d2"}, + {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f5966897e5461f818e136b8451d0551a2e77259eb0f73a837027b47dc95dab9"}, + {file = "pydantic_core-2.18.4-cp311-none-win32.whl", hash = "sha256:44c7486a4228413c317952e9d89598bcdfb06399735e49e0f8df643e1ccd0558"}, + {file = "pydantic_core-2.18.4-cp311-none-win_amd64.whl", hash = "sha256:8a7164fe2005d03c64fd3b85649891cd4953a8de53107940bf272500ba8a788b"}, + {file = "pydantic_core-2.18.4-cp311-none-win_arm64.whl", hash = "sha256:4e99bc050fe65c450344421017f98298a97cefc18c53bb2f7b3531eb39bc7805"}, + {file = "pydantic_core-2.18.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6f5c4d41b2771c730ea1c34e458e781b18cc668d194958e0112455fff4e402b2"}, + {file = "pydantic_core-2.18.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2fdf2156aa3d017fddf8aea5adfba9f777db1d6022d392b682d2a8329e087cef"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4748321b5078216070b151d5271ef3e7cc905ab170bbfd27d5c83ee3ec436695"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:847a35c4d58721c5dc3dba599878ebbdfd96784f3fb8bb2c356e123bdcd73f34"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c40d4eaad41f78e3bbda31b89edc46a3f3dc6e171bf0ecf097ff7a0ffff7cb1"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:21a5e440dbe315ab9825fcd459b8814bb92b27c974cbc23c3e8baa2b76890077"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01dd777215e2aa86dfd664daed5957704b769e726626393438f9c87690ce78c3"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4b06beb3b3f1479d32befd1f3079cc47b34fa2da62457cdf6c963393340b56e9"}, + {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:564d7922e4b13a16b98772441879fcdcbe82ff50daa622d681dd682175ea918c"}, + {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0eb2a4f660fcd8e2b1c90ad566db2b98d7f3f4717c64fe0a83e0adb39766d5b8"}, + {file = "pydantic_core-2.18.4-cp312-none-win32.whl", hash = "sha256:8b8bab4c97248095ae0c4455b5a1cd1cdd96e4e4769306ab19dda135ea4cdb07"}, + {file = "pydantic_core-2.18.4-cp312-none-win_amd64.whl", hash = "sha256:14601cdb733d741b8958224030e2bfe21a4a881fb3dd6fbb21f071cabd48fa0a"}, + {file = "pydantic_core-2.18.4-cp312-none-win_arm64.whl", hash = "sha256:c1322d7dd74713dcc157a2b7898a564ab091ca6c58302d5c7b4c07296e3fd00f"}, + {file = "pydantic_core-2.18.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:823be1deb01793da05ecb0484d6c9e20baebb39bd42b5d72636ae9cf8350dbd2"}, + {file = "pydantic_core-2.18.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebef0dd9bf9b812bf75bda96743f2a6c5734a02092ae7f721c048d156d5fabae"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae1d6df168efb88d7d522664693607b80b4080be6750c913eefb77e34c12c71a"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9899c94762343f2cc2fc64c13e7cae4c3cc65cdfc87dd810a31654c9b7358cc"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99457f184ad90235cfe8461c4d70ab7dd2680e28821c29eca00252ba90308c78"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18f469a3d2a2fdafe99296a87e8a4c37748b5080a26b806a707f25a902c040a8"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7cdf28938ac6b8b49ae5e92f2735056a7ba99c9b110a474473fd71185c1af5d"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:938cb21650855054dc54dfd9120a851c974f95450f00683399006aa6e8abb057"}, + {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:44cd83ab6a51da80fb5adbd9560e26018e2ac7826f9626bc06ca3dc074cd198b"}, + {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:972658f4a72d02b8abfa2581d92d59f59897d2e9f7e708fdabe922f9087773af"}, + {file = "pydantic_core-2.18.4-cp38-none-win32.whl", hash = "sha256:1d886dc848e60cb7666f771e406acae54ab279b9f1e4143babc9c2258213daa2"}, + {file = "pydantic_core-2.18.4-cp38-none-win_amd64.whl", hash = "sha256:bb4462bd43c2460774914b8525f79b00f8f407c945d50881568f294c1d9b4443"}, + {file = "pydantic_core-2.18.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:44a688331d4a4e2129140a8118479443bd6f1905231138971372fcde37e43528"}, + {file = "pydantic_core-2.18.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a2fdd81edd64342c85ac7cf2753ccae0b79bf2dfa063785503cb85a7d3593223"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86110d7e1907ab36691f80b33eb2da87d780f4739ae773e5fc83fb272f88825f"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46387e38bd641b3ee5ce247563b60c5ca098da9c56c75c157a05eaa0933ed154"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:123c3cec203e3f5ac7b000bd82235f1a3eced8665b63d18be751f115588fea30"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1803ac5c32ec324c5261c7209e8f8ce88e83254c4e1aebdc8b0a39f9ddb443"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53db086f9f6ab2b4061958d9c276d1dbe3690e8dd727d6abf2321d6cce37fa94"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abc267fa9837245cc28ea6929f19fa335f3dc330a35d2e45509b6566dc18be23"}, + {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0d829524aaefdebccb869eed855e2d04c21d2d7479b6cada7ace5448416597b"}, + {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:509daade3b8649f80d4e5ff21aa5673e4ebe58590b25fe42fac5f0f52c6f034a"}, + {file = "pydantic_core-2.18.4-cp39-none-win32.whl", hash = "sha256:ca26a1e73c48cfc54c4a76ff78df3727b9d9f4ccc8dbee4ae3f73306a591676d"}, + {file = "pydantic_core-2.18.4-cp39-none-win_amd64.whl", hash = "sha256:c67598100338d5d985db1b3d21f3619ef392e185e71b8d52bceacc4a7771ea7e"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:574d92eac874f7f4db0ca653514d823a0d22e2354359d0759e3f6a406db5d55d"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1f4d26ceb5eb9eed4af91bebeae4b06c3fb28966ca3a8fb765208cf6b51102ab"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77450e6d20016ec41f43ca4a6c63e9fdde03f0ae3fe90e7c27bdbeaece8b1ed4"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d323a01da91851a4f17bf592faf46149c9169d68430b3146dcba2bb5e5719abc"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43d447dd2ae072a0065389092a231283f62d960030ecd27565672bd40746c507"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:578e24f761f3b425834f297b9935e1ce2e30f51400964ce4801002435a1b41ef"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:81b5efb2f126454586d0f40c4d834010979cb80785173d1586df845a632e4e6d"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ab86ce7c8f9bea87b9d12c7f0af71102acbf5ecbc66c17796cff45dae54ef9a5"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:90afc12421df2b1b4dcc975f814e21bc1754640d502a2fbcc6d41e77af5ec312"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:51991a89639a912c17bef4b45c87bd83593aee0437d8102556af4885811d59f5"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293afe532740370aba8c060882f7d26cfd00c94cae32fd2e212a3a6e3b7bc15e"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48ece5bde2e768197a2d0f6e925f9d7e3e826f0ad2271120f8144a9db18d5c8"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eae237477a873ab46e8dd748e515c72c0c804fb380fbe6c85533c7de51f23a8f"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:834b5230b5dfc0c1ec37b2fda433b271cbbc0e507560b5d1588e2cc1148cf1ce"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e858ac0a25074ba4bce653f9b5d0a85b7456eaddadc0ce82d3878c22489fa4ee"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2fd41f6eff4c20778d717af1cc50eca52f5afe7805ee530a4fbd0bae284f16e9"}, + {file = "pydantic_core-2.18.4.tar.gz", hash = "sha256:ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864"}, ] [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" -[[package]] -name = "pygments" -version = "2.18.0" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - [[package]] name = "pytest" -version = "8.2.1" +version = "8.2.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.1-py3-none-any.whl", hash = "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1"}, - {file = "pytest-8.2.1.tar.gz", hash = "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [package.dependencies] @@ -687,20 +719,6 @@ files = [ [package.extras] cli = ["click (>=5.0)"] -[[package]] -name = "python-multipart" -version = "0.0.9" -description = "A streaming multipart parser for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, - {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, -] - -[package.extras] -dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"] - [[package]] name = "pyyaml" version = "6.0.1" @@ -762,33 +780,20 @@ files = [ ] [[package]] -name = "rich" -version = "13.7.1" -description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +name = "setuptools" +version = "69.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8" files = [ - {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, - {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, ] -[package.dependencies] -markdown-it-py = ">=2.2.0" -pygments = ">=2.13.0,<3.0.0" - [package.extras] -jupyter = ["ipywidgets (>=7.5.1,<9)"] - -[[package]] -name = "shellingham" -version = "1.5.4" -description = "Tool to Detect Surrounding Shell" -optional = false -python-versions = ">=3.7" -files = [ - {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, - {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, -] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "sniffio" @@ -803,13 +808,13 @@ files = [ [[package]] name = "starlette" -version = "0.37.2" +version = "0.36.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, - {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] @@ -856,23 +861,6 @@ files = [ {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, ] -[[package]] -name = "typer" -version = "0.12.3" -description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -optional = false -python-versions = ">=3.7" -files = [ - {file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"}, - {file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"}, -] - -[package.dependencies] -click = ">=8.0.0" -rich = ">=10.11.0" -shellingham = ">=1.3.0" -typing-extensions = ">=3.7.4.3" - [[package]] name = "typing-extensions" version = "4.12.1" @@ -884,93 +872,6 @@ files = [ {file = "typing_extensions-4.12.1.tar.gz", hash = "sha256:915f5e35ff76f56588223f15fdd5938f9a1cf9195c0de25130c627e4d597f6d1"}, ] -[[package]] -name = "ujson" -version = "5.10.0" -description = "Ultra fast JSON encoder and decoder for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, - {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, - {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, - {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, - {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, - {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, - {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, - {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, - {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, - {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, - {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, - {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, - {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, - {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, - {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, - {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, - {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, - {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, - {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, - {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, - {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, - {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, - {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, - {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, - {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, - {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, - {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, - {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, - {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, - {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, - {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, - {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, - {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, - {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, - {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, - {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, - {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, - {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, - {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, - {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, - {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, - {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, - {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, - {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, - {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, - {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, - {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, - {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, - {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, - {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, - {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, - {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, - {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, - {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, - {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, - {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, - {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, - {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, - {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, - {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, - {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, -] - [[package]] name = "uvicorn" version = "0.30.1" @@ -1209,7 +1110,21 @@ files = [ {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, ] +[[package]] +name = "wheel" +version = "0.43.0" +description = "A built-package format for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "wheel-0.43.0-py3-none-any.whl", hash = "sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81"}, + {file = "wheel-0.43.0.tar.gz", hash = "sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85"}, +] + +[package.extras] +test = ["pytest (>=6.0.0)", "setuptools (>=65)"] + [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "aa07f3aae7c1046663cb84306cc31abf669b7910e6b5d445a5acc70f956b68d1" +content-hash = "d999a99c717019087f238f4f1aeb89b1671a77e53f175108bf91fb85ac0be657" diff --git a/rnd/autogpt_server/pyproject.toml b/rnd/autogpt_server/pyproject.toml index dd68be7ff..bcf7b4914 100644 --- a/rnd/autogpt_server/pyproject.toml +++ b/rnd/autogpt_server/pyproject.toml @@ -1,8 +1,11 @@ [tool.poetry] name = "autogpt_server" version = "0.1.0" -description = "" -authors = ["SwiftyOS "] +description = "An Agentic Experience" +authors = [ + "SwiftyOS ", + "Nicholas Tindle ", +] readme = "README.md" [tool.poetry.dependencies] @@ -11,13 +14,46 @@ click = "^8.1.7" pydantic = "^2.7.2" prisma = "^0.13.1" pytest = "^8.2.1" -uvicorn = "^0.30.1" -fastapi = "^0.111.0" +uvicorn = { extras = ["standard"], version = "^0.30.1" } +fastapi = "^0.109.0" +[tool.poetry.group.dev.dependencies] +cx-freeze = "7.0.0" +poethepoet = "^0.26.1" +httpx = "^0.27.0" + [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] app = "autogpt_server.app:main" + +# https://poethepoet.natn.io/index.html +[tool.poe] +poetry_command = "" + +# poetry run poe xxx +[tool.poe.tasks] +test = "pytest" +build = ["test", "_dbuild"] + +# This might break your python install :) +install = ["build", "_dinstall"] + +# https://cx-freeze.readthedocs.io/en/stable/index.html +[tool.poe.tasks._dbuild] +cmd = "python setup.py build" + +[tool.poe.tasks.dist_mac] +cmd = "python setup.py bdist_mac" + +[tool.poe.tasks.dist_dmg] +cmd = "python setup.py bdist_dmg" + +[tool.poe.tasks.dist_msi] +cmd = "python setup.py bdist_msi" + +[tool.poe.tasks._dinstall] +cmd = "python setup.py install" diff --git a/rnd/autogpt_server/setup.py b/rnd/autogpt_server/setup.py new file mode 100644 index 000000000..8ac00b14a --- /dev/null +++ b/rnd/autogpt_server/setup.py @@ -0,0 +1,56 @@ +from pkgutil import iter_modules +from shutil import which + +from cx_Freeze import Executable, setup + +packages = [ + m.name + for m in iter_modules() + if m.ispkg and m.module_finder and "poetry" in m.module_finder.path # type: ignore +] +packages.append("collections") + +# if mac use the icns file, otherwise use the ico file +icon = ( + "../../assets/gpt_dark_RGB.icns" + if which("sips") + else "../../assets/gpt_dark_RGB.ico" +) + +setup( + name="AutoGPT Server", + url="https://agpt.co", + executables=[ + Executable( + "autogpt_server/app.py", target_name="server", base="console", icon=icon + ), + ], + options={ + "build_exe": { + "packages": packages, + "includes": [ + "autogpt_server", + "uvicorn.loops.auto", + "uvicorn.protocols.http.auto", + "uvicorn.protocols.websockets.auto", + "uvicorn.lifespan.on", + ], + "excludes": ["readability.compat.two"], + }, + "bdist_mac": { + "bundle_name": "AutoGPT", + "iconfile": "../../assets/gpt_dark_RGB.icns", + # "include_resources": ["IMG_3775.jpeg"], + }, + "bdist_dmg": { + "applications_shortcut": True, + "volume_label": "AutoGPT Server", + }, + "bdist_msi": { + "target_name": "AutoGPTServer", + "add_to_path": True, + "install_icon": "../../assets/gpt_dark_RGB.ico", + }, + "bdist_appimage": {}, + }, +) diff --git a/rnd/autogpt_server/test/test_app.py b/rnd/autogpt_server/test/test_app.py index 5040c3bd7..83ed5def0 100644 --- a/rnd/autogpt_server/test/test_app.py +++ b/rnd/autogpt_server/test/test_app.py @@ -1,9 +1,9 @@ import pytest from fastapi.testclient import TestClient -from autogpt_server.server import start_server -from autogpt_server.executor import start_executor_manager from autogpt_server.data import ExecutionQueue +from autogpt_server.executor import start_executor_manager +from autogpt_server.server import start_server @pytest.fixture