From 985a7d7bea95c40c05737cd2a00b4220c5dd9a1a Mon Sep 17 00:00:00 2001 From: 0xDEADFED5 Date: Wed, 2 Apr 2025 22:36:47 -0700 Subject: [PATCH] debugpy contrib --- docs/source/Coding/Debugging.md | 8 +- evennia/contrib/utils/debugpy/README.md | 122 ++++++++++++++++++++++ evennia/contrib/utils/debugpy/__init__.py | 0 evennia/contrib/utils/debugpy/attach.png | Bin 0 -> 23027 bytes evennia/contrib/utils/debugpy/cmd.py | 31 ++++++ evennia/contrib/utils/debugpy/launch.png | Bin 0 -> 58765 bytes evennia/contrib/utils/debugpy/vscode.png | Bin 0 -> 13564 bytes 7 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 evennia/contrib/utils/debugpy/README.md create mode 100644 evennia/contrib/utils/debugpy/__init__.py create mode 100644 evennia/contrib/utils/debugpy/attach.png create mode 100644 evennia/contrib/utils/debugpy/cmd.py create mode 100644 evennia/contrib/utils/debugpy/launch.png create mode 100644 evennia/contrib/utils/debugpy/vscode.png diff --git a/docs/source/Coding/Debugging.md b/docs/source/Coding/Debugging.md index 7fc291e471..cd168a2ca8 100644 --- a/docs/source/Coding/Debugging.md +++ b/docs/source/Coding/Debugging.md @@ -251,4 +251,10 @@ this directly). | | `` | Repeat the last command (don't type `n` repeatedly, just type it once and then press `` to repeat it). | -If you want to learn more about debugging with Pdb, you will find an [interesting tutorial on that topic here](https://pymotw.com/3/pdb/). \ No newline at end of file +If you want to learn more about debugging with Pdb, you will find an [interesting tutorial on that topic here](https://pymotw.com/3/pdb/). + +## Debugging with debugpy + +If you use Visual Studio Code and would like to debug Evennia using a graphical debugger, please follow the instructions here: + +[debugpy contrib](https://github.com/evennia/evennia/tree/main/evennia/contrib/utils/debugpy) \ No newline at end of file diff --git a/evennia/contrib/utils/debugpy/README.md b/evennia/contrib/utils/debugpy/README.md new file mode 100644 index 0000000000..3402e76bc6 --- /dev/null +++ b/evennia/contrib/utils/debugpy/README.md @@ -0,0 +1,122 @@ +# In-game debugpy command + +This registers an in-game command `debugpy` which starts the debugpy debugger and listens on port 5678. +For now this is only available for Visual Studio Code (VS Code). + +If you are a JetBrains PyCharm user and would like to use this, make some noise at: +https://youtrack.jetbrains.com/issue/PY-63403/Support-debugpy + + +Credit for this goes to Moony on the Evennia Discord getting-help channel, thx Moony! +0xDEADFED5 simply tied a pretty bow around it and stuck it here for everybody else. + + + +## Dependencies + +This requires VS Code and debugpy, so make sure you're using VS Code. +From the venv where you installed Evennia run: + +`pip install debugpy` + +## Enable the command in Evennia + +In your Evennia mygame folder, open up `\commands\default_cmdsets.py` + +add `from evennia.contrib.utils.debugpy.cmd import CmdDebugPy` somewhere near the top. +in CharacterCmdSet.at_cmdset_creation add this under `super().at_cmdset_creation()`: + +`self.add(CmdDebugPy)` + +For a newly initialized game, the result would look like this at the top of the file: + +```python +""" +Command sets + +All commands in the game must be grouped in a cmdset. A given command +can be part of any number of cmdsets and cmdsets can be added/removed +and merged onto entities at runtime. + +To create new commands to populate the cmdset, see +`commands/command.py`. + +This module wraps the default command sets of Evennia; overloads them +to add/remove commands from the default lineup. You can create your +own cmdsets by inheriting from them or directly from `evennia.CmdSet`. + +""" + +from evennia import default_cmds +from evennia.contrib.utils.debugpy.cmd import CmdDebugPy + +class CharacterCmdSet(default_cmds.CharacterCmdSet): + """ + The `CharacterCmdSet` contains general in-game commands like `look`, + `get`, etc available on in-game Character objects. It is merged with + the `AccountCmdSet` when an Account puppets a Character. + """ + + key = "DefaultCharacter" + + def at_cmdset_creation(self): + """ + Populates the cmdset + """ + super().at_cmdset_creation() + # + # any commands you add below will overload the default ones. + # + self.add(CmdDebugPy) +``` + +## Add "remote attach" option to VS Code debugger + +Start VS Code and open your launch.json like this: + +![screenshot](./vscode.png) + +Add this to your configuration: + +``` + { + "name": "Python Debugger: Remote Attach", + "justMyCode": false, + "type": "debugpy", + "request": "attach", + "connect": { + "host": "localhost", + "port": 5678 + }, + "pathMappings": [ + { + "localRoot": "${workspaceFolder}", + "remoteRoot": "${workspaceFolder}" + } + ] + }, +``` + +Use `localhost` for the host if you are running Evennia from the same machine you'll be debugging from. Otherwise, if you want to debug a remote server, change host as necessary. + +Afterwards it should look something like this: + +![screenshot](./launch.png) + +(notice the comma between the curly braces) + +## Use it + +Set a breakpoint in VS Code where you want the debugger to stop at. + +In Evennia run `debugpy` command. + +You should see "Waiting for debugger attach..." + +Back in VS Code attach the debugger: + +![screenshot](./attach.png) + +Back in Evennia you should see "Debugger attached." + +Now trigger the breakpoint you set and you'll be using a nice graphical debugger. \ No newline at end of file diff --git a/evennia/contrib/utils/debugpy/__init__.py b/evennia/contrib/utils/debugpy/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/evennia/contrib/utils/debugpy/attach.png b/evennia/contrib/utils/debugpy/attach.png new file mode 100644 index 0000000000000000000000000000000000000000..27b992890a6850d4a3e70c6b33704fc786274f6e GIT binary patch literal 23027 zcma%j19V;Ax9$lW+iILNY-}}Z(AaEaCymkAR%6?0Y}>YNTW|OGzZ&OdkducxGPI;4=tB43ZELQgU88 zNpsUunq7Lx=)w&lK|nDa5W9zB& zchz^i;~L}DcRI4_nwk(k#4tWJm#oDgArwfVelOrrroJF>IKc!Q5+C3IhbZ<4z#$Ab zG;jz>`1cHE!LXyzLD_Jk0!N*f5xdm*X}7FK*xF#=6@<^sY;31ls+Bcm>Q9UAND0lH z3(l8I@dX*~Z|b%6f7*UBeDJd!7FMgt2+x_W_QBUbhAmR7E1$PWKpjVZ z3x#__If1R=#6`15xw+(eLC+~|wPXP=Cnd$jbEWDKpy7D>>e|{<+WyZS7+6?OkB_5? zOuq5!v$M)&DjA$V^@w{fuCFy~&EiBzNyPf+=I+v*)~af2%gW2ou6g_(x`q=N?{yQD zRaIl%gqP1r2R0lK#tC0BHcWSS65ecdW_C6%53C3ae|P9rCBIj4z8xwSLxa4;Uzrzk z1G@>sz(aeFma{ncz?Es@uo<+zBSo>Wut0!=a}q?fx3>odic3pNJ0V7ClrbRtfH!<^gAU5 zA2dXR8v$~IMChg+pBjw!lt6Cs;aCkk0JU|z4Ci!nPz=)NeSQ$rKP1N`a>sV znwra^p;+!$gH*G#vp;_P;OFPh-R|n@q7FGK$0;u_2WGBDCP>Ni{dt{dg~*-xfU?bI zGF!AKfhDk`=3=J{%xip~g{MTeZzC7|a18KQ6DzB_+FIZ?jmJ_i@9xTrihkPLlb<#< zG&D3eIviYf2O=9A7?6{bQ)9s4V_fH8B?3I?t+Rv7m|L_o{wE^uJ2W{HN>6^G* ztVDjaD^K+bj3nZ_CQw_3=s#&J>8Edd&zz+NO>hN>BR_L^35NLy5)X`x>C{_kXF%3k zT3XJRX(ptl(WAg@ZEYEir;one0Sm+Z{q^1x_`SKgVKbkzpQlw)Rb6j#Fn_$-1#WXm z(b`+^;;i|6X?dANzf;=f?raqw2j}4ENOGJP5?lyaT&K(R^QG#F>gwupawr%WJ@!$6 zxu)~Kg@%Oar6Ympu*{EUijL75 z{a_s{D_S{|Q93!)k~DFSs$RG(MuoFxX%OJ5s`Ilf>+bj3-hzVb^gC-op`n`9Mx(3EPFw^LU$Tf#;rzeY z@;FfX#>Og&i3JD}7nYT2x4N=Tk~j9p#Kh!(OPTX5@*gV~)%2E-kN_qfB7Robbsq<` zF_}|frP|rb?fd{k#19UCmcvwcF{2m;9@b9OX;kh1B};@f`YU-Fg*+6vkgzZWZnSpW zFI*5EJ-yomR>n9LVqRWeV^fo>n;QfuI1pHBM#jeXWgb85!P+wK`1CK19_uIE`b#-;*Ce_yK{I(a@;{xX+gD%d_2FAwdn(@)mlM@r4_4^Q* z-GF#gSYFORM^{=_W>{y!IRfXfWOB-{P%>*)y98K!?(e9}&kuN!#XevFuG+&F`$DrC z*>e@aFga=f&}LdWf4@ z|9}E|4`+Ze{zbMgoiB*eA#r>R2v2ovuaJ+Z0sj7?;^OD4&Gk)9$-R28{$H3U$Vi!n zfhcen%Gj1E5P{1QP&j}>GHd3btxfnU&ycXZuwehW)3&jtf1Wf>l8={HCY4i29^=(_ zeq9{6r)+A#&Gz>8?Doe-Q#i(FXX8eV=I7_{1wnfAL4ojaaJCK(+VxgxcMd>Is9HQp z-z6F#+}hu-|Mh4qARqvdBMdxmR@+o@hU@9+$^GH&`MmvpHl(7diJO$1g}G?b#8uZW z&>6$d+4!OMW^YUcdWLBwrTMNcoCTDqqPy|+eU)1}&@BQq(fVQk%B(d1OFb4?{BC1Z9;Ig?EK zeK-e_x6+YXT3T3iYM(!wle&JEIbzacxUcYhrBydEHaCBs6#s}AV}5wOjCoighqj*( zdvOun>v@-~!+Y^t<91}WbiaD*phLd<_@`uoSKU7DL9gWNm!Cg>dO`{_>b8w++I$7| z&(1n5)tI`gHI|gnT2cV9>GbsU5QGYQd-PkJ=Yyah0wN-XL)-nDTN5r&ezuF@pN-Y7=s>A z@A3L{t6ZXDx(*F21YV-ZgK&}0uGV^Yr_07>W|Bw0hj+=@caM&awzsD}@3{u0Zk3z9 zP>l<`^QMeavPc0T%FgbZ%9$QG^Tr6k4GllHpY9w*pUnF{AKf3%y<;&&@+zjAm$$7y zXdpa3^q21H6CwF!;^N}!_l0GVedg0~7z%TU+C0q?4pb@A*gZd&RiSWb2$tw*GA@Y$ zZUl%IfqNi9I;{Slo~UgD3RrE+A3sRwk!$#7<<-=1u(1JDAR!|mEBnDqu|TFwqc)^e zGFx-ykD-*35{9XNBV-;j&lj4wr|0MWogJJ7@gDAlxH%{Q%nC(HD+@v6NJs zgNZC8)j))6T!^gRo-O1^ha5IUIh&25XD9g-7@v)>AGth#(XGLQH%|k}{~P!EM1cJ_ zm<$~v-@2~x7Z~HJL}VF1=iQ*k$H)6h68(j-Faa_DSNQy|%N(-h$UzNk7;Nz za2=xmba0q}A@tjsayCtrP>>mGyPlZesV8)fe#Z_AvxQ5C2U06Ivk6n9Dwjz?HRoS! zk9#t*`fG#C$qpok735pDgQVBr@$*Wz%B%luN3-^1#`}ggkw@eSs~T&RimgZv zd!RCK``Y8nLJg02o#)jG&h#IQ&gV+{S4`}5ik7?k%EfwQKkMN$D)i-TIka&W6Yp?I z$DE^pxeP5>kj0u0=9>(`iAFBtCZnB`%b@nf_@m-Jf(gdVX=|Fqq_^xv7er31W7~cJ zhv0o8dK-(W@dE(}Cd};BILHNRQmfE1xxrQ{q@!FY9yyB9yz&a=Tt}d}NP|!H_eGnm zK+*!yIL^q(H=$2_2`*ygw{fwa58#DO+0LD&op7Ew6E4DPK0O(-Z^~L2jFE#-7h#f` zu2j^#!34KqT;x8vnTZ52%M_P^_MJ^TbBg}3rgQ723bu zGAZba#F}r_2QtMYC^fY(k+Sw~FYZmmyh-Kj=|5Gta?)w0tkk+l)|~7^yC8!@YrYZn z-TGW@-DM`GqF$KKzbrzkFqkJSjSjybhMvg~u5@j$JF;6olMiF{5zXm`?z8=>eY^H~ zvtd2$0TuFpT8UvNck2c$WUWZK;~7_zF=Hs#{+R+yE{?oHmNTRB?Pa2Ma&c~(ZYFQ= zqnN}(XtzMJ%YDx`5GTo}N*pJn<+ESQmD(8(vOjZdjp2^GmNKX4%5Z(y%q>EV*O~_f8|mXq5@$ zVL=lHojitBr-abjdZP8fl~*4r80XY%6En7Mu*#yD_!l`R1m$S`)!SX@Vqd~)K_mRz zC&o3myQ9azRj!Q0FqPw$>((Q%N<-IP;_b!U+`*@onGJim%}Z+@;X&0dKOdD?LQEJa z*$X`AK9<9to)rW<%qFoiKDLxNFv4O_4k56*0o>1 zuSXG*v@HlEOzTE?v;0^?tB&6jnE5`aS*e$0dw+=!u`D~-8~4V51ac+lZV1>4jqrf| zA+b4_hKZ`M4TpvioH^c)Gv9SR=XXN;rBll`qCvPu>Q|WSvT28et}4Va^QN_2=hCNNfQFOCy6c+qSx8qGNc&Qs5x~}PO4>!WSgY#E&^t4_(TE^ zN1dHfpniP~J0WBsJDT+-7Eya@%~W|;I2*sj^_j$R>L*Rx@Fnnu*7|G9P`kyA?d}}L zM$7!!ImW>?XINJ=? z$>dSI{X+<@#R!sRJ#a#-jDreU}oA~bNF0`%Tv!Qd^f6@a|bTzX{~8# z6!;)7OXiElfX~<-hCgkw{fG3?;QJoW;f`Bkej4uE+KtC~=M+#)pBc}Lq4hZ*6>(A3 zOJ`N=uGkq`#!`=!enSfe0D5k(GZ@ILwf!$ve<8`Si-h{|+dYpJR*V^0Hi76pL;taz z=9}&dW2XRiL(9x`$QZT~>!J*-8Jm+8l3Yw$RHb|(Jw)6MEs3RyGrwXvy#JR?RfV|I zRGWI0l6@Ajr#Lxa_vXL2(ft)-;YqrU5_m93AxO_b+~od{Jks+c9-k?QKZ+iBx~qbQ zU@Zd9teRRzmu1{0}bQ0P8bUH9%aOhU|5g9 zSjQih?I~G~+JfzpumIi)iE?(nnS;+nH!HZhmn}=K0f-x8klzmoQhmEtGX=%l?FH`g z6kA)jZS_VvlRsID!tN*4+{1ad{PERnJ9^83o1x=4Uh=eFt`S4IXT9K8aTL!Sa;o8$WVOsa^NLmyFn()_Yt`l#`OS)Q|8UQ8<%dwLE}c! zwM)M(ng)7CBXKk&>MJ=KtTG)8M~Bs(l|+ll;j~$FZFq&Dx)qY3j1?}Yt7|R(Rl)qY z2F(e2a2$3$JS4cc-~^Uju_RSS9zzVIa54%dN`DM7fy-pZG zw|vEtimm{HoSa-1p8hU0=yU%l7!8~~biU!D!FL^-sxOAzOIRSEU#VF;a?4TIHjc2I z4Yf%%M;6S#`E}(c4VYcO%ugwCL{%AOB12Iu_8c%lLdZ!V*9N3d{gEPaV@|8HPA@yr zGT*$04a_Z`8yF{8KDsVbY1_CKrudfW{&I0^h7P}6ho!mebq#y$fTK6tnzD*`Yw*zs zdRjxkfyN6d&1utlO~x#brGK%=)yXIe#FaF9pR-x70dLN) z2cuM&U~->@^ZrS4kk^jGA#99a3_kGt=0{y(^}XKaa7%<4dhio(H$KUI_2T%%@n!xJtGD1F&3r!)h`Edg zu~2bVuI$>zIDh4CHaAywnV)r)WkfAGEFCl>7{)2T3nwogmz;k4L?oG zCgOQ76E#jRW8bcIsv#B^DF!d&Fzj|_Dguz6ZM-Bqh2O3pRd-O2AIp#J;WI|tjq$!K z>uUz0*XfH4MzUk6BG0eLvfy4TiMxljR;V{cWo%Ub z@XVQI5=|FDUbjOv{_k2lZ=?l9#TN(fsYem22fw@Lj|qPLBETD`z~P6KX;!g3YH6V- zCOX(gz=Yz%{WS)=j=QJj6r)zsJ#SFQ-;|#8IqMg=CYk7P+VYn6EF#VFptrq2>8z1% zsodpWEhYP&-}v@qe(G3+*RtES#m5w9w9a|jEESvljcdDE-j93Rgx-_#-Ujy8M;q(~ z-;|~qD%L?@Phm2%%L#3p)?X$ATO*0N%C+k!o;W17h;aMeEv09M)Ip#K+MGJ~8_M3n z#Uw||)Q$FTf(#RC)50i%wp3Iyjr3)sd*7Ngp{u4$N3guzM#6klAuht9*c<8Q;+T2Z z7@kiRyKX-AGAKmz6Do45e1n@l25IPIoiHN;Dcmi8(3%9~50-}JDIPlp=_9{=bsTJ| zbS#OfDI38e5us>J`+dW1?-mTtk}01?k1?gc&|Rhbb9-Gz^6K#OZxxC2ZxWJ{X7sWJ zaAS|;kK`1OASL6B(z>)2ZZHi25}M$db)^`3g#j?{p{Y-vQO8v=Lf7k*CZ zYPQekM>hG>VO^cc;I{GofiYgPWZP0uwLgilag_-`kxY%IXubvl8?a+~+<-fLho+yR zP#G1B9m{$XnRufg^WOBM-W)64qBcWDZ>?#JL^kHq2Qmp87PQ`t61kxBBoW!s_vjy` zLf>q~_6X$WH`)-sA|LGXAKqK=P0|wk#(y~3KU;MDGFZ8E{n&R2Q6Q~CSLxPP;)9IY z`%ZMgaX`}THI`t8bAq$?E%{>9yimem!q#pvvbBBuL!3THPDf&W^(UfPJyroJu)+0> zDv*czZ>)|U4p4WqK}7q@^#nNLv_MN}+ueOG7y1Hh8Q&s=?(xVWabZQo#DEeTB`N7v za18@i=<(4JP*<)bLr}s7iHL|~u0i)O5f4mIv9j6^#!&2dhKt3u+3%{)KXt??-s-dq@dm{Z|odn6gw@z1yN8yAYLNt(PTDWB3a5<#Fo#J zdA2Y`NWfJP9Az^2`Rw+jjg5_?zy8k1knL*$_udHSSaW{3*gTlb0g6z;gJ++`@;?lK zdlQqB`}OKES@H$*fO)mHw!TTgdPDMI(QAm5;`3#EA0rP74|h6WvotgmRsAXt6htMZ zrOAzfZxj=QMv6(lzgTTtAf5DOXu{V#PSW9UD(`Z;KX#}#B{VFo1}N`VFaCA+MmsAj zD;}pa1C2FIS{1EETYpCj=A;v#=<&`yfP#m2baFy~ib{e46VIUSx<8gS7)xbrWW>$G z15|d2A^~Qp-fC4+9z#A;GLQ65ThmRU$o_h7R7FL_-s!*zf_oo}yEfziETM#yEE%ZQ zt~LDZUR+H2mCA0pRBJvD5I~B`$_|@d{=jFWuozfd>nbRqp`iS=t&@`zQKY!MlAPQG zP-_7P2WPif_-<^BjfW>mlLe2Bi3tk{4txRK0N`$UczB2+fmh6ojq87O1BHpmurP8c z0zyIxGzme$4&ZzrA0O(FDf9wxuYZldrbzg9>C7Ab)&6Q{(8~){rN#?Pj6y^8US9+u zZS+@_QnjDQbM&W&K0uk*)U;?5kDZB0o*DxT46Mia!kM>9t;O+F10Fs!PbwilHy08T zGL_dwfgBB0)M0`MRI1%vCk$-9#~9H6GMR)f$7S^k7IjKA^z`(G)r&wauYY@SVd0?0 zRasfNr#!j~pd&)D=!?tBC_Wf6t9y9xpK8~@A1CDgQ&x<`=NMaE@vI7&OiA(2oiNQG-OMX7B zU;k={7Hj}`CZR=@M%kIl%-1{xLLSGkH|O0UOoh#C(NMs}zY2?rih=|&X6a9Va;6>} z9FU1e5OCRw6!gy9B@KLqrRXJy8DTDw#`cSSjqY}ocsT{o^M~FYufJdg|3hYXJ&=8S z1rv!cw^fZ`x-{<uEBmoZDrCofXdsqeR#nD0wt1w3mjzI`0IGCtVieJ;bEfN=2c%INjhJpWbhrJ3#7MYTBMBqZ@&W* zqf%mSZVvVxSmO4sS_}#1stYqSxdp{zrH+bXC0v;kCp1CRrg^kwx{+@iel0&99o&lju3Wo3N&x2qN{ z_@1*_%Gf_iN2DYtPd)x%NRV_Bs8ycG-%L9FEBH7!=q3jMp8PpHnT7?=7kYssP?M zG&`FV|DRzrAuIq8OWXaCR4!0@D^ik@t{a%_)@v&>Gc^EZlqBu=d}o=)1xrOm#hjJZ zt&50=2oltj%*x6lUzUz=b9Jpl6658Q&}%6y4C>yD@*vn!CzkmBB>KI|-eG{M)n!K^|5U;KJWv$cSnD}@p7FdA-I-7Wn?5IGPD)L^Q7x}iLYE`Rwa!@5@9uam7a!L z*E6`cPQ?V)w=GTv?IV*ph6qTb>c3{@K&lC)RL+NoJXG$uk0pn3=!^C`r;3ist#V{7 zY7v6{Jhn7F0WSfE4FkL*ljXBNuR8vaQT1R`+9p_JKROKL(kFCp!Hu1rnX=n_pz;k} zVg0b9{csR^QTd@UIL!@8j5QdUaOoOFcvBe8xYO;4!Hdxeixdf&;xgqD+CMrfFRBUz|sl4zg&|OG0!jtKIVrM z7t=7)A6y&-jf_Z-^pJLUF`=xZBwGqLuB*u?tJL?J9ox-t#H8 zo%SNwX8ZXZPKv>bZwGg``-9w@&LsOng38n7V?=uTJ_v^k+R&Sm7q+8hyVJs}p9{KB z8vAQ!+o>XU60Ct>^q_(Hd^sU|LJo^GW1OUFshYQYIL?^d02A@o$O9FCCV(ay`A0z` z4Dl zWm6A_r$QXw(|Ekv0qBB@O@UN51~=eJOlyV+L<(p~m4L zkjBhV-?A#>&fC7KDEyK0SCrDQ`#FTNJ)iq^bycffRP&j#>Y-w*#+F;uD*jC&_+i7^ zPwFlZr6<$a6$}XPVRwRmKe562y(4te?XmsEW|XFL*qA|gxY7Q0Fyf3#c7x{ky{=;# zuip%33y?yr-q3W7Y44^drqt}VWmrI7sQpJ!&5NNbqjwF_&%#ERv2KI@taCB=CGHI_ zp5JmfKwg7lVboy>J!#f;{`+UYS?zio!{8&&%8H^tL(-niC zuUiGr0i{KfK>yDgPwzyFB_E!pb`Z$TgHssWLtuxE-5g_Dg-G_n%bW`jL~yDrXHH}x z^~gkd$it`C&~ht(*(s|+mo84Xbm@nzlf)Kx*a6y5*PjayBV<%dn#K%xaQ#IG_u{to z!&U`&>sUfOdXWhi#Xg)i)p9g5NgEL?Ds2Xf%O3J-I*Lo-{3IEd9Gsw08OIZ*s2^F9h1N@G5)tJK>(Pyf0PMQ7`S> zcT!tYH4a}xf43e(WSgBP^8{V~IW`cDJ^E$(m}-iC$kl(;KJvkfZ}PmQeT!|4b9i4m zUHvuTk>5^BrQd_gvk#+5zKO#WGul@GQ|ANdNK_MWCBO`dMhFxRrbIErdCGy zT6i{fKOh;uMI}878|~e%lfNJ9xcaRKPW#x5+RaRko6UyG^)k9GW|v30!ML_Ho}0f+xy-E&4ntMl_Zpl>Q}MQr zQHg3UzN-+KTNREsjZ?~QOhv;rU2q*TmOwH(;i7TrYVf;&&ztYfFbZg~07u5F#-)u} zJz}xoECmbaaW6f|_^zL68F@`eSiWZy%7cOCR^))6KBO23r?9Ps-#7E)i&JvmH%zKBNA@c9Ylb0)TZA{EPZwOtVCdz7OHm4b6io!*{M7a`!;tCC`9aN4j z25i&nQ62CoU@8@fl+-3}Jj%+{m8Y_21URhh;7}|F%}Sc?$)Drb_d4J5sKNuo`N0}; zCW-ae@d#hgMCsf~+{yGmX=%_#ND&>!L%Q+a?Ttgtb%Ywjw;m@vz3P89WSess>`zabLX^bP{X_qFX z$FJ+r5P(pBD1j+Y2P$Mkro8IIRZvdgKKWw=EaTm9IMQyXM(hN})MGZg;s_BCp(z!I;4KZQ=nsCuy>>cU9hcXi&>*8 zQ93djONq`K2iMs3;_>T}g{TJ4B|W+(9<*hC7sZ-BzF>>>nx$P|p@F5Hymxu{!T`>) z?z9<7=fBzJjoVyMW_gxZVvwuuplRhykVK?6-N&~-rHn?-MBut3Q@S?ChwEyKro&Re zuRqeJ?Nnb4-d8GLvzj`9Z#-i5>Yb95Jh2x;^mt@3X7jiXEN8B1%Be+EBe68x`6F*6 z9!Sd?b0ZpqE66h-M%U~Uvyk(p;cOjO(f?Bavh7~g<6Xy?jj9J`CrPeQbR!oPAOG29ut*A5Jj@IV zAiW$gM`M#|CF@=tpA@~EF=(@i1U{KlVvA0Z@0{QCmMmRTQ}+CfahV-1kCng+_#_c# zb11;k;twb-Z2EbTLzdPNk|ACwE1)WI^qCB5b2qQSyd3m$;uz|%pL_vbb>vc4ZW4zUIAqsk8gZuOcxN@fdl{b!p82Run1ZT?t@~(Xw{N&1MvnwiX6<=jn^!`w z3nd8S`|4SeCDtva9xv&2kw?d$|2Vk|R+uwGa*N5z^) zghr}j=CQ`%M)Q6i9B9X&O@aD2>zP#X=&}x^lHp>j=$Pa8Bt0XuFESMkw>+?!1qQnm zxr9{Nlp>|Pc8$`WcB@mGKO4hJpI+~ad`3%Nn{I8yjJe4VqfWFx0thb|2(vdcyv9pC z#~kK~*SHwTtI&v1AvH$!|K4o&%LYKE!)NP11DC2^XsJTFG@YX zcV46B2RfsrBb{vQu8?&)pQ~7HhD7>}vFUy*WnuiHWv(NXO}mfWx@L&+_7E z^Q>3~77?5zWH>s)2^tazu(``;j?PKLj56X~=GJpG$?6~O43)U>i+d=S@ilDu<4{@Z z_Mn?IFzKkojXx!<&J~)D1?j}wNj>KqwvOoL<%@7J_+1yjDEbW(Dy}~~PdLjHz~326 zMzP*U7aailQ1(fvRip&+P<6qTLwU;=lw=~R48!{4&d$Dw58Ct&(BEYVtieLI)&s1L zk{o!uJLD~|x8|a+s&UiQd;ZABfqsGBdOm=}_$GOZ~m}`7hNw&4i1_N7AeClf$p&^+}Qhee8v-1(zK z@bUO^Mt?qzOe9Sq2M)v!y7rl1n3ox>qeXg;4cd$UsFDTtTFL5= zD&hDp8}b{!%jO;KOB&e#=-=R&h5yaPTE@qQhqk*Z$ONc5hEqvu^AJzobj>Ur`6s#x zNNavjA=ZbKJpLr?ddEM+%4WZ5*u0fu)m#TH=GRJktw}CPOGVOT%|CE#+k*iu8#Q`+ zC+FfxMI|zX{E85uUV#&Oqo1V~Ck^AV6MhOhBqgQ_k-YABh6KjJB6y&S2vx|0!_WCQ z!mzDsUF-e`?KLu*O2^q;MOCkL3_)gVA1k^tP<#*sTw{LiaXvEMZwcKNK?rDGG4s?am4uwu)>;byH2*XO8yb~t;w-n@2_ZH zYfqM5=ilDh$@lxUhEOs%=CY%5O{ zb(1JIe8hNeDZM-sdnu+MUokSd$E^f3K%1^~=}z&3YLoY=7#(iF;uwdhpF~ z0xLRUGh5YBE*GRwK%%~L@-c3u*M}?k^@44KEUER4&f29!69x6b%HlZS{d;X~bFZhE zAg`9EuK9W1OUO`DZ`yyd5`argM^(f0_)5`|_`h%YvVYV+Y@R&vyYsi9SM9^=KQlwr zbYZkQ%Xe-{5k}bw*1wRtN#AQ~2N<`JjNbRP6t{x*T-?G0fC2&u>t+Wge}SeKex-0F zD4_7D?)RbFw|W1&a8L|BfB$}^?jrnj9NtutXe|ba6Z+?AObLm(G&^klJ=gMj}Q+SsCu+ix|HU>z{E!f>U$YEh%I@ZLSdZ!D) z|4JZ@5e6zVeUul|wop+~3t9g56Cvn_>8Wb;W#ggbe(aF@OD+B1>K*?}tI_}Rb^}f{ zKyZtTThxvqD*pkA00t3J)PV$OSu&_Z$HQ~o89>b+%%?WHKU>8Rz5PK8uq3@9n9p~o z!v17`-vpDXP_#Fmv0k4J5(>a=kVj_z1M~%ym6T{!>G>fd&(D5^+l%Gj^ugy51GqTiBPB}k(O446Tj?oTxuWxyQ*Ehs>Z7cCePM2;pQFOLcW zs1hfq`+sn^_gqIZ|M^|1E)<|8vp`)c!jSm~}y0#`(#n8AS%xTM`4AUNmj@!?=)h55@^ zeE?OoT*0M`#!CWq^Stf8aG+cXB1VDfi~J}%*6RMuuASJied&0}#hs6Vhu7qG zZ$%VIg%v8H;q&%EDBvK>+gKm=NH?^izBl4GMf=L#RydJ96tTE6sW1|noUN@b=|?hB z(jL7_pgar`WJs`HZBnL;9W-DD6!-tsh+8!n5)$I#qPu`vwEYjzz{m)%`;&d()4$W6 zU|#Up3@6L=$QiD}0g(R?>spD&jg%94hbL#&@UuH0Lp_&3LjW6|4OEH{?(s3pnKC@3knn8`&1I1*k>TJLAG z`1K1LuR^;F15(yccyJTUW^$a*Jd;dsD>u7t`*pmxYYhAo2%k-XikVC`HY*kpzcUsK z$^al`x;X?*OiXwc3kFcHO7RbSj`8x`jV7!>%r`-RI)rb-Q*U0xT+26_7KS6r8m_kQ z3urLJRH_r88=9Z!TUwvhplI-LVf_LE7}WoW7mnPC1)x(MfFMU25_#`uuwvKx`B%)(7pz zog=f3=u|F@j-8pBnEu}VINW0MAubGPd$c8l08wMokj+hJMtM}Hs2g13#_+EJFDVHP4LwHY5Oxfq zv|nJv6AD-h>->?GQPQXpU(Ep!DI}LEFFYM7%?qmpKuo{|q8z{m0|W4GETG+MW!0{u z!DjP|AU?=uqr;nu6x!!zFzm;lSP1-L*}Md55Qy~(J_*XvTsQf|Aleg&3K3ZM0CCD< zJZA6ch!rdXP%k@#;{Tn8M<(DD{1DxvR|O~oKocqUaF9L#m4g*3YQdMJ1Kes1;W|K6 z-pWeC7@!9MoqEwu_S4s}d(vGC3(i28|I2{;6Rw@mV}$~wSddaps_}Sw8nYqXC*gC1 zEQKNl?Iu=_7iWb=N4x0gXrP_Of<2{sGpJYZmmTLAPSYK!n5=J8aMi7k#w!RE7A6-t zfUi1-VOi<2oA6aGMJ9QVmpKA?yAAKZCtrXqYqLJQ_~OqXJ}^`G`#YiO3TfzDlYw+pQXpJxzYM@|U0ZJFG;j9O4C;-EB8~O+6*V-9wHu0yL&EwcegO12V7l44xfoyOBszfK zzGGPOzm-zZ)vZt|=?}->KRZhYR1$0R+6oF^&e^n;ltl6g0WMI5CeEP!gC%uHGOMYA zl@-IIGmszh6kz{}tz6h3K%oH$6@u#zN*mWbo)Pc!`{ZIasjp-)Wj(qLJCBqVt=V~r z$N#L-zaY0M;^Y2pSoz3h3yG8B1nw0XiOh#EFCZO1Xkg}W3?1=e|$Yir7w-OgpuGj+O;^IQ4x z@cBJ1Dk|#Yv0cG~+Ny&pH9AXHUOqbf?-&Kt4+y+@H8u7x50~T>f?;kzUmT zpBFJ1RFRUT9=|=oCk_q{K*rKYQv_j&U)1A`15*7-tJ zPPZy^Qkae+IacUk2hhrv0qFy*b6^a70>mjREiNoYFDHxDfB|;0r>3TY3U7+Z`9?_w z{*&J1n>K(v#Bx$eO9cc+&{#(04+KO&!u|L$!*aRK0mdep#M6_vInX{KW!R%;?fHlp z0r!=L2aX0V{{jt8vZqctG-iuK6>3<3Y(t><+qNSN@jqJC|0{mHSz`h?(<>l5 z7Q*}sul}0?ipdMWU8hdK+_(7oK?0KGkMuz3nfYh5zn)qH;PRkA#e|fMY;akjssc4_ zgO(`@^@EFOPaLi4(~+p{$Y@5=^E*yNL4mQnynK7x0s|}S3=j+k0<0&5|4z=ST8)Xk zzJ5-4__qv%Br-BG;V)kl6ch$zhJi?Eufv%5056G*(|ecB z=k4zvj*fNGl$z}xufR##T3QT1XggV8dMb0tHGQISJXwfNN*dg??GM8hcKkE_sX&eH zZ97t+L90A24s#Lm%X>rt%-_}}7~#4v!{g)a0KRHn#05CwU=b?WbOaa}l+a!v5s>!_ z3k#o~oB$dl6cm(+l@(s#%1E`}QrOF~vV@jR6#hpTjc#2FlA`|f3D|Z})6kGM`T=q# z6=h{ZBcpQdW}rv8`APH$0W0)&#cmu560)ba_ge;kT55ywI1wO)@D@bD#!g5|`jjxt zVX@G$V)rF7^`DqaPE4FxSLX->bLaiPVEadCK>^ib9?JMFIXU%_usKQ$r)>ot}^BvHs*4trTV*&0%*uteWp#FS6%!H3&CB!m^P^M$ z5ZIUkJ4QmnZ~TDcM9=br1Zg0>fOujwG>-x_Gs{E+S&Xs$`X?5f{9R*aaSaOLRQG&6X@ok4KXkwARB>>-%$CR%C8x z8DBKN0jK3D@PQHpn2yIbdN@|6kJ-lv41wLZTAn-4xwr6im652q87TjRKVWN82xsv9 zz>xZIZ?NKwvvv3GX+5&#B&CIoa`z9KatN_I=+z$oF)=AgqKhAf`GL?kfAjm!)w!{s zJ03nWt;O?ZFVu%#O{8omL1?J_aMh2M-^7bj0-#ZUcn+gnV& zySrl})X~45P||2+ZT)_Be6L&EB_p2BJI<;E^d}!~0$uoU29=i=xYcfU9973dfxBUw zOo#=JaI$H??2h*;8$&rfSp>fR+4d!*!moUfrgFB+SbZFk+Pv2ZRta+yu_X3|t8O+N zpGk=1ZnjJ0fd+vZu1@!M1)2gxEHyUw>L2mzRgquxr6ft9t0&i^3(CVFCVm2#h1b|LNqqgPLf+^(q1?AS&?DQTY6* zBGN@l5JW_zgJ9?&gx-7qq67p2(iISp0MdJtDj-3+p@$#=G=LxpEtJrH%e`}Fe&wHg z?@VTPChysu_ni0ao_C+;>;nMbJiMZGt6bLhrle;-S>qTNgPwtV{6r!f04RrfEzjg? zS+a~*3ACT={h1Vwc&Z%w=S4WZZSS{`4s3*e{{Zdj=6V5#GyvW*DQ?@_U#M(Y1f(dx{Q>$g6kS}M`V7rf~l~+2R zyF>I9pp6Jl*CZsv20`hWz+dEGH%YFnd#jo1OnzC^Z>ww$J5*pEapTeufmlc<>nd1H z=}miq{;v10Vc#3X=DSwdt#S4~`wa`rUtE_{fQ?0F`N{Y2pX>W|XKUi&PY+mama%^x zLXiZrocseG>^Jn-PLCuqcANyS)pQN8DV%i?@5Vn!N!ea{2t;HQ#-@uk9` zCm^t5DrRl7U}q=@UhJ_4y|ipadTp7DfJxOf7f>#k*u451)1|+239Q%MRI1q_Ct+*Q zg%VP@5!GH#t{(b#~mg(j`UFLqS8U-i?n9~-zcDfYi> z*tx85Lzlc&)W9xide&_CSAC#r?yy9u@@jhB+)&;^klfR32TWdBafRObDCYqJn{}A_(`B4UTN-+Fw5GkCCzu)x@S72~j0p}0!D%5g5i@r3F^inXx`1}wGW@82 zPfsM$IZ~dELmBHs_1`nHr>CL?3nK^?egW$|cm%st|3`17rKG|j?glOmC znsW^YtG0^KPK(NZ2(qz}Piaki?!>wi(;!v-9|!9G%1vD%f!t0sznK3J@c-8*VX$apKIV0{)5n z?(@NTXUHb{XcKBlM2T|%Fr)$*e?be) z>(Jde2T0|K8ID&q-SVOTde@H;jbnQL(-P!ZiW1zIW`Aq(!$2CR7%i~!i`5BHoPT_) zT&oVXZ(~9a;-hELo_n8>AulZ*Gw*jC`mu0HTPr)}JcxP*mfI135`^G45-vlFtkf(l z6c0+yMlFs{R_sf4(gXIo#e3aRrwDS(#MX6`(8$lWm1^zb=6Y%Nr(M7gzu*Zzt--dVZLO@27l z8{8=0#o8D3pynL+OWqDfwP&qxyo})dwsd)^u%M9zQbEL`XIWC;30(LhagkDzgr1^< z+LTa8`x9od5vS#epiv)IvTn(7;7?}C8w9C58U+4NZ=v707BWx_HAOMp6^WJCdm7(S zl>~-oD_G<&O3I5^SfIQ;nI~EyI@v6h8$>%DvTH}vd`-TgG8MsLne9h1P22Ms$#^BA6-R>g&0qgHuywUMBlAKJ?~Zr?FQO z)U)m)Q_m}JpWLSI*aj0Q(DH2;u~DUXYbUGAxCbT#XQ-3-Uhy$7JPquRmg6ApQ&!H! zcZ?P?V)aKAr>%%__&R@X(OV01n9G^aSa2g7;&6YLTEb-1)T0ZdWN}?$Ke^HSakb4K`1rj4jbi6mZ9m7YYP=yG0u)K% zR-A_jQ14HZAoB?*tI5{SnWyrDWHGd35ejn8rr`>}+}aF6uGrqJLfYSUEuvJSy8ftt z{EmA&v2L_8(J9)^~?dKZJ1mTEVemu|Pn$Elw=n7p~NEb_-nMz!WxYDH=t8 zfIzRO1h@!l`PG|tjMIs3vhb01zi-~_DZggdrxvp1>a26%CRLhm-n}?Hk?KIi@pq#i znoIb6sBT}~>+N>xh~#+0_1Y@MGwaooPeCsE@pS4&=1l8wd6!? zW_cTVdD~RSS}-eK*3UK({-;6bJBN4w|!4vSE=H8a%S+Ab~~&+5~mB~sgDE1#(G z0K3dS+YsEYUCC?O<8rD$Cr<-py1|E?8M`Kq6*X=m$%vQnx5-6QO7QIB6_dTJ(B)p& z^yE#KHLa;AAqVI_(-MyevS4s2A1#7+HBf7@G;nv5Nk+D(i5MW+E;sJ1pYTPFo3t@b zXd-QGkr;7$7>`Z?drE5U%DI+jJCh(+O#djT#jm}k{2R9Gi@$GsbA*hw`R)6^H53!V z=L(^kpMFg|$ao!3H5**U#94m->BFGn0;ZO_VJFjSREsvn6yb=Xl5QTSzA25J2#S9& zpn3?>Y{pH+z9*iGMV_?5{;d<*{z-7+xfe%!r-gFfUY&VwoU~7Gdk-rMm5?hTT{r1q+YK4}@o8S~`;Y$db$gl}@E&Q|4KO>j zLE8AgTZysWl{TbfndNG;Of()VdVg)DX9yh^$NL_xqvWsn^S0QS;vn{nPPTFUXF7Ro zoqe6ZN0H|#IiIDSuk;Z{ZRm<9voh;>zmM56np3ZvY4T8}a8&Br;|s+}M%8NvsTBP9 zq%m~$l4vs5XI)?RJF1rE*A#hZjY5#Z?PE*CLp}acr7>-ACasR&Lur#HB)^tlnH@sJ ze=zn~j=V5j^=&f}>bI&)VIfqFny)?)$raU;2dU>r?t1v9BDXq~`g=PVt0C*he$jeP zWzU_^MXk5N&$>3_)0ahM_P)hy(^r(Pg&=sPOMrRE-zPS$(v@^lbjMJef>7~`V;%XI z*+=6$UC=e3+0k1ioHM)luUU;&Jt_p^4_QR&Zk)dD5cn&yO2sc8@|Cl`+Em+8SZQ-# z2@^qd@O+9D54nY*6|rrJ@y|45i=cq{J@e66~$8UWOB& zmh@|CpyaRV>cH#WA=|7n2Gyaqq0MfQJhodPt<4XNqJsMSpU;;&4(%&G_s(=$lGjk3 z?AbmI58mS(Lx=Wy9;LJW{$hV+K4ZoxYxEwn(In=Q=(Q_-aD;Lw^sQU7p0M!H{U7+_lYke2s}{sI`?eCp=hOHBg^OgbP&>(O3wD_c{tION zA!e4dQ{op{YkvAr@N(-@azS$Vrcb*;QgEdS2vOJJYG0L`LlwOi}w?% z3nCoV(ADQ0Cj}$XiC*!4l9NSrV#$Bm_j8JvS=1qAVatI(N1&snPgwfmWewh`-5$aY z=VW{wTPxUI2n~MnU{f3FsG>?R|AxK9lzh4PCTU|D#cFC!`?7Ysi=dfKcS3$&Hv#)j zzXvK?`T1gp^+)&)z2ECvobU7(t-Y#+aeQaT4GW%)UEKF{+(#iA;yl;9$a0e%G%;N#nihK=jLzWDJhFn62$V@a*LOpfhVaV zFvazede)=uT?_Ud=xVjcXtTJwdK#?IYqECxVDh7V11Uy3^D+(_=zY&uLDQpE1L_d8 zNa;@rAxl|0IXr;|SVc8vf^pysf_Ry?yO^E*=WyGd#;cE7h)_OtR3e3v_LsX1uE0X~ zfRM4@MK5BOYpU!@Ys@clT+I-3!6*4o36>e(aus@;zB*^LXi#=)#kaPz2trX6J@yp? z!K^azhYty?oKoMVzEveO;$TQ>e8BON*Fs?@roDo7oi|cTI)@(ncfR`J4Rd26w`4+} zdQZss)xKG}VS14)9-O0DcpprhA>mzPdiCr|jtSA2!-egg%iOQEhy8NeR!s!LQ^>-j z(=T2=c^=`Kx%1wZj?_YA#AxJT^P^*?>JJg)S|wm;Ti`zl9D(DIyq*3fU;ff(PZMA% zu7wVPn$mHn;|fViwx^Ug(|9=kzmv9Hv0rVTHu)O z_Cn;CB}0JLi`L}@R!p9wm=I7PHI|-{x-wmq%f8Ii-sQo7IH$8Vb{)mC7?96UggiBV9g*E+X0T{pA3f*ea8t+5J}e5ctu zt$a5`kN$^Z{NI14_5FHuKxTjaR-pGcmEt5^2Zq?>Im|zDS00lZ2NUe!=b2=SSW!NC z;~@Tx2-GXcTZwokDTcjiTJ&Jz<6%{9gSn1Y_=>lxMx(IN&c-OAMtguqm6GbaD@gwG zN2Q6{$m7)u&)&zGv$^2#-)@rNceXAX$xhBJ3Jy_ez>lt}biv_uv03*OKb-ex^;hJ9Lc9`MH zjPni4fJ0evl6Z@X3FPFb_C9YqBQXB_?nT~3jPBhh&(B3zeXYj$*$f@)k7BE_Kd-7t zDOgB6T4qGJON9lc$51IFFLeK%W-Aan48I{SN}Z|XW&S*ZR&;%eKN-qn6@Ttq2HTV%QmZ;@oAipTq2-L?z}p7S6FDNBV(hE z1u{&L6hj{wJIVq@LJR1}42qoJm&9G_-aihw=l@DR=3No@G;p9L0MZoA|QEFnf#r z&`tbbpnBqKTq?=d;b`ZMWg7q(#awa&066%<3X0xd1i_$A@Ow89uDNjLH2_=%L7o5Y z;425gLs{gNk@OrHAvfsh2!u5)iJ28x6=Ay)c+{p;x>#s(x4EkBspq*|j&<*QTr5Y; z{$P6QZXl=J@6hr7UbZ}lcPGEkX=M@K^8is=JG)5GvFw|a|Cr9ktCtJWD5L28RVPY# zX{je~wp)01$$91XG^(YiSyR^;hlXHFHGh!?BNrd}H+G~ppI26->D~^@(Rv68@YkdC zO)kzx>0w5H?dh5TMJ-kiWd9aq&5{ZB?GBsz#G1wTNA|IYr@5~{@>&Z1yDyrDA`%M@BWYh2pm5F_h|`^2Jc$*z zuAR4jXbHjMHcv9Qr8t1xjFjo#D*X508KGzJ+CBf7?GqOdwR@KLmh;enZg=Ompc#@3 ze|Mw(4Pq;)8*93d--G+^_@N)rE$y7&&2gF-H+v(?q3wI-n6SS74b`o14PF;>Jomcr zLi!>zJ5ZwW+H&2|H!#OpJY|EfSpD>hD7ua~WE^~6*|(nURkSDq9&5+|II-cue!Tx@ re*9}@{a>@|U(f!hy!^MsB~T!PbmR0#hU5%T%o)&7(|%Z?Vg>&P{ZWW~ literal 0 HcmV?d00001 diff --git a/evennia/contrib/utils/debugpy/cmd.py b/evennia/contrib/utils/debugpy/cmd.py new file mode 100644 index 0000000000..5ef70c0e70 --- /dev/null +++ b/evennia/contrib/utils/debugpy/cmd.py @@ -0,0 +1,31 @@ +import sys +from django.conf import settings +from evennia.utils import utils + +COMMAND_DEFAULT_CLASS = utils.class_from_module(settings.COMMAND_DEFAULT_CLASS) + +try: + import debugpy +except ImportError: + print("Error, debugpy not found! Please install debugpy by running: pip install debugpy") + sys.exit() + + +class CmdDebugPy(COMMAND_DEFAULT_CLASS): + """ + Launch debugpy debugger and wait for attach on port 5678 + + Usage: + debugpy + """ + + key = "debugpy" + locks = "cmd:perm(debugpy) or perm(Builder)" + + def func(self): + caller = self.caller + caller.msg("Waiting for debugger attach...") + yield 0.1 # make sure msg is sent first + debugpy.listen(("localhost", 5678)) + debugpy.wait_for_client() + caller.msg("Debugger attached.") diff --git a/evennia/contrib/utils/debugpy/launch.png b/evennia/contrib/utils/debugpy/launch.png new file mode 100644 index 0000000000000000000000000000000000000000..04612b41026a758ad2325565ff58ac7bf021af5c GIT binary patch literal 58765 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 SMlgZ{fVPGKvh=oH*uMaM_2D-F literal 0 HcmV?d00001 diff --git a/evennia/contrib/utils/debugpy/vscode.png b/evennia/contrib/utils/debugpy/vscode.png new file mode 100644 index 0000000000000000000000000000000000000000..cf193e6ad29b4010f4673f3543c91ad5a9acb550 GIT binary patch literal 13564 zcmcJ0Wl$W^w(g)wAh?Gh0Rq7_xHGsjxVyW%1qkl$?(XjHPH=a3hc`Lr-22YGb^qLY z^`>UJW_R`8y?gCt-?vu>$w&z!z`!OJdWbsqd`08K#DML32?)7qS!S?HMFVA=P zz!y7Y-00xBiB=FyO$aU!Qsn02`@Qg$Ub9q2^Dg>0($k|Ci@HHQY5q2XK$Foyzv!`j*Pc{kRabHt zfXNJ_?RxVOlWMBBgTEora6B^w$P!dTANSnS(VYp9K*DHr6I|}6YIX>DY;lN5?7#`( zPgS5wk|2#43j9Gy8S-eP8!47IdbqW{EiNv;y}eDg*Q#6fFc?Lg!=1LM-r!$aTH3JY zDo%);$tH=~t7~IoQY25|Af>*sm#wAY@zT-8^AfVmGG~8`iL!cy)Nysp)a()?N_RhE z8yxsWJO~DoPfBY1+&*=8^XJcnv5c27g|BRfV9{DG*M|k-d%f8B@NQ6H zBx)ZWAA@BiARsWdixtx6+ScCO>`D}ZLO{^raIDy*KF%cN!+X)P{whU?TsUW1uz)P| zFrLQ2;@KckrpV~fqpD99ts}oN9`P>01ZueP@hWq!fxm{bebGU~Ok-cP23RVm@_fujPK}zngRZ3yIr#CrY?c-IAZ59|#13B`ji= zqFG^OY^?p}^?ceuO)K*QeF@#u&gC;~PnN)MDh<@Vtf|S#jpJhuuQ&HB8D&+~W}}Jp zf(*|k^K$SKUtCxdF%ZyThB%!r-R>r62?2qPO-*4^ALdMN`$Dh;iK1M@?d@-ncwRCU zOKPgC-QC?ssRyp`KSBF`AaK8!Q_@l>nUgDGVrGtSvXLv2CqWIX#n!E2rKg`VN6VM@ zdYZ|ARX{4>l)~9`yXg9Wvl&06FP0Y_g>Sc+1W!hkC1dPTlR7=5YnlCMIHX^_wx;RB zn>lmH{dzN#n1~%FgocjZo615$Lc+=EK8Z(5Nm)`@7&)Y`TIRUf?SH*L!NT%Y+)FG= z<}()7!Sn8TgytTz;>?&@!&zgD`)klh%XP}O=D?eFEP%*PePe#?@)j!T3t^N4ePLNy*rF6LJv|-vmrs)!QItrLe0VJ&D=W*jZ7u&Pq;HE_t$uLVHboH+kDi|1 zoZ0Q*cbLo%d5SpHpq-T_yUWW;nB>^D4!Zr zv%ki4xwINXn+(Ol{6zI81d}o*B`Fy589DRK_bKVSX+>uE5|QnjgQ;>2od zYLM{Qa}`TgS61XeAe>J|!TL#_Z!eD@know_Q(3I=^@xPwiWZJ5G+GSb7T4C=tv9>* zPRrWbJZ2ZNA-}z^2@kkLVE*E0!lhf*R7-*49=al@=TtiXPHu&fJodqlXTo zO+im=1ooX^1LopdeQGY(Xz4es5yqm`HWhJqe~G771BVMd`>Q$AI?W0v#WYb75xNiL z6`E~FrI!h23+43wwI|wNJ_mqZUBS;~D=Kw9ApQ|;CPzW)BYo}@zy_T5_{w1_jr8=lXfR$F&( zAHPM^{5CppJA25twcN$8d0%fbiJ;j*nQ4W%p6qIzoSdw5f3z(?+Q{H=3Ln{J@N873 z(rkBcveU!aBmIW_@#Xb(%#(YDt40O?*pmY^Sdi`-JaoNilz~U&jfIOlVl3wF-kOlG zaPal~8>C@cS{nFyj?d2O9ed5!a>BzA+cdq_J?=GH9Lw6<+jDZZ+n>*H(PgY(POxay z|1>+4IQ%p=HomyN);sBEozqL`_-hS8GD zIt%3)PeXaV!R~rhC2HX3&I z;NZJ=6=`w@1Y2S{mz$>ZCd^*s)s-y~yUkWFc#tG|$PqfAq9Udp=7@JCnw6hik%Wjy zVNsFI1wQ@U()xOaY#7+DM;K^>ePIL+Jl%Z(*f$&>A195DIob`g^4J}JM;)p&TiCH> z)ALG+>piR@Ns=%;!(jIq=Ldm6l9C8^Ddk!nwOoU zuWj4f36lT-P_S$}=%C!>!jr6QJ8EGl(`XBl=Y4x}jPbWH{kO%JLZ%w0^R=ZV)dH;} zkTh3ZVj`=tp04gz7%ofyP$O-}%azCdDvR;c z*PEJEn}MB@o!vD!FJ!p`nXk8};iTgBf?EqKE1dXPecPAe_+0FTxN?e$%v~%_{mS#i z2iwlCltdokSuyCpjaC{FCBY`i096tVpd0II2>728$baRN+E4UmC+mU$fP@7G_UZtB z|0gS}b5R9+z$7sMzzYKa$Up!9^58TS0|02GsnLeSBBi547HT{VopB1zgzS{HXU7Y* z#-*<)4#tPzMS%U+<=%||Kqs@ACi}~lsWj0v`5o!*oD?3$1}qsT&gnpXjnca7mbD8p z5hw;3@&0V!^`Pc@ouv!20n75lGRfX$+3i`g%`RPd24%?7wd{rEo9EiiWJWHf7ia3F z>Rc}qVf^pk1BHk;A+EN1yjCTuGY%efuq@IvDL;i9-F2L19vyo`j>vv9dYbu32(-4g zeugc$t=M(j=XG+}gfQ2vE@s8P-^Q7<`4v|JJ=-{4CLSBsOl6t%3p;^AI>ZYaN@nf&+^ z6NSWZ(YHeg7sxpAX-Ue?ykRkq^#;d&*zY036dv4#K|@J_#u`$Gd-J(BM5+m(X3Ej8 za!Lv!5=OaiP(9E03E~XFqmR#OU+2uDCIt6d&hj6TfIOJ)m-3rD!bj+SJT31yC<8a*8ga=+R`hATC*6bNEKcp^*bzc$QSYO0 zA;O7IF|)1HoA&66(Mhl-;JzBoiCLZN@&q!>(n>vHf9#qSg9lNoqy`6h#)JZ z;k{>vD%n>`FUu%8$_aRa1pqC*;~aB$q8S7vii&me%QFx}NRrRXhE_SEt0uZyIBeCk zn@?&`mvw+%9Dmep>J?$@8xb#?E~Jonru@ODX*vvYa?G%)k!1~iJmKQlXjLp7A&(ny zOb(9|`I-PAYQB7(f@@M=tFhbKR<&hHGlg zzNsVg4HO{(XTtm6#1h)7Ilh@66$8x5*LC0fLfRIAK=bk53GS$Xj|vDqW%nzopiJdR zYhF{H7#PU{Q#0wGvNH0q2E-MOsPV~+u?4cA_ zsm={MBjnTk(mJVz5B)GjtlZ~}yovKzbuE!Dh|zcEHGiUPtyr3!1I|{96ihpm;pZwT zq4(9;Aaph*^gKy3cO{QGC1FIUpG?=DUJZvT7gL6!lQW3+;cVZ^RqmF3_&bAEq7n`k zZth!ICc^$`W>;FTQ=Yfio28H(b`%GqrUzm%wWY`2xW;TmSwx@=)kKplzbVVlkt?@I zF-a)O(&ERDAa!8>?48JAL*4I%F%SFrr)WQHw_4~LDWgt}083K)c;BCkHi5^g#K^Mc z=N<+SPjW;>DORs0&xNH;O8{6WS!5!6Tv(s~uA_-hw4N$fCzbe(yOO74{3{~iAw(0^ zoKJ~J+|aiF&c*j-d$_mFE)9a+(8%=` zUKQ6|7kt=EIbLs$GKPXo9<8f1sbrN5`N2RzOOVw6cMN|Q>q{Pkf0fIC5JM7DP;<=y zHiPnanG8__xdaWF0U8YKh@TkV0Z({}bw_~Y77_K~1;>2A1 z3tR)yl9J;N7Ubja_lnZ179gNjzqSs|9FKo8V?r$U){>XI=}w;)=ebEz=o(lzV(3>- z%+xNHXs017p2U__+rSl+HtdFcwhF1?FMv6j3xom}m)#4Q|V4kM=rvou-YoB=MDr6_gJ}}ES{{z-s zi?q`8EPs#dGbHVJ9XwpNH4$nlEtR^}d{ajEsaU{kp+JG_#yO~(N^C@QRLr3y`;TOI zJiUl_^&V)mS@|%dp-lwAio{?j!oBgX&q!RnsHEs*&MB~4lQp$wsVCFIOfgjv@t)A_ zc1ZQNSGXulsW7xJ8bkKJ#L|PAPQT{*bZu$jQtQ%EJ>|rJRlJ-93QC?OVorYBuP^SB zQhfR*OYGSYSyzRHgzPQSx~^j423KQp#TGb|w2?!gU-o!q%v+8v-R1HkCrLaMB{z>3 zl)KTYAJ~850A_PF!jV2wYRq3c@I62KY6=Q*hJ^0&LhS_zu39w*;TsScX-dmU+pU$4!i+n4FCLq z=rj!bM7&x5y{CQJMP*2KqR98F*oezf6?fnIzz$3*wb!ZnWA!PF*P6Brc~Ifu;2Bwj z@`)mo!|QOvU0i7Pb<7}EqU-Em;MDKZ)}?hw=a3eb#XLd1JtQ!R#c`M@BV;$4 zpQw0j5tT3oHw`sS*Gewy@&q+{NV0(GyJI4UJO5kto@Nfb%!2#)CuZ6fYYQ)PDu=Ws zm;OyXv5As}0ZSKV^~+}8KvX>?nUR!WSyk+}g^nw`$O1qw7x3;DzrxYC3LMtVF$NU#Z#(KT*)}2Q$Ju@jyLY5>8zA|Qq`gIh+e3G2Rj0>405W_GO@9mYd_i%@w`%gz4z{b5PJO%egE3Z zN$h0>rM&#)l+vx+G+%R2emv-ts@jhrw%q-a>@_V zhW=pzKi0XK3We#kLoD3qEj`q4W{sMVIH8!2ECOGz)J^LXBpQXOe2ARIZOXkvv$?>GArJ679`wrx6H9ucBXUPA~41 zNR46X*GQ8+Th;EzdCoIKc-HM5`!^?q#zFZ0(5#_nHLoTa^zZdYx&%=pLH5D-Y8d7%>Ty+C&Av0Qb16x1SXEQSp|8^z93T)GMW{hb&qoXZ=r?0E z3J}^xFy^zn0krqwc%cV`MnpO$O|bjJ`cr_^z|~H)=CAY5D>VHNr@Zd2$P{$Y3E>3X zT`ml+mn%BYnM(mq5n8@^Rv%*CasOzGl>nm3t6svodc26gU_k>2Y5tQk_9jQc>I?(` zW;9^F;-gHONyX~`0p3M^zpT(Ck)2bFje(1JaVErX40XkwWJC#qvk4jt>7*n?4Zf`B z>bvO8XGLnZz5hf3-rFQt4RZ$fl1q(%MD!naZI4a!DQ+P@HRyrBR0-}1Xv5^<*S7Q< zY}9`BiSon)O(c1M_Ykkv9bZ{w;9#UzhPSx%9%-9&T)p7{!2nDJO!Y0 z=M0{1Q<{hf)fCCFMR=!LDET)@Yl-?*?p(oPE`!U7VKkN`8pa?S1=2QxD&*uto!1P5 zPd(Ph6D@Q?1=0vCRrf#ZjmX;XuG3Hp#7yOQl{5wRO4ur;Y+QtP+rdH1^D?bt_{Pm_esxGt(q8HmD-XlF!{l}T5<3Xbx zemXHyH~YxrQdQc{Kr`tSp~|?zQH28>NvV^sKE# z#m`s@UDGd4olC%6&`F#Ki5mv{6@e}}U!2WqH#J)wdYl~-pRuOE1L3|timL()gU#Ko?+;b&Ad#O%=uk< zUUAQC%m@Vz;Xag0ngdlP$&k>NGVq#Q1_k_ZHk=s5(1?O?O;swtlln^iNc7|DbXij| zMjSq2DA!zjtwo>Kw_{tLh+DPZuA7*_7IhYp;zdQO4C$q#>4V&08XJV!ty0DmQ z`vDV$?>m|Ad5p^GULrCb9)#I&OZWF7nk>kSw&tA7pClHU$kuvVt^ySDnEEHL<}$X1 z4!mAbu|Fsn0>zv2L3Ok5Ug1~SHs_iBG*@KJg;dowT>J7d;fE=}s`8`8yD z@u*Cnt|7=}qrjKm)=ujv%B2H7^M6BWQZRbzz4Ul=*Wz9$tLYqDv7h-c+q$M}m#1U{ z$KdghFR;bHMqy`0dsgSw>_b+}oH1DWt=%d*UfmcOH7Ym(XWxvIqHk4n9-9|=Y&`Tj zOvI+)NVrl=uJzF-ec%x5=3}6}0^2gRzc+4+8Yu=v2*cgdlbD@_MNGJ{&w4XB%%6Fm zdDj=!2dI`G!8*bv1|;)hpcC93WyV(If0ndrSEgs}qrTh%n>UFabqIefcHiCz?T%D@BYn zz6aR;IH*CnFGPzcS`sA1kmU}$AjMH;?lH)xQ3qBR;%)2}jFU<>$KCYkA)KwQa*7Sr z39U+(Y*D4F?K5WG-+CiHufL zefk{Y89I7iLP?Ev);iq~CbGY5K=O*Eks?lW zwKO_eau~Geu!4eV3u427}b|Q|zs2pS4&F$#JkkXD$#vhY#I`ZwGr`t@Vok5r*3076J5Ta7k9 zxJlRVR+MEOe+$jzPpzb5ZIjjSfEK>UK+s{*vM%(nq6N5K{dHy3LJxu-Lw$R+nQR_1 z)(r7~2eAQPv;tya`?8(uDj?zMCea=SEcR`RIk)rPmc1%6LwJDHri#6Ic#YYyP<#q< z`*3%c@Xwp~|4Ai!;7)@18aF(a-QJ>r<=o%*D0L*pga19FdA<^=9f;UTl11B6&J||a zqYq8i2jlDs-px^^NIn0VA_$xYpwWD`UV$UHlQ=q_ zRyRHVPNZw&ai-dO)m27GOf%>Czz3Cn252mYv;M`xg+r}Lo_2z+4-f%#qB<_l&Y^e8mKRp@)M-6L^QnTA-M*N%2utJX8EyzHK`V{i zp7&+ae_CCq%vYTTB8F4!!*>Tatu0p?eOe$pfecR#K@VnVIWXpB)hCli9e%xBH=Ws$ zgq`XZ004T!-&z1;zCmwvcF7*$0W-DQN(KN;A!IAYr%R&rx2>RR>7T&ai_I)pmhy@2 zzL%!aT!4m~cu78P8vvj#57XH7Np1cy>Zx}ViJBA{*ZwpCcbT>)7a&0|gpYR`3JRSJ@ z1O~Pc=^QslD)80qhEu(}VM(Ic=A3K>YVO;Iodhe14 z@)fyid`6mn9VD!+`QStG@YXU#EZ!VVk|JuJyWVDbPsXa3Kk$6L zhQ|YQ>gq%^+Q9X^*Q7xWHw6yseD8%+Heho``MuTD-HQaHN{zN5fRuhbmE(^~k%F-M zlxh2A!}1pLw}j>;COSp{%^v)p-DgIlS@CSaAT=!Yqt>pi$0wI2GhA-=)lZC2bQ<#B z_F)5vPUWF%*zL}jV83R{_1Zz;J_Sn*MHeRT9caIVAHOUyO|i~>W5RI)?_E*?VB{N2 z*tcBjY@Qjg!cS;EqLku?1Xw#@G;W{WPOm>&e+a;OzDX<7noXCfHMZ)m2Q)UrRknE? znDz+Ak*SsI#nS<1#9@@V#n1LoQB2+*bu2;WYXx(QPEV_3 znhzmIt^Fo7uXIkx-b3Y(5H`{;Pv!0N$vs}r7X-m}#VJnfxL<3H_nZ*+8iK$YEWswk z?K8|j!vMZsC>c;L-SI;>;*1Mdi}om|*SH7_ykWcJK*aNB{55(2{kNhc|v zSy%S!kB?55`nJ_sup6eFmK$z9EP&1*XA0Zr?j|T8FCqZQ({{TylGZ_o=2yPp%fB`0<`gn5j>#<4cznJAylMXv-Tiw(&_AsfJD6M6R@z2GI4xgN z@2RBZ_{aDeM$id<#ioB|F22i-!jI5qQ}Lh<|UM87+q2^S8E0fb^8UkAD^w3 zy*XG>;tCoCK#O&o_z#dYGGPG{B%z1J_T73otSR~$$#ZF-pA*T0kUIm|qy-j+S+1-! z5U+D0edMg2WyZSXaiqf1vn|KkPN9>$K$2NS%$f)Cv!30d;joJ_e-kq3DXx6X!mU0* z>sZVdYb>F2cq&(>`$Bckn+|5l-*sX!A7uX(=RMC468*Upg3dvAnFkJx6g47o@lX&Pd@p8s0 zPOKY`l%W~GU`cL8SUJ9ZXR96sop%;gpaZu;06>Fto4#76{J?V3MV-r_WyT#MW87$T z;=L@;nOqDiOa8L#P-Z-48Q`4lm6zneldPzx5-OTv^2g6 zW;AqFvEN%izF8Y6UTzVw{%VoZ8=YzTL!l#+*%UKKDXTgw0ET0J5waisI-n(4v@$!q zWW09#$?(1MvKKedXkIh!Bigri3bTH+l!&ZVPK=TVmiVe2rk0BWqvact=71q8Gs zxp=yFh9X2EMHD*g5KVtj8scWyLA+iz?Syd&jVUn^+A7fK}_Fz{7BKu{45Wu={02%1iFReoqQT6ce>q&WuC>3*PEerL$3Gb z3rR0mTCh&9zYj!>=mkz=5S-}h8qOuHHK8$I=a|F?8+VhYrl?Cc>_x$T^HUAMspfiY zSrL~bmHFYnBo;Q0f`jM09?&`}yLYI55?kq)&{Q=*O1mr{FeX06N!cHjhJa-{@Qf$MQmY z$W%w3*O^$e*XCsYE(ln<4Ej{eHb>7z-z%Z{_5C5HkXBo4hYc|{_d%wfX0_k#dq84s zd19>&X<}0#T&nvc%8+nY$Zv^ljJ9jq!xYH<$hQxIT_uZT!mpffj*fN1+W4Gks70ic zz%hzolw{ZK@Y+*-4X`$%6cuw3lV16Z_CiJnC1s+2wRU98gk{AJqe_Vdx!GPi?3Gc?T{fW^t1I@|G}JOdp~0cXeb%Ct?4r(&>ZqQd zJrSZ0K=~1FkfPJ=^Ez%S?Rm+15C4Rhr{$Zvn-n3Oz8zHUmqWF=gBn#x%T{=g4=;#p zd4RDi<+FhKH3V_3#WN>S{LRGw(PYzUY8QTN42xz)W7Fi(-{h?q!%E%joEPHZG(E@Q zIbFGHPJ=Z*t#Q}CN|d+bCf}K{r?0#A80`@!^zBchjGOfzQMe&hyTG%~!Mx$Gj=_t@ zB|YDdiWtW};t#8=4lrUmuV|Sj&zWYRWnebhtY)X04- zHD0g+-DezpEnvop8j}4~*Ft*1mo=JZmX1a$Vb%E?L*IW^mVH%GmQ0(}KsVZMd%SU648q zG#;w%v$P1#_HYqCa@cl9b4Fn*c}UkpX_A&N2#Lep#8Ec-TCA`6B}lYpL2zF`{9CC) z^j4E>k32D$S7;$!r*Qk-`dRS|aVjqKs*F3m$5w*jW_3plV0z!DVz$6 z)PeSx$II203QkS0ayws3C^Ca=i(RnS*9(_fLYP)?I}^dlVQwnubx9@@R#x!%-7_vW z9`1`9X97zku+)_vd>PV^aPa_icy#ROV@{^8xg4Bn!b;n+i`d;SC{2fk;ebV){IMEQ zGRWZ3$>jlz(S`1c!sk=fksK2@YXkZw-1V8#`+JU1~vX?0TJylPGua4>QLDy(nmeb`>6%|z9N z1~Z=CIdV-Zv48YqrhYDf=QDJcWu=~K#CMyS+(|xo6BM$c@Swn{5jJOqNZLe_UptzkxwL^zxBrhjvqx04FQ^mwrXJPuiX=gV#CwqHj zfOhmF{WRSZI+3dt^a=Bi%=!ycoY zKR4C}YzdHdQQa;nOz1v;>WuA+!uMIo=kn+1X=A5lnwjRU;7$`Nn?gyT-LO+h8^iix zU8H2>!FT7?Iui&+%QQ#uH%ADwMSn7yxqf~>R@URVe1(E~eVko$rlS1r;CAFGNOssv z+Z7LHdT8lvItVPXiQaDXlF+YJfVFlQH^Kcifh zF<&=1I^EW>u$aOZR0{zGItJyB8o|95w-)X}Cb@T{_1Y5TU;1(x%+yE}F5$v_R5P%WDsrMzNT@xm3@!?iwB^xgxj(lxxEEKyExyY}C0b z0G7K^v?o1W@?{6$8VSw-fbw$4la0EpbSONC7!K>Jj4xN8HE>4*Y#^+4FfLSTrXvh? zKVs)VX{DRYR=p^eU-~#eB*KO6SrFZM$bRD_f|DBjSf4?`%J5KgCDf|&(fhclQ=;R8 zXCIlx$l=qxW=qh@Yi|h@xT8sFUx`1UF&WPKTn%G%uHofeSj(M7zB(ZNahc$AQ1f|B zHSH!MU_;EtCkaCK{<=uO<*8*;&eKVCk?%!|YvTj%U%GO`;r$3u-@bc2lh#vk%K7RN zl8)O-5erWVwZTAvT&a4p8%eBvh#08Ug$L*~*n)h@xCO3JW(+E``Tnw}V*tb?qj=hc z?qi*t4}Ix^@X)}*RjUin@5dSdB<{2WqU!5p7vV}E=q$GX>#IBeMC$)P$hf~NEjs%C Z!QnUOmBEikS+KqWL