forked from norc-heal/heal-data-pkg-tool
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathversions_results_tracker.py
More file actions
157 lines (145 loc) · 4.74 KB
/
Copy pathversions_results_tracker.py
File metadata and controls
157 lines (145 loc) · 4.74 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# step 1: add new fields, delete deprecated fields, rename fields
# for each schema property:
# if deprecated is true
# delete any field with current or former field name(s)
# if deprecated is false
# if field with current field name exists
# leave field with current field name alone
# delete any field with a former field name
# if field with current field name does not exist
# if former field name(s)
# if field with former field name exists
# copy field with former field name and rename to current field name
# if field with former field name does not exist
# create new field with current field name
# if no former field name(s)
# create new field with current field name
#
# after looping through all schema properties with above,
# for all schema properties where deprecated is False, collect all former field names,
# and delete any fields with a former field name
# step 2: update enums
# for each (non-deprecated) schema property:
# if mapEnums is not empty
# if enum value is in keys of mapEnums
# replace enum value with value specified by corresponding key of mapEnums
# if enum value is not in keys of mapEnums
# replace enum value with empty/null
# if mapEnums is empty
# do nothing
# step 3: update subfield names
# for each (non-deprecated) schema property:
# if formerSubNames is not empty
# if value is a list of dictionaries
# replace keys in list of dictionaries according to the mapping in formerSubNames
# (https://stackoverflow.com/questions/54637847/how-to-change-dictionary-keys-in-a-list-of-dictionaries)
fieldNameMap = {
"latestVersion":"0.3.1",
"properties":{
"schemaVersion":{
"formerNames": [],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"resultId":{
"formerNames": ["result.id"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"description":{
"formerNames":[],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"category":{
"formerNames":[],
"deprecated": False,
"mapEnum": {},
"deleteEnum":["figure"],
"formerSubNames": {}
},
"experimentNameBelongsTo":{
"formerNames": [],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"associatedFilePublication":{
"formerNames": ["associatedFileMultiResultFile","assoc.multi.result.file"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"figureNumber":{
"formerNames": ["figure.number"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"tableNumber":{
"formerNames": ["table.number"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"associatedFileDependsOn":{
"formerNames": ["assoc.file.depends.on"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"resultSupports":{
"formerNames": ["result.supports"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"annotationCreateDateTime":{
"formerNames": ["restrk.create.date.time"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"annotationModDateTime":{
"formerNames": ["restrk.mod.date.time"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"resultIdNumber":{
"formerNames": ["result.id.num"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"annotationModTimeStamp":{
"formerNames": ["restrk.mod.time.stamp"],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
},
"removed":{
"formerNames": [],
"deprecated": False,
"mapEnum": {},
"deleteEnum":[],
"formerSubNames": {}
}
}
}