| DEBUG |
2026-02-14 03:40:52.063154 |
keno_clustering: Request vars: {'clustering_results': None,
'default_min_cluster_size': 2,
'default_min_freq': 1,
'default_num_draws': 20,
'default_num_from_bottom': 0,
'draws': [],
'error_message': None} |
./rest_calls.py:637 |
| DEBUG |
2026-02-14 03:40:52.063211 |
keno_clustering: Handling GET request |
./rest_calls.py:640 |
| DEBUG |
2026-02-14 03:40:52.063389 |
setting end_game_num = None |
./keno.py:448 |
| DEBUG |
2026-02-14 03:40:52.063612 |
setting tmp_output_file_name=output.csv |
./keno.py:427 |
| DEBUG |
2026-02-14 03:40:52.063639 |
test_db_name set to keno_test |
./keno.py:376 |
| INFO |
2026-02-14 03:40:52.063665 |
setting num_games_to_process=20 |
./keno.py:419 |
| DEBUG |
2026-02-14 03:40:52.063684 |
{'self': <keno.Keno object at 0x7f20da4fd4f0>} |
./keno.py:328 |
| DEBUG |
2026-02-14 03:40:52.063721 |
{'p_num_games_to_play': 20, 'p_num_from_bottom': 0, 'keno': <keno.Keno object at 0x7f20da4fd4f0>} |
./keno_analytics.py:269 |
| DEBUG |
2026-02-14 03:40:52.063745 |
{'self': <keno.Keno object at 0x7f20da4fd4f0>, 'query': '\nSELECT draw_num_1,\n draw_num_2,\n draw_num_3 ,\n draw_num_4,\n draw_num_5,\n draw_num_6,\n draw_num_7,\n draw_num_8,\n draw_num_9,\n draw_num_10,\n draw_num_11,\n draw_num_12,\n draw_num_13,\n draw_num_14,\n draw_num_15,\n draw_num_16,\n draw_num_17,\n draw_num_18,\n draw_num_19,\n draw_num_20\nFROM keno_games_tbl \nWHERE draw_number > (SELECT max(draw_number) - ? FROM keno_games_tbl)\nORDER BY draw_number desc\n', 'return_json': False, 'p_data': (20,)} |
./keno.py:661 |
| DEBUG |
2026-02-14 03:40:52.063797 |
Trying to connect to database file: keno_test.db |
./utils.py:53 |
| DEBUG |
2026-02-14 03:40:52.063952 |
Download: http://sqlitebrowser.org to view tables |
./utils.py:55 |
| DEBUG |
2026-02-14 03:40:52.064008 |
DB path file:///home/keno/keno/keno_test.db |
./utils.py:56 |
| DEBUG |
2026-02-14 03:40:52.064032 |
setting parameters to: p_data = (20,) |
./keno.py:672 |
| DEBUG |
2026-02-14 03:40:52.064440 |
rows fetched=20 |
./keno.py:679 |
| DEBUG |
2026-02-14 03:40:52.064513 |
p_num_from_bottom=0
p_num_balls_to_play=20 |
./keno_analytics.py:276 |
| DEBUG |
2026-02-14 03:40:52.064738 |
Rows
[(5, 8, 9, 14, 15, 18, 19, 31, 34, 38, 39, 45, 50, 59, 61, 65, 66, 70, 72, 78),
(2, 3, 5, 14, 15, 17, 19, 20, 24, 27, 32, 35, 36, 48, 49, 58, 69, 75, 77, 78),
(12, 18, 23, 30, 31, 36, 40, 42, 44, 51, 53, 56, 57, 61, 63, 67, 69, 73, 74, 78),
(5, 12, 15, 19, 21, 22, 23, 27, 29, 31, 35, 37, 40, 43, 57, 67, 68, 73, 75, 76),
(2, 3, 6, 7, 10, 16, 20, 23, 36, 40, 43, 44, 45, 46, 54, 59, 66, 70, 71, 75),
(8, 15, 21, 25, 29, 43, 46, 47, 51, 55, 57, 59, 60, 64, 69, 70, 72, 73, 77, 80),
(6, 12, 16, 21, 25, 28, 29, 31, 33, 35, 43, 44, 53, 55, 56, 61, 64, 66, 72, 73),
(3, 5, 6, 9, 21, 23, 25, 26, 28, 31, 33, 41, 45, 47, 52, 58, 69, 71, 76, 80),
(15, 20, 21, 24, 30, 33, 35, 41, 43, 44, 46, 48, 60, 62, 63, 68, 69, 75, 79, 80),
(5, 11, 12, 13, 14, 17, 18, 19, 24, 29, 32, 36, 38, 40, 42, 44, 53, 57, 58, 61),
(3, 4, 5, 6, 14, 15, 26, 27, 37, 40, 48, 49, 51, 53, 62, 67, 70, 72, 74, 78),
(8, 12, 18, 21, 30, 32, 33, 34, 36, 42, 54, 57, 61, 65, 67, 71, 72, 75, 77, 79),
(7, 8, 9, 11, 12, 14, 20, 22, 25, 35, 39, 48, 51, 54, 55, 58, 59, 67, 73, 75),
(4, 5, 6, 10, 11, 18, 21, 24, 25, 28, 32, 36, 40, 44, 45, 51, 59, 60, 64, 69),
(4, 6, 10, 11, 13, 16, 25, 32, 36, 43, 44, 46, 47, 49, 58, 63, 64, 69, 73, 80),
(2, 4, 5, 11, 14, 17, 21, 22, 29, 31, 36, 48, 50, 58, 60, 61, 63, 64, 67, 71),
(3, 5, 6, 16, 18, 19, 29, 32, 33, 37, 41, 51, 58, 59, 61, 63, 71, 72, 73, 79),
(9, 12, 20, 22, 23, 27, 32, 34, 41, 42, 43, 46, 49, 53, 54, 58, 61, 62, 73, 76),
(5, 7, 8, 15, 17, 19, 22, 34, 37, 41, 43, 47, 51, 53, 58, 66, 71, 75, 79, 80),
(1, 2, 3, 4, 8, 12, 18, 25, 31, 34, 38, 48, 51, 52, 61, 66, 70, 71, 74, 80)] |
./keno_analytics.py:277 |
| DEBUG |
2026-02-14 03:40:52.064968 |
keno_clustering GET: Fetched draws: [(5, 8, 9, 14, 15, 18, 19, 31, 34, 38, 39, 45, 50, 59, 61, 65, 66, 70, 72, 78),
(2, 3, 5, 14, 15, 17, 19, 20, 24, 27, 32, 35, 36, 48, 49, 58, 69, 75, 77, 78),
(12, 18, 23, 30, 31, 36, 40, 42, 44, 51, 53, 56, 57, 61, 63, 67, 69, 73, 74, 78),
(5, 12, 15, 19, 21, 22, 23, 27, 29, 31, 35, 37, 40, 43, 57, 67, 68, 73, 75, 76),
(2, 3, 6, 7, 10, 16, 20, 23, 36, 40, 43, 44, 45, 46, 54, 59, 66, 70, 71, 75),
(8, 15, 21, 25, 29, 43, 46, 47, 51, 55, 57, 59, 60, 64, 69, 70, 72, 73, 77, 80),
(6, 12, 16, 21, 25, 28, 29, 31, 33, 35, 43, 44, 53, 55, 56, 61, 64, 66, 72, 73),
(3, 5, 6, 9, 21, 23, 25, 26, 28, 31, 33, 41, 45, 47, 52, 58, 69, 71, 76, 80),
(15, 20, 21, 24, 30, 33, 35, 41, 43, 44, 46, 48, 60, 62, 63, 68, 69, 75, 79, 80),
(5, 11, 12, 13, 14, 17, 18, 19, 24, 29, 32, 36, 38, 40, 42, 44, 53, 57, 58, 61),
(3, 4, 5, 6, 14, 15, 26, 27, 37, 40, 48, 49, 51, 53, 62, 67, 70, 72, 74, 78),
(8, 12, 18, 21, 30, 32, 33, 34, 36, 42, 54, 57, 61, 65, 67, 71, 72, 75, 77, 79),
(7, 8, 9, 11, 12, 14, 20, 22, 25, 35, 39, 48, 51, 54, 55, 58, 59, 67, 73, 75),
(4, 5, 6, 10, 11, 18, 21, 24, 25, 28, 32, 36, 40, 44, 45, 51, 59, 60, 64, 69),
(4, 6, 10, 11, 13, 16, 25, 32, 36, 43, 44, 46, 47, 49, 58, 63, 64, 69, 73, 80),
(2, 4, 5, 11, 14, 17, 21, 22, 29, 31, 36, 48, 50, 58, 60, 61, 63, 64, 67, 71),
(3, 5, 6, 16, 18, 19, 29, 32, 33, 37, 41, 51, 58, 59, 61, 63, 71, 72, 73, 79),
(9, 12, 20, 22, 23, 27, 32, 34, 41, 42, 43, 46, 49, 53, 54, 58, 61, 62, 73, 76),
(5, 7, 8, 15, 17, 19, 22, 34, 37, 41, 43, 47, 51, 53, 58, 66, 71, 75, 79, 80),
(1, 2, 3, 4, 8, 12, 18, 25, 31, 34, 38, 48, 51, 52, 61, 66, 70, 71, 74, 80)] |
./rest_calls.py:643 |
| DEBUG |
2026-02-14 03:40:52.065311 |
keno_clustering GET: Draws for template: ['5,8,9,14,15,18,19,31,34,38,39,45,50,59,61,65,66,70,72,78',
'2,3,5,14,15,17,19,20,24,27,32,35,36,48,49,58,69,75,77,78',
'12,18,23,30,31,36,40,42,44,51,53,56,57,61,63,67,69,73,74,78',
'5,12,15,19,21,22,23,27,29,31,35,37,40,43,57,67,68,73,75,76',
'2,3,6,7,10,16,20,23,36,40,43,44,45,46,54,59,66,70,71,75',
'8,15,21,25,29,43,46,47,51,55,57,59,60,64,69,70,72,73,77,80',
'6,12,16,21,25,28,29,31,33,35,43,44,53,55,56,61,64,66,72,73',
'3,5,6,9,21,23,25,26,28,31,33,41,45,47,52,58,69,71,76,80',
'15,20,21,24,30,33,35,41,43,44,46,48,60,62,63,68,69,75,79,80',
'5,11,12,13,14,17,18,19,24,29,32,36,38,40,42,44,53,57,58,61',
'3,4,5,6,14,15,26,27,37,40,48,49,51,53,62,67,70,72,74,78',
'8,12,18,21,30,32,33,34,36,42,54,57,61,65,67,71,72,75,77,79',
'7,8,9,11,12,14,20,22,25,35,39,48,51,54,55,58,59,67,73,75',
'4,5,6,10,11,18,21,24,25,28,32,36,40,44,45,51,59,60,64,69',
'4,6,10,11,13,16,25,32,36,43,44,46,47,49,58,63,64,69,73,80',
'2,4,5,11,14,17,21,22,29,31,36,48,50,58,60,61,63,64,67,71',
'3,5,6,16,18,19,29,32,33,37,41,51,58,59,61,63,71,72,73,79',
'9,12,20,22,23,27,32,34,41,42,43,46,49,53,54,58,61,62,73,76',
'5,7,8,15,17,19,22,34,37,41,43,47,51,53,58,66,71,75,79,80',
'1,2,3,4,8,12,18,25,31,34,38,48,51,52,61,66,70,71,74,80'] |
./rest_calls.py:648 |
| DEBUG |
2026-02-14 03:40:52.065392 |
keno_clustering: Rendering with draws: ['5,8,9,14,15,18,19,31,34,38,39,45,50,59,61,65,66,70,72,78',
'2,3,5,14,15,17,19,20,24,27,32,35,36,48,49,58,69,75,77,78',
'12,18,23,30,31,36,40,42,44,51,53,56,57,61,63,67,69,73,74,78',
'5,12,15,19,21,22,23,27,29,31,35,37,40,43,57,67,68,73,75,76',
'2,3,6,7,10,16,20,23,36,40,43,44,45,46,54,59,66,70,71,75',
'8,15,21,25,29,43,46,47,51,55,57,59,60,64,69,70,72,73,77,80',
'6,12,16,21,25,28,29,31,33,35,43,44,53,55,56,61,64,66,72,73',
'3,5,6,9,21,23,25,26,28,31,33,41,45,47,52,58,69,71,76,80',
'15,20,21,24,30,33,35,41,43,44,46,48,60,62,63,68,69,75,79,80',
'5,11,12,13,14,17,18,19,24,29,32,36,38,40,42,44,53,57,58,61',
'3,4,5,6,14,15,26,27,37,40,48,49,51,53,62,67,70,72,74,78',
'8,12,18,21,30,32,33,34,36,42,54,57,61,65,67,71,72,75,77,79',
'7,8,9,11,12,14,20,22,25,35,39,48,51,54,55,58,59,67,73,75',
'4,5,6,10,11,18,21,24,25,28,32,36,40,44,45,51,59,60,64,69',
'4,6,10,11,13,16,25,32,36,43,44,46,47,49,58,63,64,69,73,80',
'2,4,5,11,14,17,21,22,29,31,36,48,50,58,60,61,63,64,67,71',
'3,5,6,16,18,19,29,32,33,37,41,51,58,59,61,63,71,72,73,79',
'9,12,20,22,23,27,32,34,41,42,43,46,49,53,54,58,61,62,73,76',
'5,7,8,15,17,19,22,34,37,41,43,47,51,53,58,66,71,75,79,80',
'1,2,3,4,8,12,18,25,31,34,38,48,51,52,61,66,70,71,74,80'] |
./rest_calls.py:706 |
| DEBUG |
2026-02-14 03:40:52.066430 |
keno_clustering: Clustering results: {'cluster_draws': {'[1, 2, 3, 4]': [19],
'[10, 11]': [13, 14],
'[11, 12, 13, 14]': [9],
'[11, 12]': [12],
'[14, 15]': [0, 1, 10],
'[17, 18, 19]': [9],
'[18, 19]': [0, 16],
'[19, 20]': [1],
'[2, 3]': [1, 4],
'[20, 21]': [8],
'[21, 22, 23]': [3],
'[21, 22]': [15],
'[22, 23]': [17],
'[24, 25]': [13],
'[25, 26]': [7],
'[26, 27]': [10],
'[28, 29]': [6],
'[3, 4, 5, 6]': [10],
'[30, 31]': [2],
'[32, 33, 34]': [11],
'[32, 33]': [16],
'[35, 36]': [1],
'[38, 39]': [0],
'[4, 5, 6]': [13],
'[4, 5]': [15],
'[41, 42, 43]': [17],
'[43, 44, 45, 46]': [4],
'[43, 44]': [6, 8, 14],
'[44, 45]': [13],
'[46, 47]': [5, 14],
'[48, 49]': [1, 10],
'[5, 6]': [7, 16],
'[51, 52]': [19],
'[53, 54]': [17],
'[54, 55]': [12],
'[55, 56]': [6],
'[56, 57]': [2],
'[57, 58]': [9],
'[58, 59]': [12, 16],
'[59, 60]': [5, 13],
'[6, 7]': [4],
'[60, 61]': [15],
'[61, 62]': [17],
'[62, 63]': [8],
'[63, 64]': [14, 15],
'[65, 66]': [0],
'[67, 68]': [3],
'[68, 69]': [8],
'[69, 70]': [5],
'[7, 8, 9]': [12],
'[7, 8]': [18],
'[70, 71]': [4, 19],
'[71, 72, 73]': [16],
'[71, 72]': [11],
'[72, 73]': [5, 6],
'[73, 74]': [2],
'[75, 76]': [3],
'[77, 78]': [1],
'[79, 80]': [8, 18],
'[8, 9]': [0]},
'cluster_frequencies': [([14, 15], 3), ([43, 44], 3), ([2, 3], 2), ([5, 6], 2), ([10, 11], 2),
([18, 19], 2), ([46, 47], 2), ([48, 49], 2), ([58, 59], 2), ([59, 60], 2),
([63, 64], 2), ([70, 71], 2), ([72, 73], 2), ([79, 80], 2),
([1, 2, 3, 4], 1), ([3, 4, 5, 6], 1), ([4, 5], 1), ([4, 5, 6], 1),
([6, 7], 1), ([7, 8], 1), ([7, 8, 9], 1), ([8, 9], 1), ([11, 12], 1),
([11, 12, 13, 14], 1), ([17, 18, 19], 1), ([19, 20], 1), ([20, 21], 1),
([21, 22], 1), ([21, 22, 23], 1), ([22, 23], 1), ([24, 25], 1),
([25, 26], 1), ([26, 27], 1), ([28, 29], 1), ([30, 31], 1), ([32, 33], 1),
([32, 33, 34], 1), ([35, 36], 1), ([38, 39], 1), ([41, 42, 43], 1),
([43, 44, 45, 46], 1), ([44, 45], 1), ([51, 52], 1), ([53, 54], 1),
([54, 55], 1), ([55, 56], 1), ([56, 57], 1), ([57, 58], 1), ([60, 61], 1),
([61, 62], 1), ([62, 63], 1), ([65, 66], 1), ([67, 68], 1), ([68, 69], 1),
([69, 70], 1), ([71, 72], 1), ([71, 72, 73], 1), ([73, 74], 1),
([75, 76], 1), ([77, 78], 1)],
'clusters_per_draw': [[[8, 9], [14, 15], [18, 19], [38, 39], [65, 66]],
[[2, 3], [14, 15], [19, 20], [35, 36], [48, 49], [77, 78]],
[[30, 31], [56, 57], [73, 74]], [[21, 22, 23], [67, 68], [75, 76]],
[[2, 3], [6, 7], [43, 44, 45, 46], [70, 71]],
[[46, 47], [59, 60], [69, 70], [72, 73]],
[[28, 29], [43, 44], [55, 56], [72, 73]], [[5, 6], [25, 26]],
[[20, 21], [43, 44], [62, 63], [68, 69], [79, 80]],
[[11, 12, 13, 14], [17, 18, 19], [57, 58]],
[[3, 4, 5, 6], [14, 15], [26, 27], [48, 49]], [[32, 33, 34], [71, 72]],
[[7, 8, 9], [11, 12], [54, 55], [58, 59]],
[[4, 5, 6], [10, 11], [24, 25], [44, 45], [59, 60]],
[[10, 11], [43, 44], [46, 47], [63, 64]],
[[4, 5], [21, 22], [60, 61], [63, 64]],
[[5, 6], [18, 19], [32, 33], [58, 59], [71, 72, 73]],
[[22, 23], [41, 42, 43], [53, 54], [61, 62]], [[7, 8], [79, 80]],
[[1, 2, 3, 4], [51, 52], [70, 71]]],
'draws_with_clusters': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
'draws_without_clusters': [],
'range_summary': {'1-10': 14,
'11-20': 10,
'21-30': 8,
'31-40': 4,
'41-50': 10,
'51-60': 11,
'61-70': 10,
'71-80': 9},
'summary': {'average_clusters_per_draw': 3.8,
'cluster_sizes': {2: 65, 3: 7, 4: 4},
'total_clusters': 76}} |
./rest_calls.py:707 |
| DEBUG |
2026-02-14 03:40:52.066536 |
setting end_game_num = None |
./keno.py:448 |
| DEBUG |
2026-02-14 03:40:52.066571 |
setting tmp_output_file_name=output.csv |
./keno.py:427 |
| DEBUG |
2026-02-14 03:40:52.066594 |
test_db_name set to keno_test |
./keno.py:376 |
| INFO |
2026-02-14 03:40:52.066617 |
setting num_games_to_process=20 |
./keno.py:419 |
| DEBUG |
2026-02-14 03:40:52.066634 |
{'self': <keno.Keno object at 0x7f20da4fd7c0>} |
./keno.py:328 |