From 37700e58475ed322493528025057272abe302323 Mon Sep 17 00:00:00 2001 From: Tue Herlau <tuhe@dtu.dk> Date: Fri, 10 Jun 2022 12:22:49 +0200 Subject: [PATCH] updates --- docs/codesnipper.bib | 8 ++-- examples/multicut/multicut.py | 45 ++++++++++++++++++ setup.py | 2 +- src/snipper/__pycache__/fix_bf.cpython-38.pyc | Bin 3751 -> 3786 bytes .../__pycache__/fix_cite.cpython-38.pyc | Bin 2505 -> 2537 bytes src/snipper/__pycache__/fix_o.cpython-38.pyc | Bin 1420 -> 1408 bytes .../__pycache__/snip_dir.cpython-38.pyc | Bin 2057 -> 2227 bytes .../__pycache__/snipper_main.cpython-38.pyc | Bin 2729 -> 2789 bytes src/snipper/fix_bf.py | 13 +++-- src/snipper/fix_cite.py | 2 + src/snipper/fix_o.py | 2 - src/snipper/snip_dir.py | 23 ++++++--- src/snipper/snipper_main.py | 28 +++-------- 13 files changed, 84 insertions(+), 39 deletions(-) create mode 100644 examples/multicut/multicut.py diff --git a/docs/codesnipper.bib b/docs/codesnipper.bib index 9fd8984..257b363 100644 --- a/docs/codesnipper.bib +++ b/docs/codesnipper.bib @@ -1,9 +1,9 @@ @online{codesnipper, - title={Codesnipper (0.1.0): \texttt{pip install codesnipper}}, + title={Codesnipper (0.1.7): \texttt{pip install codesnipper}}, url={https://lab.compute.dtu.dk/tuhe/snipper}, - urldate = {2021-09-07}, + urldate = {2022-05-19}, month={9}, publisher={Technical University of Denmark (DTU)}, author={Tue Herlau}, - year={2021}, -} \ No newline at end of file + year={2022}, +} \ No newline at end of file diff --git a/examples/multicut/multicut.py b/examples/multicut/multicut.py new file mode 100644 index 0000000..c9cbff3 --- /dev/null +++ b/examples/multicut/multicut.py @@ -0,0 +1,45 @@ +def primes_sieve(limit): + limitn = limit+1 #!b + primes = range(2, limitn) + + for i in primes: + factors = list(range(i, limitn, i)) + for f in factors[1:]: + if f in primes: + primes.remove(f) + return primes #!b + + +def primes_sieve(limit): + limitn = limit+1 #!b; + primes = range(2, limitn) + + for i in primes: + factors = list(range(i, limitn, i)) + for f in factors[1:]: + if f in primes: + primes.remove(f) + return primes #!b + + +def primes_sieve(limit): + limitn = limit+1 #!b + primes = range(2, limitn) + + for i in primes: + factors = list(range(i, limitn, i)) + for f in factors[1:]: + if f in primes: + primes.remove(f) + return primes #!b + +def primes_sieve(limit): + limitn = limit+1 #!b + primes = range(2, limitn) + + for i in primes: + factors = list(range(i, limitn, i)) + for f in factors[1:]: + if f in primes: + primes.remove(f) + return primes #!b diff --git a/setup.py b/setup.py index 5d605ec..aa492a2 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ # Use this guide: -# Use: pipreqs.exe slider --no-pin --force for requirements.txt +# Use: pipreqs.exe slider --no-pin --force for requirements_pip.txt # https://packaging.python.org/tutorials/packaging-projects/ # py -m build && twine upload dist/* diff --git a/src/snipper/__pycache__/fix_bf.cpython-38.pyc b/src/snipper/__pycache__/fix_bf.cpython-38.pyc index d658b0d20470302c45daa0e3245fa0823a229ac8..cde78db9fdc1de042e6d4859666771c801ae6339 100644 GIT binary patch delta 1024 zcmZWoO=uHA6rMLbn`D#S&2Q6GsTC`hR&C=+#Zo9%4AzVIb10TdGi`}!(`K@YmRX9X zy$FWZId~9Daw?*?LN9_RPvY6b>d}jcAYKG7`lhY4=)w+f-hA(S-<$Vlqw`&-d);xO z1i$x!PCkmSxm!IM+?n{F$G`T35;8-4gM-f`^N1vMD3etxLTg_S!VeXOGfRHNGbQ7! zop7^GN62`=w>;u8Nu<?*_&WGeY3cLbcv^cSqi9Domsr$Zjcn2uqB)eASOijiTire3 zEJya8Qt?@{<%n<bP%|W#$WC%;t<VnA0zW31w90f9gzbfSxDF3NT0Zk4GFFG1)VF;{ z+9)&QyV8(u6KPs-8jD<o>R}$?)-sV!Guk2}D94Y>IEN0xqwPdngSrUh)G{%{Z5dvw zP#*IW5);<e@zBwA=x_uvEu*%Mf%Z-X%@}uDfWECAA9rQq8F@~($?ZW>=|g`U)9v@i z2l1|UIqVksi$(Eql&xOTe6oS*sc3i(Pt*a3=csSA>p~JCNhC{RYY0#2`|(qF+5h^| zo+Hydjl`*TlnvP6>Il!Q(ptlF)fHp(9K&I_ss}<(#|$=X-1b32leEYht+K1+1?hz# zBx;^0E%efW_U8kb6&9k^N236Jn@8CLmW~I;>{KOS)1?Xz%x$pRid+hZW_Rr0ksM@H z&N@YDNnNytyEK7ta0$%m(!Gi4Fq*X+xDa5#nA)&<T_Z&kkTvp<qgjmpWF3J1&7W2` zI0?jk!3ie6;K-QjiCqq*aU<H){aF6wF*E~OECzIHN}SOC?PPlyqZ5;}^TqPS^qopU zeTa<~8VJJ2K=CmcdT2T2#$&1<1}9}I4po;q<0eiI;~{J}>`ss=X_KNatfv!uW2hN> z0GN7ecSBsgwyzCnRlSCYX%WY93E=L3Vg`As=oRPZ7KXSQa&Dzep?eaTC2wl3CbDR& lm(E#x@2)1t)psWwav={9s%&=*`qhlv365HEyNuyz+aJDg@lpT) delta 1017 zcmZWnO^6gn6n?L|W~Zm8y60!d*;&G}i$Zjibw>~q$)d!#AThTX1ktQIH6zWgvpdzL zh*a;Aok&dZFiVkB5N5m>&ypN+2n0NZkh^^pK_oX1IRpZEwJTAyn|i$Z-rx6Lz29dZ z%tT*=VF2{SeChJuXgm6O|0LaVbUZrA76Z5nsV6bzhHEe|z!eyx`g{AY_wcFB<A<By zg3cK(`4q_9fSrPir&C{p<_3&EP5uK+3&wZ$SMe<Q)f6<`*~z7DIn;TM*q9KBD_q?| z=s)hivPj;5H>^xObJ-e@`f_44VK!m6xbbhZX&7S~7;gL(MkIyK%lrVh(D*6Wz6l0+ zfu+S%m?F`vrJ?amI4a1AF@8Wz4zWM?4RlfZvhcNU#3&fUDWa4{CXzS}GMECVExJZ1 zucJD|P1Q5`9+SniWT<FzpNzuw;=;*^J1WV23KY9tjEXWGBVoVnVlpzNAK)I_NiG(l zS0}tg<=(_gi$G)}N0ah<M2h!)<BdFH|6p^K4Jyslh8D6sKm;x9zif7?Od(}TRH3H< zS#|SCD>Ur4v8ooPDkq5mdAj%^>mQZ1Axk!NXfJzbPPm0|i;*-)T%`xQSWfW{7#zVE zreK@(`RDKunwaGht>X12%h=&ohN}-TW3jZ)z0>&qqZa>)SE9^Y?esF<jeAnL-LsGV zPaC;)758)&eVim6rQ@~Ul2U7`IcX0Uj@WkL#B4~Oszf5ob>o}M-8`wuSrUMpe*0UY zxu4asjCHSt4bprJSU{&iT9xn`)>w`1YW~q=un)s3g}$KmhJSExW<M!@HnE2;DzM)d zTk{dA8EdyQ*6FB24ln#Kc1Q%vS60{BE6d&My_5E3@eJOz$Hg3O*=5lXw2=8}ptoY0 z+1p|PJ^Pc`hZXxooLz8Lnw~1Ud<RKnc;lVqi!yHO_S&`e<6qhf;iZr(?mTm`?p#ak upW(3suP1Tk9GQ|jiJeI>LH#nUqretvb|E^C^Y*)F221wGXx95E*z+G^&FO*w diff --git a/src/snipper/__pycache__/fix_cite.cpython-38.pyc b/src/snipper/__pycache__/fix_cite.cpython-38.pyc index 41ff88198ed4802e312744218929d4693baa9cdc..47a9c15573eb1db93ac169ce7f6f128ad0310a9a 100644 GIT binary patch delta 517 zcmZ9HOG_L<5XZZEdwQNbpnI5XE+&EpC9Dtd6)^-7Js1r_2#Dw*&?Bq^yK8R?9%>O> zyf5inM9_=(kWZ0&4q?C#kegpXu-cUzY^Y!T>q+(R+P_-*wOWlBz0d9YZ?EH@>8wbr z6iTuWWZfORB^FNqphPHqy^HXX?I*p!a18nY?C8CzC=X@E`fvsaDC?{jVyK*tl#kH` zyX5FAR)qRY1?Xq2#Z{Ow6=kd!Q)f(_2_`6L{|$;Ofyp&(My?oE&Uu|-Z0|(2=3(3i znyDO(8V^Mu6feX8^fvM<Y5Z##K$jc;f+-mCQXr>(PW8a}L)r~*4MIEcHleh)-Z9MC zFLI?8mEy47Y-vtkF1?O!wv7EDSD|YE%EmqvWku%)dcswOHYY~EA*o0HW7MgHP$%oo z5g0@uK=2n304ED5P9FXEQ}hZ_o<j0#&wmMxDVkWHgfb}dypy+7cT(yG<sL86GfquA txYc^z-UMSS3r;RNEIBMYyd~`NTo3PCb*X1Zj#2L2_wW;ae=|gwcmUO2X`TQ8 delta 505 zcmZ9I%Sr<=6ozv$nari*fORp}jiR_HqEx)!R$dU)r7i>oA){!e)^r3HrwSJLLfna< z;0uWO0xkq!p>H69AijVn7F-zkzd8Bm&*3ER9d8}+dRtq_Xl;E=?YxJN@vw*^+Dg(q zskUI&#Q6CON`$hfmou(hlnHCV1t6d-u)2@Fvfn^?7~HU1j-F!WKv$KIUcxF|1qoAO z!s;O<bCk?s4h40)Mseq0?jC?4R}7s?USLQ`<mjr1PBH5wY`M<S$pnTCpf=8No@&tm z#mnLf^epl_H<R~J`^@AGQ_$kAKu&2+f4xk$Xtv!&@Xdp}3Y+H3J%N(hlQU7!6bDE9 z70v0!=2^}`WWMFlhNIJ6-A`Uq=<GDp161nvKjdv?AFDvB4G|cGAVBa=@PU&ek`KMV z450^N9z*za=5;}-Na>{_H2rd#R?~{A6{Q{|?{@}mn>F34-mhf3WZe<->UYnK+H%Zd g++xCFlCa5B-I{LNTK`7uCU4gC1S@ps!vLZ02chz2ivR!s diff --git a/src/snipper/__pycache__/fix_o.cpython-38.pyc b/src/snipper/__pycache__/fix_o.cpython-38.pyc index 8d8bcdc423001db8f393bfa2700ce0c32dfc6295..6c1ee228e8069b0b263670f0d5c2b8ba66939e00 100644 GIT binary patch delta 100 zcmeC-Zs6t(<>lpK0D_QdPZK33@=ju8n7E*lsp!vSSw?m4RV6GbT+NJ(40%D5{TV$s wFJSay)>H#2XXM~uVpL%iVB})tVB}*IV`2fad4Q0MNq|ubC<YXrEXrCA08<YUK>z>% delta 96 zcmZqR?&0PQ<>lpK0D?P5OcQe_@=jvpnz*2nWddUn+hl1*b?!AKEGb;gjEoF<QImZc uJ=s}m_(8nQQyIOP88s$9WDyl*V-#TI0YWY&0Y)iC4j|-X;+V|IS`Gk6`4dq9 diff --git a/src/snipper/__pycache__/snip_dir.cpython-38.pyc b/src/snipper/__pycache__/snip_dir.cpython-38.pyc index f19c4b3b4d60e3eb2edd09eecf507974dbf6878e..92f601c91ee6ce8f8213a03afd26e8be41197e57 100644 GIT binary patch delta 1364 zcmYjR&5zqe6rVSC;>2;B#G9{Ox+N+Uh$_l~!%8SxDin#H_CS|QXm^!noUGZzNylEb zgfT&+66%3fDuX~ONC~H2;KGf+pc3LA@C|WA;)<3FZze(QjONYzn%{eG-q??dzm%?h zn9rL8$8SgU?%x(6e@fxSA+0xX1xJsswO=MoA7)2p#{}Y<EW^^wcnEXo<QUu{&FtgP zc4tjUj0qq2y`g*9Q`j50ZQOIXG>P^jB_t#a1esGH0vI`^{Iw94bVVXS3uT&sxrR1P z*;*m)j0`Y?ue3-Ly3*bpkVr>9HGn<jLjB`xYMB<Wg5V^!p}F@Rs#43WAS+<$8i}Zq zGlH&Q!<z!buPFaD%rRpQUw}yQXR!~p85Ssr2T=~w$%-7yY?CL1nZkTRe$eLtL}96D z3*dHWE%P!m>aC@{Mn%4`EV7)^mO=+hg5?&oR=7tNCZ88po7{OXvK3ZY(TcETMza+> zB43g|uspLLW`y1*c&H%q%c`)$nkdY{B7H0b$O7)|vqDt#NK_Je1blj%MozS);OfFz z!2*Kwa9cPSeuovM%%968B|k%ybFn2Ym{{4Hk*I=|J9r3N6uu;!K8UoS!Vn-dkr7$8 z^}Qh~-_moyaMh?Ls;qFTFDP$>L{#yv%EH0B(&Sx<nkcOkXc18qRcu#L1(fN2famL* zbTguky{U_>-hu`#Rly~xLfA>DFLxym#J{wut<EYnY%W?`ssYNnp!Ztp4OP|aDvDB{ z;`^)}Ozm5~H<`G+(f1yB{vd8@Pj_-31#9J<cN$Z@@#cPG@M-zy_y3rF9jEjo$i_^+ z2{+=O^mofs=l}Eg#CvWKNQ}Sq*W)XxSN9UD=la2zAIrBNOzD2(0^Uk=Hul}-<s>!X zo*yQe&>c;rLt>0hnG|9#^}D^Dn8Emr_uOOV@g#1iUzv3(y`kInkC_{Up5G0<G4dYg zCH#K4BS}S)Dw0GSpM?oMxu4Ks&@sEco;wM<cQFVI6Bs4nCr0lqM5iEuev)20bn?M? zc&2cNUJxef)B9aM2s*mY-BI$kh9^1(AE|P9R>sOpQjh^N^2%g7QXhPdgjgnxFVa_M z)C3(ev<^0y)WYRR8LHqwo$AP2a2;tHmkuUal!BW7>S=mm8YcQ#sKtdoHgb+c0^Y_L z&Fle=!^6Xa!=}Y|QNynyNy?iJUJv~E8{_hWH>5@WeE5zuSB9SN9&i3i{CM(7@1)B| sT$c_Kc3qt+QIU0tt<jjB4c&b}kKhWDqD%}+krUIV1k@y(9mqfb0cG}7jQ{`u delta 1116 zcmYjQ&1)M+6rZ;{`ypxdX~|A%sR)c)MA`;Ipio*Rw1$Qfe5l<VlsHCcR?61WN|_zE z#Jt6!4wM996!uWkv>-tbg<c9hwTIq&C_Pu#{0lww>(DoAn`Van&71e$yx(s=_J{Jr z(uI%m`7EP$=ePH|Pjiet*OM2UOOvbgMVn79Y!n?~3Ht$bG6J?(%YAa(INa`KUdUf2 zo60a#FBuw)Aqci-$hu-Pn6ns^AwU=iM<y^d)7T|NqhJFj%*SSIB2T^T0gE}=d;o8f zrTE9z%tn|)bX)P6qb*>HCs&}6KTe|=WOEQ!5<p|?dzBOR5qt({$)A-s%b(?+twe}3 z!a){5oFz>zW`%Q}J!2w+nP=>4ew0=}<D7!z$?vdwm`z#BszN(}*^<c3X^eBE)x+Ed z+j%$6r&_8h)=={rb9l%;XMGT!$UktAZ!lU@KyS8;d9{LtBk)+CvVcwD?qyMki|A3U z<6A~tipy!Gb6A?g6b_^N>O7W+`Xy1+4*CB)O^`oPiThaA5fW7iSiGcGvD62&(Le`D zIGX5+@>dQnePJ9!T*ay=?D44~xiYXyM^M2M9f7Hj0E<|q<1eOFy^ULJ=R;CeJ5}Xk zZ4Pmb=#1!O$93(YQrGB?8rlXH)=zg(6H6;}Llmv1H<CuD#@#9w=`mF|lSk&am)CDb zVKABaa;Ld<FYMis<1jb~!a-96((kFU4E*S=<^gZM-fj-Qe5%`z$#s4k+~hlc4c<xq z;8&9Otyc^AXgu6k!8qI<29Zie*819k(Qf_?7h5kcT;-1@{b1-XoY9`plZ7>rL8y{n ztX~VuooqDTmpy-%NIS_l_S$QUT5srg!(HJ=DhRu2T?)z)y>nUCP$O8F<9*dh{<Iq( zK!0I(dp&=mWJO2py-&Mx5OsJc{ZYq}qg_oe_3tG;4F#R$>dk9b{ZB=o5U^Zw&sjGi zYb0~0e%*sNfP+mR2M>&s{x7$Te{4Go74qqBLjgRaLMYo*qUCN<+uq*ZY-QytIpi8a xC#krt8?Wf8W|J!#boz;?R9Olq%HAH0#s1K517$>Yf>KK50(H(H?d){?>p$JY55fQd diff --git a/src/snipper/__pycache__/snipper_main.cpython-38.pyc b/src/snipper/__pycache__/snipper_main.cpython-38.pyc index bf692bfec5b10c0f396eee21b21d79be8ddc833f..b48e5ac78a1965c3f70213163c0198d2fc870a0d 100644 GIT binary patch delta 906 zcmZ8f&1(};5TEz<Gn-`dwc9kQXbZI%#fu=s62zhui&$!{G{$PFeWt{uNxJ)@P~KW- zdhilzSv-gc$-#r*K@Z*(J&7m(fZ$2+s_4;^v#IvrgL!Xec7C%nznK^IH`}}xjT(UG zQ<dKS8s0Pa#!@W8qC2FNWEP9DIBF@DV96aQS&UqToc;R48@e^UI)DXGJVPj9l=CR= zGzAbkgDQ0*74Y;m@C-)0Fb4sQGKt9@=@Hre;zdNHOM2i%MYK!*z7kV<#51`p%r?0I zHz${<7xUsG-c^{|BTTExj>FY00Z)PHB8GS9ncOA>FhpYp3-_onMXUfD7dMk!M_m^h zi*zK<T!eaF1|F&!&SwH%g1}~$t0EDgxyqsf+7$C7w#g!#28Iz25=FQUby@^L+`hoF zoqK{}YezzXik&3|EeCZT_fjI+HF)@Lq#G3}zax*#d>2WkWdO@U9<eO63YZ9yMIOV# zVE;QybR;Yw{=aAccRV3X|EHYZGFb{IVy{VU>X|~pEN{7mm~ddTA#P*&q^hF-B{q{D zG&K~kxP+~HmS@yurg;`m2R>wYICuj-5%DXq*l-3j{PPI2Yp_fYsbLCsWcnLQ`b?H* zge^k&M|&{MEE@@?xf>tMGAryLJ|OQ3%mb2U38PGLXAb%Al#k<mwYjpozEUsAE?X%( zF<cfW*qT1Mzp1o%`D8vf;y+P$mA>S1$3LdcB}=hJi#J<**=^KXywa%m{fAm!9z~S@ zUOVCc(2homXn?L0naadJtmm^P(McQ)T^c0@v8X`|8YdQU=KPxec=R%cJDGzki(20( z)G97tZLBxXF8gDlQ}cy^*KO7+yjH2-adXtU6hLMUaDxm1*qOrX7K)3D4?qTXjx6Lt l3$qK;D6_LU+nMyAhhC|37~o9#H;f4~;cpw`3W49oxj&;(*%bf) delta 870 zcmZ8f&1(}u6n`_j$?i_Fo6X0zO$4b>r0G!*sup^%Afl97BdxJTq)$uQkl4+5DKiF4 zucem7lL(0i!CO6eE8?jK{{WF9c=F=Sqj>R6Dk|>s=6%e(-}}vb^EG-M1-E=(0DT*; z=I*s~`@#O10%p<QVf6wQF~A&IMGP^&1N9QJn@}yidH<Go*M?aplfDs>49R7Z&Ljs= zF2W{{vklNLGA$%1K#msLyVg^-cce2a(`N(FS(WYc-`c{|fN5Xa%I~o`SiQKyb)a)9 z*H2-3z|h&W<CaV-cn;WgRY1ynVfPpVI^v+f%z!Ij1v9WUw_T7f*{*UhyK8BG30l)O zNN-cb9~kJ6!FGk9LX$1i=qu=P!U><SB{&aACmx5(a2r~D85HY$R75+D6{l-?#_Fzv z&MW@F@SM^GmG29g*~s>NRT%0(!GQHG3=How4ETTwZGBUD;}O{$hD4UU8G<Lkn#>Vh zIN8Viu0^!M|05?PWM28QYl;;pAx$tG3&Vt>@@ZxzjMl9l*S<;-@Jm@D7-4)FnZ~YA zH*`^#S~fbmC`U|;_C}31EvB4L#>0^^{EaBTFL2ac0#kHJ|2j=7GOfA+i$E>%hK=Dd z$T1ZukIF^EnU7)F%zQ5#PQ0ul1MyE@kseef`J6gR4$={;BuDAJr0y()$9|{Xd?Xv~ z*4<{KBkRebGoAc!rg%J_jJuO!kzN`&F0*-3bEi**+-C0RI1{YI1rt1EB^J-qku{!t zcZ<n8SF>x$jCY!~lRMtI#Y?nxEIJRH4cTn8?suv@zDl9^ido8kmWr`vX=#yk=v@P_ mp<iXSs#lvo`RA)qd?ESb9i&agcs6+^&a#Q*P)t}q#lkO#s?bLO diff --git a/src/snipper/fix_bf.py b/src/snipper/fix_bf.py index d06de2f..8326139 100644 --- a/src/snipper/fix_bf.py +++ b/src/snipper/fix_bf.py @@ -7,6 +7,9 @@ from snipper.block_parsing import block_split, block_join def fix_f(lines, debug, keep=False): lines2 = [] i = 0 + # if "GymPacmanEnvironment" in lines[0]: + # print("\n".join(lines)) + # z = 324 while i < len(lines): l = lines[i] dx = l.find("#!f") @@ -35,15 +38,18 @@ def fix_f(lines, debug, keep=False): for c in comments: lines2 += c.split("\n") # print(funrem) - f = [id + l.strip() for l in funrem.splitlines()] + # f = [id + l.strip() for l in funrem.splitlines()] # note sure. mangles function body. + f = [l.rstrip() for l in funrem.splitlines()] + f[0] = f[0] + "#!b" errm = l_head if len(l_head) > 0 else "Implement function body" """ If function body is more than 1 line long and ends with a return we keep the return. """ if keep or (len( funrem.strip().splitlines() ) == 1 or not f[-1].strip().startswith("return ")): - f[-1] = f[-1] + f' #!b {errm}' + f[-1] = f[-1] + f' #!b {errm}' # Indent of last line may be wrong. else: f[-2] = f[-2] + f' #!b {errm}' + f[-1] = id + f[-1].lstrip() # Fix indent of last line to match function scope lines2 += f i = len(lines2) else: @@ -92,9 +98,10 @@ def fix_b(lines, keep=False): if b == None: break args = {k:v for k, v in b['start_tag_args'].items() if len(k) > 0} - cutout += b['block'] + cutout.append( b['block'] ) b['block'], dn = _block_fun(b['block'], start_extra=b['arg1'], end_extra=b['arg2'], **args, keep=keep) lines = block_join(b) + # cutout +_= n += dn # lines2, _, _, cutout = block_process(lines, tag="#!b", block_fun=functools.partial(block_fun, stats=stats)) diff --git a/src/snipper/fix_cite.py b/src/snipper/fix_cite.py index 4b49641..0d46a3e 100644 --- a/src/snipper/fix_cite.py +++ b/src/snipper/fix_cite.py @@ -31,6 +31,8 @@ def fix_bibtex(lines, bibtex): if i < 0: break if reference not in bibtex: + for k in bibtex: + print(k) raise IndexError("no such reference: " + reference) ref = bibtex[reference] label = ref['label'] diff --git a/src/snipper/fix_o.py b/src/snipper/fix_o.py index 04689e4..58f3251 100644 --- a/src/snipper/fix_o.py +++ b/src/snipper/fix_o.py @@ -32,6 +32,4 @@ def run_o(lines, file, output): cmd = "python " + file_run import subprocess s = subprocess.check_output(cmd, shell=True) - # s,ok = execute_command(cmd.split(), shell=True) - print(s) os.remove(file_run) \ No newline at end of file diff --git a/src/snipper/snip_dir.py b/src/snipper/snip_dir.py index 40b084f..ba98cd7 100644 --- a/src/snipper/snip_dir.py +++ b/src/snipper/snip_dir.py @@ -4,8 +4,9 @@ from pathlib import Path import time import fnmatch import tempfile +from line_profiler_pycharm import profile - +@profile def snip_dir(source_dir, # Sources dest_dir=None, # Will write to this directory output_dir=None, # Where snippets are going to be stored @@ -14,8 +15,10 @@ def snip_dir(source_dir, # Sources run_files=True, # Run #!o tags and #!i tags cut_files=True, # censor files. license_head=None, + censor_files=True, ): + print("Snipper fixing", source_dir) if dest_dir == None: dest_dir = tempfile.mkdtemp() @@ -42,17 +45,17 @@ def snip_dir(source_dir, # Sources if clean_destination_dir: shutil.rmtree(dest_dir) - os.makedirs(dest_dir) + os.makedirs(dest_dir) out = dest_dir hw = {'base': source_dir} - print(f"[snipper] Synchronizing directories: {hw['base']} -> {out}") + print(f"[snipper]: {hw['base']} -> {out}") if os.path.exists(dest_dir): shutil.rmtree(dest_dir) shutil.copytree(source_dir, dest_dir) - time.sleep(0.1) + time.sleep(0.02) ls = list(Path(dest_dir).glob('**/*')) acceptable = [] @@ -62,21 +65,26 @@ def snip_dir(source_dir, # Sources acceptable.append( (l, not any(m) )) n = 0 + cutouts = {} for f, accept in acceptable: if os.path.isdir(f) or not str(f).endswith(".py") or str(f).endswith("_grade.py"): continue if accept: solution_list = [] kwargs = {} - nrem = censor_file(f, run_files=run_files, run_out_dirs=output_dir, cut_files=cut_files, - solution_list=solution_list, + print("Snipper processing", f) + nrem, cut = censor_file(f, run_files=run_files, run_out_dirs=output_dir, cut_files=cut_files, + # solution_list=solution_list, base_path=dest_dir, references=references, license_head=license_head, + censor_files=censor_files, **kwargs) if nrem > 0: print(f"{nrem}> {f}") + cutouts[str(f)] = cut n += nrem + # print("[snipper]", "removing") for rm_file, accept in acceptable: rm_file = os.path.abspath(rm_file) if not accept: @@ -85,4 +93,5 @@ def snip_dir(source_dir, # Sources else: if os.path.isdir(rm_file+"/"): shutil.rmtree(rm_file) - return n + print("[snipper]", "done") + return n, cutouts diff --git a/src/snipper/snipper_main.py b/src/snipper/snipper_main.py index 762bfbc..9e02bfc 100644 --- a/src/snipper/snipper_main.py +++ b/src/snipper/snipper_main.py @@ -27,7 +27,8 @@ def censor_code(lines, keep=True): return lines -def censor_file(file, run_files=True, run_out_dirs=None, cut_files=True, solution_list=None, +def censor_file(file, run_files=True, run_out_dirs=None, cut_files=True, + output_solution=False, censor_files=True, base_path=None, strict=True, @@ -37,6 +38,7 @@ def censor_file(file, run_files=True, run_out_dirs=None, cut_files=True, solutio if references == None: references = {} + cut = [] dbug = False with open(file, 'r', encoding='utf8') as f: s = f.read() @@ -69,31 +71,13 @@ def censor_file(file, run_files=True, run_out_dirs=None, cut_files=True, solutio if censor_files: lines = fix_f(lines, dbug) + if "pacman" in str(file): + print("sdaf") lines, nB, cut = fix_b(lines) else: nB = 0 lines = fix_r(lines) - # if censor_files and len(cut) > 0 and solution_list is not None: - # # fname = file.__str__() - # # i = fname.find("irlc") - # # wk = fname[i+5:fname.find("\\", i+6)] - # # sp = paths['02450students'] +"/solutions/" - # # if not os.path.exists(sp): - # # os.mkdir(sp) - # # sp = sp + wk - # # if not os.path.exists(sp): - # # os.mkdir(sp) - # sols = [] - # stext = ["\n".join(lines) for lines in cut] - # # for i,sol in enumerate(stext): - # # # sols.append( (sol,) ) - # # # sout = sp + f"/{os.path.basename(fname)[:-3]}_TODO_{i+1}.py" - # # # wsol = any([True for s in solution_list if os.path.basename(sout).startswith(s)]) - # # # print(sout, "(published)" if wsol else "") - # # # if wsol: - # # # with open(sout, "w") as f: - # # # f.write(sol) if len(lines) > 0 and len(lines[-1])>0: lines.append("") @@ -104,7 +88,7 @@ def censor_file(file, run_files=True, run_out_dirs=None, cut_files=True, solutio with open(file, 'w', encoding='utf-8') as f: f.write(s2) - return nB + return nB, cut def fix_copyright(s, license_head): -- GitLab