-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain3.py
81 lines (70 loc) · 3.3 KB
/
main3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from model.edited_revision import EditedRevision
from service.read.glacier_missing_options import MY_REVISIONS_MISSING
from service.read.glacier_read_missing_options import GlacierReadMissingOptionService
from service.write.revision_write_service import RevisionWriteService
# revisions = GlacierReadMissingOptionService.read()
# missing_options = GlacierReadMissingOptionService.fetch_missing_options()
# missing_revisions = GlacierReadMissingOptionService.filter_revisions(missing_options, revisions)
# RevisionWriteService.write('resource/dest/glacier_missing_options_out', {0: missing_revisions})
# print('revisions:', len(revisions))
# print('missing_options:', len(missing_options))
# print('missing_revisions:', len(missing_revisions))
class MergeService:
@classmethod
def fetch_missing_revisions(cls) -> list[EditedRevision]:
return MY_REVISIONS_MISSING
@classmethod
def fetch_out_revisions(cls, num: int):
from service.read.revs.out0 import MY_REVISIONS0
from service.read.revs.out1 import MY_REVISIONS1
from service.read.revs.out2 import MY_REVISIONS2
from service.read.revs.out3 import MY_REVISIONS3
from service.read.revs.out4 import MY_REVISIONS4
from service.read.revs.out5 import MY_REVISIONS5
from service.read.revs.out6 import MY_REVISIONS6
from service.read.revs.out7 import MY_REVISIONS7
from service.read.revs.out8 import MY_REVISIONS8
from service.read.revs.out9 import MY_REVISIONS9
d = {
0: MY_REVISIONS0,
1: MY_REVISIONS1,
2: MY_REVISIONS2,
3: MY_REVISIONS3,
4: MY_REVISIONS4,
5: MY_REVISIONS5,
6: MY_REVISIONS6,
7: MY_REVISIONS7,
8: MY_REVISIONS8,
9: MY_REVISIONS9,
}
return d[num]
@classmethod
def merge(cls, missing_revisions: list[EditedRevision], out_revisions: list[EditedRevision], callback):
result: list[EditedRevision] = []
missing_options_map: dict[int, EditedRevision] = {rev.goods_option_sno: rev for rev in missing_revisions}
print('missing_options_map:', len(out_revisions))
for rev in out_revisions:
if rev.goods_option_sno in missing_options_map:
result.append(missing_options_map[rev.goods_option_sno])
else:
result.append(rev)
callback(result)
@classmethod
def _perform_write_as_file(cls, filename: str, revisions: list[EditedRevision]):
print('write starts at ', filename)
with open(f'resource/dest/{filename}.py', 'w') as f:
f.write(f'MY_REVISIONS = [\n')
for rev in revisions:
f.write(' ')
f.write(str(rev))
f.write(',')
f.write('\n')
f.write(']')
print('successfully written revisions: ', len(revisions))
missing_revisions = MergeService.fetch_missing_revisions()
# bucket_id = 0
for bucket_id in range(10):
write_as_file = lambda revisions: MergeService._perform_write_as_file(f'merge{bucket_id}', revisions)
out_revisions = MergeService.fetch_out_revisions(bucket_id)
print(f'fetched out_revisions(bucket_id={bucket_id}):', len(out_revisions))
MergeService.merge(missing_revisions, out_revisions, write_as_file)