odxtools 8.0.3__py3-none-any.whl → 8.0.5__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.
odxtools/database.py CHANGED
@@ -1,9 +1,10 @@
1
1
  # SPDX-License-Identifier: MIT
2
2
  from itertools import chain
3
3
  from pathlib import Path
4
- from typing import IO, Any, Dict, List, Optional, OrderedDict
4
+ from typing import IO, Any, Dict, List, Optional, OrderedDict, Union
5
5
  from xml.etree import ElementTree
6
6
  from zipfile import ZipFile
7
+ from os import PathLike
7
8
 
8
9
  from packaging.version import Version
9
10
 
@@ -27,10 +28,7 @@ class Database:
27
28
  into a single PDX file.
28
29
  """
29
30
 
30
- def __init__(self,
31
- *,
32
- pdx_zip: Optional[ZipFile] = None,
33
- odx_d_file_name: Optional[str] = None) -> None:
31
+ def __init__(self) -> None:
34
32
  self.model_version: Optional[Version] = None
35
33
  self.auxiliary_files: OrderedDict[str, IO[bytes]] = OrderedDict()
36
34
 
@@ -39,9 +37,14 @@ class Database:
39
37
  self._comparam_subsets = NamedItemList[ComparamSubset]()
40
38
  self._comparam_specs = NamedItemList[ComparamSpec]()
41
39
 
42
- def add_pdx_file(self, pdx_file_name: str) -> None:
43
- pdx_zip = ZipFile(pdx_file_name)
44
-
40
+ def add_pdx_file(self, pdx_file: Union[str, "PathLike[Any]", IO[bytes], ZipFile]) -> None:
41
+ """Add PDX file to database.
42
+ Either pass the path to the file, an IO with the file content or a ZipFile object.
43
+ """
44
+ if isinstance(pdx_file, ZipFile):
45
+ pdx_zip = pdx_file
46
+ else:
47
+ pdx_zip = ZipFile(pdx_file)
45
48
  for zip_member in pdx_zip.namelist():
46
49
  # The name of ODX files can end with .odx, .odx-d,
47
50
  # .odx-c, .odx-cs, .odx-e, .odx-f, .odx-fd, .odx-m,
@@ -54,16 +57,16 @@ class Database:
54
57
  elif p.name.lower() != "index.xml":
55
58
  self.add_auxiliary_file(zip_member, pdx_zip.open(zip_member))
56
59
 
57
- def add_odx_file(self, odx_file_name: str) -> None:
60
+ def add_odx_file(self, odx_file_name: Union[str, "PathLike[Any]"]) -> None:
58
61
  self._process_xml_tree(ElementTree.parse(odx_file_name).getroot())
59
62
 
60
63
  def add_auxiliary_file(self,
61
- aux_file_name: str,
64
+ aux_file_name: Union[str, "PathLike[Any]"],
62
65
  aux_file_obj: Optional[IO[bytes]] = None) -> None:
63
66
  if aux_file_obj is None:
64
67
  aux_file_obj = open(aux_file_name, "rb")
65
68
 
66
- self.auxiliary_files[aux_file_name] = aux_file_obj
69
+ self.auxiliary_files[str(aux_file_name)] = aux_file_obj
67
70
 
68
71
  def _process_xml_tree(self, root: ElementTree.Element) -> None:
69
72
  dlcs: List[DiagLayerContainer] = []
odxtools/multiplexer.py CHANGED
@@ -96,15 +96,22 @@ class Multiplexer(ComplexDop):
96
96
  f"(case_name, content_value) tuple instead of as '{physical_value!r}'")
97
97
 
98
98
  mux_case: Union[MultiplexerCase, MultiplexerDefaultCase]
99
+ applicable_cases: List[Union[MultiplexerCase, MultiplexerDefaultCase]]
100
+
99
101
  if isinstance(case_spec, str):
100
102
  applicable_cases = [x for x in self.cases if x.short_name == case_spec]
103
+ if not applicable_cases and self.default_case:
104
+ applicable_cases.append(self.default_case)
101
105
  if len(applicable_cases) == 0:
102
106
  raise EncodeError(
103
107
  f"Multiplexer {self.short_name} does not know any case called {case_spec}")
104
108
 
105
109
  odxassert(len(applicable_cases) == 1)
106
110
  mux_case = applicable_cases[0]
107
- key_value, _ = self._get_case_limits(mux_case)
111
+ if isinstance(mux_case, MultiplexerCase):
112
+ key_value, _ = self._get_case_limits(mux_case)
113
+ else:
114
+ key_value = 0
108
115
  elif isinstance(case_spec, int):
109
116
  applicable_cases = []
110
117
  for x in self.cases:
odxtools/version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '8.0.3'
16
- __version_tuple__ = version_tuple = (8, 0, 3)
15
+ __version__ = version = '8.0.5'
16
+ __version_tuple__ = version_tuple = (8, 0, 5)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odxtools
3
- Version: 8.0.3
3
+ Version: 8.0.5
4
4
  Summary: Utilities to work with the ODX standard for automotive diagnostics
5
5
  Author-email: Katrin Bauer <katrin.bauer@mbition.io>, Andreas Lauser <andreas.lauser@mbition.io>, Ayoub Kaanich <kayoub5@live.com>
6
6
  Maintainer-email: Andreas Lauser <andreas.lauser@mbition.io>, Ayoub Kaanich <kayoub5@live.com>
@@ -19,7 +19,7 @@ odxtools/complexdop.py,sha256=AHkHMf_IEWfy-_zSiCuZXmdTNCXiCOpg5GRZ5uMVV5A,280
19
19
  odxtools/createanycomparam.py,sha256=RP0XA2Ut4GL2NWy05RvKBrTnpbvvCG2XuNL8OO-9rbI,617
20
20
  odxtools/createanydiagcodedtype.py,sha256=0DVmMj4UCDYIg0zu9pgTplyhHmRedz1KJcchq1uKMjg,1216
21
21
  odxtools/createecuvariantpatterns.py,sha256=FXHLGR4M791MRkpU2_keck88hoMYkuyPiCUxuGbUasQ,559
22
- odxtools/database.py,sha256=SKLWsUtNR5Ai81uYxBVOgz7Na91m6rKzC7WBHL15u40,8612
22
+ odxtools/database.py,sha256=FlyIkTPGsJoVceJco4c_GBlMbV5YdM5nokfVVTia3vo,8832
23
23
  odxtools/dataobjectproperty.py,sha256=R5sOMIejzcTB-CXTRrL2dWnFwR08eInF531s3l9BQcI,5888
24
24
  odxtools/decodestate.py,sha256=jJxLUzUYZ0C4t18FhJzo2iRTP8DF7BzrWLtRTTlLsJI,4885
25
25
  odxtools/description.py,sha256=UoACftC_n7fQ1n9WDwCzizStMH0HCO2Qv0YLRaSjEgs,1484
@@ -58,7 +58,7 @@ odxtools/matchingparameter.py,sha256=2cqaxFCZ28GvvUKCIM-jas3ae4eYGbULbkBlb3aH5RY
58
58
  odxtools/message.py,sha256=07GekN1MbYXm7HaUITDKTj2lBmGK-LB9W8gtBmfAOew,1057
59
59
  odxtools/minmaxlengthtype.py,sha256=eF78Zb77f6Q6-JXdP3AjqmqNWo4KhGWb-_PVHT7Exmg,8906
60
60
  odxtools/modification.py,sha256=oyyFsYHixy6XHOdqqTCx3IIkTAKlSN9wxBpNpvhUaJA,838
61
- odxtools/multiplexer.py,sha256=NW3vjajt5LleDY_rYWCzOkPLF1xSIxutyUR4uanSwLg,9935
61
+ odxtools/multiplexer.py,sha256=0xUdNSPSJuOzwnh6vyZyp8ycYKfg570R9kpHHoACrEE,10239
62
62
  odxtools/multiplexercase.py,sha256=ObUQIf41UM3tQuECwPLks2Iff_FbN7A-W4Vh6zxSKNs,3177
63
63
  odxtools/multiplexerdefaultcase.py,sha256=u3YxZZawhXTOdrC5ltt1YNNaDMGrbL9qsz6PTKrPdSM,2104
64
64
  odxtools/multiplexerswitchkey.py,sha256=fnCpPcg47JQZQsrqS2RAa_O-JrfUb0pvhKv8hhs1RXQ,1551
@@ -102,7 +102,7 @@ odxtools/unitgroup.py,sha256=_WNpnYFmkiHQnOY8XhIviiQLXziY3kplH--7ufAWXyI,2067
102
102
  odxtools/unitspec.py,sha256=bc3B6ysTXSxpNWyQ6cQVJgIGyxmeqRTeshc3bdym1iA,2948
103
103
  odxtools/utils.py,sha256=PJFXkG74BzoheurrDYOwHZ6EuIcr1sdxf1tQGk6zSgs,1122
104
104
  odxtools/variablegroup.py,sha256=--5sMDOMUg4I3hFyoVOFcGCTOrctrrMADdmH3Mn4wHk,848
105
- odxtools/version.py,sha256=i1dN-tmJ6MhPisrh_hk8T4DY-60YyopdD6wLk5pZcfk,411
105
+ odxtools/version.py,sha256=FuDHlM0820mCxDF0l8iRRVBUG8T6ZmD0Oxf1Zetwp8U,411
106
106
  odxtools/writepdxfile.py,sha256=x3W2xiPVjzNZjfpJssY6ngkx74sZtb95OFmBHql1VY4,7766
107
107
  odxtools/xdoc.py,sha256=gDq-8l8x-Tj1ZJOttPxZchcO5_jEPwcXxMgT29VgTS0,1433
108
108
  odxtools/cli/__init__.py,sha256=T7ano_FIyzBASxYpmcA5VJXU5bQLIy_Qk0HE_SDKelY,106
@@ -209,9 +209,9 @@ odxtools/templates/macros/printStaticField.xml.jinja2,sha256=JIXFhyNrnQ-2_vWy6Rx
209
209
  odxtools/templates/macros/printStructure.xml.jinja2,sha256=uswYs2xse0B9hZut_FN1GvvR0xsZa_3pZRnlF0ElEEc,559
210
210
  odxtools/templates/macros/printTable.xml.jinja2,sha256=VsP01jqyQllLP-brQ6J1E8ubVntiToEb8Uk7HQEYqtY,1485
211
211
  odxtools/templates/macros/printUnitSpec.xml.jinja2,sha256=AJ5jWYKRmoIZkrd25R1KmjjgU6pfOqRiOQHtUAuS6GI,2813
212
- odxtools-8.0.3.dist-info/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
213
- odxtools-8.0.3.dist-info/METADATA,sha256=2wUPiHYoUp3TNrjC77-TQeYpCP_Fz6jQUCD5JCBAXPs,44084
214
- odxtools-8.0.3.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
215
- odxtools-8.0.3.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
216
- odxtools-8.0.3.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
217
- odxtools-8.0.3.dist-info/RECORD,,
212
+ odxtools-8.0.5.dist-info/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
213
+ odxtools-8.0.5.dist-info/METADATA,sha256=KrVsOJyd7fni3SPL2N98k906AKBzGkdkfE1gxDRi4K0,44084
214
+ odxtools-8.0.5.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
215
+ odxtools-8.0.5.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
216
+ odxtools-8.0.5.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
217
+ odxtools-8.0.5.dist-info/RECORD,,