1
2 """Simple read/write/print support for lists of "zero-agnostic" khipu sums."""
3
4 from __future__ import with_statement
5 import warnings, sys
6 import json
7
8 -def readSums (filename='khipu-sums.json', preserveInc=False):
9 """Read in the lists of khipu sums found."""
10 data = json.read (open (filename, 'r').read () )
11 result = {}
12 for k, kmap in data.iteritems():
13 if k == '**INCOMPLETE**':
14 if preserveInc:
15 result[k] = kmap
16 continue
17 result[k] = {}
18 for ncords,lsts in kmap.iteritems():
19 sums = []
20 for l in lsts:
21 def tuple (x):
22 assert len(x)==2
23 return (x[0], x[1])
24 sums.append([tuple(x) for x in l])
25 result[k][int(ncords)] = sums
26 return result
27
28 -def writeSums (output, filename='khipu-sums.json', trim=True):
29 """Write out the list of khipu sums found."""
30
31 result = {}
32 for k, kmap in output.iteritems():
33 if k == '**INCOMPLETE**':
34 result[k] = kmap
35 continue
36 kk = str(k)
37 result[kk] = {}
38 for ncords,lsts in kmap.iteritems():
39 if lsts or not trim:
40 result[kk][str(ncords)] = lsts
41
42 if trim and not result[kk]:
43 del result[kk]
44 with open(filename,'w') as f:
45 f.write(json.write(result))
46
48 """Pretty-print the list of khipu sums."""
49 khipus = list(output.keys())
50 khipus.sort()
51 for k in khipus:
52 ncords = list(output[k].keys())
53 ncords.sort()
54 for n in reversed(ncords):
55 for sums in output[k][n]:
56 print k, n, sums
57
58
60 output = readSums()
61 printSums (output)
62
63 if __name__ == '__main__': main ()
64