py-eb-model 1.1.5__py3-none-any.whl → 1.1.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eb_model/cli/nvm_xdm_2_xls_cli.py +63 -0
- eb_model/models/abstract.py +6 -1
- eb_model/models/eb_doc.py +13 -4
- eb_model/models/nvm_xdm.py +347 -0
- eb_model/models/os_xdm.py +43 -6
- eb_model/parser/__init__.py +2 -1
- eb_model/parser/eb_parser.py +3 -1
- eb_model/parser/nvm_xdm_parser.py +44 -0
- eb_model/parser/os_xdm_parser.py +14 -2
- eb_model/reporter/__init__.py +2 -1
- eb_model/reporter/excel_reporter/abstract.py +7 -7
- eb_model/reporter/excel_reporter/nvm_xdm.py +40 -0
- eb_model/reporter/excel_reporter/rte_xdm.py +5 -3
- {py_eb_model-1.1.5.dist-info → py_eb_model-1.1.6.dist-info}/METADATA +20 -3
- {py_eb_model-1.1.5.dist-info → py_eb_model-1.1.6.dist-info}/RECORD +19 -15
- {py_eb_model-1.1.5.dist-info → py_eb_model-1.1.6.dist-info}/entry_points.txt +1 -0
- {py_eb_model-1.1.5.dist-info → py_eb_model-1.1.6.dist-info}/LICENSE +0 -0
- {py_eb_model-1.1.5.dist-info → py_eb_model-1.1.6.dist-info}/WHEEL +0 -0
- {py_eb_model-1.1.5.dist-info → py_eb_model-1.1.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
import argparse
|
2
|
+
import pkg_resources
|
3
|
+
import logging
|
4
|
+
import sys
|
5
|
+
import os.path
|
6
|
+
|
7
|
+
from ..parser import NvMXdmParser
|
8
|
+
from ..models import EBModel
|
9
|
+
from ..reporter import NvMXdmXlsWriter
|
10
|
+
|
11
|
+
|
12
|
+
def main():
|
13
|
+
version = pkg_resources.require("py_eb_model")[0].version
|
14
|
+
|
15
|
+
ap = argparse.ArgumentParser()
|
16
|
+
ap.description = "Version: %s" % version
|
17
|
+
ap.add_argument("-v", "--verbose", required=False, help="Print debug information.", action="store_true")
|
18
|
+
ap.add_argument("--log", required=False, help="Specify the log file name.")
|
19
|
+
ap.add_argument("INPUT", help="The path of NvM.xdm.")
|
20
|
+
ap.add_argument("OUTPUT", help="The path of excel file.")
|
21
|
+
|
22
|
+
args = ap.parse_args()
|
23
|
+
|
24
|
+
logger = logging.getLogger()
|
25
|
+
|
26
|
+
formatter = logging.Formatter('[%(levelname)s] : %(message)s')
|
27
|
+
|
28
|
+
stdout_handler = logging.StreamHandler(sys.stderr)
|
29
|
+
stdout_handler.setFormatter(formatter)
|
30
|
+
|
31
|
+
if args.log:
|
32
|
+
if os.path.exists(args.log):
|
33
|
+
os.remove(args.log)
|
34
|
+
|
35
|
+
file_handler = logging.FileHandler(args.log)
|
36
|
+
file_handler.setFormatter(formatter)
|
37
|
+
file_handler.setLevel(logging.DEBUG)
|
38
|
+
|
39
|
+
logger.setLevel(logging.DEBUG)
|
40
|
+
|
41
|
+
if args.verbose:
|
42
|
+
stdout_handler.setLevel(logging.DEBUG)
|
43
|
+
else:
|
44
|
+
stdout_handler.setLevel(logging.INFO)
|
45
|
+
|
46
|
+
if args.log:
|
47
|
+
logger.addHandler(file_handler)
|
48
|
+
logger.addHandler(stdout_handler)
|
49
|
+
|
50
|
+
try:
|
51
|
+
doc = EBModel.getInstance()
|
52
|
+
|
53
|
+
parser = NvMXdmParser()
|
54
|
+
parser.parse_xdm(args.INPUT, doc)
|
55
|
+
|
56
|
+
options = {}
|
57
|
+
|
58
|
+
writer = NvMXdmXlsWriter()
|
59
|
+
writer.write(args.OUTPUT, doc, options)
|
60
|
+
|
61
|
+
except Exception as e:
|
62
|
+
logger.error(e)
|
63
|
+
raise e
|
eb_model/models/abstract.py
CHANGED
@@ -8,7 +8,7 @@ class EcucObject(metaclass=ABCMeta):
|
|
8
8
|
if type(self) is EcucObject:
|
9
9
|
raise ValueError("Abstract EcucObject cannot be initialized.")
|
10
10
|
|
11
|
-
self.name = name
|
11
|
+
self.name = name # type: str
|
12
12
|
self.parent = parent # type: EcucObject
|
13
13
|
|
14
14
|
if isinstance(parent, EcucParamConfContainerDef):
|
@@ -30,6 +30,11 @@ class EcucObject(metaclass=ABCMeta):
|
|
30
30
|
|
31
31
|
def getFullName(self) -> str:
|
32
32
|
return self.parent.getFullName() + "/" + self.name
|
33
|
+
|
34
|
+
|
35
|
+
class EcucEnumerationParamDef(EcucObject):
|
36
|
+
def __init__(self, parent, name):
|
37
|
+
super().__init__(parent, name)
|
33
38
|
|
34
39
|
|
35
40
|
class EcucParamConfContainerDef(EcucObject):
|
eb_model/models/eb_doc.py
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
from .
|
2
|
-
from .
|
3
|
-
from .
|
4
|
-
from .
|
1
|
+
from ..models.nvm_xdm import NvM
|
2
|
+
from ..models.importer_xdm import SystemDescriptionImporter
|
3
|
+
from ..models.rte_xdm import Rte
|
4
|
+
from ..models.os_xdm import Os
|
5
|
+
from ..models.abstract import EcucParamConfContainerDef, EcucObject
|
5
6
|
|
6
7
|
|
7
8
|
class AbstractModel(EcucParamConfContainerDef):
|
@@ -44,6 +45,9 @@ class EBModel(AbstractModel):
|
|
44
45
|
return self.find_object(referred_name, EBModel.getInstance())
|
45
46
|
|
46
47
|
def getOs(self) -> Os:
|
48
|
+
'''
|
49
|
+
get the Os Container
|
50
|
+
'''
|
47
51
|
container = EcucParamConfContainerDef(self, "Os")
|
48
52
|
Os(container)
|
49
53
|
return self.find("/Os/Os")
|
@@ -52,6 +56,11 @@ class EBModel(AbstractModel):
|
|
52
56
|
container = EcucParamConfContainerDef(self, "Rte")
|
53
57
|
Rte(container)
|
54
58
|
return self.find("/Rte/Rte")
|
59
|
+
|
60
|
+
def getNvM(self) -> NvM:
|
61
|
+
container = EcucParamConfContainerDef(self, "NvM")
|
62
|
+
NvM(container)
|
63
|
+
return self.find("/NvM/NvM")
|
55
64
|
|
56
65
|
|
57
66
|
class PreferenceModel(AbstractModel):
|
@@ -0,0 +1,347 @@
|
|
1
|
+
from typing import List
|
2
|
+
from ..models.abstract import EcucParamConfContainerDef, Module, EcucRefType
|
3
|
+
|
4
|
+
|
5
|
+
class NvM(Module):
|
6
|
+
def __init__(self, parent):
|
7
|
+
super().__init__(parent, "NvM")
|
8
|
+
|
9
|
+
self.NvMBlockDescriptors = [] # type: List[NvMBlockDescriptor]
|
10
|
+
|
11
|
+
def getNvMBlockDescriptorList(self):
|
12
|
+
return self.NvMBlockDescriptors
|
13
|
+
|
14
|
+
def addNvMBlockDescriptor(self, value):
|
15
|
+
if value is not None:
|
16
|
+
self.NvMBlockDescriptors.append(value)
|
17
|
+
return self
|
18
|
+
|
19
|
+
|
20
|
+
class NvMBlockDescriptor(EcucParamConfContainerDef):
|
21
|
+
def __init__(self, parent, name):
|
22
|
+
super().__init__(parent, name)
|
23
|
+
|
24
|
+
self.nvMBlockCrcType = None # type: str # optional
|
25
|
+
self.nvMBlockHeaderInclude = None # type: int # optional
|
26
|
+
self.nvMBlockJobPriority = None # type: str # required
|
27
|
+
self.nvMBlockManagementType = None # type: str # required
|
28
|
+
self.nvMBlockUseAutoValidation = None # required
|
29
|
+
self.nvMBlockUseCompression = None # required
|
30
|
+
self.nvMBlockUseCrc = None # required
|
31
|
+
self.nvMBlockUseCRCCompMechanism = None # required
|
32
|
+
self.NvMBlockUsePort = None # required
|
33
|
+
self.nvMBlockUseSetRamBlockStatus = None # required
|
34
|
+
self.nvMBlockUseSyncMechanism = None # required
|
35
|
+
self.nvMBlockWriteProt = None # required
|
36
|
+
self.nvMBswMBlockStatusInformation = None # required
|
37
|
+
self.nvMCalcRamBlockCrc = None # optional
|
38
|
+
self.nvMMaxNumOfReadRetries = None # required
|
39
|
+
self.nvMMaxNumOfWriteRetries = None # required
|
40
|
+
self.nvMNvBlockBaseNumber = None # required
|
41
|
+
self.nvMNvBlockLength = None # type: int # required
|
42
|
+
self.nvMNvBlockNum = None # type: int # required
|
43
|
+
self.nvMNvramBlockIdentifier = None # required
|
44
|
+
self.nvMNvramDeviceId = None # required
|
45
|
+
self.nvMRamBlockDataAddress = None # optional
|
46
|
+
self.nvMReadRamBlockFromNvCallback = None # optional
|
47
|
+
self.nvMResistantToChangedSw = None # required
|
48
|
+
self.nvMRomBlockDataAddress = None # optional
|
49
|
+
self.nvMRomBlockNum = None # required
|
50
|
+
self.nvMSelectBlockForFirstInitAll = None # optional
|
51
|
+
self.nvMSelectBlockForReadAll = None # required
|
52
|
+
self.nvMSelectBlockForWriteAll = None # required
|
53
|
+
self.nvMStaticBlockIDCheck = None # required
|
54
|
+
self.nvMWriteBlockOnce = None # required
|
55
|
+
self.nvMWriteRamBlockToNvCallback = None # optional
|
56
|
+
self.nvMWriteVerification = None # required
|
57
|
+
self.nvMWriteVerificationDataSize = None # required
|
58
|
+
self.nvMBlockCipheringRef = None # optional
|
59
|
+
self.nvMBlockEcucPartitionRef = None # type: EcucRefType # required
|
60
|
+
|
61
|
+
def getNvMBlockCrcType(self):
|
62
|
+
return self.nvMBlockCrcType
|
63
|
+
|
64
|
+
def setNvMBlockCrcType(self, value):
|
65
|
+
if value is not None:
|
66
|
+
self.nvMBlockCrcType = value
|
67
|
+
return self
|
68
|
+
|
69
|
+
def getNvMBlockHeaderInclude(self):
|
70
|
+
return self.nvMBlockHeaderInclude
|
71
|
+
|
72
|
+
def setNvMBlockHeaderInclude(self, value):
|
73
|
+
if value is not None:
|
74
|
+
self.nvMBlockHeaderInclude = value
|
75
|
+
return self
|
76
|
+
|
77
|
+
def getNvMBlockJobPriority(self):
|
78
|
+
return self.nvMBlockJobPriority
|
79
|
+
|
80
|
+
def setNvMBlockJobPriority(self, value):
|
81
|
+
if value is not None:
|
82
|
+
self.nvMBlockJobPriority = value
|
83
|
+
return self
|
84
|
+
|
85
|
+
def getNvMBlockManagementType(self):
|
86
|
+
return self.nvMBlockManagementType
|
87
|
+
|
88
|
+
def setNvMBlockManagementType(self, value):
|
89
|
+
if value is not None:
|
90
|
+
self.nvMBlockManagementType = value
|
91
|
+
return self
|
92
|
+
|
93
|
+
def getNvMBlockUseAutoValidation(self):
|
94
|
+
return self.nvMBlockUseAutoValidation
|
95
|
+
|
96
|
+
def setNvMBlockUseAutoValidation(self, value):
|
97
|
+
if value is not None:
|
98
|
+
self.nvMBlockUseAutoValidation = value
|
99
|
+
return self
|
100
|
+
|
101
|
+
def getNvMBlockUseCompression(self):
|
102
|
+
return self.nvMBlockUseCompression
|
103
|
+
|
104
|
+
def setNvMBlockUseCompression(self, value):
|
105
|
+
if value is not None:
|
106
|
+
self.nvMBlockUseCompression = value
|
107
|
+
return self
|
108
|
+
|
109
|
+
def getNvMBlockUseCrc(self):
|
110
|
+
return self.nvMBlockUseCrc
|
111
|
+
|
112
|
+
def setNvMBlockUseCrc(self, value):
|
113
|
+
if value is not None:
|
114
|
+
self.nvMBlockUseCrc = value
|
115
|
+
return self
|
116
|
+
|
117
|
+
def getNvMBlockUseCRCCompMechanism(self):
|
118
|
+
return self.nvMBlockUseCRCCompMechanism
|
119
|
+
|
120
|
+
def setNvMBlockUseCRCCompMechanism(self, value):
|
121
|
+
if value is not None:
|
122
|
+
self.nvMBlockUseCRCCompMechanism = value
|
123
|
+
return self
|
124
|
+
|
125
|
+
def getNvMBlockUsePort(self):
|
126
|
+
return self.NvMBlockUsePort
|
127
|
+
|
128
|
+
def setNvMBlockUsePort(self, value):
|
129
|
+
if value is not None:
|
130
|
+
self.NvMBlockUsePort = value
|
131
|
+
return self
|
132
|
+
|
133
|
+
def getNvMBlockUseSetRamBlockStatus(self):
|
134
|
+
return self.nvMBlockUseSetRamBlockStatus
|
135
|
+
|
136
|
+
def setNvMBlockUseSetRamBlockStatus(self, value):
|
137
|
+
if value is not None:
|
138
|
+
self.nvMBlockUseSetRamBlockStatus = value
|
139
|
+
return self
|
140
|
+
|
141
|
+
def getNvMBlockUseSyncMechanism(self):
|
142
|
+
return self.nvMBlockUseSyncMechanism
|
143
|
+
|
144
|
+
def setNvMBlockUseSyncMechanism(self, value):
|
145
|
+
if value is not None:
|
146
|
+
self.nvMBlockUseSyncMechanism = value
|
147
|
+
return self
|
148
|
+
|
149
|
+
def getNvMBlockWriteProt(self):
|
150
|
+
return self.nvMBlockWriteProt
|
151
|
+
|
152
|
+
def setNvMBlockWriteProt(self, value):
|
153
|
+
if value is not None:
|
154
|
+
self.nvMBlockWriteProt = value
|
155
|
+
return self
|
156
|
+
|
157
|
+
def getNvMBswMBlockStatusInformation(self):
|
158
|
+
return self.nvMBswMBlockStatusInformation
|
159
|
+
|
160
|
+
def setNvMBswMBlockStatusInformation(self, value):
|
161
|
+
if value is not None:
|
162
|
+
self.nvMBswMBlockStatusInformation = value
|
163
|
+
return self
|
164
|
+
|
165
|
+
def getNvMCalcRamBlockCrc(self):
|
166
|
+
return self.nvMCalcRamBlockCrc
|
167
|
+
|
168
|
+
def setNvMCalcRamBlockCrc(self, value):
|
169
|
+
if value is not None:
|
170
|
+
self.nvMCalcRamBlockCrc = value
|
171
|
+
return self
|
172
|
+
|
173
|
+
def getNvMMaxNumOfReadRetries(self):
|
174
|
+
return self.nvMMaxNumOfReadRetries
|
175
|
+
|
176
|
+
def setNvMMaxNumOfReadRetries(self, value):
|
177
|
+
if value is not None:
|
178
|
+
self.nvMMaxNumOfReadRetries = value
|
179
|
+
return self
|
180
|
+
|
181
|
+
def getNvMMaxNumOfWriteRetries(self):
|
182
|
+
return self.nvMMaxNumOfWriteRetries
|
183
|
+
|
184
|
+
def setNvMMaxNumOfWriteRetries(self, value):
|
185
|
+
if value is not None:
|
186
|
+
self.nvMMaxNumOfWriteRetries = value
|
187
|
+
return self
|
188
|
+
|
189
|
+
def getNvMNvBlockBaseNumber(self):
|
190
|
+
return self.nvMNvBlockBaseNumber
|
191
|
+
|
192
|
+
def setNvMNvBlockBaseNumber(self, value):
|
193
|
+
if value is not None:
|
194
|
+
self.nvMNvBlockBaseNumber = value
|
195
|
+
return self
|
196
|
+
|
197
|
+
def getNvMNvBlockLength(self):
|
198
|
+
return self.nvMNvBlockLength
|
199
|
+
|
200
|
+
def setNvMNvBlockLength(self, value):
|
201
|
+
if value is not None:
|
202
|
+
self.nvMNvBlockLength = value
|
203
|
+
return self
|
204
|
+
|
205
|
+
def getNvMNvBlockNum(self):
|
206
|
+
return self.nvMNvBlockNum
|
207
|
+
|
208
|
+
def setNvMNvBlockNum(self, value):
|
209
|
+
if value is not None:
|
210
|
+
self.nvMNvBlockNum = value
|
211
|
+
return self
|
212
|
+
|
213
|
+
def getNvMNvramBlockIdentifier(self):
|
214
|
+
return self.nvMNvramBlockIdentifier
|
215
|
+
|
216
|
+
def setNvMNvramBlockIdentifier(self, value):
|
217
|
+
if value is not None:
|
218
|
+
self.nvMNvramBlockIdentifier = value
|
219
|
+
return self
|
220
|
+
|
221
|
+
def getNvMNvramDeviceId(self):
|
222
|
+
return self.nvMNvramDeviceId
|
223
|
+
|
224
|
+
def setNvMNvramDeviceId(self, value):
|
225
|
+
if value is not None:
|
226
|
+
self.nvMNvramDeviceId = value
|
227
|
+
return self
|
228
|
+
|
229
|
+
def getNvMRamBlockDataAddress(self):
|
230
|
+
return self.nvMRamBlockDataAddress
|
231
|
+
|
232
|
+
def setNvMRamBlockDataAddress(self, value):
|
233
|
+
if value is not None:
|
234
|
+
self.nvMRamBlockDataAddress = value
|
235
|
+
return self
|
236
|
+
|
237
|
+
def getNvMReadRamBlockFromNvCallback(self):
|
238
|
+
return self.nvMReadRamBlockFromNvCallback
|
239
|
+
|
240
|
+
def setNvMReadRamBlockFromNvCallback(self, value):
|
241
|
+
if value is not None:
|
242
|
+
self.nvMReadRamBlockFromNvCallback = value
|
243
|
+
return self
|
244
|
+
|
245
|
+
def getNvMResistantToChangedSw(self):
|
246
|
+
return self.nvMResistantToChangedSw
|
247
|
+
|
248
|
+
def setNvMResistantToChangedSw(self, value):
|
249
|
+
if value is not None:
|
250
|
+
self.nvMResistantToChangedSw = value
|
251
|
+
return self
|
252
|
+
|
253
|
+
def getNvMRomBlockDataAddress(self):
|
254
|
+
return self.nvMRomBlockDataAddress
|
255
|
+
|
256
|
+
def setNvMRomBlockDataAddress(self, value):
|
257
|
+
if value is not None:
|
258
|
+
self.nvMRomBlockDataAddress = value
|
259
|
+
return self
|
260
|
+
|
261
|
+
def getNvMRomBlockNum(self):
|
262
|
+
return self.nvMRomBlockNum
|
263
|
+
|
264
|
+
def setNvMRomBlockNum(self, value):
|
265
|
+
if value is not None:
|
266
|
+
self.nvMRomBlockNum = value
|
267
|
+
return self
|
268
|
+
|
269
|
+
def getNvMSelectBlockForFirstInitAll(self):
|
270
|
+
return self.nvMSelectBlockForFirstInitAll
|
271
|
+
|
272
|
+
def setNvMSelectBlockForFirstInitAll(self, value):
|
273
|
+
if value is not None:
|
274
|
+
self.nvMSelectBlockForFirstInitAll = value
|
275
|
+
return self
|
276
|
+
|
277
|
+
def getNvMSelectBlockForReadAll(self):
|
278
|
+
return self.nvMSelectBlockForReadAll
|
279
|
+
|
280
|
+
def setNvMSelectBlockForReadAll(self, value):
|
281
|
+
if value is not None:
|
282
|
+
self.nvMSelectBlockForReadAll = value
|
283
|
+
return self
|
284
|
+
|
285
|
+
def getNvMSelectBlockForWriteAll(self):
|
286
|
+
return self.nvMSelectBlockForWriteAll
|
287
|
+
|
288
|
+
def setNvMSelectBlockForWriteAll(self, value):
|
289
|
+
if value is not None:
|
290
|
+
self.nvMSelectBlockForWriteAll = value
|
291
|
+
return self
|
292
|
+
|
293
|
+
def getNvMStaticBlockIDCheck(self):
|
294
|
+
return self.nvMStaticBlockIDCheck
|
295
|
+
|
296
|
+
def setNvMStaticBlockIDCheck(self, value):
|
297
|
+
if value is not None:
|
298
|
+
self.nvMStaticBlockIDCheck = value
|
299
|
+
return self
|
300
|
+
|
301
|
+
def getNvMWriteBlockOnce(self):
|
302
|
+
return self.nvMWriteBlockOnce
|
303
|
+
|
304
|
+
def setNvMWriteBlockOnce(self, value):
|
305
|
+
if value is not None:
|
306
|
+
self.nvMWriteBlockOnce = value
|
307
|
+
return self
|
308
|
+
|
309
|
+
def getNvMWriteRamBlockToNvCallback(self):
|
310
|
+
return self.nvMWriteRamBlockToNvCallback
|
311
|
+
|
312
|
+
def setNvMWriteRamBlockToNvCallback(self, value):
|
313
|
+
if value is not None:
|
314
|
+
self.nvMWriteRamBlockToNvCallback = value
|
315
|
+
return self
|
316
|
+
|
317
|
+
def getNvMWriteVerification(self):
|
318
|
+
return self.nvMWriteVerification
|
319
|
+
|
320
|
+
def setNvMWriteVerification(self, value):
|
321
|
+
if value is not None:
|
322
|
+
self.nvMWriteVerification = value
|
323
|
+
return self
|
324
|
+
|
325
|
+
def getNvMWriteVerificationDataSize(self):
|
326
|
+
return self.nvMWriteVerificationDataSize
|
327
|
+
|
328
|
+
def setNvMWriteVerificationDataSize(self, value):
|
329
|
+
if value is not None:
|
330
|
+
self.nvMWriteVerificationDataSize = value
|
331
|
+
return self
|
332
|
+
|
333
|
+
def getNvMBlockCipheringRef(self):
|
334
|
+
return self.nvMBlockCipheringRef
|
335
|
+
|
336
|
+
def setNvMBlockCipheringRef(self, value):
|
337
|
+
if value is not None:
|
338
|
+
self.nvMBlockCipheringRef = value
|
339
|
+
return self
|
340
|
+
|
341
|
+
def getNvMBlockEcucPartitionRef(self) -> EcucRefType:
|
342
|
+
return self.nvMBlockEcucPartitionRef
|
343
|
+
|
344
|
+
def setNvMBlockEcucPartitionRef(self, value: EcucRefType):
|
345
|
+
if value is not None:
|
346
|
+
self.nvMBlockEcucPartitionRef = value
|
347
|
+
return self
|
eb_model/models/os_xdm.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
from typing import Dict, List # noqa F401
|
2
2
|
import logging
|
3
|
-
from ..models.abstract import EcucParamConfContainerDef, EcucObject, EcucRefType, Module
|
3
|
+
from ..models.abstract import EcucEnumerationParamDef, EcucParamConfContainerDef, EcucObject, EcucRefType, Module
|
4
4
|
|
5
5
|
|
6
6
|
class OsAlarmAction(EcucParamConfContainerDef):
|
@@ -483,10 +483,38 @@ class OsCounter(EcucParamConfContainerDef):
|
|
483
483
|
|
484
484
|
|
485
485
|
class OsResource(EcucParamConfContainerDef):
|
486
|
-
def __init__(self
|
487
|
-
|
486
|
+
def __init__(self, parent, name):
|
487
|
+
super().__init__(parent, name)
|
488
|
+
|
489
|
+
self.osResourceProperty = None # type: EcucEnumerationParamDef
|
490
|
+
self.osResourceAccessingApplicationRefs = [] # type: List[EcucRefType]
|
491
|
+
self.osResourceLinkedResourceRefs = [] # type: List[EcucRefType]
|
492
|
+
|
493
|
+
def getOsResourceProperty(self):
|
494
|
+
return self.osResourceProperty
|
495
|
+
|
496
|
+
def setOsResourceProperty(self, value):
|
497
|
+
if value is not None:
|
498
|
+
self.osResourceProperty = value
|
499
|
+
return self
|
500
|
+
|
501
|
+
def getOsResourceAccessingApplicationRefs(self):
|
502
|
+
return self.osResourceAccessingApplicationRefs
|
503
|
+
|
504
|
+
def addOsResourceAccessingApplicationRefs(self, value):
|
505
|
+
if value is not None:
|
506
|
+
self.osResourceAccessingApplicationRefs.append(value)
|
507
|
+
return self
|
508
|
+
|
509
|
+
def getOsResourceLinkedResourceRefs(self):
|
510
|
+
return self.osResourceLinkedResourceRefs
|
488
511
|
|
512
|
+
def setOsResourceLinkedResourceRefs(self, value):
|
513
|
+
if value is not None:
|
514
|
+
self.osResourceLinkedResourceRefs = value
|
515
|
+
return self
|
489
516
|
|
517
|
+
|
490
518
|
class OsIsrResourceLock(EcucParamConfContainerDef):
|
491
519
|
def __init__(self) -> None:
|
492
520
|
self.osIsrResourceLockBudget = None
|
@@ -944,6 +972,7 @@ class Os(Module):
|
|
944
972
|
self.osScheduleTables = [] # type: List[OsScheduleTable]
|
945
973
|
self.osCounters = [] # type: List[OsCounter]
|
946
974
|
self.osApplications = [] # type: List[OsApplication]
|
975
|
+
self.osResources = [] # type: List[OsResource]
|
947
976
|
|
948
977
|
# extended attributes to speed up performance
|
949
978
|
self.osIsrToOsAppMappings = {} # type: Dict[str, OsApplication]
|
@@ -992,22 +1021,30 @@ class Os(Module):
|
|
992
1021
|
return self
|
993
1022
|
|
994
1023
|
def getOsApplicationList(self) -> List[OsApplication]:
|
995
|
-
return list(sorted(filter(lambda a: isinstance(a, OsApplication), self.elements.values()), key=lambda o: o.
|
1024
|
+
return list(sorted(filter(lambda a: isinstance(a, OsApplication), self.elements.values()), key=lambda o: o.getName()))
|
996
1025
|
|
997
1026
|
def addOsApplication(self, value: OsApplication):
|
998
1027
|
self.addElement(value)
|
999
1028
|
self.osApplications.append(value)
|
1000
1029
|
|
1001
1030
|
for isr_ref in value.getOsAppIsrRefs():
|
1002
|
-
self.logger.debug("Create OsISR <%s> -> OsApp <%s> Mapping." % (isr_ref.getShortName(), value.getName))
|
1031
|
+
self.logger.debug("Create OsISR <%s> -> OsApp <%s> Mapping." % (isr_ref.getShortName(), value.getName()))
|
1003
1032
|
self.osIsrToOsAppMappings[isr_ref.getShortName()] = value
|
1004
1033
|
|
1005
1034
|
for task_ref in value.getOsAppTaskRefs():
|
1006
|
-
self.logger.debug("Create OsTask <%s> -> OsApp <%s> Mapping." % (task_ref.getShortName(), value.getName))
|
1035
|
+
self.logger.debug("Create OsTask <%s> -> OsApp <%s> Mapping." % (task_ref.getShortName(), value.getName()))
|
1007
1036
|
self.osTaskToOsAppMappings[task_ref.getShortName()] = value
|
1008
1037
|
|
1009
1038
|
return self
|
1010
1039
|
|
1040
|
+
def getOsResourceList(self) -> List[OsResource]:
|
1041
|
+
return list(sorted(filter(lambda a: isinstance(a, OsResource), self.elements.values()), key=lambda o: o.getName()))
|
1042
|
+
|
1043
|
+
def addOsResource(self, os_task: OsResource):
|
1044
|
+
self.addElement(os_task)
|
1045
|
+
self.osResources.append(os_task)
|
1046
|
+
return self
|
1047
|
+
|
1011
1048
|
def getOsIsrOsApplication(self, isr_name: str) -> OsApplication:
|
1012
1049
|
if isr_name in self.osIsrToOsAppMappings:
|
1013
1050
|
return self.osIsrToOsAppMappings[isr_name]
|
eb_model/parser/__init__.py
CHANGED
eb_model/parser/eb_parser.py
CHANGED
@@ -86,7 +86,9 @@ class AbstractEbModelParser(metaclass = ABCMeta):
|
|
86
86
|
tag = parent.find(".//d:ref[@name='%s']" % name, self.nsmap)
|
87
87
|
if tag is None:
|
88
88
|
raise KeyError("XPath d:ref[@name='%s'] is invalid" % name)
|
89
|
-
|
89
|
+
if 'value' in tag.attrib:
|
90
|
+
return EcucRefType(self.read_ref_raw_value(tag.attrib['value']))
|
91
|
+
return None
|
90
92
|
|
91
93
|
def read_optional_ref_value(self, parent: ET.Element, name: str) -> EcucRefType:
|
92
94
|
tag = parent.find(".//d:ref[@name='%s']" % name, self.nsmap)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import xml.etree.ElementTree as ET
|
2
|
+
|
3
|
+
from ..models.nvm_xdm import NvM, NvMBlockDescriptor
|
4
|
+
from ..models.eb_doc import EBModel
|
5
|
+
from ..parser.eb_parser import AbstractEbModelParser
|
6
|
+
|
7
|
+
|
8
|
+
class NvMXdmParser(AbstractEbModelParser):
|
9
|
+
def __init__(self, ) -> None:
|
10
|
+
super().__init__()
|
11
|
+
|
12
|
+
self.nvm = None
|
13
|
+
|
14
|
+
def parse(self, element: ET.Element, doc: EBModel):
|
15
|
+
if self.get_component_name(element) != "NvM":
|
16
|
+
raise ValueError("Invalid <%s> xdm file" % "NvM")
|
17
|
+
|
18
|
+
nvm = doc.getNvM()
|
19
|
+
|
20
|
+
self.read_version(element, nvm)
|
21
|
+
|
22
|
+
self.logger.info("Parse NvM ARVersion:<%s> SwVersion:<%s>" % (nvm.getArVersion().getVersion(), nvm.getSwVersion().getVersion()))
|
23
|
+
|
24
|
+
self.nvm = nvm
|
25
|
+
|
26
|
+
self.read_nvm_block_descriptors(element, nvm)
|
27
|
+
|
28
|
+
def read_nvm_block_descriptors(self, element: ET.Element, nvm: NvM):
|
29
|
+
for ctr_tag in self.find_ctr_tag_list(element, "NvMBlockDescriptor"):
|
30
|
+
nvm_block = NvMBlockDescriptor(nvm, ctr_tag.attrib["name"])
|
31
|
+
nvm_block.setNvMBlockCrcType(self.read_optional_value(ctr_tag, "NvMBlockCrcType")) \
|
32
|
+
.setNvMBlockEcucPartitionRef(self.read_ref_value(ctr_tag, "NvMBlockEcucPartitionRef")) \
|
33
|
+
.setNvMNvramBlockIdentifier(self.read_value(ctr_tag, "NvMNvramBlockIdentifier")) \
|
34
|
+
.setNvMRamBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRamBlockDataAddress")) \
|
35
|
+
.setNvMRomBlockDataAddress(self.read_optional_value(ctr_tag, "NvMRomBlockDataAddress")) \
|
36
|
+
.setNvMRomBlockNum(self.read_value(ctr_tag, "NvMRomBlockNum")) \
|
37
|
+
.setNvMBlockManagementType(self.read_value(ctr_tag, "NvMBlockManagementType")) \
|
38
|
+
.setNvMNvBlockLength(self.read_value(ctr_tag, "NvMNvBlockLength")) \
|
39
|
+
.setNvMNvBlockNum(self.read_value(ctr_tag, "NvMNvBlockNum")) \
|
40
|
+
.setNvMSelectBlockForReadAll(self.read_value(ctr_tag, "NvMSelectBlockForReadAll")) \
|
41
|
+
.setNvMSelectBlockForWriteAll(self.read_value(ctr_tag, "NvMSelectBlockForWriteAll"))
|
42
|
+
|
43
|
+
nvm.addNvMBlockDescriptor(nvm_block)
|
44
|
+
|
eb_model/parser/os_xdm_parser.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import xml.etree.ElementTree as ET
|
2
2
|
from ..models.eb_doc import EBModel
|
3
|
-
from ..models.os_xdm import Os, OsAlarm, OsAlarmActivateTask, OsAlarmCallback, OsAlarmIncrementCounter, OsAlarmSetEvent, OsCounter,
|
3
|
+
from ..models.os_xdm import Os, OsAlarm, OsAlarmActivateTask, OsAlarmCallback, OsAlarmIncrementCounter, OsAlarmSetEvent, OsCounter, OsResource
|
4
|
+
from ..models.os_xdm import OsScheduleTable
|
4
5
|
from ..models.os_xdm import OsTask, OsIsr, OsApplication, OsScheduleTableEventSetting, OsScheduleTableExpiryPoint, OsScheduleTableTaskActivation
|
5
6
|
from ..models.os_xdm import OsScheduleTblAdjustableExpPoint, OsTaskAutostart
|
6
7
|
from ..parser.eb_parser import AbstractEbModelParser
|
@@ -20,7 +21,7 @@ class OsXdmParser(AbstractEbModelParser):
|
|
20
21
|
|
21
22
|
self.read_version(element, os)
|
22
23
|
|
23
|
-
self.logger.info("Parse
|
24
|
+
self.logger.info("Parse Os ARVersion:<%s> SwVersion:<%s>" % (os.getArVersion().getVersion(), os.getSwVersion().getVersion()))
|
24
25
|
|
25
26
|
self.os = os
|
26
27
|
|
@@ -30,6 +31,7 @@ class OsXdmParser(AbstractEbModelParser):
|
|
30
31
|
self.read_os_schedule_tables(element, os)
|
31
32
|
self.read_os_counters(element, os)
|
32
33
|
self.read_os_applications(element, os)
|
34
|
+
self.read_os_resources(element, os)
|
33
35
|
|
34
36
|
def read_os_task_autostart(self, element: ET.Element, os_task: OsTask):
|
35
37
|
ctr_tag = self.find_ctr_tag(element, "OsTaskAutostart")
|
@@ -184,3 +186,13 @@ class OsXdmParser(AbstractEbModelParser):
|
|
184
186
|
|
185
187
|
self.logger.debug("Read OsApplication <%s>" % os_app.getName())
|
186
188
|
os.addOsApplication(os_app)
|
189
|
+
|
190
|
+
def read_os_resources(self, element: ET.Element, os: Os):
|
191
|
+
for ctr_tag in self.find_ctr_tag_list(element, "OsResource"):
|
192
|
+
os_res = OsResource(os, ctr_tag.attrib["name"])
|
193
|
+
os_res.setOsResourceProperty(self.read_value(ctr_tag, "OsResourceProperty"))
|
194
|
+
|
195
|
+
for ref in self.read_ref_value_list(ctr_tag, "OsResourceAccessingApplication"):
|
196
|
+
os_res.addOsResourceAccessingApplicationRefs(ref)
|
197
|
+
|
198
|
+
os.addOsResource(os_res)
|
eb_model/reporter/__init__.py
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
from .excel_reporter.os_xdm import *
|
1
|
+
from .excel_reporter.os_xdm import *
|
2
|
+
from .excel_reporter.nvm_xdm import *
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import logging
|
2
2
|
from openpyxl import Workbook
|
3
3
|
from openpyxl.cell import Cell
|
4
|
-
from openpyxl.styles import Alignment
|
5
4
|
from openpyxl.worksheet.worksheet import Worksheet
|
5
|
+
from openpyxl.styles import Alignment
|
6
|
+
|
6
7
|
|
7
8
|
class ExcelReporter:
|
8
9
|
def __init__(self) -> None:
|
@@ -15,12 +16,12 @@ class ExcelReporter:
|
|
15
16
|
for cell in row:
|
16
17
|
if cell.value:
|
17
18
|
alignment = cell.alignment # type: Alignment
|
18
|
-
if (alignment.wrapText
|
19
|
+
if (alignment.wrapText is True):
|
19
20
|
continue
|
20
21
|
dims[cell.column_letter] = max((dims.get(cell.column_letter, 0), len(str(cell.value))))
|
21
22
|
|
22
23
|
for col, value in dims.items():
|
23
|
-
#worksheet.column_dimensions[col].width = (value + 2) + 2
|
24
|
+
# worksheet.column_dimensions[col].width = (value + 2) + 2
|
24
25
|
worksheet.column_dimensions[col].width = (value + 2)
|
25
26
|
|
26
27
|
def write_title_row(self, sheet: Worksheet, title_row):
|
@@ -28,10 +29,10 @@ class ExcelReporter:
|
|
28
29
|
cell = sheet.cell(row=1, column=idx + 1)
|
29
30
|
cell.value = title_row[idx]
|
30
31
|
|
31
|
-
def write_cell(self, sheet, row, column, value, format
|
32
|
-
cell = sheet.cell(row
|
32
|
+
def write_cell(self, sheet: Worksheet, row: int, column: int, value, format=None) -> Cell:
|
33
|
+
cell = sheet.cell(row=row, column=column) # type: Cell
|
33
34
|
cell.value = value
|
34
|
-
if (format
|
35
|
+
if (format is not None):
|
35
36
|
if ('alignment' in format):
|
36
37
|
cell.alignment = format['alignment']
|
37
38
|
if ('number_format' in format):
|
@@ -40,4 +41,3 @@ class ExcelReporter:
|
|
40
41
|
|
41
42
|
def save(self, name: str):
|
42
43
|
self.wb.save(name)
|
43
|
-
|
@@ -0,0 +1,40 @@
|
|
1
|
+
from ...models.eb_doc import EBModel
|
2
|
+
from ...reporter.excel_reporter.abstract import ExcelReporter
|
3
|
+
|
4
|
+
|
5
|
+
class NvMXdmXlsWriter(ExcelReporter):
|
6
|
+
def __init__(self) -> None:
|
7
|
+
super().__init__()
|
8
|
+
|
9
|
+
def write_nvm_block_descriptors(self, doc: EBModel):
|
10
|
+
sheet = self.wb.create_sheet("NvMBlock", 0)
|
11
|
+
|
12
|
+
title_row = [
|
13
|
+
"BlockId", "Name", "NvMBlockEcucPartitionRef", "NvMRamBlockDataAddress", "NvMRomBlockDataAddress",
|
14
|
+
"NvMBlockManagementType", "NvMNvBlockLength", "NvMNvBlockNum", "NvMSelectBlockForReadAll", "NvMSelectBlockForWriteAll"]
|
15
|
+
self.write_title_row(sheet, title_row)
|
16
|
+
|
17
|
+
row = 2
|
18
|
+
for nvm_block in doc.getNvM().getNvMBlockDescriptorList():
|
19
|
+
self.write_cell(sheet, row, 1, nvm_block.getNvMNvramBlockIdentifier())
|
20
|
+
self.write_cell(sheet, row, 2, nvm_block.getName())
|
21
|
+
self.write_cell(sheet, row, 3, nvm_block.getNvMBlockEcucPartitionRef())
|
22
|
+
self.write_cell(sheet, row, 4, nvm_block.getNvMRamBlockDataAddress())
|
23
|
+
self.write_cell(sheet, row, 5, nvm_block.getNvMRomBlockDataAddress())
|
24
|
+
self.write_cell(sheet, row, 6, nvm_block.getNvMBlockManagementType())
|
25
|
+
self.write_cell(sheet, row, 7, nvm_block.getNvMNvBlockLength())
|
26
|
+
self.write_cell(sheet, row, 8, nvm_block.getNvMNvBlockNum())
|
27
|
+
|
28
|
+
|
29
|
+
row += 1
|
30
|
+
|
31
|
+
self.logger.debug("Write NvM Block <%s>" % nvm_block.getName())
|
32
|
+
|
33
|
+
self.auto_width(sheet)
|
34
|
+
|
35
|
+
def write(self, filename, doc: EBModel, options):
|
36
|
+
self.logger.info("Writing <%s>" % filename)
|
37
|
+
|
38
|
+
self.write_nvm_block_descriptors(doc)
|
39
|
+
|
40
|
+
self.save(filename)
|
@@ -2,6 +2,7 @@ from ...models.rte_xdm import RteBswEventToTaskMapping, RteBswModuleInstance, Rt
|
|
2
2
|
from ...models.eb_doc import EBModel
|
3
3
|
from .abstract import ExcelReporter
|
4
4
|
|
5
|
+
|
5
6
|
class RteXdmXlsWriter(ExcelReporter):
|
6
7
|
def __init__(self) -> None:
|
7
8
|
super().__init__()
|
@@ -45,6 +46,7 @@ class RteXdmXlsWriter(ExcelReporter):
|
|
45
46
|
|
46
47
|
self.save(filename)
|
47
48
|
|
49
|
+
|
48
50
|
class RteRunnableEntityXlsWriter(ExcelReporter):
|
49
51
|
def __init__(self) -> None:
|
50
52
|
super().__init__()
|
@@ -57,7 +59,7 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
|
|
57
59
|
|
58
60
|
row = 2
|
59
61
|
for os_task, mappings in doc.getRte().getMappedEvents().items():
|
60
|
-
for mapping in sorted(mappings, key
|
62
|
+
for mapping in sorted(mappings, key=lambda a: a.getRtePositionInTask()):
|
61
63
|
self.write_cell(sheet, row, 1, os_task)
|
62
64
|
if isinstance(mapping, RteBswEventToTaskMapping):
|
63
65
|
self.logger.debug("Write Mapping %s" % mapping.getName())
|
@@ -68,7 +70,7 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
|
|
68
70
|
self.write_cell(sheet, row, 7, mapping.getRteBswActivationOffset())
|
69
71
|
elif isinstance(mapping, RteEventToTaskMapping):
|
70
72
|
self.logger.debug("Write Mapping %s" % mapping.getName())
|
71
|
-
instance = mapping.getRteSwComponentInstance()
|
73
|
+
instance = mapping.getRteSwComponentInstance()
|
72
74
|
self.write_cell(sheet, row, 2, mapping.getRteEventRef().getShortName())
|
73
75
|
self.write_cell(sheet, row, 5, instance.getRteSoftwareComponentInstanceRef().getValue())
|
74
76
|
self.write_cell(sheet, row, 6, mapping.getRtePositionInTask())
|
@@ -84,4 +86,4 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
|
|
84
86
|
self.logger.info("Writing <%s>" % filename)
|
85
87
|
self.write_mapped_events(doc)
|
86
88
|
|
87
|
-
self.save(filename)
|
89
|
+
self.save(filename)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: py-eb-model
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.6
|
4
4
|
Summary: The parser for EB XDM file
|
5
5
|
Home-page: UNKNOWN
|
6
6
|
Author: melodypapa
|
@@ -34,7 +34,7 @@ And more details can be found at https://packaging.python.org/
|
|
34
34
|
|
35
35
|
# 3. CLI
|
36
36
|
|
37
|
-
## 3.1. os-
|
37
|
+
## 3.1. os-xdm-xlsx
|
38
38
|
|
39
39
|
Extract the Os Task information from os.xdm and then report all to Excel file.
|
40
40
|
|
@@ -60,7 +60,7 @@ os-xdm-xlsx data/Os.xdm data/Os.xlsx
|
|
60
60
|
|
61
61
|

|
62
62
|
|
63
|
-
## 3.2. rte-
|
63
|
+
## 3.2. rte-xdm-xlsx
|
64
64
|
|
65
65
|
Extract the Rte Configuration information from rte.xdm and then report all to Excel file.
|
66
66
|
|
@@ -76,6 +76,16 @@ rte-xdm-xlsx data/Rte.xdm data/Rte.xlsx
|
|
76
76
|
rte-xdm-xlsx -r data/Rte.xdm data/Os.xdm data/Runnable.xlsx
|
77
77
|
```
|
78
78
|
|
79
|
+
# nvm-xdm-xlsx
|
80
|
+
|
81
|
+
Extract the NvM Configuration information from nvm.xdm and then report all to Excel file.
|
82
|
+
|
83
|
+
1. Export the Nvm Configuration information to excel file
|
84
|
+
|
85
|
+
```bash
|
86
|
+
nvm-xdm-xlsx data/NvM.xdm data/NvM.xlsx
|
87
|
+
```
|
88
|
+
|
79
89
|
## 3.3. PrefSystemImporter
|
80
90
|
|
81
91
|
Read the EB preference XDM and generate the ARXML file list into text file or create the AUTOSAR builder project file.
|
@@ -205,3 +215,10 @@ PrefSystemImporter --base-path c:/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rt
|
|
205
215
|
* Rte::getRteBswModuleInstance
|
206
216
|
|
207
217
|
|
218
|
+
**Version 1.1.6**
|
219
|
+
|
220
|
+
1. Add the OsResource support in Os Module:
|
221
|
+
* Os::getOsResourceList
|
222
|
+
* Os::addOsResource
|
223
|
+
2. Read the NvMBlockDescriptor List
|
224
|
+
|
@@ -1,27 +1,31 @@
|
|
1
1
|
eb_model/__init__.py,sha256=oMw5xoAS-lHLxufQSlBIXhGZZMcPmwGFA3PYpTwaQTU,92
|
2
2
|
eb_model/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
eb_model/cli/nvm_xdm_2_xls_cli.py,sha256=9OxWkT7OdL2DZbG8N_2sE3y8T0GWyzpwYKWnpTm8lag,1742
|
3
4
|
eb_model/cli/os_xdm_2_xls_cli.py,sha256=zUnxJ4uHWRSjMmpSK5hXRAzVt-_YGEyiMXrexnJSk6g,1970
|
4
5
|
eb_model/cli/pref_system_importer_cli.py,sha256=Cra-rVpgxruLLyWHRdYAgbwfcHVPV2L8Jk6ck0v4lJU,3361
|
5
6
|
eb_model/cli/rte_xdm_2_xls_cli.py,sha256=83uzE2Vk0h267gWxF9mnWN3Bh69RJpYyKULFXpxTByY,2127
|
6
7
|
eb_model/models/__init__.py,sha256=Jn4oOg6CxbAvULNaVt0obDLGPZC2sLzeo6rQt4eTDQ0,245
|
7
|
-
eb_model/models/abstract.py,sha256=
|
8
|
-
eb_model/models/eb_doc.py,sha256=
|
8
|
+
eb_model/models/abstract.py,sha256=MSG0RYrrVbQtyWDqG1hlfpQa8nlvGdPsnLsBgU2NcxQ,4046
|
9
|
+
eb_model/models/eb_doc.py,sha256=d_vNhWda7ZwpmLPiCmlq316G-C2hvWz5bJBss9P2y_A,2955
|
9
10
|
eb_model/models/eclipse_project.py,sha256=I1y4UUPJQqy8Bh77sJkufzcH9wXMN1Wk82er-m1Sxhc,155
|
10
11
|
eb_model/models/importer_xdm.py,sha256=wUdwZQ-uq75EkhU4nzrYeNR5UphaTJ41MjywOPcCHsE,4246
|
11
|
-
eb_model/models/
|
12
|
+
eb_model/models/nvm_xdm.py,sha256=cFeAblxdSNlGP7yN2cPLMmvvJVMNB0LuYmuM_eRQOyQ,11956
|
13
|
+
eb_model/models/os_xdm.py,sha256=0iQrMshsbibxaTYwhHpbQFP5Xz3VoxV5eWSyd19GGNY,35557
|
12
14
|
eb_model/models/rte_xdm.py,sha256=dEsGhpnaG-VG5QfEPv6hxQdopzwMkHHz8kDHj_7MuYM,21851
|
13
|
-
eb_model/parser/__init__.py,sha256=
|
14
|
-
eb_model/parser/eb_parser.py,sha256=
|
15
|
+
eb_model/parser/__init__.py,sha256=K_sp7EVjS2KoWUCdX_0h2jIY8Gxhwqs6AtRP1Pgj1TU,214
|
16
|
+
eb_model/parser/eb_parser.py,sha256=6zYPYku30JfnLOV75k-MrfLc75sCkKdMwc11runqIbk,8248
|
15
17
|
eb_model/parser/eb_parser_factory.py,sha256=zqsqq52uImU4-WcS5dvHfhM95hiEPAGRtNzVik8i8wc,971
|
16
|
-
eb_model/parser/
|
18
|
+
eb_model/parser/nvm_xdm_parser.py,sha256=UME7IRySnnkKvwHY1jehdraEatWTAxWWykxntWqadUk,2216
|
19
|
+
eb_model/parser/os_xdm_parser.py,sha256=M_77-Gxhe101WXo-97CSTNEa-oJmWjDKYeweuL7Niy0,11083
|
17
20
|
eb_model/parser/pref_xdm_parser.py,sha256=EjfR4vrnjRVLw_7wyPmMYlBj6lPXZbBZMEdWlYPj3uI,1539
|
18
21
|
eb_model/parser/rte_xdm_parser.py,sha256=plUue0c4ejreE9w71_mT0JNzGSClf30cXhfC2NalrII,5471
|
19
|
-
eb_model/reporter/__init__.py,sha256=
|
22
|
+
eb_model/reporter/__init__.py,sha256=p-sMv7gJkxe3u8la09SZJjiWPgGGjZSaX0WoBD-hn-0,77
|
20
23
|
eb_model/reporter/markdown.py,sha256=NhcJOFQ_BVbkgGe66uAT7KUPIchWU4kfVMtMLQtbK-w,1647
|
21
24
|
eb_model/reporter/excel_reporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
eb_model/reporter/excel_reporter/abstract.py,sha256=
|
25
|
+
eb_model/reporter/excel_reporter/abstract.py,sha256=x_jW38GfyMGyHXsYQWRUUyRc6r6ywMo3zYoH_v79jto,1644
|
26
|
+
eb_model/reporter/excel_reporter/nvm_xdm.py,sha256=OM_hKXcuFQyZUnia0kuZ03OSSrOMW0i2vIpUa5LTdEc,1698
|
23
27
|
eb_model/reporter/excel_reporter/os_xdm.py,sha256=MG6-6qi7Dh1XXv4CR2I-iQpOvypso0dlfXt_ZQ3lO7I,6406
|
24
|
-
eb_model/reporter/excel_reporter/rte_xdm.py,sha256=
|
28
|
+
eb_model/reporter/excel_reporter/rte_xdm.py,sha256=IeBAeVJYSSle6sR0K4FiPgQToTziHKjXxr68Er7bXyg,3941
|
25
29
|
eb_model/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
30
|
eb_model/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
31
|
eb_model/tests/models/test_eb_model.py,sha256=3fpIHhzQlf9KZjm4fZxcSTT4Zio6YhTrcn9UBvlhOfo,1632
|
@@ -30,9 +34,9 @@ eb_model/tests/models/test_importer_xdm.py,sha256=F80kO77jeyfCkLPRgRLjEj3UPcrACi
|
|
30
34
|
eb_model/writer/__init__.py,sha256=CXvQAsNV1OvYClkHdKCG7Q300OVBzcl2TmoD68MyQOs,95
|
31
35
|
eb_model/writer/project_writer.py,sha256=9BQU1CJAktVxFvQk89Pj4IbizTJXnlQidt4eX_CIFXU,2800
|
32
36
|
eb_model/writer/text_writer.py,sha256=7d4_PUTJk5Y6S_EQflAH3ACDnUw9VwJzP90GFDh0n0I,991
|
33
|
-
py_eb_model-1.1.
|
34
|
-
py_eb_model-1.1.
|
35
|
-
py_eb_model-1.1.
|
36
|
-
py_eb_model-1.1.
|
37
|
-
py_eb_model-1.1.
|
38
|
-
py_eb_model-1.1.
|
37
|
+
py_eb_model-1.1.6.dist-info/LICENSE,sha256=I52rGS7W1IwAmYCUfqTpDaSHoFAdt7grcNiBhk-Z3eI,1088
|
38
|
+
py_eb_model-1.1.6.dist-info/METADATA,sha256=t0LEDXkC1J778lrXQjCP0jA1UOgdqsReB4lY_AEDXAU,6861
|
39
|
+
py_eb_model-1.1.6.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
40
|
+
py_eb_model-1.1.6.dist-info/entry_points.txt,sha256=N7cHTMb7nGQXu2X5JvJo3JJQdRE11vRMlLyx27uarHg,234
|
41
|
+
py_eb_model-1.1.6.dist-info/top_level.txt,sha256=DGBNh6YW_x4RF_UoLKW3cKqb2SLnmfuEIZlkTewR66A,9
|
42
|
+
py_eb_model-1.1.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|