py-eb-model 1.0.2__py3-none-any.whl → 1.0.3__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/__init__.py +2 -1
- eb_model/cli/pref_system_importer_cli.py +75 -0
- eb_model/models/__init__.py +1 -0
- eb_model/models/eb_doc.py +48 -20
- eb_model/models/importer_xdm.py +45 -0
- eb_model/models/os_xdm.py +25 -1
- eb_model/models/rte_xdm.py +3 -3
- eb_model/parser/__init__.py +2 -0
- eb_model/parser/eb_parser.py +20 -13
- eb_model/parser/os_xdm_parser.py +12 -1
- eb_model/parser/pref_xdm_parser.py +25 -0
- eb_model/tests/models/test_eb_model.py +14 -1
- eb_model/writer/__init__.py +1 -0
- eb_model/writer/text_writer.py +28 -0
- {py_eb_model-1.0.2.dist-info → py_eb_model-1.0.3.dist-info}/METADATA +14 -1
- {py_eb_model-1.0.2.dist-info → py_eb_model-1.0.3.dist-info}/RECORD +20 -15
- {py_eb_model-1.0.2.dist-info → py_eb_model-1.0.3.dist-info}/entry_points.txt +1 -0
- {py_eb_model-1.0.2.dist-info → py_eb_model-1.0.3.dist-info}/LICENSE +0 -0
- {py_eb_model-1.0.2.dist-info → py_eb_model-1.0.3.dist-info}/WHEEL +0 -0
- {py_eb_model-1.0.2.dist-info → py_eb_model-1.0.3.dist-info}/top_level.txt +0 -0
eb_model/__init__.py
CHANGED
@@ -0,0 +1,75 @@
|
|
1
|
+
import argparse
|
2
|
+
import pkg_resources
|
3
|
+
import logging
|
4
|
+
import sys
|
5
|
+
import os.path
|
6
|
+
|
7
|
+
from ..writer import TextPreferenceModelWriter
|
8
|
+
from ..parser import PerfXdmParser
|
9
|
+
from ..models import PreferenceModel
|
10
|
+
|
11
|
+
def main():
|
12
|
+
version = pkg_resources.require("py_eb_model")[0].version
|
13
|
+
|
14
|
+
ap = argparse.ArgumentParser()
|
15
|
+
ap.add_argument("-v", "--verbose", required= False, help = "Print debug information", action = "store_true")
|
16
|
+
ap.add_argument("--file-list", required=False, help = "Generate the file list (Default)", action = "store_true")
|
17
|
+
ap.add_argument("--ab-project", required=False, help = "Generate the AUTOSAR builder project", action = "store_true")
|
18
|
+
ap.add_argument("--base-path", required=False, help="Base Path for EB tresos")
|
19
|
+
ap.add_argument("INPUTS", nargs='+', help = "The path of perf_imp_xxx.xdm.")
|
20
|
+
ap.add_argument("OUTPUT", help = "The path of output 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
|
+
base_path = os.path.dirname(args.OUTPUT)
|
32
|
+
log_file = os.path.join(base_path, 'pref_system_importer.log')
|
33
|
+
|
34
|
+
if os.path.exists(log_file):
|
35
|
+
os.remove(log_file)
|
36
|
+
|
37
|
+
file_handler = logging.FileHandler(log_file)
|
38
|
+
file_handler.setFormatter(formatter)
|
39
|
+
|
40
|
+
logger.setLevel(logging.DEBUG)
|
41
|
+
file_handler.setLevel(logging.DEBUG)
|
42
|
+
|
43
|
+
if args.verbose:
|
44
|
+
stdout_handler.setLevel(logging.DEBUG)
|
45
|
+
else:
|
46
|
+
stdout_handler.setLevel(logging.INFO)
|
47
|
+
|
48
|
+
logger.addHandler(file_handler)
|
49
|
+
logger.addHandler(stdout_handler)
|
50
|
+
|
51
|
+
format = "file_list"
|
52
|
+
if args.ab_project:
|
53
|
+
format = "ab_project"
|
54
|
+
|
55
|
+
try:
|
56
|
+
doc = PreferenceModel.getInstance()
|
57
|
+
|
58
|
+
parser = PerfXdmParser()
|
59
|
+
for file in args.INPUTS:
|
60
|
+
if args.base_path is not None:
|
61
|
+
file_name = os.path.realpath(os.path.join(args.base_path, file))
|
62
|
+
else:
|
63
|
+
file_name = file
|
64
|
+
parser.parse_preference_xdm(file_name, doc)
|
65
|
+
|
66
|
+
if format == "file_list":
|
67
|
+
writer = TextPreferenceModelWriter()
|
68
|
+
writer.writer_import_files(args.OUTPUT, doc.getSystemDescriptionImporter(), {
|
69
|
+
'base_path': args.base_path,
|
70
|
+
'wildcard': True,
|
71
|
+
})
|
72
|
+
|
73
|
+
except Exception as e:
|
74
|
+
logger.error(e)
|
75
|
+
raise e
|
eb_model/models/__init__.py
CHANGED
eb_model/models/eb_doc.py
CHANGED
@@ -1,9 +1,29 @@
|
|
1
|
+
from .importer_xdm import SystemDescriptionImporter
|
1
2
|
from .rte_xdm import Rte
|
2
3
|
from .os_xdm import Os
|
3
4
|
from .abstract import EcucContainer, EcucObject
|
4
5
|
|
6
|
+
class AbstractModel(EcucContainer):
|
7
|
+
def getFullName(self):
|
8
|
+
return self.name
|
9
|
+
|
10
|
+
def clear(self):
|
11
|
+
self.elements = {}
|
12
|
+
|
13
|
+
def find_object(self, referred_name:str, element:EcucContainer) -> EcucObject:
|
14
|
+
name_list = referred_name.split("/")
|
15
|
+
#element = EBModel.getInstance()
|
16
|
+
for name in name_list:
|
17
|
+
if (name == ""):
|
18
|
+
continue
|
19
|
+
element = element.getElement(name)
|
20
|
+
if (element == None):
|
21
|
+
return element
|
22
|
+
# raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
|
23
|
+
return element
|
5
24
|
|
6
|
-
|
25
|
+
|
26
|
+
class EBModel(AbstractModel):
|
7
27
|
__instance = None
|
8
28
|
|
9
29
|
@staticmethod
|
@@ -19,24 +39,9 @@ class EBModel(EcucContainer):
|
|
19
39
|
EcucContainer.__init__(self, None, "")
|
20
40
|
EBModel.__instance = self
|
21
41
|
|
22
|
-
def getFullName(self):
|
23
|
-
return self.name
|
24
|
-
|
25
|
-
def clear(self):
|
26
|
-
self.elements = {}
|
27
|
-
|
28
42
|
def find(self, referred_name: str) -> EcucObject:
|
29
|
-
|
30
|
-
|
31
|
-
for name in name_list:
|
32
|
-
if (name == ""):
|
33
|
-
continue
|
34
|
-
element = element.getElement(name)
|
35
|
-
if (element == None):
|
36
|
-
return element
|
37
|
-
# raise ValueError("The %s of reference <%s> does not exist." % (short_name, referred_name))
|
38
|
-
return element
|
39
|
-
|
43
|
+
return self.find_object(referred_name, EBModel.getInstance())
|
44
|
+
|
40
45
|
def getOs(self) -> Os:
|
41
46
|
container = EcucContainer(self, "Os")
|
42
47
|
os = Os(container)
|
@@ -46,5 +51,28 @@ class EBModel(EcucContainer):
|
|
46
51
|
container = EcucContainer(self, "Rte")
|
47
52
|
rte = Rte(container)
|
48
53
|
return self.find("/Rte/Rte")
|
49
|
-
|
50
|
-
|
54
|
+
|
55
|
+
class PreferenceModel(AbstractModel):
|
56
|
+
__instance = None
|
57
|
+
|
58
|
+
@staticmethod
|
59
|
+
def getInstance():
|
60
|
+
if (PreferenceModel.__instance == None):
|
61
|
+
PreferenceModel()
|
62
|
+
return PreferenceModel.__instance
|
63
|
+
|
64
|
+
def __init__(self):
|
65
|
+
if (PreferenceModel.__instance != None):
|
66
|
+
raise Exception("The PreferenceModel is singleton!")
|
67
|
+
|
68
|
+
EcucContainer.__init__(self, None, "")
|
69
|
+
PreferenceModel.__instance = self
|
70
|
+
|
71
|
+
container = EcucContainer(self, "ImporterExporterAdditions")
|
72
|
+
SystemDescriptionImporter(container, "SystemDescriptionImporters")
|
73
|
+
|
74
|
+
def find(self, referred_name: str) -> EcucObject:
|
75
|
+
return self.find_object(referred_name, PreferenceModel.getInstance())
|
76
|
+
|
77
|
+
def getSystemDescriptionImporter(self) -> SystemDescriptionImporter:
|
78
|
+
return self.find("/ImporterExporterAdditions/SystemDescriptionImporters")
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import glob
|
2
|
+
from typing import List
|
3
|
+
from .abstract import EcucObject
|
4
|
+
import os
|
5
|
+
import re
|
6
|
+
|
7
|
+
class SystemDescriptionImporter(EcucObject):
|
8
|
+
def __init__(self, parent, name):
|
9
|
+
super().__init__(parent, name)
|
10
|
+
|
11
|
+
self.inputFiles = [] # type: List[str]
|
12
|
+
|
13
|
+
def getInputFiles(self):
|
14
|
+
return self.inputFiles
|
15
|
+
|
16
|
+
def addInputFile(self, value):
|
17
|
+
self.inputFiles.append(value)
|
18
|
+
return self
|
19
|
+
|
20
|
+
def parseWildcard(self, filename: str) -> List[str]:
|
21
|
+
#path: str, file_pattern: str
|
22
|
+
file_list = []
|
23
|
+
for file in glob.iglob(filename):
|
24
|
+
print(file)
|
25
|
+
file_list.append(file)
|
26
|
+
return file_list
|
27
|
+
|
28
|
+
def getParsedInputFiles(self, base_path: str, wildcard: bool) -> List[str]:
|
29
|
+
file_list = []
|
30
|
+
for input_file in self.inputFiles:
|
31
|
+
if base_path is not None:
|
32
|
+
if wildcard:
|
33
|
+
m = re.match(r'(.+)\\(\*\.\w+)', input_file)
|
34
|
+
if m:
|
35
|
+
path, file_pattern = m.group(1), m.group(2)
|
36
|
+
#for file_name in self.parseWildcard(os.path.realpath(os.path.join(base_path, path)), file_pattern):
|
37
|
+
for file_name in self.parseWildcard(os.path.realpath(os.path.join(base_path, input_file))):
|
38
|
+
file_list.append(file_name)
|
39
|
+
else:
|
40
|
+
file_list.append(os.path.realpath(os.path.join(base_path, input_file)))
|
41
|
+
else:
|
42
|
+
file_list.append(os.path.realpath(os.path.join(base_path, input_file)))
|
43
|
+
else:
|
44
|
+
file_list.append(input_file)
|
45
|
+
return file_list
|
eb_model/models/os_xdm.py
CHANGED
@@ -565,8 +565,14 @@ class OsTaskAutostart(EcucObject):
|
|
565
565
|
def __init__(self, parent, name) -> None:
|
566
566
|
super().__init__(parent, name)
|
567
567
|
|
568
|
-
self.
|
568
|
+
self.osTaskAppModeRefs = [] # type: List[EcucRefType]
|
569
569
|
|
570
|
+
def getOsTaskAppModeRefList(self):
|
571
|
+
return self.osTaskAppModeRefs
|
572
|
+
|
573
|
+
def addOsTaskAppModeRef(self, value):
|
574
|
+
self.osTaskAppModeRefs.append(value)
|
575
|
+
return self
|
570
576
|
|
571
577
|
class OsTaskResourceLock(EcucObject):
|
572
578
|
def __init__(self, parent, name) -> None:
|
@@ -602,11 +608,13 @@ class OsTask(EcucObject):
|
|
602
608
|
self.osTaskPeriod = 0.0 # type: float
|
603
609
|
self.osTaskPriority = None # type: int
|
604
610
|
self.osTaskSchedule = ""
|
611
|
+
self.OsTaskType = None # type: str
|
605
612
|
self.osStacksize = 0 # type: int
|
606
613
|
self.osMemoryMappingCodeLocationRef = None # type: EcucRefType
|
607
614
|
self.osTaskAccessingApplication = None
|
608
615
|
self.osTaskEventRef = None # type: EcucRefType
|
609
616
|
self.osTaskResourceRefs = [] # type: List[EcucRefType]
|
617
|
+
self.osTaskAutostart = None # type: OsTaskAutostart
|
610
618
|
|
611
619
|
def getOsTaskActivation(self):
|
612
620
|
return self.osTaskActivation
|
@@ -635,6 +643,14 @@ class OsTask(EcucObject):
|
|
635
643
|
def setOsTaskSchedule(self, value):
|
636
644
|
self.osTaskSchedule = value
|
637
645
|
return self
|
646
|
+
|
647
|
+
def getOsTaskType(self):
|
648
|
+
return self.OsTaskType
|
649
|
+
|
650
|
+
def setOsTaskType(self, value):
|
651
|
+
self.OsTaskType = value
|
652
|
+
return self
|
653
|
+
|
638
654
|
|
639
655
|
def getOsStacksize(self) -> int:
|
640
656
|
return self.osStacksize
|
@@ -675,6 +691,14 @@ class OsTask(EcucObject):
|
|
675
691
|
if self.osTaskSchedule == OsTask.FULL:
|
676
692
|
return True
|
677
693
|
return False
|
694
|
+
|
695
|
+
def getOsTaskAutostart(self):
|
696
|
+
return self.osTaskAutostart
|
697
|
+
|
698
|
+
def setOsTaskAutostart(self, value):
|
699
|
+
self.osTaskAutostart = value
|
700
|
+
return self
|
701
|
+
|
678
702
|
|
679
703
|
|
680
704
|
class OsScheduleTableAutostart(EcucContainer):
|
eb_model/models/rte_xdm.py
CHANGED
@@ -321,7 +321,7 @@ class RteSwComponentInstance(AbstractRteInstance):
|
|
321
321
|
def __init__(self, parent, name) -> None:
|
322
322
|
super().__init__(parent, name)
|
323
323
|
|
324
|
-
self.
|
324
|
+
self.mappedToOsApplicationRef = None # type: EcucRefType
|
325
325
|
self.rteSoftwareComponentInstanceRef = None
|
326
326
|
|
327
327
|
self.rteEventToIsrMappings = []
|
@@ -333,10 +333,10 @@ class RteSwComponentInstance(AbstractRteInstance):
|
|
333
333
|
self.rteNvRamAllocations = []
|
334
334
|
|
335
335
|
def getMappedToOsApplicationRef(self):
|
336
|
-
return self.
|
336
|
+
return self.mappedToOsApplicationRef
|
337
337
|
|
338
338
|
def setMappedToOsApplicationRef(self, value):
|
339
|
-
self.
|
339
|
+
self.mappedToOsApplicationRef = value
|
340
340
|
return self
|
341
341
|
|
342
342
|
def getRteSoftwareComponentInstanceRef(self) -> EcucRefType:
|
eb_model/parser/__init__.py
CHANGED
eb_model/parser/eb_parser.py
CHANGED
@@ -5,7 +5,7 @@ import re
|
|
5
5
|
from abc import ABCMeta
|
6
6
|
from typing import List
|
7
7
|
|
8
|
-
from ..models.eb_doc import EBModel
|
8
|
+
from ..models.eb_doc import EBModel, PreferenceModel
|
9
9
|
from ..models.abstract import EcucRefType
|
10
10
|
|
11
11
|
class AbstractEbModelParser(metaclass = ABCMeta):
|
@@ -33,17 +33,17 @@ class AbstractEbModelParser(metaclass = ABCMeta):
|
|
33
33
|
return value
|
34
34
|
|
35
35
|
def _convert_value(self, tag):
|
36
|
-
if
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
36
|
+
if 'type' in tag.attrib:
|
37
|
+
if (tag.attrib['type'] == 'INTEGER'):
|
38
|
+
return int(tag.attrib['value'])
|
39
|
+
elif (tag.attrib['type'] == "FLOAT"):
|
40
|
+
return float(tag.attrib['value'])
|
41
|
+
elif (tag.attrib['type'] == 'BOOLEAN'):
|
42
|
+
if (tag.attrib['value'] == 'true'):
|
43
|
+
return True
|
44
|
+
else:
|
45
|
+
return False
|
46
|
+
return tag.attrib['value']
|
47
47
|
|
48
48
|
def read_value(self, parent: ET.Element, name: str) -> str:
|
49
49
|
tag = parent.find(".//d:var[@name='%s']" % name, self.nsmap)
|
@@ -165,6 +165,9 @@ class AbstractEbModelParser(metaclass = ABCMeta):
|
|
165
165
|
def parse(self, element: ET.Element, doc: EBModel):
|
166
166
|
pass
|
167
167
|
|
168
|
+
def parse_preference(self, element: ET.Element, doc: PreferenceModel):
|
169
|
+
pass
|
170
|
+
|
168
171
|
def load_xdm(self, filename: str) -> ET.Element:
|
169
172
|
self.logger.info("Loading <%s>" % filename)
|
170
173
|
|
@@ -177,4 +180,8 @@ class AbstractEbModelParser(metaclass = ABCMeta):
|
|
177
180
|
|
178
181
|
def parse_xdm(self, filename: str, doc: EBModel):
|
179
182
|
root_tag = self.load_xdm(filename)
|
180
|
-
self.parse(root_tag, doc)
|
183
|
+
self.parse(root_tag, doc)
|
184
|
+
|
185
|
+
def parse_preference_xdm(self, filename: str, doc: EBModel):
|
186
|
+
root_tag = self.load_xdm(filename)
|
187
|
+
self.parse_preference(root_tag, doc)
|
eb_model/parser/os_xdm_parser.py
CHANGED
@@ -1,6 +1,6 @@
|
|
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, OsScheduleTable, OsScheduleTableEventSetting, OsScheduleTableExpiryPoint, OsScheduleTableTaskActivation, OsScheduleTblAdjustableExpPoint
|
3
|
+
from ..models.os_xdm import Os, OsAlarm, OsAlarmActivateTask, OsAlarmCallback, OsAlarmIncrementCounter, OsAlarmSetEvent, OsCounter, OsScheduleTable, OsScheduleTableEventSetting, OsScheduleTableExpiryPoint, OsScheduleTableTaskActivation, OsScheduleTblAdjustableExpPoint, OsTaskAutostart
|
4
4
|
from ..models.os_xdm import OsTask, OsIsr, OsApplication
|
5
5
|
from .eb_parser import AbstractEbModelParser
|
6
6
|
|
@@ -21,17 +21,28 @@ class OsXdmParser(AbstractEbModelParser):
|
|
21
21
|
self.read_os_counters(element, os)
|
22
22
|
self.read_os_applications(element, os)
|
23
23
|
|
24
|
+
def read_os_task_autostart(self, element: ET.Element, os_task: OsTask):
|
25
|
+
ctr_tag = self.find_ctr_tag(element, "OsTaskAutostart")
|
26
|
+
if ctr_tag is not None:
|
27
|
+
autostart = OsTaskAutostart(os_task, ctr_tag.attrib["name"])
|
28
|
+
for app_mode_ref in self.read_ref_value_list(ctr_tag, "OsTaskAppModeRef"):
|
29
|
+
autostart.addOsTaskAppModeRef(app_mode_ref)
|
30
|
+
os_task.setOsTaskAutostart(autostart)
|
31
|
+
|
24
32
|
def read_os_tasks(self, element: ET.Element, os: Os):
|
25
33
|
for ctr_tag in self.find_ctr_tag_list(element, "OsTask"):
|
26
34
|
os_task = OsTask(os, ctr_tag.attrib["name"])
|
27
35
|
os_task.setOsTaskPriority(int(self.read_value(ctr_tag, "OsTaskPriority"))) \
|
28
36
|
.setOsTaskActivation(self.read_value(ctr_tag, "OsTaskActivation")) \
|
29
37
|
.setOsTaskSchedule(self.read_value(ctr_tag, "OsTaskSchedule")) \
|
38
|
+
.setOsTaskType(self.read_value(ctr_tag, "OsTaskType")) \
|
30
39
|
.setOsStacksize(int(self.read_optional_value(ctr_tag, "OsStacksize", 0)))
|
31
40
|
|
32
41
|
for resource_ref in self.read_ref_value_list(ctr_tag, "OsTaskResourceRef"):
|
33
42
|
os_task.addOsTaskResourceRef(resource_ref)
|
34
43
|
|
44
|
+
self.read_os_task_autostart(ctr_tag, os_task)
|
45
|
+
|
35
46
|
self.logger.debug("Read OsTask <%s>" % os_task.getName())
|
36
47
|
os.addOsTask(os_task)
|
37
48
|
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import xml.etree.ElementTree as ET
|
2
|
+
import logging
|
3
|
+
from ..models.eb_doc import PreferenceModel
|
4
|
+
from ..models.importer_xdm import SystemDescriptionImporter
|
5
|
+
from . import AbstractEbModelParser
|
6
|
+
|
7
|
+
class PerfXdmParser(AbstractEbModelParser):
|
8
|
+
def __init__(self, ) -> None:
|
9
|
+
super().__init__()
|
10
|
+
|
11
|
+
self.logger = logging.getLogger()
|
12
|
+
|
13
|
+
def parse_input_files(self, element: ET.Element, importer: SystemDescriptionImporter):
|
14
|
+
for ctr_tag in self.find_ctr_tag_list(element, "InputFiles"):
|
15
|
+
file_name = self.read_value(ctr_tag, "FileName")
|
16
|
+
self.logger.debug("Add the file <%s>" % file_name)
|
17
|
+
importer.addInputFile(file_name)
|
18
|
+
|
19
|
+
def parse_preference(self, element: ET.Element, doc: PreferenceModel):
|
20
|
+
importer = doc.getSystemDescriptionImporter()
|
21
|
+
|
22
|
+
for ctr_tag in self.find_ctr_tag_list(element, "SystemDescriptionImporters"):
|
23
|
+
self.logger.info("Parse SystemDescriptionImporters: <%s>" % ctr_tag.attrib["name"])
|
24
|
+
self.parse_input_files(ctr_tag, importer)
|
25
|
+
#importer.addInputFile()
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import pytest
|
2
|
-
from ...models.eb_doc import EBModel
|
2
|
+
from ...models.eb_doc import EBModel, PreferenceModel
|
3
3
|
|
4
4
|
class TestEBModel:
|
5
5
|
|
@@ -28,3 +28,16 @@ class TestEBModel:
|
|
28
28
|
document = EBModel.getInstance()
|
29
29
|
rte = document.getRte()
|
30
30
|
assert (rte.getFullName() == "/Rte/Rte")
|
31
|
+
|
32
|
+
class TestPreferenceModel:
|
33
|
+
|
34
|
+
def test_mode_get_system_description_importer(self):
|
35
|
+
document = PreferenceModel.getInstance()
|
36
|
+
importer = document.getSystemDescriptionImporter()
|
37
|
+
assert (importer.getFullName() == "/ImporterExporterAdditions/SystemDescriptionImporters")
|
38
|
+
|
39
|
+
importer = document.find("/ImporterExporterAdditions/SystemDescriptionImporters")
|
40
|
+
assert (importer.getFullName() == "/ImporterExporterAdditions/SystemDescriptionImporters")
|
41
|
+
|
42
|
+
importer = document.getSystemDescriptionImporter()
|
43
|
+
assert (importer.getFullName() == "/ImporterExporterAdditions/SystemDescriptionImporters")
|
@@ -0,0 +1 @@
|
|
1
|
+
from .text_writer import TextPreferenceModelWriter
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import logging
|
2
|
+
from typing import List
|
3
|
+
|
4
|
+
from ..models.eb_doc import SystemDescriptionImporter
|
5
|
+
|
6
|
+
class TextWriter:
|
7
|
+
def __init__(self):
|
8
|
+
self.logger = logging.getLogger()
|
9
|
+
|
10
|
+
def write(self, filename: str, lines: List[str]):
|
11
|
+
with open(filename, "w") as f_out:
|
12
|
+
for line in lines:
|
13
|
+
f_out.write("%s\n" % line)
|
14
|
+
|
15
|
+
class TextPreferenceModelWriter(TextWriter):
|
16
|
+
def __init__(self):
|
17
|
+
super().__init__()
|
18
|
+
|
19
|
+
def writer_import_files(self, filename: str, importer: SystemDescriptionImporter, param = {'base_path': None}):
|
20
|
+
self.logger.info("Generate import files list <%s>" % filename)
|
21
|
+
lines = []
|
22
|
+
for file in sorted(importer.getParsedInputFiles(param['base_path'], param['wildcard'])):
|
23
|
+
if file in lines:
|
24
|
+
self.logger.warning("file <%s> is duplicated." % file)
|
25
|
+
else:
|
26
|
+
lines.append(file)
|
27
|
+
|
28
|
+
self.write(filename, lines)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: py-eb-model
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.3
|
4
4
|
Summary: The parser for EB XDM file
|
5
5
|
Home-page: UNKNOWN
|
6
6
|
Author: melodypapa
|
@@ -76,6 +76,13 @@ 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
|
+
## 3.3. pref-system-importer
|
80
|
+
|
81
|
+
Read the EB preference XDM and generate the file list into text file.
|
82
|
+
|
83
|
+
```bash
|
84
|
+
pref-system-importer .prefs/pref_imp_exp_Imp_System.xdm data/output.lst --base-path /c/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte
|
85
|
+
```
|
79
86
|
|
80
87
|
# 4. Change History
|
81
88
|
|
@@ -95,3 +102,9 @@ rte-xdm-xlsx -r data/Rte.xdm data/Os.xdm data/Runnable.xlsx
|
|
95
102
|
|
96
103
|
1. Fix the setOsAlarmCallbackName bug
|
97
104
|
|
105
|
+
**Version 1.0.3**
|
106
|
+
|
107
|
+
1. Generate the System import file list based on EB preference Xdm.
|
108
|
+
2. Add the support to read OsTaskAutostart element.
|
109
|
+
3. Add the support to read OsTaskType element.
|
110
|
+
|
@@ -1,16 +1,19 @@
|
|
1
|
-
eb_model/__init__.py,sha256=
|
1
|
+
eb_model/__init__.py,sha256=oMw5xoAS-lHLxufQSlBIXhGZZMcPmwGFA3PYpTwaQTU,92
|
2
2
|
eb_model/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
eb_model/cli/os_xdm_2_xls_cli.py,sha256=lTIYNVDDMIKu6sosjV8I3pLQxD-I11cKjUDXTyKDrLE,1643
|
4
|
+
eb_model/cli/pref_system_importer_cli.py,sha256=Disewp4_4Z1xHb_4HqwRj16XVQmAP21MbeVsSuR0uvk,2518
|
4
5
|
eb_model/cli/rte_xdm_2_xls_cli.py,sha256=83uzE2Vk0h267gWxF9mnWN3Bh69RJpYyKULFXpxTByY,2127
|
5
|
-
eb_model/models/__init__.py,sha256=
|
6
|
+
eb_model/models/__init__.py,sha256=7_WxCwRdVavLbPzepHWNar3O-rOxhLwmVYWd2pqm2kI,124
|
6
7
|
eb_model/models/abstract.py,sha256=4jy328yy2sedIHNwfxjzW3CnVsnTCoskatT8JXjv-rE,2402
|
7
|
-
eb_model/models/eb_doc.py,sha256=
|
8
|
-
eb_model/models/
|
9
|
-
eb_model/models/
|
10
|
-
eb_model/
|
11
|
-
eb_model/parser/
|
8
|
+
eb_model/models/eb_doc.py,sha256=hPsGdNHlm3vl-ys3B3NGrlJRrWAWPhRvFJrN3fLQTW8,2569
|
9
|
+
eb_model/models/importer_xdm.py,sha256=Fnrx-TWKVzJ-kJQr_5DHJhPtEVJ7Ztu5oQZS6_y-UnY,1712
|
10
|
+
eb_model/models/os_xdm.py,sha256=HrAhFiPkbkE_YBihG2S5lQTTU9IQla7O15E8guKLDXg,32439
|
11
|
+
eb_model/models/rte_xdm.py,sha256=73hBsQ7pUePA9ewFI2d50iImI_FA-jzFQFlnp0K6WTs,19407
|
12
|
+
eb_model/parser/__init__.py,sha256=7VOmPr4dng_TrOyDZFu2_s3r0BJZQGiOUxALMY8EnqI,170
|
13
|
+
eb_model/parser/eb_parser.py,sha256=XAJZ_agd54C5R4UAAlHfwaVWYFQRSXuTjM_ijcpVU4E,7375
|
12
14
|
eb_model/parser/eb_parser_factory.py,sha256=zqsqq52uImU4-WcS5dvHfhM95hiEPAGRtNzVik8i8wc,971
|
13
|
-
eb_model/parser/os_xdm_parser.py,sha256=
|
15
|
+
eb_model/parser/os_xdm_parser.py,sha256=xnA1C91Jpd2MGFvdV4Xu03vZLh6IgsUCarEVRmh8_mQ,9635
|
16
|
+
eb_model/parser/pref_xdm_parser.py,sha256=khzgD_igMauH7H3OXdFmFc-HspLq8U51wC6CAs6jJHc,1097
|
14
17
|
eb_model/parser/rte_xdm_parser.py,sha256=ywAJiBTgI2WifB-rSdoh6PWvRZ4hSSdy4hmdilSTfU0,4027
|
15
18
|
eb_model/reporter/__init__.py,sha256=H8D_23UwJi1Ph6yjBfZhxWVbu9ci5_O4471gqXGiZCM,36
|
16
19
|
eb_model/reporter/markdown.py,sha256=NhcJOFQ_BVbkgGe66uAT7KUPIchWU4kfVMtMLQtbK-w,1647
|
@@ -20,8 +23,10 @@ eb_model/reporter/excel_reporter/os_xdm.py,sha256=n1e-tU04s0oh3v31OUKgkIju6BUAtC
|
|
20
23
|
eb_model/reporter/excel_reporter/rte_xdm.py,sha256=JweusBQJSg1_jaFbQV3sJnVMALMj3VuEkVf15Pw-Ir4,3936
|
21
24
|
eb_model/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
25
|
eb_model/tests/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
|
-
eb_model/tests/models/test_eb_model.py,sha256=
|
26
|
+
eb_model/tests/models/test_eb_model.py,sha256=3fpIHhzQlf9KZjm4fZxcSTT4Zio6YhTrcn9UBvlhOfo,1632
|
24
27
|
eb_model/tests/models/test_ecuc_container.py,sha256=lZmtXwPMz9T52WFduTgFy16fO2agjSW-Rl2cVypM86s,722
|
28
|
+
eb_model/writer/__init__.py,sha256=SE-Kj41HUkVPor7jpNTL3JVPe_9ycmKFWjTFo2VTkTo,50
|
29
|
+
eb_model/writer/text_writer.py,sha256=ZSQ6xi-ke41rrchK1474cRNdHRoyj_gucp3GnvZ-ERU,971
|
25
30
|
py_eb_model/__init__.py,sha256=u3VUin2V_1eExLd9NIpw_LGHIAwaG2vEoyhssZurrvM,69
|
26
31
|
py_eb_model/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
32
|
py_eb_model/cli/os_xdm_2_xls_cli.py,sha256=BzeFhyWHbG57qieDNESaXYggszHSy17uwCeXvEfrbCQ,1629
|
@@ -37,9 +42,9 @@ py_eb_model/reporter/markdown.py,sha256=NhcJOFQ_BVbkgGe66uAT7KUPIchWU4kfVMtMLQtb
|
|
37
42
|
py_eb_model/reporter/excel_reporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
43
|
py_eb_model/reporter/excel_reporter/abstract.py,sha256=BOuLhWwwTwqBzErtmwPrelB1iByMfZP9haFmg9ayFQw,1488
|
39
44
|
py_eb_model/reporter/excel_reporter/os_xdm.py,sha256=WGMxK0PYxi9J5fUZ-EeiiM8NBpIg2WyxRsrN-gK37YE,1589
|
40
|
-
py_eb_model-1.0.
|
41
|
-
py_eb_model-1.0.
|
42
|
-
py_eb_model-1.0.
|
43
|
-
py_eb_model-1.0.
|
44
|
-
py_eb_model-1.0.
|
45
|
-
py_eb_model-1.0.
|
45
|
+
py_eb_model-1.0.3.dist-info/LICENSE,sha256=I52rGS7W1IwAmYCUfqTpDaSHoFAdt7grcNiBhk-Z3eI,1088
|
46
|
+
py_eb_model-1.0.3.dist-info/METADATA,sha256=P8PNKJ-FPWiO9QHD-XRWDNyhOmA-DfPO-G5uxkFfPrQ,2908
|
47
|
+
py_eb_model-1.0.3.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
48
|
+
py_eb_model-1.0.3.dist-info/entry_points.txt,sha256=Kyh2T53j1CnqayX2ZZa7---hLeXK7LidefeO1hJ_EXg,185
|
49
|
+
py_eb_model-1.0.3.dist-info/top_level.txt,sha256=DGBNh6YW_x4RF_UoLKW3cKqb2SLnmfuEIZlkTewR66A,9
|
50
|
+
py_eb_model-1.0.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|