py-eb-model 1.0.0__py3-none-any.whl → 1.0.1__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/os_xdm_2_xls_cli.py +3 -2
- eb_model/cli/rte_xdm_2_xls_cli.py +68 -0
- eb_model/models/abstract.py +29 -11
- eb_model/models/eb_doc.py +7 -9
- eb_model/models/os_xdm.py +668 -96
- eb_model/models/rte_xdm.py +556 -0
- eb_model/parser/eb_parser.py +63 -30
- eb_model/parser/eb_parser_factory.py +29 -0
- eb_model/parser/os_xdm_parser.py +126 -27
- eb_model/parser/rte_xdm_parser.py +64 -0
- eb_model/reporter/excel_reporter/abstract.py +11 -11
- eb_model/reporter/excel_reporter/os_xdm.py +84 -2
- eb_model/reporter/excel_reporter/rte_xdm.py +87 -0
- eb_model/tests/models/test_eb_model.py +5 -0
- py_eb_model-1.0.1.dist-info/METADATA +94 -0
- {py_eb_model-1.0.0.dist-info → py_eb_model-1.0.1.dist-info}/RECORD +20 -15
- {py_eb_model-1.0.0.dist-info → py_eb_model-1.0.1.dist-info}/entry_points.txt +1 -0
- py_eb_model-1.0.0.dist-info/METADATA +0 -16
- {py_eb_model-1.0.0.dist-info → py_eb_model-1.0.1.dist-info}/LICENSE +0 -0
- {py_eb_model-1.0.0.dist-info → py_eb_model-1.0.1.dist-info}/WHEEL +0 -0
- {py_eb_model-1.0.0.dist-info → py_eb_model-1.0.1.dist-info}/top_level.txt +0 -0
eb_model/cli/os_xdm_2_xls_cli.py
CHANGED
@@ -48,10 +48,11 @@ def main():
|
|
48
48
|
|
49
49
|
try:
|
50
50
|
doc = EBModel.getInstance()
|
51
|
+
|
51
52
|
parser = OsXdmParser()
|
52
|
-
|
53
|
+
parser.parse_xdm(args.INPUT, doc)
|
53
54
|
|
54
|
-
|
55
|
+
writer = OsXdmXlsWriter()
|
55
56
|
writer.write(args.OUTPUT, doc)
|
56
57
|
|
57
58
|
except Exception as e:
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import argparse
|
2
|
+
import pkg_resources
|
3
|
+
import logging
|
4
|
+
import sys
|
5
|
+
import os.path
|
6
|
+
|
7
|
+
from eb_model.parser.eb_parser_factory import EbParserFactory
|
8
|
+
|
9
|
+
from ..reporter.excel_reporter.rte_xdm import RteRunnableEntityXlsWriter, RteXdmXlsWriter
|
10
|
+
from ..parser.rte_xdm_parser import RteXdmParser
|
11
|
+
from ..models import EBModel
|
12
|
+
|
13
|
+
def main():
|
14
|
+
version = pkg_resources.require("py_eb_model")[0].version
|
15
|
+
|
16
|
+
ap = argparse.ArgumentParser()
|
17
|
+
ap.add_argument("-v", "--verbose", required= False, help= "Print debug information", action= "store_true")
|
18
|
+
ap.add_argument("-r", "--runnable", required= False, help= "Export the runnable entities", action= "store_true")
|
19
|
+
ap.add_argument("INPUT", help = "The path of xdm file.", nargs='+')
|
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] [%(asctime)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, 'rte_xdm_2_xls.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
|
+
|
46
|
+
else:
|
47
|
+
stdout_handler.setLevel(logging.INFO)
|
48
|
+
|
49
|
+
logger.addHandler(file_handler)
|
50
|
+
logger.addHandler(stdout_handler)
|
51
|
+
|
52
|
+
try:
|
53
|
+
doc = EBModel.getInstance()
|
54
|
+
|
55
|
+
for input_file in args.INPUT:
|
56
|
+
parser = EbParserFactory.create(input_file)
|
57
|
+
parser.parse_xdm(input_file, doc)
|
58
|
+
|
59
|
+
if args.runnable:
|
60
|
+
writer = RteRunnableEntityXlsWriter()
|
61
|
+
writer.write(args.OUTPUT, doc)
|
62
|
+
else:
|
63
|
+
writer = RteXdmXlsWriter()
|
64
|
+
writer.write(args.OUTPUT, doc)
|
65
|
+
|
66
|
+
except Exception as e:
|
67
|
+
logger.error(e)
|
68
|
+
raise e
|
eb_model/models/abstract.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
from abc import ABCMeta
|
2
2
|
from typing import Dict, List
|
3
|
+
import re
|
3
4
|
|
4
5
|
|
5
6
|
class EcucObject(metaclass=ABCMeta):
|
@@ -7,29 +8,28 @@ class EcucObject(metaclass=ABCMeta):
|
|
7
8
|
if type(self) == EcucObject:
|
8
9
|
raise ValueError("Abstract EcucObject cannot be initialized.")
|
9
10
|
|
10
|
-
self.
|
11
|
-
self.
|
11
|
+
self.name = name
|
12
|
+
self.parent = parent # type: EcucObject
|
12
13
|
|
13
14
|
if isinstance(parent, EcucContainer):
|
14
15
|
parent.addElement(self)
|
15
16
|
|
16
17
|
def getName(self):
|
17
|
-
return self.
|
18
|
+
return self.name
|
18
19
|
|
19
20
|
def setName(self, value):
|
20
|
-
self.
|
21
|
+
self.name = value
|
21
22
|
return self
|
22
23
|
|
23
24
|
def getParent(self):
|
24
|
-
return self.
|
25
|
+
return self.parent
|
25
26
|
|
26
27
|
def setParent(self, value):
|
27
|
-
self.
|
28
|
+
self.parent = value
|
28
29
|
return self
|
29
30
|
|
30
31
|
def getFullName(self) -> str:
|
31
|
-
return self.
|
32
|
-
|
32
|
+
return self.parent.getFullName() + "/" + self.name
|
33
33
|
|
34
34
|
class EcucContainer(EcucObject):
|
35
35
|
def __init__(self, parent, name) -> None:
|
@@ -43,7 +43,7 @@ class EcucContainer(EcucObject):
|
|
43
43
|
|
44
44
|
def addElement(self, object: EcucObject):
|
45
45
|
if object.getName() not in self.elements:
|
46
|
-
object.
|
46
|
+
object.parent = self
|
47
47
|
self.elements[object.getName()] = object
|
48
48
|
|
49
49
|
return self
|
@@ -62,5 +62,23 @@ class EcucContainer(EcucObject):
|
|
62
62
|
return self.elements[name]
|
63
63
|
|
64
64
|
class EcucRefType:
|
65
|
-
def __init__(self) -> None:
|
66
|
-
self.
|
65
|
+
def __init__(self, value: str) -> None:
|
66
|
+
self.value = value
|
67
|
+
|
68
|
+
def getValue(self) -> str:
|
69
|
+
return self.value
|
70
|
+
|
71
|
+
def setValue(self, value: str):
|
72
|
+
self.value = value
|
73
|
+
return self
|
74
|
+
|
75
|
+
def __str__(self) -> str:
|
76
|
+
return self.value
|
77
|
+
|
78
|
+
def getShortName(self) -> str:
|
79
|
+
if self.value is None:
|
80
|
+
raise ValueError("Invalid value of EcucRefType")
|
81
|
+
m = re.match(r'\/[\w\/]+\/(\w+)', self.value)
|
82
|
+
if m:
|
83
|
+
return m.group(1)
|
84
|
+
return self.value
|
eb_model/models/eb_doc.py
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
from typing import List
|
3
|
-
|
1
|
+
from .rte_xdm import Rte
|
4
2
|
from .os_xdm import Os
|
5
3
|
from .abstract import EcucContainer, EcucObject
|
6
4
|
|
@@ -22,7 +20,7 @@ class EBModel(EcucContainer):
|
|
22
20
|
EBModel.__instance = self
|
23
21
|
|
24
22
|
def getFullName(self):
|
25
|
-
return self.
|
23
|
+
return self.name
|
26
24
|
|
27
25
|
def clear(self):
|
28
26
|
self.elements = {}
|
@@ -43,10 +41,10 @@ class EBModel(EcucContainer):
|
|
43
41
|
container = EcucContainer(self, "Os")
|
44
42
|
os = Os(container)
|
45
43
|
return self.find("/Os/Os")
|
46
|
-
|
47
|
-
|
48
44
|
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
def getRte(self) -> Rte:
|
46
|
+
container = EcucContainer(self, "Rte")
|
47
|
+
rte = Rte(container)
|
48
|
+
return self.find("/Rte/Rte")
|
52
49
|
|
50
|
+
|