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.
@@ -48,10 +48,11 @@ def main():
48
48
 
49
49
  try:
50
50
  doc = EBModel.getInstance()
51
+
51
52
  parser = OsXdmParser()
52
- writer = OsXdmXlsWriter()
53
+ parser.parse_xdm(args.INPUT, doc)
53
54
 
54
- parser.parse(args.INPUT, doc)
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
@@ -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.Name = name
11
- self.Parent = parent # type: EcucObject
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.Name
18
+ return self.name
18
19
 
19
20
  def setName(self, value):
20
- self.Name = value
21
+ self.name = value
21
22
  return self
22
23
 
23
24
  def getParent(self):
24
- return self.Parent
25
+ return self.parent
25
26
 
26
27
  def setParent(self, value):
27
- self.Parent = value
28
+ self.parent = value
28
29
  return self
29
30
 
30
31
  def getFullName(self) -> str:
31
- return self.Parent.getFullName() + "/" + self.Name
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.Parent = self
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.link = ""
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.Name
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
+