# HG changeset patch # User fubar # Date 1606255141 0 # Node ID bf92b6bd8b207368601b46bed9d1b3b4edb21735 Uploaded diff -r 000000000000 -r bf92b6bd8b20 pyrevpos/.shed.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyrevpos/.shed.yml Tue Nov 24 21:59:01 2020 +0000 @@ -0,0 +1,4 @@ +description: pyrevpos +name: pyrevpos +owner: fubar +type: unrestricted diff -r 000000000000 -r bf92b6bd8b20 pyrevpos/output --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyrevpos/output Tue Nov 24 21:59:01 2020 +0000 @@ -0,0 +1,741 @@ +nohtyp vne/nib/rsu/!# +yp.yrotcaFlooTgr # +yrotcafloot/2rabuf/moc.buhtig//:sptth ees # +# +2102 yaM )moc pots liamg ta surazal pots ssor( surazal ssor thgirypoc # +# +devreser sthgir lla # +LPGL eht rednu desneciL # +yrotcafloot/2rabuf/moc.buhtig//:sptth ta emoclew sexif gub dna tnemevorpmi rof snoitseggus # +# +.sraey 5 retfa elkniw nav pir ekil leef I dna nuf saw CCB :0202 yluJ # +ot dediceD # +esac tselpmis rof enod - skrow ti os yrotcafloot eht xiF .1 # +skrow noitcnuf yrotcafloot eht os omenalp xiF .2 # +enod - esnes sekam taht erehw snoitcnuf lmxyxalag gnisu stib etirweR .3 # +# +tpircs emas siht esu loot wen eht gnikam gnidulcni snoitacilpmoc dlo eht lla devomer # +lmxyxalag/anelyxeh/moc.buhtig//:sptth lmx loot eht setareneg won lmxyxalag # +stuptuo yrartibra morf noitaerc elif LMTH citamotua rof troppus oN # +kooh noitucexe tsop a sa edoc taht nur ot noitpo dda :ODOT # +eno ylno yltnerruc - sretemarap tupni yrotsih lanoitidda dda :ODOT # + + +esrapgra tropmi +gniggol tropmi +so tropmi +er tropmi +lituhs tropmi +ssecorpbus tropmi +sys tropmi +elifrat tropmi +elifpmet tropmi +emit tropmi + +txg sa loot.lmxyxalag tropmi +ptxg sa sretemarap.loot.lmxyxalag tropmi + +lmxl tropmi + +"0202 yluJ 1.2V" = noisrevym +eurT = esobrev +eurT = gubed +"yrotcafloot/2rabuf/moc.buhtig//:sptth" = LRUyrotcaFloot +"~~~" = miledruo + +lebal_tupni$~~~stamrof_tupni$~~~LC$~~~selif_tupni$"=selif_tupni-- # +"pleh_tupni$~~~ # +0 = SOPHTAPI +1 = SOPLCI +2 = SOPTMFI +3 = SOPBALI +4 = SOPLEHI +5 = SOPLCOI + +LC.bato$~~~tamrof_yrotsih.bato$~~~eman_yrotsih.bato$" selif_tuptuo-- # +0 = SOPEMANO +1 = SOPTMFO +2 = SOPLCO +3 = SOPLCOO + +~~~eulav_marap.i$~~~eman_marap.i$"=sretemarap_lanoitidda-- # +"edirrevoLC_marap.$i~~~LC.i$~~~epyt_marap.i$~~~pleh_marap.i$~~~lebal_marap.i$ # +0 = SOPEMANA +1 = SOPLAVA +2 = SOPBALA +3 = SOPPLEHA +4 = SOPEPYTA +5 = SOPLCA +6 = SOPREVOA +7 = SOPLCOA + + +)__noisrev__.lmxl(nel = oof +!eman ym yaS .8ekalf ,uoy guf # + +:)(wonemit fed +gnirts a sa emit tnerruc nruter""" +""" +)))(emit.emit(emitlacol.emit ,"S%:M%:H% Y%/m%/d%"(emitfrts.emit nruter + + +:)s(ciremun_non_etouq fed +sciremun-non rof gnirts detouqerp a nruter""" +?gnissap retemarap tpircsR dna lrep rof lufesu +""" +:yrt +)s(taolf = _ +s nruter +:rorrEeulaV tpecxe +s % '"s%"' nruter + + +}"$\"r :"$" ,";tl&" :"<" ,";tg&" :">" ,";pma&" :"&"{ = elbat_epacse_lmth + + +:)txet(epacse_lmth fed +""".txet nihtiw seititne ecudorP""" +)txet ni c rof )c ,c(teg.elbat_epacse_lmth(nioj."" nruter + + +:)txet(epacsenu_lmth fed +"""ecalper esu os stegrat retcarahc elpitluM .txet nihtiw seititne treveR""" +)"&" ,";pma&"(ecalper.txet = t +)">" ,";tg&"(ecalper.t = t +)"<" ,";tl&"(ecalper.t = t +)"$" ,"$\\"(ecalper.t = t +t nruter + + +:)txet_snoitatic(snoitatic_esrap fed +""" +""" +])(pirts.c fi )"**YRTNE**"(tilps.txet_snoitatic ni c rof c[ = snoitatic +][ = selput_noitatic +:snoitatic ni noitatic rof +:)"iod"(htiwstrats.noitatic fi +)))(pirts.]: )"iod"(nel[noitatic ,"iod"((dneppa.selput_noitatic +:esle +(dneppa.selput_noitatic +))(pirts.]: )"xetbib"(nel[noitatic ,"xetbib"( +) +selput_noitatic nruter + + +:rennuRtpircS ssalc +tpircs yrartibra na rof repparW""" +lmxyxalag sesu + +""" + +:)enoN=sgra ,fles(__tini__ fed +""" +ereh loot eht gninnur rof lc enil dnammoc eraperp +noitareneg loot lmxyxalag rof dedeen stnemele eraperp dna +""" + +]selif_tupni.sgra ni x rof )miledruo(tilps.x[ = selifni.fles +]selif_tuptuo.sgra ni x rof )miledruo(tilps.x[ = seliftuo.fles +]sretemarap_lanoitidda.sgra ni x rof )miledruo(tilps.x[ = rapdda.fles +sgra = sgra.fles +)(rappunaelc.fles +enoN = tceriderlctsal.fles +enoN = tceriderlcxtsal.fles +][ = lc.fles +][ = lclmx.fles +"lanoitisop" == ssapmarap.sgra.fles = lanoitisop_si.fles +dneppa.lc.fles = LCa +[ ni ssapmarap.sgra tressa +,"0" +,"esrapgra" +,"lanoitisop" +'"esrapgra" ro "lanoitisop","0" eb tsum ssapmarap.sgra ni gnissap retemaraP' ,] +)eman_loot.sgra ,"" ,"+]_9-0Z-Az-a^["(bus.er = eman_loot.fles +eman_loot.fles = di_loot.fles +:eman_reterpretni.sgra.fles fi +"eMnur$" = exe +:esle +egakcap_exe.sgra.fles = exe +( tressa +enoN ton si exe +"dliub tonnac os nur ot gnihton - ni dessap elbatucexe ro retepretni oN" ,) +(looT.txg = loot.fles +,eman_loot.sgra.fles +,di_loot.fles +,noisrev_loot.sgra.fles +,csed_loot.sgra.fles +,exe +) +)(stupnI.ptxg = stupnit.fles +)(stuptuO.ptxg = stuptuot.fles +][ = maraptset.fles +( fi +"metsys" == edomnur.sgra.fles ro "elbatucexE" == edomnur.sgra.fles +deen on - yranib # :) +nur tsuj lliw LC elttil siht # )egakcap_exe.sgra.fles(LCa +:esle +)(tpircSperp.fles +eman_loot.fles % "txt.gol_rorre_s%" = gole.fles +eman_loot.fles % "txt.gol_rennur_s%" = golt.fles + +:"0" == ssapmarap.sgra.fles fi +)(elpmislc.fles +:esle +][ = xiffuslc +][ = xiffuslcx +:)selifni.fles(etaremune ni p ,i rof +:"NIDTS" == ]SOPLCOI[p fi +[ = emdneppa +,]SOPLCOI[p +,]SOPLCI[p +,]SOPHTAPI[p +,]SOPHTAPI[p % "s% <" +] +[ = emdneppax +,]SOPLCOI[p +,]SOPLCI[p +,]SOPHTAPI[p +,]SOPLCI[p % "s%$ <" +] +:esle +]"" ,]SOPHTAPI[p ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppa +]"" ,]SOPLCI[p % "s%$" ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppax +)emdneppa(dneppa.xiffuslc +)emdneppax(dneppa.xiffuslcx +))emdneppa,i( % 's%=emdneppa ,d%=i elifni##'(tnirp # +:)seliftuo.fles(etaremune ni p ,i rof +:"TUODTS" == ]SOPLCOO[p fi +]]SOPEMANO[p ,">"[ = tceriderlctsal.fles +]]SOPLCO[p % "s%$" ,">"[ = tceriderlcxtsal.fles +:esle +)]"" ,]SOPEMANO[p ,]SOPLCO[p ,]SOPLCOO[p[(dneppa.xiffuslc +(dneppa.xiffuslcx +]"" ,]SOPEMANO[p % "s%$" ,]SOPLCO[p ,]SOPLCOO[p[ +) +:rapdda.fles ni p rof +(dneppa.xiffuslc +]]SOPREVOA[p ,]SOPLAVA[p ,]SOPLCA[p ,]SOPLCOA[p[ +) +(dneppa.xiffuslcx +]]SOPREVOA[p ,]SOPEMANA[p % '"s%$"' ,]SOPLCA[p ,]SOPLCOA[p[ +) +)(tros.xiffuslc +)(tros.xiffuslcx +xiffuslcx = xiffuslcx.fles +xiffuslc = xiffuslc.fles +:"lanoitisop" == ssapmarap.sgra.fles fi +)(lanoitisoplc.fles +:esle +)(esrapgralc.fles + +:)fles(tpircSperp fed +dneppa.lc.fles = LCa +)(senildaer.)"r" ,htap_tpircs.sgra.fles(nepo = xr +]xr ni x rof )(pirtsr.x[ = xr +]"" > )(pirts.x fi xr ni x rof )(pirts.x[ = kcehcxr +"nur tonnaC .ytpme si tpircs deilppuS" ,0 > )kcehcxr(nel tressa +)xr(nioj."n\" = tpircs.fles +(pmetskm.elifpmet = elifs.fles ,eldnahf +)eman_reterpretni.sgra.fles( % "s%_"=xiffus ,eman_loot.fles=xiferp +) +)"w" ,elifs.fles(nepo = tpircst +)tpircs.fles(etirw.tpircst +)(esolc.tpircst +(nioj."n\" % "s% " = tpircSdetnedni.fles +]xr ni x rof )x(epacse_lmth % "s% "[ +) +(nioj."n\" % "s%" = tpircSdepacse.fles +]xr ni x rof )x(epacse_lmth % "s% "[ +) +)eman_reterpretni.sgra.fles ,eman_loot.fles( % "s%.s%" = tra +)"bw" ,tra(nepo = tcafitra +))"8ftu" ,tpircs.fles(setyb(etirw.tcafitra +)(esolc.tcafitra +)eman_reterpretni.sgra.fles(LCa +)elifs.fles(LCa + +:)fles(rappunaelc fed +"""lanidro ciremun rieht yb detacilpmoc era sretemarap lanoitisop """ +:)selifni.fles(etaremune ni p ,i rof +:"lanoitisop" == ssapmarap.sgra.fles fi +( ,)(tigidsi.]SOPLCI[p tressa +"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" +)]SOPBALI[p ,]SOPLCI[p( % +) +)]SOPLCI[p(dneppa.p +:"0" == ssapmarap.sgra.fles ro )(tigidsi.]SOPLCI[p fi +)1 + i( % "d%tupni" = lcs +lcs = ]SOPLCI[p +p = ]i[selifni.fles +(etaremune ni p ,i rof +seliftuo.fles +snoisnetxe gnisu rehtag yllacigamotua ot gniyrt # :) +:"TUODTS" =! ]SOPLCO[p dna "lanoitisop" == ssapmarap.sgra.fles fi +( ,)(tigidsi.]SOPLCO[p tressa +"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" +)]SOPEMANO[p ,]SOPLCO[p( % +) +)]SOPLCO[p(dneppa.p +:"TUODTS" == ]SOPLCO[p ro )(tigidsi.]SOPLCO[p fi +]SOPEMANO[p = lcs +lcs = ]SOPLCO[p +p = ]i[seliftuo.fles +:)rapdda.fles(etaremune ni p ,i rof +:"lanoitisop" == ssapmarap.sgra.fles fi +( ,)(tigidsi.]SOPLCA[p tressa +"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" +)]SOPEMANA[p ,]SOPLCA[p( % +) +)]SOPLCA[p(dneppa.p +:)(tigidsi.]SOPLCA[p fi +]SOPLCA[p % "s%tupni" = lcs +lcs = ]SOPLCA[p +p = ]i[rapdda.fles + +:)fles(elpmislc fed +o/i rof > dna < sesu - sretemarap on """ +""" +dneppa.lc.fles = LCa +)"<"(LCa +)]SOPHTAPI[]0[selifni.fles(LCa +)">"(LCa +)]SOPLCO[]0[seliftuo.fles(LCa +dneppa.lclmx.fles = LCXa +)"<"(LCXa +)]SOPLCI[]0[selifni.fles % "s%$"(LCXa +)">"(LCXa +)]SOPEMANO[]0[seliftuo.fles % "s%$"(LCXa + +:)fles(lanoitisoplc fed +smarap neht redro ni stupni # +dneppa.lc.fles = LCa +:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof +:v ni " " fi +)v % "s%"(LCa +:esle +)v(LCa +dneppa.lclmx.fles = LCXa +:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof +)v(LCXa +:tceriderlcxtsal.fles fi +)]0[tceriderlcxtsal.fles(LCXa +)]1[tceriderlcxtsal.fles(LCXa + +:)fles(esrapgralc fed +elyts esrapgra """ +""" +dneppa.lc.fles = LCa +dneppa.lclmx.fles = LCXa +mrof deman esrapgra ni smarap neht stupni # +:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof +:"" > edirrevok fi +edirrevok = k +:1 == ))(pirts.k(nel file +k % "s%-" = k +:esle +k % "s%--" = k +)k(LCXa +)v(LCXa +:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof +:"" > edirrevok fi +edirrevok = k +:1 == ))(pirts.k(nel file +k % "s%-" = k +:esle +k % "s%--" = k +)k(LCa +)v(LCa + +:)emanwen ,fles(hsadNteg fed +:lanoitisop_si.fles fi +0 = hsadn +:esle +2 = hsadn +:2 < )emanwen(nel fi +1 = hsadn +hsadn nruter + +:)fles(marapLMXod fed +"""...siht od em edam 8ekalf""" +:seliftuo.fles ni p rof +p = lcdlo ,lcwen ,tmfwen ,emanwen +)lcwen(hsadNteg.fles = hsadn +)hsadn=sehsad_mun ,tmfwen=tamrof ,lcwen(ataDtuptuO.ptxg = mrapa +lanoitisop_si.fles = lanoitisop.mrapa +:lanoitisop_si.fles fi +:"TUODTS" == lcdlo fi +9999999 = lanoitisop.mrapa +lcwen % "s%$ >" = edirrevo_enil_dnammoc.mrapa +:esle +)lcdlo(tni = lanoitisop.mrapa +lcwen % "s%$" = edirrevo_enil_dnammoc.mrapa +)mrapa(dneppa.stuptuot.fles +(tuptuOtseT.ptxg = pt +tmfwen=tamrof ,lcwen % "elpmas_s%"=eulav ,lcwen=eman +) +)pt(dneppa.maraptset.fles +:selifni.fles ni p rof +]SOPLCI[p = emanwen +]SOPTMFI[p = tmfwen +)emanwen(hsadNteg.fles = hsadn +:0 > )]SOPBALI[p(nel ton fi +]SOPLCI[p = bala +:esle +]SOPBALI[p = bala +(maraPataD.ptxg = tupnina +,emanwen +,eslaF=lanoitpo +,bala=lebal +,]SOPLEHI[p=pleh +,tmfwen=tamrof +,eslaF=elpitlum +,hsadn=sehsad_mun +) +lanoitisop_si.fles = lanoitisop.tupnina +)tupnina(dneppa.stupnit.fles +)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = mrapt +)mrapt(dneppa.maraptset.fles +:rapdda.fles ni p rof +p = lcdlo ,edirrevo ,lcwen ,epytwen ,plehwen ,lebalwen ,lavwen ,emanwen +:0 > )lebalwen(nel ton fi +emanwen = lebalwen +)emanwen(hsadNteg.fles = hsadn +:"txet" == epytwen fi +(maraPtxeT.ptxg = mrapa +,emanwen +,lebalwen=lebal +,plehwen=pleh +,lavwen=eulav +,hsadn=sehsad_mun +) +:"regetni" == epytwen file +(maraPregetnI.ptxg = mrapa +,emanwen +,emanwen=lebal +,plehwen=pleh +,lavwen=eulav +,hsadn=sehsad_mun +) +:"taolf" == epytwen file +(maraPtaolF.ptxg = mrapa +,emanwen +,emanwen=lebal +,plehwen=pleh +,lavwen=eulav +,hsadn=sehsad_mun +) +:esle +(rorrEeulaV esiar +\rof "s%" epyt retemarap desingocernU' +'LMXekam ni s% retemarap lanoitidda +)emanwen ,epytwen( % +) +lanoitisop_si.fles = lanoitisop.mrapa +:lanoitisop_si.fles fi +)lcdlo(tni = lanoitisop.tupnina +)mrapa(dneppa.stupnit.fles +)lavwen=eulav ,emanwen(maraPtseT.ptxg = mrapt.fles +)mrapt(dneppa.maraptset.fles + +:)fles(marapLMXoNod fed +]SOPBALI[]0[selifni.fles = bala +:0 == )bala(nel fi +]SOPLCI[]0[selifni.fles = bala +( = s1xam +"s% - deilppus selif tupni eno naht erom - 0 si ssapmarap fi tupni eno mumixaM" +)selifni.fles(rts % +) +s1xam ,1 == )selifni.fles(nel tressa +]SOPLCI[]0[selifni.fles = emanwen +(maraPataD.ptxg = tupnina +,emanwen +,eslaF=lanoitpo +,bala=lebal +,]SOPLEHI[]0[selifni.fles=pleh +,]SOPTMFI[]0[selifni.fles=tamrof +,eslaF=elpitlum +,0=sehsad_mun +) +emanwen % "s%$ <" = edirrevo_enil_dnammoc.tupnina +lanoitisop_si.fles = lanoitisop.tupnina +)tupnina(dneppa.stupnit.fles +)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = pt +)pt(dneppa.maraptset.fles +]SOPLCO[]0[seliftuo.fles = emanwen +]SOPTMFO[]0[seliftuo.fles = tmfwen +)0=sehsad_mun ,tmfwen=tamrof ,emanwen(ataDtuptuO.ptxg = tuona +emanwen % "s%$ >" = edirrevo_enil_dnammoc.tuona +lanoitisop_si.fles = lanoitisop.tuona +)tuona(dneppa.stuptuot.fles +(tuptuOtseT.ptxg = pt +tmfwen=tamrof ,emanwen % "elpmas_s%"=eulav ,emanwen=eman +) +)pt(dneppa.maraptset.fles + +:)fles(LMXekam fed +""" +tpircs wen eht rof repparw loot lmx yxalaG a etaerC +lmthyxalag sesU +...redro tcerroc otni enil dnammoc eht teg ot woH .mmmH +""" +lclmx.fles = edirrevo_enil_dnammoc.loot.fles +:eman_reterpretni.sgra.fles fi +eman_reterpretni.sgra.fles = reterpretni.loot.fles +:txet_pleh.sgra.fles fi +)(senildaer.)"r" ,txet_pleh.sgra.fles(nepo = txetpleh +]txetpleh ni x rof )x(epacse_lmth[ = txetpleh +)]txetpleh ni x rof x[(nioj."" = pleh.loot.fles +:esle +( = pleh.loot.fles +\ pleh rof )s%( rohtua loot eht ksa esaelP" +"n\noitareneg loot ta deilppus saw enon sa +)liame_resu.sgra.fles( % +) +tnaw ton od # enoN = dnammoc_noisrev.loot.fles +)(stnemeriuqeR.ptxg = stnemeriuqer + +:eman_reterpretni.sgra.fles fi +:"nohtyp" == eman_reterpretni.sgra.fles fi +(dneppa.stnemeriuqer +(tnemeriuqeR.ptxg +noisrev_reterpretni.sgra.fles ,"nohtyp" ,"egakcap" +) +) +:]"hs" ,"hsab"[ ni ton eman_reterpretni.sgra.fles file +(dneppa.stnemeriuqer +(tnemeriuqeR.ptxg +,"egakcap" +,eman_reterpretni.sgra.fles +,noisrev_reterpretni.sgra.fles +) +) +:esle +:"metsys" =! ssapmarap.sgra.fles dna egakcap_exe.sgra.fles fi +(dneppa.stnemeriuqer +(tnemeriuqeR.ptxg +,"egakcap" +,egakcap_exe.sgra.fles +,noisrev_egakcap_exe.sgra.fles +) +) +stnemeriuqer = stnemeriuqer.loot.fles +:"0" == ssapmarap.sgra.fles fi +)(marapLMXoNod.fles +:esle +)(marapLMXod.fles +stuptuot.fles = stuptuo.loot.fles +stupnit.fles = stupni.loot.fles +:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi +)(selifgifnoC.ptxg = selifgifnoc +))tpircs.fles=txet ,"eMnur"=eman(elifgifnoC.ptxg(dneppa.selifgifnoc +selifgifnoc = selifgifnoc.loot.fles +)(stseT.ptxg = stset +)(tseT.ptxg = a_tset +:maraptset.fles ni pt rof +)pt(dneppa.a_tset +)a_tset(dneppa.stset +stset = stset.loot.fles +(tnemmoc_dda.loot.fles +".yrotcaF looT yxalaG eht gnisu s% ta s% yb detaerC" +))(wonemit ,liame_resu.sgra.fles( % +) +))LRUyrotcaFloot( % "s% :ta tig ni ecruoS"(tnemmoc_dda.loot.fles +(tnemmoc_dda.loot.fles +"375stb/scitamrofnioib/3901.01 :iod stpircs morf sloot elbasu-er gnitaerC :etiC" +) +)(tropxe.loot.fles = lmxe +)"w" ,eman_loot.fles % 'lmx.s%'(nepo = fx +)lmxe(etirw.fx +)"n\"(etirw.fx +)(esolc.fx +llabrat eht rof ydaer # + +:)fles(ratlooTekam fed +""" +ge htiw llabrat zg a si loot a +... oof.ni_1tset/atad-tset/emanloot/ yp.loot/emanloot/ lmx.loot/emanloot/ +tsum os ereh degnum era stuptuo dna stupni tset rof seman ETON +lc detareneg eht no desu seman tuptuo dna tupni lautca ot dnopserroc +""" +)(nur.fles = lavter +:lavter fi +(etirw.rredts.sys +"yrter dna xif esaelP .tey dliub tonnaC .deliaf nuR ##" +) +)1(tixe.sys +"tuoft" = ridt +:)ridt(stsixe.htap.so ton fi +)ridt(ridkm.so +)(LMXekam.fles +)"atad-tset" ,ridt(nioj.htap.so = ridtset +:)ridtset(stsixe.htap.so ton fi +yrotcerid stset ekam # )ridtset(ridkm.so +:selifni.fles ni p rof +]SOPHTAPI[p = htp +)]SOPLCI[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +:seliftuo.fles ni p rof +]SOPLCO[p = htp +:"0" == ssapmarap.sgra.fles ro "TUODTS" == ]SOPLCOO[p fi +]SOPEMANO[p = htp +)]SOPEMANO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +)]SOPEMANO[p ,ridt(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +:esle +]SOPLCO[p = htp +)]SOPLCO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +)]SOPLCO[p ,ridt(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs + +:0 > ezis_ts.)golt.fles(tats.so dna )golt.fles(stsixe.htap.so fi +))"txteliftuo_gol_1tset" ,ridtset(nioj.htap.so ,golt.fles(elifypoc.lituhs +:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi +))elifs.fles( % "s%" ,ridt(nioj.htap.so = emants +:)emants(stsixe.htap.so ton fi +)emants ,elifs.fles(elifypoc.lituhs +eman_loot.fles % 'lmx.s%' = laerx +)laerx,ridt(nioj.htap.so = tuox +)tuox ,laerx(elifypoc.lituhs +eman_loot.fles % "zgt.s%_yrotcafloot" = htaprat +)"zg:w" ,htaprat(nepo.elifrat = ft +)eman_loot.fles=emancra ,ridt=eman(dda.ft +)(esolc.ft +)loot_wen.sgra.fles ,htaprat(elifypoc.lituhs +)"txt.lmx_loot",laerx(elifypoc.lituhs +"ridpmet_troper_nur_FT" = ridper +:)ridper(stsixe.htap.so ton fi +)ridper(ridkm.so +]seliftuo.fles ni x rof ]SOPLCO[x[ = semantuoper +:stuo sa )'.'(ridnacs.so htiw +:stuo ni yrtne rof +:)(elif_si.yrtne ton ro )'zgt.'(htiwsdne.eman.yrtne fi +eunitnoc +:semantuoper ni eman.yrtne fi +))eman.yrtne,ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs +:eman_loot.fles % "lmx.s%" == eman.yrtne file +))"lmx_loot_wen",ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs +lavter nruter + +:)fles(nur fed +""" +htiaf eht htiw gnipeek m'I os daer rredts evisnefed siht evah sloot maetved emoS +.etadpu ot eerf leeF +""" +)lc.fles(rts % "s%=lc nur" = s + +)s(gubed.gniggol +)lc.fles(nioj." " = lcs +enoN = rre +:"0" =! ssapmarap.sgra.fles fi +)"bw" ,gole.fles(nepo = ets +:tceriderlctsal.fles fi +(nepo = ots +"bw" ,]1[tceriderlctsal.fles +elif tuptuo na fo eman si # ) +:esle +)"bw" ,golt.fles(nepo = ots +(etirw.ots +(setyb +"n\s% = enil dnammoc detareneg yrotcaflooT gnitucexE ##" +,lcs % +,"8ftu" +) +) +)(hsulf.ots +)ets=rredts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p +)(esolc.ots +)(esolc.ets +)"br" ,gole.fles(nepo = rredts_pmt +"" = rre +6758401 = ezisffub +:yrt +:eurT elihw +))ezisffub(daer.rredts_pmt(rts =+ rre +:0 =! ezisffub % )rre(nel ro rre ton fi +kaerb +:rorrEwolfrevO tpecxe +ssap +)(esolc.rredts_pmt +edocnruter.p = lavter +tuodts ot etirw dna nidts ekat taht stpircs elpmis fo esac laiceps dnuora krow # :esle +)"br" ,]SOPHTAPI[]0[selifni.fles(nepo = its +)"bw" ,]SOPEMANO[]0[seliftuo.fles(nepo = ots +tcerider ot llehs esu tsum # +)its=nidts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p +edocnruter.p = lavter +)(esolc.ots +)(esolc.its +:0 == ezis_ts.)golt.fles(tats.so dna )golt.fles(elifsi.htap.so fi +)golt.fles(knilnu.so +:0 == ezis_ts.)gole.fles(tats.so dna )gole.fles(elifsi.htap.so fi +)gole.fles(knilnu.so +melborp # :rre dna 0 =! edocnruter.p fi +)rre(etirw.rredts.sys +)"enod nur"(gubed.gniggol +lavter nruter + + +:)(niam fed +""" +:sa lmx.loot esoprup laiceps a yb dellac eb ot stcepxe tI .repparw yxalaG a si sihT +"tpircsR" reterpretni-- "oof" eman_loot-- "htaPtpircs$" htap_tpircs-- yp.repparWtpircSesaBgr>"nohtyp"=reterpretni dnammoc< +>dnammoc/< +""" +)(resraPtnemugrA.esrapgra = resrap +tnemugra_dda.resrap = a +)""=tluafed ,"htap_tpircs--"(a +)enoN=tluafed ,"eman_loot--"(a +)enoN=tluafed ,"eman_reterpretni--"(a +)enoN=tluafed ,"noisrev_reterpretni--"(a +)enoN=tluafed ,"egakcap_exe--"(a +)enoN=tluafed ,"noisrev_egakcap_exe--"(a +)"dneppa"=noitca ,][=tluafed ,"selif_tupni--"(a +)"dneppa"=noitca ,][=tluafed ,"selif_tuptuo--"(a +)"nwonknU"=tluafed ,"liame_resu--"(a +)enoN=tluafed ,"resu_dab--"(a +)enoN=tluafed ,"looT_ekam--"(a +)enoN=tluafed ,"txet_pleh--"(a +)enoN=tluafed ,"csed_loot--"(a +)enoN=tluafed ,"noisrev_loot--"(a +)enoN=tluafed ,"snoitatic--"(a +)][=tluafed ,"dneppa"=noitca ,"sretemarap_lanoitidda--"(a +)eslaF=tluafed ,"eurt_erots"=noitca ,"sretemarap_lanoitidda_tide--"(a +)"lanoitisop"=tluafed ,"ssapmarap--"(a +)"tuoft/."=tluafed ,"tuoft--"(a +)"loot_wen"=tluafed ,"loot_wen--"(a +)enoN=tluafed ,"edomnur--"(a +)(sgra_esrap.resrap = sgra +( ,resu_dab.sgra ton tressa +'elif noitarugifnoc yxalaG eht ni "sresu_nimda" ot s% sdda nimda yxalaG litnu loot siht esu ot dezirohtua TON si s% :DESIROHTUANU' +)resu_dab.sgra ,resu_dab.sgra( % +) +( tressa +eman_loot.sgra +"qeSED=eman_loot-- ge - eman loot a stcepxe yrotcaF looT ##" ,) +( tressa +egakcap_exe.sgra ro eman_reterpretni.sgra +"egakcap elbatucexe na ro reterpretni na stcepxe repparw yrotcaF looT ##" ,) +( ro egakcap_exe.sgra tressa +)htap_tpircs.sgra(elifsi.htap.so dna 0 > )htap_tpircs.sgra(nel +"elbatucexe on fi R.oof=htap_tpircs-- ge - htap tpircs a stcepxe repparw yrotcaF looT ##" ,) +[ = selif_tupni.sgra +selif_tupni.sgra ni x rof )"" ,"'"(ecalper.)"" ,'"'(ecalper.x +] +smarap LC ni secaps htiw laed ot deen ew setouq evomer # +:)sretemarap_lanoitidda.sgra(etaremune ni x ,i rof +(ecalper.]i[sretemarap_lanoitidda.sgra = ]i[sretemarap_lanoitidda.sgra +"" ,'"' +) +)sgra(rennuRtpircS = r +:looT_ekam.sgra fi +)(ratlooTekam.r = edocter +:esle +)(nur.r = edocter +:edocter fi +rennur boj ot eruliaf etacidni # )edocter(tixe.sys + + +:"__niam__" == __eman__ fi +)(niam diff -r 000000000000 -r bf92b6bd8b20 pyrevpos/pyrevpos.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyrevpos/pyrevpos.xml Tue Nov 24 21:59:01 2020 +0000 @@ -0,0 +1,49 @@ + + + + + pyrevpos + + python + + + + + + + + + + + + + + + + + + + + + + + diff -r 000000000000 -r bf92b6bd8b20 pyrevpos/test-data/input1_sample --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyrevpos/test-data/input1_sample Tue Nov 24 21:59:01 2020 +0000 @@ -0,0 +1,741 @@ +#!/usr/bin/env python +# rgToolFactory.py +# see https://github.com/fubar2/toolfactory +# +# copyright ross lazarus (ross stop lazarus at gmail stop com) May 2012 +# +# all rights reserved +# Licensed under the LGPL +# suggestions for improvement and bug fixes welcome at https://github.com/fubar2/toolfactory +# +# July 2020: BCC was fun and I feel like rip van winkle after 5 years. +# Decided to +# 1. Fix the toolfactory so it works - done for simplest case +# 2. Fix planemo so the toolfactory function works +# 3. Rewrite bits using galaxyxml functions where that makes sense - done +# +# removed all the old complications including making the new tool use this same script +# galaxyxml now generates the tool xml https://github.com/hexylena/galaxyxml +# No support for automatic HTML file creation from arbitrary outputs +# TODO: add option to run that code as a post execution hook +# TODO: add additional history input parameters - currently only one + + +import argparse +import logging +import os +import re +import shutil +import subprocess +import sys +import tarfile +import tempfile +import time + +import galaxyxml.tool as gxt +import galaxyxml.tool.parameters as gxtp + +import lxml + +myversion = "V2.1 July 2020" +verbose = True +debug = True +toolFactoryURL = "https://github.com/fubar2/toolfactory" +ourdelim = "~~~" + +# --input_files="$input_files~~~$CL~~~$input_formats~~~$input_label +# ~~~$input_help" +IPATHPOS = 0 +ICLPOS = 1 +IFMTPOS = 2 +ILABPOS = 3 +IHELPOS = 4 +IOCLPOS = 5 + +# --output_files "$otab.history_name~~~$otab.history_format~~~$otab.CL +ONAMEPOS = 0 +OFMTPOS = 1 +OCLPOS = 2 +OOCLPOS = 3 + +# --additional_parameters="$i.param_name~~~$i.param_value~~~ +# $i.param_label~~~$i.param_help~~~$i.param_type~~~$i.CL~~~i$.param_CLoverride" +ANAMEPOS = 0 +AVALPOS = 1 +ALABPOS = 2 +AHELPPOS = 3 +ATYPEPOS = 4 +ACLPOS = 5 +AOVERPOS = 6 +AOCLPOS = 7 + + +foo = len(lxml.__version__) +# fug you, flake8. Say my name! + +def timenow(): + """return current time as a string + """ + return time.strftime("%d/%m/%Y %H:%M:%S", time.localtime(time.time())) + + +def quote_non_numeric(s): + """return a prequoted string for non-numerics + useful for perl and Rscript parameter passing? + """ + try: + _ = float(s) + return s + except ValueError: + return '"%s"' % s + + +html_escape_table = {"&": "&", ">": ">", "<": "<", "$": r"\$"} + + +def html_escape(text): + """Produce entities within text.""" + return "".join(html_escape_table.get(c, c) for c in text) + + +def html_unescape(text): + """Revert entities within text. Multiple character targets so use replace""" + t = text.replace("&", "&") + t = t.replace(">", ">") + t = t.replace("<", "<") + t = t.replace("\\$", "$") + return t + + +def parse_citations(citations_text): + """ + """ + citations = [c for c in citations_text.split("**ENTRY**") if c.strip()] + citation_tuples = [] + for citation in citations: + if citation.startswith("doi"): + citation_tuples.append(("doi", citation[len("doi") :].strip())) + else: + citation_tuples.append( + ("bibtex", citation[len("bibtex") :].strip()) + ) + return citation_tuples + + +class ScriptRunner: + """Wrapper for an arbitrary script + uses galaxyxml + + """ + + def __init__(self, args=None): + """ + prepare command line cl for running the tool here + and prepare elements needed for galaxyxml tool generation + """ + + self.infiles = [x.split(ourdelim) for x in args.input_files] + self.outfiles = [x.split(ourdelim) for x in args.output_files] + self.addpar = [x.split(ourdelim) for x in args.additional_parameters] + self.args = args + self.cleanuppar() + self.lastclredirect = None + self.lastxclredirect = None + self.cl = [] + self.xmlcl = [] + self.is_positional = self.args.parampass == "positional" + aCL = self.cl.append + assert args.parampass in [ + "0", + "argparse", + "positional", + ], 'Parameter passing in args.parampass must be "0","positional" or "argparse"' + self.tool_name = re.sub("[^a-zA-Z0-9_]+", "", args.tool_name) + self.tool_id = self.tool_name + if self.args.interpreter_name: + exe = "$runMe" + else: + exe = self.args.exe_package + assert ( + exe is not None + ), "No interpeter or executable passed in - nothing to run so cannot build" + self.tool = gxt.Tool( + self.args.tool_name, + self.tool_id, + self.args.tool_version, + self.args.tool_desc, + exe, + ) + self.tinputs = gxtp.Inputs() + self.toutputs = gxtp.Outputs() + self.testparam = [] + if ( + self.args.runmode == "Executable" or self.args.runmode == "system" + ): # binary - no need + aCL(self.args.exe_package) # this little CL will just run + else: + self.prepScript() + self.elog = "%s_error_log.txt" % self.tool_name + self.tlog = "%s_runner_log.txt" % self.tool_name + + if self.args.parampass == "0": + self.clsimple() + else: + clsuffix = [] + xclsuffix = [] + for i, p in enumerate(self.infiles): + if p[IOCLPOS] == "STDIN": + appendme = [ + p[IOCLPOS], + p[ICLPOS], + p[IPATHPOS], + "< %s" % p[IPATHPOS], + ] + xappendme = [ + p[IOCLPOS], + p[ICLPOS], + p[IPATHPOS], + "< $%s" % p[ICLPOS], + ] + else: + appendme = [p[IOCLPOS], p[ICLPOS], p[IPATHPOS], ""] + xappendme = [p[IOCLPOS], p[ICLPOS], "$%s" % p[ICLPOS], ""] + clsuffix.append(appendme) + xclsuffix.append(xappendme) + # print('##infile i=%d, appendme=%s' % (i,appendme)) + for i, p in enumerate(self.outfiles): + if p[OOCLPOS] == "STDOUT": + self.lastclredirect = [">", p[ONAMEPOS]] + self.lastxclredirect = [">", "$%s" % p[OCLPOS]] + else: + clsuffix.append([p[OOCLPOS], p[OCLPOS], p[ONAMEPOS], ""]) + xclsuffix.append( + [p[OOCLPOS], p[OCLPOS], "$%s" % p[ONAMEPOS], ""] + ) + for p in self.addpar: + clsuffix.append( + [p[AOCLPOS], p[ACLPOS], p[AVALPOS], p[AOVERPOS]] + ) + xclsuffix.append( + [p[AOCLPOS], p[ACLPOS], '"$%s"' % p[ANAMEPOS], p[AOVERPOS]] + ) + clsuffix.sort() + xclsuffix.sort() + self.xclsuffix = xclsuffix + self.clsuffix = clsuffix + if self.args.parampass == "positional": + self.clpositional() + else: + self.clargparse() + + def prepScript(self): + aCL = self.cl.append + rx = open(self.args.script_path, "r").readlines() + rx = [x.rstrip() for x in rx] + rxcheck = [x.strip() for x in rx if x.strip() > ""] + assert len(rxcheck) > 0, "Supplied script is empty. Cannot run" + self.script = "\n".join(rx) + fhandle, self.sfile = tempfile.mkstemp( + prefix=self.tool_name, suffix="_%s" % (self.args.interpreter_name) + ) + tscript = open(self.sfile, "w") + tscript.write(self.script) + tscript.close() + self.indentedScript = " %s" % "\n".join( + [" %s" % html_escape(x) for x in rx] + ) + self.escapedScript = "%s" % "\n".join( + [" %s" % html_escape(x) for x in rx] + ) + art = "%s.%s" % (self.tool_name, self.args.interpreter_name) + artifact = open(art, "wb") + artifact.write(bytes(self.script, "utf8")) + artifact.close() + aCL(self.args.interpreter_name) + aCL(self.sfile) + + def cleanuppar(self): + """ positional parameters are complicated by their numeric ordinal""" + for i, p in enumerate(self.infiles): + if self.args.parampass == "positional": + assert p[ICLPOS].isdigit(), ( + "Positional parameters must be ordinal integers - got %s for %s" + % (p[ICLPOS], p[ILABPOS]) + ) + p.append(p[ICLPOS]) + if p[ICLPOS].isdigit() or self.args.parampass == "0": + scl = "input%d" % (i + 1) + p[ICLPOS] = scl + self.infiles[i] = p + for i, p in enumerate( + self.outfiles + ): # trying to automagically gather using extensions + if self.args.parampass == "positional" and p[OCLPOS] != "STDOUT": + assert p[OCLPOS].isdigit(), ( + "Positional parameters must be ordinal integers - got %s for %s" + % (p[OCLPOS], p[ONAMEPOS]) + ) + p.append(p[OCLPOS]) + if p[OCLPOS].isdigit() or p[OCLPOS] == "STDOUT": + scl = p[ONAMEPOS] + p[OCLPOS] = scl + self.outfiles[i] = p + for i, p in enumerate(self.addpar): + if self.args.parampass == "positional": + assert p[ACLPOS].isdigit(), ( + "Positional parameters must be ordinal integers - got %s for %s" + % (p[ACLPOS], p[ANAMEPOS]) + ) + p.append(p[ACLPOS]) + if p[ACLPOS].isdigit(): + scl = "input%s" % p[ACLPOS] + p[ACLPOS] = scl + self.addpar[i] = p + + def clsimple(self): + """ no parameters - uses < and > for i/o + """ + aCL = self.cl.append + aCL("<") + aCL(self.infiles[0][IPATHPOS]) + aCL(">") + aCL(self.outfiles[0][OCLPOS]) + aXCL = self.xmlcl.append + aXCL("<") + aXCL("$%s" % self.infiles[0][ICLPOS]) + aXCL(">") + aXCL("$%s" % self.outfiles[0][ONAMEPOS]) + + def clpositional(self): + # inputs in order then params + aCL = self.cl.append + for (o_v, k, v, koverride) in self.clsuffix: + if " " in v: + aCL("%s" % v) + else: + aCL(v) + aXCL = self.xmlcl.append + for (o_v, k, v, koverride) in self.xclsuffix: + aXCL(v) + if self.lastxclredirect: + aXCL(self.lastxclredirect[0]) + aXCL(self.lastxclredirect[1]) + + def clargparse(self): + """ argparse style + """ + aCL = self.cl.append + aXCL = self.xmlcl.append + # inputs then params in argparse named form + for (o_v, k, v, koverride) in self.xclsuffix: + if koverride > "": + k = koverride + elif len(k.strip()) == 1: + k = "-%s" % k + else: + k = "--%s" % k + aXCL(k) + aXCL(v) + for (o_v, k, v, koverride) in self.clsuffix: + if koverride > "": + k = koverride + elif len(k.strip()) == 1: + k = "-%s" % k + else: + k = "--%s" % k + aCL(k) + aCL(v) + + def getNdash(self, newname): + if self.is_positional: + ndash = 0 + else: + ndash = 2 + if len(newname) < 2: + ndash = 1 + return ndash + + def doXMLparam(self): + """flake8 made me do this...""" + for p in self.outfiles: + newname, newfmt, newcl, oldcl = p + ndash = self.getNdash(newcl) + aparm = gxtp.OutputData(newcl, format=newfmt, num_dashes=ndash) + aparm.positional = self.is_positional + if self.is_positional: + if oldcl == "STDOUT": + aparm.positional = 9999999 + aparm.command_line_override = "> $%s" % newcl + else: + aparm.positional = int(oldcl) + aparm.command_line_override = "$%s" % newcl + self.toutputs.append(aparm) + tp = gxtp.TestOutput( + name=newcl, value="%s_sample" % newcl, format=newfmt + ) + self.testparam.append(tp) + for p in self.infiles: + newname = p[ICLPOS] + newfmt = p[IFMTPOS] + ndash = self.getNdash(newname) + if not len(p[ILABPOS]) > 0: + alab = p[ICLPOS] + else: + alab = p[ILABPOS] + aninput = gxtp.DataParam( + newname, + optional=False, + label=alab, + help=p[IHELPOS], + format=newfmt, + multiple=False, + num_dashes=ndash, + ) + aninput.positional = self.is_positional + self.tinputs.append(aninput) + tparm = gxtp.TestParam(name=newname, value="%s_sample" % newname) + self.testparam.append(tparm) + for p in self.addpar: + newname, newval, newlabel, newhelp, newtype, newcl, override, oldcl = p + if not len(newlabel) > 0: + newlabel = newname + ndash = self.getNdash(newname) + if newtype == "text": + aparm = gxtp.TextParam( + newname, + label=newlabel, + help=newhelp, + value=newval, + num_dashes=ndash, + ) + elif newtype == "integer": + aparm = gxtp.IntegerParam( + newname, + label=newname, + help=newhelp, + value=newval, + num_dashes=ndash, + ) + elif newtype == "float": + aparm = gxtp.FloatParam( + newname, + label=newname, + help=newhelp, + value=newval, + num_dashes=ndash, + ) + else: + raise ValueError( + 'Unrecognised parameter type "%s" for\ + additional parameter %s in makeXML' + % (newtype, newname) + ) + aparm.positional = self.is_positional + if self.is_positional: + aninput.positional = int(oldcl) + self.tinputs.append(aparm) + self.tparm = gxtp.TestParam(newname, value=newval) + self.testparam.append(tparm) + + def doNoXMLparam(self): + alab = self.infiles[0][ILABPOS] + if len(alab) == 0: + alab = self.infiles[0][ICLPOS] + max1s = ( + "Maximum one input if parampass is 0 - more than one input files supplied - %s" + % str(self.infiles) + ) + assert len(self.infiles) == 1, max1s + newname = self.infiles[0][ICLPOS] + aninput = gxtp.DataParam( + newname, + optional=False, + label=alab, + help=self.infiles[0][IHELPOS], + format=self.infiles[0][IFMTPOS], + multiple=False, + num_dashes=0, + ) + aninput.command_line_override = "< $%s" % newname + aninput.positional = self.is_positional + self.tinputs.append(aninput) + tp = gxtp.TestParam(name=newname, value="%s_sample" % newname) + self.testparam.append(tp) + newname = self.outfiles[0][OCLPOS] + newfmt = self.outfiles[0][OFMTPOS] + anout = gxtp.OutputData(newname, format=newfmt, num_dashes=0) + anout.command_line_override = "> $%s" % newname + anout.positional = self.is_positional + self.toutputs.append(anout) + tp = gxtp.TestOutput( + name=newname, value="%s_sample" % newname, format=newfmt + ) + self.testparam.append(tp) + + def makeXML(self): + """ + Create a Galaxy xml tool wrapper for the new script + Uses galaxyhtml + Hmmm. How to get the command line into correct order... + """ + self.tool.command_line_override = self.xmlcl + if self.args.interpreter_name: + self.tool.interpreter = self.args.interpreter_name + if self.args.help_text: + helptext = open(self.args.help_text, "r").readlines() + helptext = [html_escape(x) for x in helptext] + self.tool.help = "".join([x for x in helptext]) + else: + self.tool.help = ( + "Please ask the tool author (%s) for help \ + as none was supplied at tool generation\n" + % (self.args.user_email) + ) + self.tool.version_command = None # do not want + requirements = gxtp.Requirements() + + if self.args.interpreter_name: + if self.args.interpreter_name == "python": + requirements.append( + gxtp.Requirement( + "package", "python", self.args.interpreter_version + ) + ) + elif self.args.interpreter_name not in ["bash", "sh"]: + requirements.append( + gxtp.Requirement( + "package", + self.args.interpreter_name, + self.args.interpreter_version, + ) + ) + else: + if self.args.exe_package and self.args.parampass != "system": + requirements.append( + gxtp.Requirement( + "package", + self.args.exe_package, + self.args.exe_package_version, + ) + ) + self.tool.requirements = requirements + if self.args.parampass == "0": + self.doNoXMLparam() + else: + self.doXMLparam() + self.tool.outputs = self.toutputs + self.tool.inputs = self.tinputs + if self.args.runmode not in ["Executable", "system"]: + configfiles = gxtp.Configfiles() + configfiles.append(gxtp.Configfile(name="runMe", text=self.script)) + self.tool.configfiles = configfiles + tests = gxtp.Tests() + test_a = gxtp.Test() + for tp in self.testparam: + test_a.append(tp) + tests.append(test_a) + self.tool.tests = tests + self.tool.add_comment( + "Created by %s at %s using the Galaxy Tool Factory." + % (self.args.user_email, timenow()) + ) + self.tool.add_comment("Source in git at: %s" % (toolFactoryURL)) + self.tool.add_comment( + "Cite: Creating re-usable tools from scripts doi: 10.1093/bioinformatics/bts573" + ) + exml = self.tool.export() + xf = open('%s.xml' % self.tool_name, "w") + xf.write(exml) + xf.write("\n") + xf.close() + # ready for the tarball + + def makeTooltar(self): + """ + a tool is a gz tarball with eg + /toolname/tool.xml /toolname/tool.py /toolname/test-data/test1_in.foo ... + NOTE names for test inputs and outputs are munged here so must + correspond to actual input and output names used on the generated cl + """ + retval = self.run() + if retval: + sys.stderr.write( + "## Run failed. Cannot build yet. Please fix and retry" + ) + sys.exit(1) + tdir = "tfout" + if not os.path.exists(tdir): + os.mkdir(tdir) + self.makeXML() + testdir = os.path.join(tdir, "test-data") + if not os.path.exists(testdir): + os.mkdir(testdir) # make tests directory + for p in self.infiles: + pth = p[IPATHPOS] + dest = os.path.join(testdir, "%s_sample" % p[ICLPOS]) + shutil.copyfile(pth, dest) + for p in self.outfiles: + pth = p[OCLPOS] + if p[OOCLPOS] == "STDOUT" or self.args.parampass == "0": + pth = p[ONAMEPOS] + dest = os.path.join(testdir, "%s_sample" % p[ONAMEPOS]) + shutil.copyfile(pth, dest) + dest = os.path.join(tdir, p[ONAMEPOS]) + shutil.copyfile(pth, dest) + else: + pth = p[OCLPOS] + dest = os.path.join(testdir, "%s_sample" % p[OCLPOS]) + shutil.copyfile(pth, dest) + dest = os.path.join(tdir, p[OCLPOS]) + shutil.copyfile(pth, dest) + + if os.path.exists(self.tlog) and os.stat(self.tlog).st_size > 0: + shutil.copyfile(self.tlog, os.path.join(testdir, "test1_log_outfiletxt")) + if self.args.runmode not in ["Executable", "system"]: + stname = os.path.join(tdir, "%s" % (self.sfile)) + if not os.path.exists(stname): + shutil.copyfile(self.sfile, stname) + xreal = '%s.xml' % self.tool_name + xout = os.path.join(tdir,xreal) + shutil.copyfile(xreal, xout) + tarpath = "toolfactory_%s.tgz" % self.tool_name + tf = tarfile.open(tarpath, "w:gz") + tf.add(name=tdir, arcname=self.tool_name) + tf.close() + shutil.copyfile(tarpath, self.args.new_tool) + shutil.copyfile(xreal,"tool_xml.txt") + repdir = "TF_run_report_tempdir" + if not os.path.exists(repdir): + os.mkdir(repdir) + repoutnames = [x[OCLPOS] for x in self.outfiles] + with os.scandir('.') as outs: + for entry in outs: + if entry.name.endswith('.tgz') or not entry.is_file(): + continue + if entry.name in repoutnames: + shutil.copyfile(entry.name,os.path.join(repdir,entry.name)) + elif entry.name == "%s.xml" % self.tool_name: + shutil.copyfile(entry.name,os.path.join(repdir,"new_tool_xml")) + return retval + + def run(self): + """ + Some devteam tools have this defensive stderr read so I'm keeping with the faith + Feel free to update. + """ + s = "run cl=%s" % str(self.cl) + + logging.debug(s) + scl = " ".join(self.cl) + err = None + if self.args.parampass != "0": + ste = open(self.elog, "wb") + if self.lastclredirect: + sto = open( + self.lastclredirect[1], "wb" + ) # is name of an output file + else: + sto = open(self.tlog, "wb") + sto.write( + bytes( + "## Executing Toolfactory generated command line = %s\n" + % scl, + "utf8", + ) + ) + sto.flush() + p = subprocess.run(self.cl, shell=False, stdout=sto, stderr=ste) + sto.close() + ste.close() + tmp_stderr = open(self.elog, "rb") + err = "" + buffsize = 1048576 + try: + while True: + err += str(tmp_stderr.read(buffsize)) + if not err or len(err) % buffsize != 0: + break + except OverflowError: + pass + tmp_stderr.close() + retval = p.returncode + else: # work around special case of simple scripts that take stdin and write to stdout + sti = open(self.infiles[0][IPATHPOS], "rb") + sto = open(self.outfiles[0][ONAMEPOS], "wb") + # must use shell to redirect + p = subprocess.run(self.cl, shell=False, stdout=sto, stdin=sti) + retval = p.returncode + sto.close() + sti.close() + if os.path.isfile(self.tlog) and os.stat(self.tlog).st_size == 0: + os.unlink(self.tlog) + if os.path.isfile(self.elog) and os.stat(self.elog).st_size == 0: + os.unlink(self.elog) + if p.returncode != 0 and err: # problem + sys.stderr.write(err) + logging.debug("run done") + return retval + + +def main(): + """ + This is a Galaxy wrapper. It expects to be called by a special purpose tool.xml as: + rgBaseScriptWrapper.py --script_path "$scriptPath" --tool_name "foo" --interpreter "Rscript" + + """ + parser = argparse.ArgumentParser() + a = parser.add_argument + a("--script_path", default="") + a("--tool_name", default=None) + a("--interpreter_name", default=None) + a("--interpreter_version", default=None) + a("--exe_package", default=None) + a("--exe_package_version", default=None) + a("--input_files", default=[], action="append") + a("--output_files", default=[], action="append") + a("--user_email", default="Unknown") + a("--bad_user", default=None) + a("--make_Tool", default=None) + a("--help_text", default=None) + a("--tool_desc", default=None) + a("--tool_version", default=None) + a("--citations", default=None) + a("--additional_parameters", action="append", default=[]) + a("--edit_additional_parameters", action="store_true", default=False) + a("--parampass", default="positional") + a("--tfout", default="./tfout") + a("--new_tool", default="new_tool") + a("--runmode", default=None) + args = parser.parse_args() + assert not args.bad_user, ( + 'UNAUTHORISED: %s is NOT authorized to use this tool until Galaxy admin adds %s to "admin_users" in the Galaxy configuration file' + % (args.bad_user, args.bad_user) + ) + assert ( + args.tool_name + ), "## Tool Factory expects a tool name - eg --tool_name=DESeq" + assert ( + args.interpreter_name or args.exe_package + ), "## Tool Factory wrapper expects an interpreter or an executable package" + assert args.exe_package or ( + len(args.script_path) > 0 and os.path.isfile(args.script_path) + ), "## Tool Factory wrapper expects a script path - eg --script_path=foo.R if no executable" + args.input_files = [ + x.replace('"', "").replace("'", "") for x in args.input_files + ] + # remove quotes we need to deal with spaces in CL params + for i, x in enumerate(args.additional_parameters): + args.additional_parameters[i] = args.additional_parameters[i].replace( + '"', "" + ) + r = ScriptRunner(args) + if args.make_Tool: + retcode = r.makeTooltar() + else: + retcode = r.run() + if retcode: + sys.exit(retcode) # indicate failure to job runner + + +if __name__ == "__main__": + main() diff -r 000000000000 -r bf92b6bd8b20 pyrevpos/test-data/output_sample --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyrevpos/test-data/output_sample Tue Nov 24 21:59:01 2020 +0000 @@ -0,0 +1,741 @@ +nohtyp vne/nib/rsu/!# +yp.yrotcaFlooTgr # +yrotcafloot/2rabuf/moc.buhtig//:sptth ees # +# +2102 yaM )moc pots liamg ta surazal pots ssor( surazal ssor thgirypoc # +# +devreser sthgir lla # +LPGL eht rednu desneciL # +yrotcafloot/2rabuf/moc.buhtig//:sptth ta emoclew sexif gub dna tnemevorpmi rof snoitseggus # +# +.sraey 5 retfa elkniw nav pir ekil leef I dna nuf saw CCB :0202 yluJ # +ot dediceD # +esac tselpmis rof enod - skrow ti os yrotcafloot eht xiF .1 # +skrow noitcnuf yrotcafloot eht os omenalp xiF .2 # +enod - esnes sekam taht erehw snoitcnuf lmxyxalag gnisu stib etirweR .3 # +# +tpircs emas siht esu loot wen eht gnikam gnidulcni snoitacilpmoc dlo eht lla devomer # +lmxyxalag/anelyxeh/moc.buhtig//:sptth lmx loot eht setareneg won lmxyxalag # +stuptuo yrartibra morf noitaerc elif LMTH citamotua rof troppus oN # +kooh noitucexe tsop a sa edoc taht nur ot noitpo dda :ODOT # +eno ylno yltnerruc - sretemarap tupni yrotsih lanoitidda dda :ODOT # + + +esrapgra tropmi +gniggol tropmi +so tropmi +er tropmi +lituhs tropmi +ssecorpbus tropmi +sys tropmi +elifrat tropmi +elifpmet tropmi +emit tropmi + +txg sa loot.lmxyxalag tropmi +ptxg sa sretemarap.loot.lmxyxalag tropmi + +lmxl tropmi + +"0202 yluJ 1.2V" = noisrevym +eurT = esobrev +eurT = gubed +"yrotcafloot/2rabuf/moc.buhtig//:sptth" = LRUyrotcaFloot +"~~~" = miledruo + +lebal_tupni$~~~stamrof_tupni$~~~LC$~~~selif_tupni$"=selif_tupni-- # +"pleh_tupni$~~~ # +0 = SOPHTAPI +1 = SOPLCI +2 = SOPTMFI +3 = SOPBALI +4 = SOPLEHI +5 = SOPLCOI + +LC.bato$~~~tamrof_yrotsih.bato$~~~eman_yrotsih.bato$" selif_tuptuo-- # +0 = SOPEMANO +1 = SOPTMFO +2 = SOPLCO +3 = SOPLCOO + +~~~eulav_marap.i$~~~eman_marap.i$"=sretemarap_lanoitidda-- # +"edirrevoLC_marap.$i~~~LC.i$~~~epyt_marap.i$~~~pleh_marap.i$~~~lebal_marap.i$ # +0 = SOPEMANA +1 = SOPLAVA +2 = SOPBALA +3 = SOPPLEHA +4 = SOPEPYTA +5 = SOPLCA +6 = SOPREVOA +7 = SOPLCOA + + +)__noisrev__.lmxl(nel = oof +!eman ym yaS .8ekalf ,uoy guf # + +:)(wonemit fed +gnirts a sa emit tnerruc nruter""" +""" +)))(emit.emit(emitlacol.emit ,"S%:M%:H% Y%/m%/d%"(emitfrts.emit nruter + + +:)s(ciremun_non_etouq fed +sciremun-non rof gnirts detouqerp a nruter""" +?gnissap retemarap tpircsR dna lrep rof lufesu +""" +:yrt +)s(taolf = _ +s nruter +:rorrEeulaV tpecxe +s % '"s%"' nruter + + +}"$\"r :"$" ,";tl&" :"<" ,";tg&" :">" ,";pma&" :"&"{ = elbat_epacse_lmth + + +:)txet(epacse_lmth fed +""".txet nihtiw seititne ecudorP""" +)txet ni c rof )c ,c(teg.elbat_epacse_lmth(nioj."" nruter + + +:)txet(epacsenu_lmth fed +"""ecalper esu os stegrat retcarahc elpitluM .txet nihtiw seititne treveR""" +)"&" ,";pma&"(ecalper.txet = t +)">" ,";tg&"(ecalper.t = t +)"<" ,";tl&"(ecalper.t = t +)"$" ,"$\\"(ecalper.t = t +t nruter + + +:)txet_snoitatic(snoitatic_esrap fed +""" +""" +])(pirts.c fi )"**YRTNE**"(tilps.txet_snoitatic ni c rof c[ = snoitatic +][ = selput_noitatic +:snoitatic ni noitatic rof +:)"iod"(htiwstrats.noitatic fi +)))(pirts.]: )"iod"(nel[noitatic ,"iod"((dneppa.selput_noitatic +:esle +(dneppa.selput_noitatic +))(pirts.]: )"xetbib"(nel[noitatic ,"xetbib"( +) +selput_noitatic nruter + + +:rennuRtpircS ssalc +tpircs yrartibra na rof repparW""" +lmxyxalag sesu + +""" + +:)enoN=sgra ,fles(__tini__ fed +""" +ereh loot eht gninnur rof lc enil dnammoc eraperp +noitareneg loot lmxyxalag rof dedeen stnemele eraperp dna +""" + +]selif_tupni.sgra ni x rof )miledruo(tilps.x[ = selifni.fles +]selif_tuptuo.sgra ni x rof )miledruo(tilps.x[ = seliftuo.fles +]sretemarap_lanoitidda.sgra ni x rof )miledruo(tilps.x[ = rapdda.fles +sgra = sgra.fles +)(rappunaelc.fles +enoN = tceriderlctsal.fles +enoN = tceriderlcxtsal.fles +][ = lc.fles +][ = lclmx.fles +"lanoitisop" == ssapmarap.sgra.fles = lanoitisop_si.fles +dneppa.lc.fles = LCa +[ ni ssapmarap.sgra tressa +,"0" +,"esrapgra" +,"lanoitisop" +'"esrapgra" ro "lanoitisop","0" eb tsum ssapmarap.sgra ni gnissap retemaraP' ,] +)eman_loot.sgra ,"" ,"+]_9-0Z-Az-a^["(bus.er = eman_loot.fles +eman_loot.fles = di_loot.fles +:eman_reterpretni.sgra.fles fi +"eMnur$" = exe +:esle +egakcap_exe.sgra.fles = exe +( tressa +enoN ton si exe +"dliub tonnac os nur ot gnihton - ni dessap elbatucexe ro retepretni oN" ,) +(looT.txg = loot.fles +,eman_loot.sgra.fles +,di_loot.fles +,noisrev_loot.sgra.fles +,csed_loot.sgra.fles +,exe +) +)(stupnI.ptxg = stupnit.fles +)(stuptuO.ptxg = stuptuot.fles +][ = maraptset.fles +( fi +"metsys" == edomnur.sgra.fles ro "elbatucexE" == edomnur.sgra.fles +deen on - yranib # :) +nur tsuj lliw LC elttil siht # )egakcap_exe.sgra.fles(LCa +:esle +)(tpircSperp.fles +eman_loot.fles % "txt.gol_rorre_s%" = gole.fles +eman_loot.fles % "txt.gol_rennur_s%" = golt.fles + +:"0" == ssapmarap.sgra.fles fi +)(elpmislc.fles +:esle +][ = xiffuslc +][ = xiffuslcx +:)selifni.fles(etaremune ni p ,i rof +:"NIDTS" == ]SOPLCOI[p fi +[ = emdneppa +,]SOPLCOI[p +,]SOPLCI[p +,]SOPHTAPI[p +,]SOPHTAPI[p % "s% <" +] +[ = emdneppax +,]SOPLCOI[p +,]SOPLCI[p +,]SOPHTAPI[p +,]SOPLCI[p % "s%$ <" +] +:esle +]"" ,]SOPHTAPI[p ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppa +]"" ,]SOPLCI[p % "s%$" ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppax +)emdneppa(dneppa.xiffuslc +)emdneppax(dneppa.xiffuslcx +))emdneppa,i( % 's%=emdneppa ,d%=i elifni##'(tnirp # +:)seliftuo.fles(etaremune ni p ,i rof +:"TUODTS" == ]SOPLCOO[p fi +]]SOPEMANO[p ,">"[ = tceriderlctsal.fles +]]SOPLCO[p % "s%$" ,">"[ = tceriderlcxtsal.fles +:esle +)]"" ,]SOPEMANO[p ,]SOPLCO[p ,]SOPLCOO[p[(dneppa.xiffuslc +(dneppa.xiffuslcx +]"" ,]SOPEMANO[p % "s%$" ,]SOPLCO[p ,]SOPLCOO[p[ +) +:rapdda.fles ni p rof +(dneppa.xiffuslc +]]SOPREVOA[p ,]SOPLAVA[p ,]SOPLCA[p ,]SOPLCOA[p[ +) +(dneppa.xiffuslcx +]]SOPREVOA[p ,]SOPEMANA[p % '"s%$"' ,]SOPLCA[p ,]SOPLCOA[p[ +) +)(tros.xiffuslc +)(tros.xiffuslcx +xiffuslcx = xiffuslcx.fles +xiffuslc = xiffuslc.fles +:"lanoitisop" == ssapmarap.sgra.fles fi +)(lanoitisoplc.fles +:esle +)(esrapgralc.fles + +:)fles(tpircSperp fed +dneppa.lc.fles = LCa +)(senildaer.)"r" ,htap_tpircs.sgra.fles(nepo = xr +]xr ni x rof )(pirtsr.x[ = xr +]"" > )(pirts.x fi xr ni x rof )(pirts.x[ = kcehcxr +"nur tonnaC .ytpme si tpircs deilppuS" ,0 > )kcehcxr(nel tressa +)xr(nioj."n\" = tpircs.fles +(pmetskm.elifpmet = elifs.fles ,eldnahf +)eman_reterpretni.sgra.fles( % "s%_"=xiffus ,eman_loot.fles=xiferp +) +)"w" ,elifs.fles(nepo = tpircst +)tpircs.fles(etirw.tpircst +)(esolc.tpircst +(nioj."n\" % "s% " = tpircSdetnedni.fles +]xr ni x rof )x(epacse_lmth % "s% "[ +) +(nioj."n\" % "s%" = tpircSdepacse.fles +]xr ni x rof )x(epacse_lmth % "s% "[ +) +)eman_reterpretni.sgra.fles ,eman_loot.fles( % "s%.s%" = tra +)"bw" ,tra(nepo = tcafitra +))"8ftu" ,tpircs.fles(setyb(etirw.tcafitra +)(esolc.tcafitra +)eman_reterpretni.sgra.fles(LCa +)elifs.fles(LCa + +:)fles(rappunaelc fed +"""lanidro ciremun rieht yb detacilpmoc era sretemarap lanoitisop """ +:)selifni.fles(etaremune ni p ,i rof +:"lanoitisop" == ssapmarap.sgra.fles fi +( ,)(tigidsi.]SOPLCI[p tressa +"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" +)]SOPBALI[p ,]SOPLCI[p( % +) +)]SOPLCI[p(dneppa.p +:"0" == ssapmarap.sgra.fles ro )(tigidsi.]SOPLCI[p fi +)1 + i( % "d%tupni" = lcs +lcs = ]SOPLCI[p +p = ]i[selifni.fles +(etaremune ni p ,i rof +seliftuo.fles +snoisnetxe gnisu rehtag yllacigamotua ot gniyrt # :) +:"TUODTS" =! ]SOPLCO[p dna "lanoitisop" == ssapmarap.sgra.fles fi +( ,)(tigidsi.]SOPLCO[p tressa +"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" +)]SOPEMANO[p ,]SOPLCO[p( % +) +)]SOPLCO[p(dneppa.p +:"TUODTS" == ]SOPLCO[p ro )(tigidsi.]SOPLCO[p fi +]SOPEMANO[p = lcs +lcs = ]SOPLCO[p +p = ]i[seliftuo.fles +:)rapdda.fles(etaremune ni p ,i rof +:"lanoitisop" == ssapmarap.sgra.fles fi +( ,)(tigidsi.]SOPLCA[p tressa +"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" +)]SOPEMANA[p ,]SOPLCA[p( % +) +)]SOPLCA[p(dneppa.p +:)(tigidsi.]SOPLCA[p fi +]SOPLCA[p % "s%tupni" = lcs +lcs = ]SOPLCA[p +p = ]i[rapdda.fles + +:)fles(elpmislc fed +o/i rof > dna < sesu - sretemarap on """ +""" +dneppa.lc.fles = LCa +)"<"(LCa +)]SOPHTAPI[]0[selifni.fles(LCa +)">"(LCa +)]SOPLCO[]0[seliftuo.fles(LCa +dneppa.lclmx.fles = LCXa +)"<"(LCXa +)]SOPLCI[]0[selifni.fles % "s%$"(LCXa +)">"(LCXa +)]SOPEMANO[]0[seliftuo.fles % "s%$"(LCXa + +:)fles(lanoitisoplc fed +smarap neht redro ni stupni # +dneppa.lc.fles = LCa +:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof +:v ni " " fi +)v % "s%"(LCa +:esle +)v(LCa +dneppa.lclmx.fles = LCXa +:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof +)v(LCXa +:tceriderlcxtsal.fles fi +)]0[tceriderlcxtsal.fles(LCXa +)]1[tceriderlcxtsal.fles(LCXa + +:)fles(esrapgralc fed +elyts esrapgra """ +""" +dneppa.lc.fles = LCa +dneppa.lclmx.fles = LCXa +mrof deman esrapgra ni smarap neht stupni # +:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof +:"" > edirrevok fi +edirrevok = k +:1 == ))(pirts.k(nel file +k % "s%-" = k +:esle +k % "s%--" = k +)k(LCXa +)v(LCXa +:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof +:"" > edirrevok fi +edirrevok = k +:1 == ))(pirts.k(nel file +k % "s%-" = k +:esle +k % "s%--" = k +)k(LCa +)v(LCa + +:)emanwen ,fles(hsadNteg fed +:lanoitisop_si.fles fi +0 = hsadn +:esle +2 = hsadn +:2 < )emanwen(nel fi +1 = hsadn +hsadn nruter + +:)fles(marapLMXod fed +"""...siht od em edam 8ekalf""" +:seliftuo.fles ni p rof +p = lcdlo ,lcwen ,tmfwen ,emanwen +)lcwen(hsadNteg.fles = hsadn +)hsadn=sehsad_mun ,tmfwen=tamrof ,lcwen(ataDtuptuO.ptxg = mrapa +lanoitisop_si.fles = lanoitisop.mrapa +:lanoitisop_si.fles fi +:"TUODTS" == lcdlo fi +9999999 = lanoitisop.mrapa +lcwen % "s%$ >" = edirrevo_enil_dnammoc.mrapa +:esle +)lcdlo(tni = lanoitisop.mrapa +lcwen % "s%$" = edirrevo_enil_dnammoc.mrapa +)mrapa(dneppa.stuptuot.fles +(tuptuOtseT.ptxg = pt +tmfwen=tamrof ,lcwen % "elpmas_s%"=eulav ,lcwen=eman +) +)pt(dneppa.maraptset.fles +:selifni.fles ni p rof +]SOPLCI[p = emanwen +]SOPTMFI[p = tmfwen +)emanwen(hsadNteg.fles = hsadn +:0 > )]SOPBALI[p(nel ton fi +]SOPLCI[p = bala +:esle +]SOPBALI[p = bala +(maraPataD.ptxg = tupnina +,emanwen +,eslaF=lanoitpo +,bala=lebal +,]SOPLEHI[p=pleh +,tmfwen=tamrof +,eslaF=elpitlum +,hsadn=sehsad_mun +) +lanoitisop_si.fles = lanoitisop.tupnina +)tupnina(dneppa.stupnit.fles +)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = mrapt +)mrapt(dneppa.maraptset.fles +:rapdda.fles ni p rof +p = lcdlo ,edirrevo ,lcwen ,epytwen ,plehwen ,lebalwen ,lavwen ,emanwen +:0 > )lebalwen(nel ton fi +emanwen = lebalwen +)emanwen(hsadNteg.fles = hsadn +:"txet" == epytwen fi +(maraPtxeT.ptxg = mrapa +,emanwen +,lebalwen=lebal +,plehwen=pleh +,lavwen=eulav +,hsadn=sehsad_mun +) +:"regetni" == epytwen file +(maraPregetnI.ptxg = mrapa +,emanwen +,emanwen=lebal +,plehwen=pleh +,lavwen=eulav +,hsadn=sehsad_mun +) +:"taolf" == epytwen file +(maraPtaolF.ptxg = mrapa +,emanwen +,emanwen=lebal +,plehwen=pleh +,lavwen=eulav +,hsadn=sehsad_mun +) +:esle +(rorrEeulaV esiar +\rof "s%" epyt retemarap desingocernU' +'LMXekam ni s% retemarap lanoitidda +)emanwen ,epytwen( % +) +lanoitisop_si.fles = lanoitisop.mrapa +:lanoitisop_si.fles fi +)lcdlo(tni = lanoitisop.tupnina +)mrapa(dneppa.stupnit.fles +)lavwen=eulav ,emanwen(maraPtseT.ptxg = mrapt.fles +)mrapt(dneppa.maraptset.fles + +:)fles(marapLMXoNod fed +]SOPBALI[]0[selifni.fles = bala +:0 == )bala(nel fi +]SOPLCI[]0[selifni.fles = bala +( = s1xam +"s% - deilppus selif tupni eno naht erom - 0 si ssapmarap fi tupni eno mumixaM" +)selifni.fles(rts % +) +s1xam ,1 == )selifni.fles(nel tressa +]SOPLCI[]0[selifni.fles = emanwen +(maraPataD.ptxg = tupnina +,emanwen +,eslaF=lanoitpo +,bala=lebal +,]SOPLEHI[]0[selifni.fles=pleh +,]SOPTMFI[]0[selifni.fles=tamrof +,eslaF=elpitlum +,0=sehsad_mun +) +emanwen % "s%$ <" = edirrevo_enil_dnammoc.tupnina +lanoitisop_si.fles = lanoitisop.tupnina +)tupnina(dneppa.stupnit.fles +)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = pt +)pt(dneppa.maraptset.fles +]SOPLCO[]0[seliftuo.fles = emanwen +]SOPTMFO[]0[seliftuo.fles = tmfwen +)0=sehsad_mun ,tmfwen=tamrof ,emanwen(ataDtuptuO.ptxg = tuona +emanwen % "s%$ >" = edirrevo_enil_dnammoc.tuona +lanoitisop_si.fles = lanoitisop.tuona +)tuona(dneppa.stuptuot.fles +(tuptuOtseT.ptxg = pt +tmfwen=tamrof ,emanwen % "elpmas_s%"=eulav ,emanwen=eman +) +)pt(dneppa.maraptset.fles + +:)fles(LMXekam fed +""" +tpircs wen eht rof repparw loot lmx yxalaG a etaerC +lmthyxalag sesU +...redro tcerroc otni enil dnammoc eht teg ot woH .mmmH +""" +lclmx.fles = edirrevo_enil_dnammoc.loot.fles +:eman_reterpretni.sgra.fles fi +eman_reterpretni.sgra.fles = reterpretni.loot.fles +:txet_pleh.sgra.fles fi +)(senildaer.)"r" ,txet_pleh.sgra.fles(nepo = txetpleh +]txetpleh ni x rof )x(epacse_lmth[ = txetpleh +)]txetpleh ni x rof x[(nioj."" = pleh.loot.fles +:esle +( = pleh.loot.fles +\ pleh rof )s%( rohtua loot eht ksa esaelP" +"n\noitareneg loot ta deilppus saw enon sa +)liame_resu.sgra.fles( % +) +tnaw ton od # enoN = dnammoc_noisrev.loot.fles +)(stnemeriuqeR.ptxg = stnemeriuqer + +:eman_reterpretni.sgra.fles fi +:"nohtyp" == eman_reterpretni.sgra.fles fi +(dneppa.stnemeriuqer +(tnemeriuqeR.ptxg +noisrev_reterpretni.sgra.fles ,"nohtyp" ,"egakcap" +) +) +:]"hs" ,"hsab"[ ni ton eman_reterpretni.sgra.fles file +(dneppa.stnemeriuqer +(tnemeriuqeR.ptxg +,"egakcap" +,eman_reterpretni.sgra.fles +,noisrev_reterpretni.sgra.fles +) +) +:esle +:"metsys" =! ssapmarap.sgra.fles dna egakcap_exe.sgra.fles fi +(dneppa.stnemeriuqer +(tnemeriuqeR.ptxg +,"egakcap" +,egakcap_exe.sgra.fles +,noisrev_egakcap_exe.sgra.fles +) +) +stnemeriuqer = stnemeriuqer.loot.fles +:"0" == ssapmarap.sgra.fles fi +)(marapLMXoNod.fles +:esle +)(marapLMXod.fles +stuptuot.fles = stuptuo.loot.fles +stupnit.fles = stupni.loot.fles +:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi +)(selifgifnoC.ptxg = selifgifnoc +))tpircs.fles=txet ,"eMnur"=eman(elifgifnoC.ptxg(dneppa.selifgifnoc +selifgifnoc = selifgifnoc.loot.fles +)(stseT.ptxg = stset +)(tseT.ptxg = a_tset +:maraptset.fles ni pt rof +)pt(dneppa.a_tset +)a_tset(dneppa.stset +stset = stset.loot.fles +(tnemmoc_dda.loot.fles +".yrotcaF looT yxalaG eht gnisu s% ta s% yb detaerC" +))(wonemit ,liame_resu.sgra.fles( % +) +))LRUyrotcaFloot( % "s% :ta tig ni ecruoS"(tnemmoc_dda.loot.fles +(tnemmoc_dda.loot.fles +"375stb/scitamrofnioib/3901.01 :iod stpircs morf sloot elbasu-er gnitaerC :etiC" +) +)(tropxe.loot.fles = lmxe +)"w" ,eman_loot.fles % 'lmx.s%'(nepo = fx +)lmxe(etirw.fx +)"n\"(etirw.fx +)(esolc.fx +llabrat eht rof ydaer # + +:)fles(ratlooTekam fed +""" +ge htiw llabrat zg a si loot a +... oof.ni_1tset/atad-tset/emanloot/ yp.loot/emanloot/ lmx.loot/emanloot/ +tsum os ereh degnum era stuptuo dna stupni tset rof seman ETON +lc detareneg eht no desu seman tuptuo dna tupni lautca ot dnopserroc +""" +)(nur.fles = lavter +:lavter fi +(etirw.rredts.sys +"yrter dna xif esaelP .tey dliub tonnaC .deliaf nuR ##" +) +)1(tixe.sys +"tuoft" = ridt +:)ridt(stsixe.htap.so ton fi +)ridt(ridkm.so +)(LMXekam.fles +)"atad-tset" ,ridt(nioj.htap.so = ridtset +:)ridtset(stsixe.htap.so ton fi +yrotcerid stset ekam # )ridtset(ridkm.so +:selifni.fles ni p rof +]SOPHTAPI[p = htp +)]SOPLCI[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +:seliftuo.fles ni p rof +]SOPLCO[p = htp +:"0" == ssapmarap.sgra.fles ro "TUODTS" == ]SOPLCOO[p fi +]SOPEMANO[p = htp +)]SOPEMANO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +)]SOPEMANO[p ,ridt(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +:esle +]SOPLCO[p = htp +)]SOPLCO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs +)]SOPLCO[p ,ridt(nioj.htap.so = tsed +)tsed ,htp(elifypoc.lituhs + +:0 > ezis_ts.)golt.fles(tats.so dna )golt.fles(stsixe.htap.so fi +))"txteliftuo_gol_1tset" ,ridtset(nioj.htap.so ,golt.fles(elifypoc.lituhs +:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi +))elifs.fles( % "s%" ,ridt(nioj.htap.so = emants +:)emants(stsixe.htap.so ton fi +)emants ,elifs.fles(elifypoc.lituhs +eman_loot.fles % 'lmx.s%' = laerx +)laerx,ridt(nioj.htap.so = tuox +)tuox ,laerx(elifypoc.lituhs +eman_loot.fles % "zgt.s%_yrotcafloot" = htaprat +)"zg:w" ,htaprat(nepo.elifrat = ft +)eman_loot.fles=emancra ,ridt=eman(dda.ft +)(esolc.ft +)loot_wen.sgra.fles ,htaprat(elifypoc.lituhs +)"txt.lmx_loot",laerx(elifypoc.lituhs +"ridpmet_troper_nur_FT" = ridper +:)ridper(stsixe.htap.so ton fi +)ridper(ridkm.so +]seliftuo.fles ni x rof ]SOPLCO[x[ = semantuoper +:stuo sa )'.'(ridnacs.so htiw +:stuo ni yrtne rof +:)(elif_si.yrtne ton ro )'zgt.'(htiwsdne.eman.yrtne fi +eunitnoc +:semantuoper ni eman.yrtne fi +))eman.yrtne,ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs +:eman_loot.fles % "lmx.s%" == eman.yrtne file +))"lmx_loot_wen",ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs +lavter nruter + +:)fles(nur fed +""" +htiaf eht htiw gnipeek m'I os daer rredts evisnefed siht evah sloot maetved emoS +.etadpu ot eerf leeF +""" +)lc.fles(rts % "s%=lc nur" = s + +)s(gubed.gniggol +)lc.fles(nioj." " = lcs +enoN = rre +:"0" =! ssapmarap.sgra.fles fi +)"bw" ,gole.fles(nepo = ets +:tceriderlctsal.fles fi +(nepo = ots +"bw" ,]1[tceriderlctsal.fles +elif tuptuo na fo eman si # ) +:esle +)"bw" ,golt.fles(nepo = ots +(etirw.ots +(setyb +"n\s% = enil dnammoc detareneg yrotcaflooT gnitucexE ##" +,lcs % +,"8ftu" +) +) +)(hsulf.ots +)ets=rredts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p +)(esolc.ots +)(esolc.ets +)"br" ,gole.fles(nepo = rredts_pmt +"" = rre +6758401 = ezisffub +:yrt +:eurT elihw +))ezisffub(daer.rredts_pmt(rts =+ rre +:0 =! ezisffub % )rre(nel ro rre ton fi +kaerb +:rorrEwolfrevO tpecxe +ssap +)(esolc.rredts_pmt +edocnruter.p = lavter +tuodts ot etirw dna nidts ekat taht stpircs elpmis fo esac laiceps dnuora krow # :esle +)"br" ,]SOPHTAPI[]0[selifni.fles(nepo = its +)"bw" ,]SOPEMANO[]0[seliftuo.fles(nepo = ots +tcerider ot llehs esu tsum # +)its=nidts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p +edocnruter.p = lavter +)(esolc.ots +)(esolc.its +:0 == ezis_ts.)golt.fles(tats.so dna )golt.fles(elifsi.htap.so fi +)golt.fles(knilnu.so +:0 == ezis_ts.)gole.fles(tats.so dna )gole.fles(elifsi.htap.so fi +)gole.fles(knilnu.so +melborp # :rre dna 0 =! edocnruter.p fi +)rre(etirw.rredts.sys +)"enod nur"(gubed.gniggol +lavter nruter + + +:)(niam fed +""" +:sa lmx.loot esoprup laiceps a yb dellac eb ot stcepxe tI .repparw yxalaG a si sihT +"tpircsR" reterpretni-- "oof" eman_loot-- "htaPtpircs$" htap_tpircs-- yp.repparWtpircSesaBgr>"nohtyp"=reterpretni dnammoc< +>dnammoc/< +""" +)(resraPtnemugrA.esrapgra = resrap +tnemugra_dda.resrap = a +)""=tluafed ,"htap_tpircs--"(a +)enoN=tluafed ,"eman_loot--"(a +)enoN=tluafed ,"eman_reterpretni--"(a +)enoN=tluafed ,"noisrev_reterpretni--"(a +)enoN=tluafed ,"egakcap_exe--"(a +)enoN=tluafed ,"noisrev_egakcap_exe--"(a +)"dneppa"=noitca ,][=tluafed ,"selif_tupni--"(a +)"dneppa"=noitca ,][=tluafed ,"selif_tuptuo--"(a +)"nwonknU"=tluafed ,"liame_resu--"(a +)enoN=tluafed ,"resu_dab--"(a +)enoN=tluafed ,"looT_ekam--"(a +)enoN=tluafed ,"txet_pleh--"(a +)enoN=tluafed ,"csed_loot--"(a +)enoN=tluafed ,"noisrev_loot--"(a +)enoN=tluafed ,"snoitatic--"(a +)][=tluafed ,"dneppa"=noitca ,"sretemarap_lanoitidda--"(a +)eslaF=tluafed ,"eurt_erots"=noitca ,"sretemarap_lanoitidda_tide--"(a +)"lanoitisop"=tluafed ,"ssapmarap--"(a +)"tuoft/."=tluafed ,"tuoft--"(a +)"loot_wen"=tluafed ,"loot_wen--"(a +)enoN=tluafed ,"edomnur--"(a +)(sgra_esrap.resrap = sgra +( ,resu_dab.sgra ton tressa +'elif noitarugifnoc yxalaG eht ni "sresu_nimda" ot s% sdda nimda yxalaG litnu loot siht esu ot dezirohtua TON si s% :DESIROHTUANU' +)resu_dab.sgra ,resu_dab.sgra( % +) +( tressa +eman_loot.sgra +"qeSED=eman_loot-- ge - eman loot a stcepxe yrotcaF looT ##" ,) +( tressa +egakcap_exe.sgra ro eman_reterpretni.sgra +"egakcap elbatucexe na ro reterpretni na stcepxe repparw yrotcaF looT ##" ,) +( ro egakcap_exe.sgra tressa +)htap_tpircs.sgra(elifsi.htap.so dna 0 > )htap_tpircs.sgra(nel +"elbatucexe on fi R.oof=htap_tpircs-- ge - htap tpircs a stcepxe repparw yrotcaF looT ##" ,) +[ = selif_tupni.sgra +selif_tupni.sgra ni x rof )"" ,"'"(ecalper.)"" ,'"'(ecalper.x +] +smarap LC ni secaps htiw laed ot deen ew setouq evomer # +:)sretemarap_lanoitidda.sgra(etaremune ni x ,i rof +(ecalper.]i[sretemarap_lanoitidda.sgra = ]i[sretemarap_lanoitidda.sgra +"" ,'"' +) +)sgra(rennuRtpircS = r +:looT_ekam.sgra fi +)(ratlooTekam.r = edocter +:esle +)(nur.r = edocter +:edocter fi +rennur boj ot eruliaf etacidni # )edocter(tixe.sys + + +:"__niam__" == __eman__ fi +)(niam diff -r 000000000000 -r bf92b6bd8b20 pyrevpos/test-data/test1_log.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyrevpos/test-data/test1_log.txt Tue Nov 24 21:59:01 2020 +0000 @@ -0,0 +1,1 @@ +## Executing Toolfactory generated command line = python /home/ross/galaxy/database/tmp/pyrevposz9rx5n8f.python /home/ross/galaxy/database/objects/9/8/a/dataset_98a46be8-3a8f-4152-90ba-4a9e913f4eb4.dat output diff -r 000000000000 -r bf92b6bd8b20 pyrevpos/test1_log_outfiletxt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyrevpos/test1_log_outfiletxt Tue Nov 24 21:59:01 2020 +0000 @@ -0,0 +1,1 @@ +## Executing Toolfactory generated command line = python /home/ross/galaxy/database/tmp/pyrevposygle0d43_python /home/ross/galaxy/database/objects/f/a/6/dataset_fa66be33-3c07-465d-be42-f2b0950b293d.dat output