From a800207c4d758ce9f45e0be308970a60b044d08b Mon Sep 17 00:00:00 2001 From: Dhvani Patel Date: Tue, 18 Jul 2017 09:20:11 -0600 Subject: [PATCH] Fixed bugs and testing dif keras models --- __pycache__/toCheck.pypy-41.pyc | Bin 626 -> 2604 bytes check_pypy_syntax.py | 176 +++++++++++++++++++++++++++- check_pypy_syntax.pyc | Bin 2020 -> 5739 bytes keras_model.py | 200 ++++++++++++++++++++------------ mutate_token_delete.py | 61 +++++----- mutate_token_delete.pyc | Bin 3089 -> 2642 bytes mutate_token_insert.py | 114 +++++++++--------- mutate_token_insert.pyc | Bin 4542 -> 3705 bytes mutate_token_sub.py | 87 +++++++------- mutate_token_sub.pyc | Bin 4402 -> 3708 bytes py_mutations_hub.py | 149 ++++++++++++------------ py_mutations_hub.pyc | Bin 10141 -> 8971 bytes 12 files changed, 509 insertions(+), 278 deletions(-) diff --git a/__pycache__/toCheck.pypy-41.pyc b/__pycache__/toCheck.pypy-41.pyc index 418ee99d35e9ec099a0655e7daa85a4ab80b6814..078bd8a700f496609a6f50ba644ac6c71217492e 100644 GIT binary patch literal 2604 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 diff --git a/keras_model.py b/keras_model.py index 6c14586..8e51db6 100644 --- a/keras_model.py +++ b/keras_model.py @@ -10,6 +10,7 @@ import numpy as np from itertools import izip_longest from itertools import izip +from keras import optimizers # BATCH = 60 @@ -32,29 +33,33 @@ def getInputTen(): while fileInd <= 10: # 462540 #while windowInd < int(len(insArr)/10): if windowInd < int(len(one_hot_bad_ins)/10): - toPass = [] + toPassOne = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_good[y]) + toPassOne.append(one_hot_good[y]) + toPassTwo = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_ins[y]) + toPassTwo.append(one_hot_bad_ins[y]) + toPassThree = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_del[y]) + toPassThree.append(one_hot_bad_del[y]) + toPassFour = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_sub[y]) + toPassFour.append(one_hot_bad_sub[y]) #print len(toPass) + toPass = np.array((toPassOne, toPassTwo, toPassThree, toPassFour)) + #print toPass.shape a = numpy.array(toPass) - b = a[None, :, :] #print b.shape - yield b + yield a #print numpy.array(toPass).shape #print "mine too" windowInd += 1 else: - print "NEXT FILE" + #print "NEXT FILE" old_one_hot_good = one_hot_good[:] old_one_hot_bad_ins = one_hot_bad_ins[:] @@ -69,6 +74,10 @@ def getInputTen(): fileInd += 1 windowInd = 0 one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(fileInd) + while(one_hot_good == None): + fileInd+=1 + one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(fileInd) + for p in range(numGoodLeft): one_hot_good.insert(p, old_one_hot_good[len(old_one_hot_good)-numGoodLeft+p]) @@ -86,28 +95,33 @@ def getOutputTen(): while fileInd <= 10: # 462540 #while windowInd < int(len(insArr)/10): if windowInd < int(len(one_hot_bad_ins_out)/10): - toPass = [] + toPassOne = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_good_out[y]) + toPassOne.append(one_hot_good_out[y]) + toPassTwo = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_ins_out[y]) + toPassTwo.append(one_hot_bad_ins_out[y]) + toPassThree = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_del_out[y]) + toPassThree.append(one_hot_bad_del_out[y]) + toPassFour = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_sub_out[y]) + toPassFour.append(one_hot_bad_sub_out[y]) #print len(toPass) + toPass = np.array((toPassOne, toPassTwo, toPassThree, toPassFour)) + #print toPass.shape a = numpy.array(toPass) - b = a[None, :, :] - yield b + #print b.shape + yield a #print numpy.array(toPass).shape #print "mine" windowInd += 1 else: - print "NEXT FILE" + #print "NEXT FILE" old_one_hot_good_out = one_hot_good_out[:] old_one_hot_bad_ins_out = one_hot_bad_ins_out[:] @@ -122,6 +136,9 @@ def getOutputTen(): fileInd += 1 windowInd = 0 _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(fileInd) + while(one_hot_good_out == None): + fileInd+=1 + _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(fileInd) for p in range(numGoodOutLeft): one_hot_good_out.insert(p, old_one_hot_good_out[len(old_one_hot_good_out)-numGoodOutLeft+p]) @@ -140,29 +157,33 @@ def getInputValTen(): while fileInd <= 20: # 462540 #while windowInd < int(len(insArr)/10): if windowInd < int(len(one_hot_bad_ins)/10): - toPass = [] + toPassOne = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_good[y]) + toPassOne.append(one_hot_good[y]) + toPassTwo = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_ins[y]) + toPassTwo.append(one_hot_bad_ins[y]) + toPassThree = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_del[y]) + toPassThree.append(one_hot_bad_del[y]) + toPassFour = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_sub[y]) + toPassFour.append(one_hot_bad_sub[y]) #print len(toPass) + toPass = np.array((toPassOne, toPassTwo, toPassThree, toPassFour)) + #print toPass.shape a = numpy.array(toPass) - b = a[None, :, :] #print b.shape - yield b + yield a #print numpy.array(toPass).shape #print "mine too" windowInd += 1 else: - print "NEXT FILE" + #print "NEXT FILE" old_one_hot_good = one_hot_good[:] old_one_hot_bad_ins = one_hot_bad_ins[:] @@ -177,6 +198,9 @@ def getInputValTen(): fileInd += 1 windowInd = 0 one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(fileInd) + while(one_hot_good == None): + fileInd+=1 + one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(fileInd) for p in range(numGoodLeft): one_hot_good.insert(p, old_one_hot_good[len(old_one_hot_good)-numGoodLeft+p]) @@ -194,28 +218,33 @@ def getOutputValTen(): while fileInd <= 20: # 462540 #while windowInd < int(len(insArr)/10): if windowInd < int(len(one_hot_bad_ins_out)/10): - toPass = [] + toPassOne = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_good_out[y]) + toPassOne.append(one_hot_good_out[y]) + toPassTwo = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_ins_out[y]) + toPassTwo.append(one_hot_bad_ins_out[y]) + toPassThree = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_del_out[y]) + toPassThree.append(one_hot_bad_del_out[y]) + toPassFour = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_sub_out[y]) + toPassFour.append(one_hot_bad_sub_out[y]) #print len(toPass) + toPass = np.array((toPassOne, toPassTwo, toPassThree, toPassFour)) + #print toPass.shape a = numpy.array(toPass) - b = a[None, :, :] - yield b + #print b.shape + yield a #print numpy.array(toPass).shape #print "mine" windowInd += 1 else: - print "NEXT FILE" + #print "NEXT FILE" old_one_hot_good_out = one_hot_good_out[:] old_one_hot_bad_ins_out = one_hot_bad_ins_out[:] @@ -230,6 +259,10 @@ def getOutputValTen(): fileInd += 1 windowInd = 0 _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(fileInd) + + while(one_hot_good_out == None): + fileInd+=1 + _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(fileInd) for p in range(numGoodOutLeft): one_hot_good_out.insert(p, old_one_hot_good_out[len(old_one_hot_good_out)-numGoodOutLeft+p]) @@ -241,35 +274,39 @@ def getOutputValTen(): one_hot_bad_sub_out.insert(p, old_one_hot_bad_sub_out[len(old_one_hot_bad_sub_out)-numBadSubOutLeft+p]) def getInputTestTen(): - one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(21) + one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(0) windowInd = 0 - fileInd = 21 - while fileInd <= 30: # 462540 + fileInd = 0 + while fileInd <= 10: # 462540 #while windowInd < int(len(insArr)/10): if windowInd < int(len(one_hot_bad_ins)/10): - toPass = [] + toPassOne = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_good[y]) + toPassOne.append(one_hot_good[y]) + toPassTwo = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_ins[y]) + toPassTwo.append(one_hot_bad_ins[y]) + toPassThree = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_del[y]) + toPassThree.append(one_hot_bad_del[y]) + toPassFour = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_sub[y]) + toPassFour.append(one_hot_bad_sub[y]) #print len(toPass) + toPass = np.array((toPassOne, toPassTwo, toPassThree, toPassFour)) + #print toPass.shape a = numpy.array(toPass) - b = a[None, :, :] #print b.shape - yield b + yield a #print numpy.array(toPass).shape #print "mine too" windowInd += 1 else: - print "NEXT FILE" + #print "NEXT FILE" old_one_hot_good = one_hot_good[:] old_one_hot_bad_ins = one_hot_bad_ins[:] @@ -284,6 +321,9 @@ def getInputTestTen(): fileInd += 1 windowInd = 0 one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(fileInd) + while(one_hot_good == None): + fileInd+=1 + one_hot_good, one_hot_bad_ins, one_hot_bad_del, one_hot_bad_sub, _, _, _, _ = perform(fileInd) for p in range(numGoodLeft): one_hot_good.insert(p, old_one_hot_good[len(old_one_hot_good)-numGoodLeft+p]) @@ -295,34 +335,39 @@ def getInputTestTen(): one_hot_bad_sub.insert(p, old_one_hot_bad_sub[len(old_one_hot_bad_sub)-numBadSubLeft+p]) def getOutputTestTen(): - _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(21) + _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(0) windowInd = 0 - fileInd = 21 - while fileInd <= 30: # 462540 + fileInd = 0 + while fileInd <= 10: # 462540 #while windowInd < int(len(insArr)/10): if windowInd < int(len(one_hot_bad_ins_out)/10): - toPass = [] + toPassOne = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_good_out[y]) + toPassOne.append(one_hot_good_out[y]) + toPassTwo = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_ins_out[y]) + toPassTwo.append(one_hot_bad_ins_out[y]) + toPassThree = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_del_out[y]) + toPassThree.append(one_hot_bad_del_out[y]) + toPassFour = [] for x in range(10): y = x + windowInd - toPass.append(one_hot_bad_sub_out[y]) + toPassFour.append(one_hot_bad_sub_out[y]) #print len(toPass) + toPass = np.array((toPassOne, toPassTwo, toPassThree, toPassFour)) + #print toPass.shape a = numpy.array(toPass) - b = a[None, :, :] - yield b + #print b.shape + yield a #print numpy.array(toPass).shape #print "mine" windowInd += 1 else: - print "NEXT FILE" + #print "NEXT FILE" old_one_hot_good_out = one_hot_good_out[:] old_one_hot_bad_ins_out = one_hot_bad_ins_out[:] @@ -337,6 +382,10 @@ def getOutputTestTen(): fileInd += 1 windowInd = 0 _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(fileInd) + + while(one_hot_good_out == None): + fileInd+=1 + _, _, _, _, one_hot_good_out, one_hot_bad_ins_out, one_hot_bad_del_out, one_hot_bad_sub_out = perform(fileInd) for p in range(numGoodOutLeft): one_hot_good_out.insert(p, old_one_hot_good_out[len(old_one_hot_good_out)-numGoodOutLeft+p]) @@ -352,7 +401,7 @@ def initData(): print "Start..." model = Sequential() - model.add(Dense(102, activation='relu', input_shape=(40,87))) + model.add(Dense(102, activation='relu', input_shape=(10,87))) model.add(Dropout(0.5)) model.add(Dense(102, activation='relu')) model.add(Dropout(0.5)) @@ -360,9 +409,12 @@ def initData(): # For a binary classification problem - model.compile(optimizer='rmsprop', - loss='binary_crossentropy', - metrics=['accuracy']) + #model.compile(optimizer='rmsprop', + # loss='binary_crossentropy', + # metrics=['accuracy']) + + opt = optimizers.SGD(lr=0.3) + model.compile(loss = "categorical_crossentropy", optimizer = opt) #zipped = iter() #print type(zipped) @@ -371,9 +423,9 @@ def initData(): izip(getInputTen(), getOutputTen()), steps_per_epoch=5, validation_data=izip(getInputValTen(), getOutputValTen()), - validation_steps=5, + validation_steps=15, epochs=10, - verbose=2, + verbose=3, ) @@ -381,39 +433,41 @@ def initData(): steps = 0 g = getInputTestTen() for t in g: - if steps > 39: + if steps > 5: break steps += 1 - print type(t) - x_test.append(t) + #print type(t) + x_test = t y_test = [] steps = 0 for t in getOutputTestTen(): - if steps > 39: + if steps > 5: break steps += 1 - y_test.append(t[0][5]) + y_test = t - print "MODEL FIT" + print "MODEL FIT" print len(x_test) print x_test[0][0] print len(y_test) a = numpy.array(x_test) + n = numpy print a.shape #b = a[None, :, :] c = numpy.array(y_test) - # d = c[None, :, :] + print c.shape + #d = c[None, :, :] - scores = model.evaluate(b, d, batch_size=10) + scores = model.evaluate(a, c, batch_size=10) print "SCORE" - cvscores = [] - #print score - print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) - cvscores.append(scores[1] * 100) - print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores), numpy.std(cvscores))) + #cvscores = [] + print scores + #print("%s: %.2f%%" % (model.metrics_names, scores*100)) + #cvscores.append(scores * 100) + #print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores), numpy.std(cvscores))) print "TERMINATED" diff --git a/mutate_token_delete.py b/mutate_token_delete.py index d2f9f44..6532a4f 100644 --- a/mutate_token_delete.py +++ b/mutate_token_delete.py @@ -4,6 +4,7 @@ from pprint import pprint import tokenize from check_pypy_syntax import checkPyPySyntax +from check_pypy_syntax import checkPyPySyntaxDel from compile_error import CompileError import token from Token import Token @@ -41,7 +42,7 @@ def deleteTokMut(raw_tokens, raw_text): raw_tokens_pass.append(token_use) #print token - print "OKAY" + #print "OKAY" num_lines = len(raw_tokens_pass) num_encode = len(orig) @@ -51,11 +52,11 @@ def deleteTokMut(raw_tokens, raw_text): indI = 0 for x in orig: if raw_tokens_pass[chosenLineInd] == x: - print "<3" + #print "<3" chosenTrueLineInd = indI break indI = indI + 1 - print chosenTrueLineInd + #print chosenTrueLineInd toIter = num_encode + (num_encode+1) @@ -82,62 +83,62 @@ def deleteTokMut(raw_tokens, raw_text): check = change.find(raw_tokens_pass[chosenLineInd][1]) shotInd = temp.index(raw_tokens_pass[chosenLineInd][1]) - print change + #print change - print "TEMP" - print temp + #print "TEMP" + #print temp - print shotInd + #print shotInd actual_target_ind = indexToRemove + shotInd - print raw_tokens_pass[chosenLineInd][1] + #print raw_tokens_pass[chosenLineInd][1] - print len(raw_tokens_pass[chosenLineInd][1]) - print len(change) + #print len(raw_tokens_pass[chosenLineInd][1]) + #print len(change) if check == 0 and len(raw_tokens_pass[chosenLineInd][1]) == len(change): before = source_code[:indexToRemove] else: before = source_code[:actual_target_ind] - print "B" - print before + #print "B" + #print before after = source_code[actual_target_ind+len(raw_tokens_pass[chosenLineInd][1]):] - print "A" - print after + #print "A" + #print after if check == 0: - print "GOT EM" + #print "GOT EM" new_text = before + after[1:] else: new_text = before + after - print actual_target_ind + #print actual_target_ind - print '-------------------------------' - print new_text + #print '-------------------------------' + #print new_text - toTest = checkPyPySyntax(new_text) + toTest = checkPyPySyntaxDel(new_text) if toTest == None: - print "Try again..." + #print "Try again..." #deleteTokMut(raw_tokens_pass, raw_text) lenR = 2 lenK = 2 return lenR, raw_tokens_pass, raw_text, lenK, send else: - print toTest[0] - print toTest[0].filename - print toTest[0].line - print toTest[0].column - print toTest[0].functionname - print toTest[0].text - print toTest[0].errorname - print "-----------FINISHED-------------------" - print chosenLineInd+1 - print out_tokens_loc + #print toTest[0] + #print toTest[0].filename + #print toTest[0].line + #print toTest[0].column + #print toTest[0].functionname + #print toTest[0].text + #print toTest[0].errorname + #print "-----------FINISHED-------------------" + #print chosenLineInd+1 + #print out_tokens_loc return new_text, YES_TOKEN, DELETION, out_tokens_loc, send diff --git a/mutate_token_delete.pyc b/mutate_token_delete.pyc index f56c32659bffee5ac72680ef9e9ae90c3b8ddf1f..b182f64f0dd7a7dcd09a5ec1500e4db9322b65a4 100644 GIT binary patch delta 1017 zcmZWo&1w@-6#nj=pCt2>CQX}3nxu)fg(xnx6jX2_r6?6_%cQj=AhmQ-OqxuSCW{7U z=%V7rRhTCbeF4FRAijZad;xs|H!cJ>dhSgH#hK*X@0@ebx!-qlGR}RTDJb7A)fu-zd; z^hK#GB`_oVq(sLcCC{ld(n=K+xzn$+emz=Lm&!Wvn9!lS$rIUsTs?ZAmY5zrSMQPi zq*lm&Q?sNoPe+Chf(!zO2jsSPAp+i4r+E=}gdn z#ZEb#`>XvA9<=ia=ETL6ovdv2Vd zt3@wkd8S71W6Nogb7hrEXye#_bwAGaBH_Vd^w21tX%@41hUxU$EX8%EvZR`18J6ZE zo@5pwop-szFH^+fPTYuHV>UOmqH6IpH{uqz6j7hCsu^lL6eqO@$G%G|Tp3Cel5@P* z8}&we13AeqX;O$?R57y^A;&EXBg&gq*L;ht0X4~>PjN^8yrrpIsgCw delta 1441 zcmaJ=L2nyX5T5teyX#%AT_<+DPV6+MG?gXVAm9LpR*1pZ%7^j?q7`?fa^T(r2TuF~5dVP-;>Lj^eDl0OETrywXXnj)GxN=O_LuTSwWj@% zx9_|)e0)ghCGq|U&*Zy{+SXL3p+OykgiquP8kp2EiFKU@SsG@klb!ht8dx;6sbk{| zRE~T&9VPR`mIC<}b*_+a(^o{DBKbL`EO6ph(?QMtU%2+00%~YLoL>BX{nbt33sFuk zb^lcyU8cowNFi|zK|4KTqd?TQJkam_bJNI-Ot{p*r7+3lxD{zs+qN2)p zEPND^Y`J}QEY6OT&CL286BTEL(d05{%^fd!^YdOln#s$|Jz*xlWg1f;Q9rIwRHhT~ zN^_=Wm!c&Q_6y9q%)(_+BD~$WdKtd68;Z+kWSyCoxIqL}cz8S_sr`qnpj{@w76qIE zlBc>m^{;T)GK&R@stPkl&s~dG$S*QrWv;>#&0mD1x?%pa*{%1NHnrn;J3 zs;hodU9nDe#WmHLlCLIx13QPsK`P1lY7~|zEUQhJ)dkB|b1AWn)s--VT|W4D^KqXy zTP^v7KeOBKCGQxOsdBfs??1qpiMEv7obdkd9JCwT_a|#mZ@vDS@aNMWf7$4M(d`Et z8yk}w^FjCa_V-%5+jsw;rh2Qn1g!etx~HeT!1qj?y-f1NSQc7xZoJ#k*`Pj4Ze@QI z^ujEZqyC^5bca3F!JrQ-vpyURo)3eN86712nU)WhtidA!s1F-=u+oL+AMW5}M~n>w+Z;Yiu2GT}vi)C)XKHeM2*VbD78oPK3t%qB!_Fns8d+%W1V}rMq{A@jK)S)_P Ok)Kp*OiA6EW&RBqi26$a diff --git a/mutate_token_insert.py b/mutate_token_insert.py index 3bd70ee..af1cfa7 100644 --- a/mutate_token_insert.py +++ b/mutate_token_insert.py @@ -3,7 +3,7 @@ import json from pprint import pprint import tokenize -from check_pypy_syntax import checkPyPySyntax +from check_pypy_syntax import checkPyPySyntaxIns from compile_error import CompileError import token from Token import Token @@ -36,22 +36,22 @@ def handle_token(type, token, (srow, scol), (erow, ecol), line): send = Token(tokenize.tok_name[type], val, srow, scol, erow, ecol, line) global new_token new_token.append(send) - print "%d,%d-%d,%d:\t%s\t%s" % \ - (srow, scol, erow, ecol, tokenize.tok_name[type], repr(token)) + #print "%d,%d-%d,%d:\t%s\t%s" % \ + # (srow, scol, erow, ecol, tokenize.tok_name[type], repr(token)) def insertTokMut(raw_tokens, raw_text): with open('vocabulary_mutate.json') as data_file: data = json.load(data_file) - pprint(data) - print "HI" - print len(data["indexes_m"]) + #pprint(data) + #print "HI" + #print len(data["indexes_m"]) chosenInd = randint(0,84) chosenToken = data["indexes_m"][chosenInd] - print chosenToken + #print chosenToken - print tokenize.tok_name + #print tokenize.tok_name global new_token new_token = [] try: @@ -59,7 +59,7 @@ def insertTokMut(raw_tokens, raw_text): except tokenize.TokenError: pass #print type(toksG) - print len(new_token) + #print len(new_token) insEdTok = new_token[0] insTok = insEdTok #insTok = Token( @@ -75,9 +75,9 @@ def insertTokMut(raw_tokens, raw_text): if token[0] != 4: if token[0] != 0: raw_tokens_pass.append(token_use) - print token + #print token - print "OKAY" + #print "OKAY" @@ -91,17 +91,17 @@ def insertTokMut(raw_tokens, raw_text): chosen = Token(tokenize.tok_name[raw_tokens_pass[chosenLineInd][0]], raw_tokens_pass[chosenLineInd][1], raw_tokens_pass[chosenLineInd][2][0], raw_tokens_pass[chosenLineInd][2][1], raw_tokens_pass[chosenLineInd][3][0], raw_tokens_pass[chosenLineInd][3][1], raw_tokens_pass[chosenLineInd][4]) #print NAH - print "NAH" + #print "NAH" chosenTrueLineInd = -1 indI = 0 for x in orig: if raw_tokens_pass[chosenLineInd] == x: - print "<3" + #print "<3" chosenTrueLineInd = indI break indI = indI + 1 - print chosenTrueLineInd + #print chosenTrueLineInd toIter = num_encode + (num_encode+1) for _ in range(toIter): @@ -116,29 +116,29 @@ def insertTokMut(raw_tokens, raw_text): source_code = raw_text - print len(source_code) + #print len(source_code) - print raw_tokens_pass[chosenLineInd][0] + #print raw_tokens_pass[chosenLineInd][0] - print raw_tokens_pass[chosenLineInd][4] - print raw_text + #print raw_tokens_pass[chosenLineInd][4] + #print raw_text toAddBeforeInd = source_code.index(raw_tokens_pass[chosenLineInd][4]) temp = source_code[toAddBeforeInd:toAddBeforeInd+len(raw_tokens_pass[chosenLineInd][4])] - print temp - print "kobe" - print raw_tokens_pass[chosenLineInd][1] + #print temp + #print "kobe" + #print raw_tokens_pass[chosenLineInd][1] shotInd = temp.index(raw_tokens_pass[chosenLineInd][1]) change = temp.strip() check = temp.index(change) - print check + #print check - print len(temp) - print shotInd + #print len(temp) + #print shotInd if shotInd+1 == len(temp): shotInd = shotInd-1 @@ -147,13 +147,13 @@ def insertTokMut(raw_tokens, raw_text): before = source_code[:actual_target_ind+len(raw_tokens_pass[chosenLineInd][1])] - print "B" - print before + #print "B" + #print before after = source_code[actual_target_ind+len(raw_tokens_pass[chosenLineInd][1]):] - print "A" - print after - print raw_tokens_pass[chosenLineInd][0] + #print "A" + #print after + #print raw_tokens_pass[chosenLineInd][0] if shotInd == 0: if raw_tokens_pass[chosenLineInd][0] == 4: @@ -165,7 +165,7 @@ def insertTokMut(raw_tokens, raw_text): new_text = before + chosenToken.encode() + after elif chosenInd == data["indexes_m"].index('\n'): - print "shiz" + #print "shiz" if after[0] == ' ': space = ' ' * (check-1) else: @@ -173,42 +173,42 @@ def insertTokMut(raw_tokens, raw_text): new_text = before + chosenToken.encode() + space + after else: new_text = before + ' ' + chosenToken.encode() + ' ' + after - print '------------------------------------' - print new_text + #print '------------------------------------' + #print new_text - toTest = checkPyPySyntax(new_text) + toTest = checkPyPySyntaxIns(new_text) if toTest == None: - print "Try again..." - print "-----------FINISHED-------------------" + #print "Try again..." + #print "-----------FINISHED-------------------" #insertTokMut(raw_tokens_pass, raw_text) - print "-----------FINISHED-------------------" - print "shit man" + #print "-----------FINISHED-------------------" + #print "shit man" lenR = 2 lenK = 2 return lenR, raw_tokens_pass, raw_text, lenK, chosen, insTok else: - print "-----------FINISHED-------------------" - print toTest[0] - print toTest[0].filename - print toTest[0].line - print toTest[0].column - print toTest[0].functionname - print toTest[0].text - print toTest[0].errorname - print type(out_tokens_loc) - print len(new_text) - print NO_TOKEN - print INSERTION - print len(out_tokens_loc) + #print "-----------FINISHED-------------------" + #print toTest[0] + #print toTest[0].filename + #print toTest[0].line + #print toTest[0].column + #print toTest[0].functionname + #print toTest[0].text + #print toTest[0].errorname + #print type(out_tokens_loc) + #print len(new_text) + #print NO_TOKEN + #print INSERTION + #print len(out_tokens_loc) return new_text, NO_TOKEN, INSERTION, out_tokens_loc, chosen, insTok - print "-----------FINISHED-------------------" - print chosenLineInd+1 - print out_tokens_loc - print len(raw_tokens_pass) - print len(out_tokens_loc) - print lenD - print chosenTrueLineInd + #print "-----------FINISHED-------------------" + #print chosenLineInd+1 + #print out_tokens_loc + #print len(raw_tokens_pass) + #print len(out_tokens_loc) + #print lenD + #print chosenTrueLineInd diff --git a/mutate_token_insert.pyc b/mutate_token_insert.pyc index 0d06b5a966baf9202098aa89672d09322717996c..c3cc2cc7115d08e8eb26db05be069b80d4e74391 100644 GIT binary patch delta 1585 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 W3s(V(2r9p0I7~MJnwiW^7XJm*_ix(( diff --git a/mutate_token_sub.py b/mutate_token_sub.py index 02754b7..28c3f56 100644 --- a/mutate_token_sub.py +++ b/mutate_token_sub.py @@ -3,7 +3,7 @@ import json from pprint import pprint import tokenize -from check_pypy_syntax import checkPyPySyntax +from check_pypy_syntax import checkPyPySyntaxSub from compile_error import CompileError import token from Token import Token @@ -28,8 +28,8 @@ def handle_token(type, token, (srow, scol), (erow, ecol), line): send = Token(tokenize.tok_name[type], val, srow, scol, erow, ecol, line) global new_token new_token.append(send) - print "%d,%d-%d,%d:\t%s\t%s" % \ - (srow, scol, erow, ecol, tokenize.tok_name[type], repr(token)) + #print "%d,%d-%d,%d:\t%s\t%s" % \ + # (srow, scol, erow, ecol, tokenize.tok_name[type], repr(token)) # Method for finding index of certain characters in a string, n being the n'th occurence of the character/string def find_nth(haystack, needle, n): @@ -43,12 +43,12 @@ def subTokMut(raw_tokens, raw_text): with open('vocabulary_mutate.json') as data_file: data = json.load(data_file) - pprint(data) - print "HI" + #pprint(data) + #print "HI" chosenInd = randint(0,84) chosenToken = data["indexes_m"][chosenInd] - print chosenToken + #print chosenToken global new_token new_token = [] @@ -57,7 +57,7 @@ def subTokMut(raw_tokens, raw_text): except tokenize.TokenError: pass #print type(toksG) - print len(new_token) + #print len(new_token) insEdTok = new_token[0] insTokS = insEdTok @@ -77,7 +77,7 @@ def subTokMut(raw_tokens, raw_text): raw_tokens_pass.append(token_use) #print token - print "OKAY" + #print "OKAY" num_lines = len(raw_tokens_pass) num_encode = len(orig) @@ -87,11 +87,11 @@ def subTokMut(raw_tokens, raw_text): indI = 0 for x in orig: if raw_tokens_pass[chosenLineInd] == x: - print "<3" + #print "<3" chosenTrueLineInd = indI break indI = indI + 1 - print chosenTrueLineInd + #print chosenTrueLineInd toIter = num_encode + (num_encode+1) @@ -121,36 +121,36 @@ def subTokMut(raw_tokens, raw_text): change = temp.strip() check = temp.index(change) - print "WHAT" - print change + #print "WHAT" + #print change - print "TEMP" - print temp + #print "TEMP" + #print temp - print shotInd + #print shotInd actual_target_ind = indexToRemove + shotInd - print raw_tokens_pass[chosenLineInd][1] + #print raw_tokens_pass[chosenLineInd][1] - print len(raw_tokens_pass[chosenLineInd][1]) - print len(change) + #print len(raw_tokens_pass[chosenLineInd][1]) + #print len(change) if check == 0 and len(raw_tokens_pass[chosenLineInd][1]) == len(change): before = source_code[:indexToRemove] else: before = source_code[:actual_target_ind] - print "B" - print before + #print "B" + #print before after = source_code[actual_target_ind+len(raw_tokens_pass[chosenLineInd][1]):] - print "A" - print after + #print "A" + #print after if check == 0: - print "GOT EM" + #print "GOT EM" if after[0] == ' ': new_text = before + chosenToken.encode() + after else: @@ -158,45 +158,46 @@ def subTokMut(raw_tokens, raw_text): else: if chosenInd == data["indexes_m"].index('\n'): - print "shiz" + #print "shiz" if after[0] == ' ': space = ' ' * (check-1) else: space = ' ' * (check) new_text = before + chosenToken.encode() + space + after else: - print "WAS HERE" + #print "WAS HERE" new_text = before + chosenToken.encode() + after - print actual_target_ind + #print actual_target_ind - print '-------------------------------' - print new_text + #print '-------------------------------' + #print new_text - toTest = checkPyPySyntax(new_text) + toTest = checkPyPySyntaxSub(new_text) if toTest == None: - print "Try again..." + #print "Try again..." #subTokMut(raw_tokens_pass, raw_text) + #print new_text lenR = 2 lenK = 2 return lenR, raw_tokens_pass, raw_text, lenK, send, insTokS else: - print toTest[0] - print toTest[0].filename - print toTest[0].line - print toTest[0].column - print toTest[0].functionname - print toTest[0].text - print toTest[0].errorname + #print toTest[0] + #print toTest[0].filename + #print toTest[0].line + #print toTest[0].column + #print toTest[0].functionname + #print toTest[0].text + #print toTest[0].errorname return new_text, YES_TOKEN, SUBSTITUTION, out_tokens_loc, send, insTokS - print "-----------FINISHED-------------------" - print chosenLineInd+1 - print out_tokens_loc - print len(raw_tokens_pass) - print len(out_tokens_loc) - print lenD + #print "-----------FINISHED-------------------" + #print chosenLineInd+1 + #print out_tokens_loc + #print len(raw_tokens_pass) + #print len(out_tokens_loc) + #print lenD diff --git a/mutate_token_sub.pyc b/mutate_token_sub.pyc index 7094b13b81a178473abea03be6160b049d7b29e4..a5456463262d35b757b8baebbf6e5007e4fd36d8 100644 GIT binary patch delta 1422 zcmZuxOKTff6#mYghpf@a8rzaas^!>{<6=r|lF&e?YlFed(l}8-ArOM%NmGxT31g3o z1a}a@g)UlX%lv?@y2!$d)<2@{wwvzy6S^sdKnv};SF$2Oq^r^S&f`0ed++?z`nQoY z{wg|OwxaKHe^=)L9DMrp;Ap?U-*5M$q}ywsKFLbdq4Vq+om)VA-OP4H<>I+0kms_$ zfeKaWU9n1Q;^J##j|M-OKmr7WGr~7jqyh;c6p%t`QUjd;xceY65C{YY&ID2ulA(#Z zvx8PGM+Zy~V|T1ae!Hl(Ep!W@zr9b}^um0>EEJdPY34?yHlM0k*xOrG_u_XiGS zQH7CoRla&);mE-8D_mk* zL-8)fufVI5ZQJ$1uy04V;2|g=ol}*i^XT1#EMV`^dq@|+eA45AEZ|7s_OLf8mg%pp*B(39ebcOb9u*q0%f)P|{Ti3~N%{6KG&s+P%>M#l^txLl50Nmmf@ z=ol<(FqCxkWU#-SHYfQ1Fl2LhY(1UtXG5;2dk`+D?tC`-X^W4+UGr`F=mdP9MmLLF z33w)?dA7}I-kKS3r`(o{S~*=+r4AJeOjECp)AHpTnKq`%Nm$>~L%Rxj6@1&(B)&5F zP^D{pw6Z_*iy!dSt|H;%#Y5peoxvwI+U(k1SFfRuPpbU<{KY}{$?0d^*O{ zy22x0_(q-o=Y&IxMmg^am$_`J=GV(A;c8a#9@=Y4+{jM7Yu=_3RfqSM)Z>2kqxbTE DS9$_q delta 2167 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 Fe*pZr8pr?u delta 4358 zcmb7HU2Ggz6+U-nXaBtG_0O(<*X#AqI!^pU(o~HSTu`yMc2vi9W*wX&x$efZN!Ll% z_U^c~!>m>iRYfXPRj&|8ElBXvs!&3d2SB3YM@aAh4+#bF(g!4-E1^nMLP+qPJ3DK~ zxFYP%oH_U2bMHOpeBa!;_tmGrvl!4nj)s45;^y7J+nRV;-q9uvOQYF2`Jr~^>@tb% zXgM~lKr_m@Q6CX46jvZ^RN>9$447F zRSl*1*vy~}II1g0Hv;4s1Xpp1?US^!`wZDZvV2@Iv-%`e{lpzYH08MULLS#>5M`77G`m^! zu!yqgWuap2V~qnIWmnA%i$NAcEQVQ($iMsdy5dm1aAOD?0qgB}-rEh__YJ7Q;26>M z!rn`pWy=mhFIMU$vsacPBO)We8Tq65mn=q?g0FD!GpjZEtLVkcKV_mIUN=TjqB={! z-|HHcACSc{Z$F^z9A7KD9WJw)_nC#}4_)e`Gl18SpP)R~Ja?wTZq07m>o25tMp-wn zu*kF6V$sNk%3Zl|bMwW5IV#_4?iPdcx6R)dkI9YLSYHdEjsfb3SZ78w;pPM@^8ZP` z8+)$^mLmp01vUo>_yS7=){QrUT@rNFPaQy-JnV}67FAg694iXe`EAQs;~8s0$#bDh z1($MLy`Sa6R@scoue1y$24HF?Ax7C17tW0QS<5@4jHgZs(IG~(A(4U4x>)DoKZCpB z^J-YW+&XkjEg!%FZzs|XCxv37Rc9YUu>8os{AFum?%6O9;)tvubt8}vP_e=gfc`)W z1_4j4CT@*Dpod~C0%tfchUF)%=^BQB;YO6~W`+xIxE1B0Vg&M_Wp?fwQ8hqzOTB{i zR@Ut{)gef15Tf1Z$Zn@bKRZrVGj(-(PYgA)dXB1LW!^;a{hA>AVuIpTRdSS^LMPUm zY03%F1{j7Vgjb_eV#SKNjsaEW80G@Tp6aDS#4D9Kv42zSEAOY z41S_Hom|Q9Q71>#S?#3lx3m=phA07yIBoP(y@Z_B4eKtNf^ofTH+$F#*Se;h zo`cw*KGHMSANFjYGOAnHorzy9e>Q_;y(ADN8$ff|D)oMh+X_M{(9~i ze-{tn&+zxxJR8$rZ(;mhq!@qK`qS{Q8v>XNbxt|M2ib7fILgn%Y-r~d8+XA>;4#-GXUts@5@2$NPI11-)1Xi3eg{yPoz=H9YfQ8rk z1g$02lHfM=siorMfR#Gj1j@lA1vXgy%)hbvT7g<#CwPgdjd>gyR~(r*f+J&0G>;qJ z6CAP9JSdY5%LF(%K+bV*v`KO%QD+T6>~1DK4cys!60Xw{6=~_B}<3_r?`BDW9YRgn9-YOJ% z4t3b6@WvFo!F2Yf*VEi7mAK>5-qK#$E>vu<=gi_lR@qNqGR^G5@@LPb)tSM3YDMkV z)P8Yh?u$;yDO)?3ll_Fg>THv5GGit%91qoVV0g`@&|K{jTsHaH8=$zp!*^xlv-J!kc_n zo?tOCv3P0uu!$NkcWHV$o69LDm&<$U{Iz_s1mET3y%&1&>=$k_pJ&1ORObe>D&Oo) zb$^Y^9JEULjbg<%zsyxv=tH)K1AtIVz^NSIbnuK4Az}_#8pN$4CVpR)|nt_`Ck zPo*+Kwu9`^lUb_mNh|h<=(=gTQK|CD9u8#f0VT`7A=Y-ibIN9zn9MpzOOGt G#D4(Zv;`Uf