odxtools 8.2.0__py3-none-any.whl → 8.2.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.
- odxtools/diaglayers/diaglayer.py +5 -0
- odxtools/diaglayers/diaglayerraw.py +13 -1
- odxtools/diagservice.py +3 -1
- odxtools/library.py +66 -0
- odxtools/minmaxlengthtype.py +1 -1
- odxtools/progcode.py +8 -4
- odxtools/templates/macros/printCompuMethod.xml.jinja2 +3 -2
- odxtools/templates/macros/printDiagLayer.xml.jinja2 +8 -0
- odxtools/templates/macros/printLibrary.xml.jinja2 +21 -0
- odxtools/templates/macros/printSingleEcuJob.xml.jinja2 +2 -23
- odxtools/version.py +2 -2
- {odxtools-8.2.0.dist-info → odxtools-8.2.1.dist-info}/METADATA +1 -1
- {odxtools-8.2.0.dist-info → odxtools-8.2.1.dist-info}/RECORD +17 -15
- {odxtools-8.2.0.dist-info → odxtools-8.2.1.dist-info}/WHEEL +1 -1
- {odxtools-8.2.0.dist-info → odxtools-8.2.1.dist-info}/LICENSE +0 -0
- {odxtools-8.2.0.dist-info → odxtools-8.2.1.dist-info}/entry_points.txt +0 -0
- {odxtools-8.2.0.dist-info → odxtools-8.2.1.dist-info}/top_level.txt +0 -0
odxtools/diaglayers/diaglayer.py
CHANGED
@@ -13,6 +13,7 @@ from ..diagcomm import DiagComm
|
|
13
13
|
from ..diagdatadictionaryspec import DiagDataDictionarySpec
|
14
14
|
from ..diagservice import DiagService
|
15
15
|
from ..exceptions import DecodeError, odxassert, odxraise
|
16
|
+
from ..library import Library
|
16
17
|
from ..message import Message
|
17
18
|
from ..nameditemlist import NamedItemList, TNamed
|
18
19
|
from ..odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId, OdxLinkRef
|
@@ -259,6 +260,10 @@ class DiagLayer:
|
|
259
260
|
def import_refs(self) -> List[OdxLinkRef]:
|
260
261
|
return self.diag_layer_raw.import_refs
|
261
262
|
|
263
|
+
@property
|
264
|
+
def libraries(self) -> List[Library]:
|
265
|
+
return self.diag_layer_raw.libraries
|
266
|
+
|
262
267
|
@property
|
263
268
|
def sdgs(self) -> List[SpecialDataGroup]:
|
264
269
|
return self.diag_layer_raw.sdgs
|
@@ -13,6 +13,7 @@ from ..diagservice import DiagService
|
|
13
13
|
from ..element import IdentifiableElement
|
14
14
|
from ..exceptions import odxassert, odxraise, odxrequire
|
15
15
|
from ..functionalclass import FunctionalClass
|
16
|
+
from ..library import Library
|
16
17
|
from ..nameditemlist import NamedItemList
|
17
18
|
from ..odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId, OdxLinkRef
|
18
19
|
from ..request import Request
|
@@ -47,7 +48,7 @@ class DiagLayerRaw(IdentifiableElement):
|
|
47
48
|
state_charts: NamedItemList[StateChart]
|
48
49
|
additional_audiences: NamedItemList[AdditionalAudience]
|
49
50
|
# sub_components: List[DiagLayer] # TODO
|
50
|
-
|
51
|
+
libraries: NamedItemList[Library]
|
51
52
|
sdgs: List[SpecialDataGroup]
|
52
53
|
|
53
54
|
@property
|
@@ -149,6 +150,10 @@ class DiagLayerRaw(IdentifiableElement):
|
|
149
150
|
for el in et_element.iterfind("ADDITIONAL-AUDIENCES/ADDITIONAL-AUDIENCE")
|
150
151
|
]
|
151
152
|
|
153
|
+
libraries = [
|
154
|
+
Library.from_et(el, doc_frags) for el in et_element.iterfind("LIBRARYS/LIBRARY")
|
155
|
+
]
|
156
|
+
|
152
157
|
sdgs = [
|
153
158
|
SpecialDataGroup.from_et(sdge, doc_frags) for sdge in et_element.iterfind("SDGS/SDG")
|
154
159
|
]
|
@@ -168,6 +173,7 @@ class DiagLayerRaw(IdentifiableElement):
|
|
168
173
|
import_refs=import_refs,
|
169
174
|
state_charts=NamedItemList(state_charts),
|
170
175
|
additional_audiences=NamedItemList(additional_audiences),
|
176
|
+
libraries=NamedItemList(libraries),
|
171
177
|
sdgs=sdgs,
|
172
178
|
**kwargs)
|
173
179
|
|
@@ -200,6 +206,8 @@ class DiagLayerRaw(IdentifiableElement):
|
|
200
206
|
odxlinks.update(state_chart._build_odxlinks())
|
201
207
|
for additional_audience in self.additional_audiences:
|
202
208
|
odxlinks.update(additional_audience._build_odxlinks())
|
209
|
+
for library in self.libraries:
|
210
|
+
odxlinks.update(library._build_odxlinks())
|
203
211
|
for sdg in self.sdgs:
|
204
212
|
odxlinks.update(sdg._build_odxlinks())
|
205
213
|
|
@@ -252,6 +260,8 @@ class DiagLayerRaw(IdentifiableElement):
|
|
252
260
|
state_chart._resolve_odxlinks(odxlinks)
|
253
261
|
for additional_audience in self.additional_audiences:
|
254
262
|
additional_audience._resolve_odxlinks(odxlinks)
|
263
|
+
for library in self.libraries:
|
264
|
+
library._resolve_odxlinks(odxlinks)
|
255
265
|
for sdg in self.sdgs:
|
256
266
|
sdg._resolve_odxlinks(odxlinks)
|
257
267
|
|
@@ -282,5 +292,7 @@ class DiagLayerRaw(IdentifiableElement):
|
|
282
292
|
state_chart._resolve_snrefs(context)
|
283
293
|
for additional_audience in self.additional_audiences:
|
284
294
|
additional_audience._resolve_snrefs(context)
|
295
|
+
for library in self.libraries:
|
296
|
+
library._resolve_snrefs(context)
|
285
297
|
for sdg in self.sdgs:
|
286
298
|
sdg._resolve_snrefs(context)
|
odxtools/diagservice.py
CHANGED
@@ -42,7 +42,9 @@ class DiagService(DiagComm):
|
|
42
42
|
pos_response_refs: List[OdxLinkRef]
|
43
43
|
neg_response_refs: List[OdxLinkRef]
|
44
44
|
|
45
|
-
#
|
45
|
+
# note that the spec has a typo here: it calls the corresponding
|
46
|
+
# XML tag POS-RESPONSE-SUPPRESSABLE...
|
47
|
+
# TODO: pos_response_suppressible: Optional[PosResponseSuppressible]
|
46
48
|
|
47
49
|
is_cyclic_raw: Optional[bool]
|
48
50
|
is_multiple_raw: Optional[bool]
|
odxtools/library.py
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
2
|
+
from dataclasses import dataclass
|
3
|
+
from typing import Any, Dict, List, Optional, cast
|
4
|
+
from xml.etree import ElementTree
|
5
|
+
|
6
|
+
from .element import IdentifiableElement
|
7
|
+
from .exceptions import odxraise, odxrequire
|
8
|
+
from .odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId
|
9
|
+
from .snrefcontext import SnRefContext
|
10
|
+
from .utils import dataclass_fields_asdict
|
11
|
+
|
12
|
+
|
13
|
+
@dataclass
|
14
|
+
class Library(IdentifiableElement):
|
15
|
+
"""
|
16
|
+
A library defines a shared library used for single ECU jobs etc.
|
17
|
+
|
18
|
+
It this is basically equivalent to ProgCode.
|
19
|
+
"""
|
20
|
+
|
21
|
+
code_file: str
|
22
|
+
encryption: Optional[str]
|
23
|
+
syntax: str
|
24
|
+
revision: str
|
25
|
+
entrypoint: Optional[str]
|
26
|
+
|
27
|
+
@property
|
28
|
+
def code(self) -> bytes:
|
29
|
+
return self._code
|
30
|
+
|
31
|
+
@staticmethod
|
32
|
+
def from_et(et_element: ElementTree.Element, doc_frags: List[OdxDocFragment]) -> "Library":
|
33
|
+
|
34
|
+
kwargs = dataclass_fields_asdict(IdentifiableElement.from_et(et_element, doc_frags))
|
35
|
+
|
36
|
+
code_file = odxrequire(et_element.findtext("CODE-FILE"))
|
37
|
+
encryption = et_element.findtext("ENCRYPTION")
|
38
|
+
syntax = odxrequire(et_element.findtext("SYNTAX"))
|
39
|
+
revision = odxrequire(et_element.findtext("REVISION"))
|
40
|
+
entrypoint = et_element.findtext("ENTRYPOINT")
|
41
|
+
|
42
|
+
return Library(
|
43
|
+
code_file=code_file,
|
44
|
+
encryption=encryption,
|
45
|
+
syntax=syntax,
|
46
|
+
revision=revision,
|
47
|
+
entrypoint=entrypoint,
|
48
|
+
**kwargs)
|
49
|
+
|
50
|
+
def _build_odxlinks(self) -> Dict[OdxLinkId, Any]:
|
51
|
+
return {self.odx_id: self}
|
52
|
+
|
53
|
+
def _resolve_odxlinks(self, odxlinks: OdxLinkDatabase) -> None:
|
54
|
+
pass
|
55
|
+
|
56
|
+
def _resolve_snrefs(self, context: SnRefContext) -> None:
|
57
|
+
aux_file = odxrequire(context.database).auxiliary_files.get(self.code_file)
|
58
|
+
|
59
|
+
if aux_file is None:
|
60
|
+
odxraise(f"Reference to auxiliary file '{self.code_file}' "
|
61
|
+
f"could not be resolved")
|
62
|
+
self._code: bytes = cast(bytes, None)
|
63
|
+
return
|
64
|
+
|
65
|
+
self._code = aux_file.read()
|
66
|
+
aux_file.seek(0)
|
odxtools/minmaxlengthtype.py
CHANGED
@@ -74,7 +74,7 @@ class MinMaxLengthType(DiagCodedType):
|
|
74
74
|
@override
|
75
75
|
def encode_into_pdu(self, internal_value: AtomicOdxType, encode_state: EncodeState) -> None:
|
76
76
|
|
77
|
-
if not isinstance(internal_value, (bytes, str)):
|
77
|
+
if not isinstance(internal_value, (bytes, str, bytearray)):
|
78
78
|
odxraise("MinMaxLengthType is currently only implemented for strings and byte arrays",
|
79
79
|
EncodeError)
|
80
80
|
|
odxtools/progcode.py
CHANGED
@@ -4,6 +4,8 @@ from typing import Any, Dict, List, Optional, cast
|
|
4
4
|
from xml.etree import ElementTree
|
5
5
|
|
6
6
|
from .exceptions import odxraise, odxrequire
|
7
|
+
from .library import Library
|
8
|
+
from .nameditemlist import NamedItemList
|
7
9
|
from .odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId, OdxLinkRef
|
8
10
|
from .snrefcontext import SnRefContext
|
9
11
|
|
@@ -12,9 +14,9 @@ from .snrefcontext import SnRefContext
|
|
12
14
|
class ProgCode:
|
13
15
|
"""A reference to code that is executed by a single ECU job"""
|
14
16
|
code_file: str
|
17
|
+
encryption: Optional[str]
|
15
18
|
syntax: str
|
16
19
|
revision: str
|
17
|
-
encryption: Optional[str]
|
18
20
|
entrypoint: Optional[str]
|
19
21
|
library_refs: List[OdxLinkRef]
|
20
22
|
|
@@ -22,6 +24,10 @@ class ProgCode:
|
|
22
24
|
def code(self) -> bytes:
|
23
25
|
return self._code
|
24
26
|
|
27
|
+
@property
|
28
|
+
def libraries(self) -> NamedItemList[Library]:
|
29
|
+
return self._libraries
|
30
|
+
|
25
31
|
@staticmethod
|
26
32
|
def from_et(et_element: ElementTree.Element, doc_frags: List[OdxDocFragment]) -> "ProgCode":
|
27
33
|
code_file = odxrequire(et_element.findtext("CODE-FILE"))
|
@@ -49,9 +55,7 @@ class ProgCode:
|
|
49
55
|
return {}
|
50
56
|
|
51
57
|
def _resolve_odxlinks(self, odxlinks: OdxLinkDatabase) -> None:
|
52
|
-
|
53
|
-
# Once they are internalized, resolve the `library_refs` references here.
|
54
|
-
pass
|
58
|
+
self._libraries = NamedItemList([odxlinks.resolve(x, Library) for x in self.library_refs])
|
55
59
|
|
56
60
|
def _resolve_snrefs(self, context: SnRefContext) -> None:
|
57
61
|
aux_file = odxrequire(context.database).auxiliary_files.get(self.code_file)
|
@@ -92,12 +92,13 @@
|
|
92
92
|
{%- macro printProgCode(pc) -%}
|
93
93
|
<PROG-CODE>
|
94
94
|
<CODE-FILE>{{pc.code_file}}</CODE-FILE>
|
95
|
-
<SYNTAX>{{pc.syntax}}</SYNTAX>
|
96
95
|
{%- if pc.encryption is not none %}
|
97
96
|
<ENCRYPTION>{{pc.encryption}}</ENCRYPTION>
|
98
97
|
{%- endif %}
|
98
|
+
<SYNTAX>{{pc.syntax}}</SYNTAX>
|
99
|
+
<REVISION>{{pc.revision}}</REVISION>
|
99
100
|
{%- if pc.entry_point is not none %}
|
100
|
-
<
|
101
|
+
<ENTRYPOINT>{{pc.entrypoint}}</ENTRYPOINT>
|
101
102
|
{%- endif %}
|
102
103
|
{%- if pc.library_refs %}
|
103
104
|
<LIBRARY-REFS>
|
@@ -22,6 +22,7 @@
|
|
22
22
|
{%- import('macros/printResponse.xml.jinja2') as presp %}
|
23
23
|
{%- import('macros/printStateChart.xml.jinja2') as psc %}
|
24
24
|
{%- import('macros/printAudience.xml.jinja2') as paud %}
|
25
|
+
{%- import('macros/printLibrary.xml.jinja2') as plib %}
|
25
26
|
{%- import('macros/printSpecialData.xml.jinja2') as psd %}
|
26
27
|
{%- import('macros/printEcuVariantPattern.xml.jinja2') as pvpat %}
|
27
28
|
{%- import('macros/printAdminData.xml.jinja2') as pad %}
|
@@ -202,5 +203,12 @@
|
|
202
203
|
{%- endfor %}
|
203
204
|
</ADDITIONAL-AUDIENCES>
|
204
205
|
{%- endif %}
|
206
|
+
{%- if dlr.libraries %}
|
207
|
+
<LIBRARYS>
|
208
|
+
{%- for lib in dlr.libraries %}
|
209
|
+
{{ plib.printLibrary(lib)|indent(2) }}
|
210
|
+
{%- endfor %}
|
211
|
+
</LIBRARYS>
|
212
|
+
{%- endif %}
|
205
213
|
{{- psd.printSpecialDataGroups(dlr.sdgs)|indent(0, first=True) }}
|
206
214
|
{%- endmacro -%}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{#- -*- mode: sgml; tab-width: 1; indent-tabs-mode: nil -*-
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: MIT
|
4
|
+
-#}
|
5
|
+
|
6
|
+
{%- import('macros/printElementId.xml.jinja2') as peid %}
|
7
|
+
|
8
|
+
{%- macro printLibrary(library) %}
|
9
|
+
<LIBRARY{#- #} {{-peid.printElementIdAttribs(library)}}{# -#}>
|
10
|
+
{{ peid.printElementIdSubtags(library)|indent(1) }}
|
11
|
+
<CODE-FILE>{{library.code_file}}</CODE-FILE>
|
12
|
+
{%- if library.encryption is not none %}
|
13
|
+
<ENCRYPTION>{{library.encryption}}</ENCRYPTION>
|
14
|
+
{%- endif %}
|
15
|
+
<SYNTAX>{{library.syntax}}</SYNTAX>
|
16
|
+
<REVISION>{{library.revision}}</REVISION>
|
17
|
+
{%- if library.entrypoint is not none %}
|
18
|
+
<ENTRYPOINT>{{library.entrypoint}}</ENTRYPOINT>
|
19
|
+
{%- endif %}
|
20
|
+
</LIBRARY>
|
21
|
+
{%- endmacro %}
|
@@ -5,13 +5,14 @@
|
|
5
5
|
|
6
6
|
{%- import('macros/printElementId.xml.jinja2') as peid %}
|
7
7
|
{%- import('macros/printDiagComm.xml.jinja2') as pdc %}
|
8
|
+
{%- import('macros/printCompuMethod.xml.jinja2') as pcm %}
|
8
9
|
|
9
10
|
{%- macro printSingleEcuJob(job) -%}
|
10
11
|
<SINGLE-ECU-JOB {{pdc.printDiagCommAttribs(job)|indent(1) }}>
|
11
12
|
{{pdc.printDiagCommSubtags(job) | indent(2, first=True) }}
|
12
13
|
<PROG-CODES>
|
13
14
|
{%- for prog in job.prog_codes %}
|
14
|
-
{{ printProgCode(prog)|indent(4) }}
|
15
|
+
{{ pcm.printProgCode(prog)|indent(4) }}
|
15
16
|
{%- endfor %}
|
16
17
|
</PROG-CODES>
|
17
18
|
{%- if job.input_params %}
|
@@ -39,28 +40,6 @@
|
|
39
40
|
{%- endmacro -%}
|
40
41
|
|
41
42
|
|
42
|
-
{%- macro printProgCode(prog) -%}
|
43
|
-
<PROG-CODE>
|
44
|
-
<CODE-FILE>{{prog.code_file}}</CODE-FILE>
|
45
|
-
{%- if prog.encryption %}
|
46
|
-
<ENCRYPTION>{{prog.encryption}}</ENCRYPTION>
|
47
|
-
{%- endif %}
|
48
|
-
<SYNTAX>{{prog.syntax}}</SYNTAX>
|
49
|
-
<REVISION>{{prog.revision}}</REVISION>
|
50
|
-
{%- if prog.entrypoint %}
|
51
|
-
<ENTRYPOINT>{{prog.entrypoint}}</ENTRYPOINT>
|
52
|
-
{%- endif %}
|
53
|
-
{%- if prog.library_refs %}
|
54
|
-
<LIBRARY-REFS>
|
55
|
-
{%- for ref in prog.library_refs %}
|
56
|
-
<LIBRARY-REF ID-REF="{{ref.ref_id}}" />
|
57
|
-
{%- endfor %}
|
58
|
-
</LIBRARY-REFS>
|
59
|
-
{%- endif %}
|
60
|
-
</PROG-CODE>
|
61
|
-
{%- endmacro -%}
|
62
|
-
|
63
|
-
|
64
43
|
{%- macro printInputParam(param) -%}
|
65
44
|
<INPUT-PARAM {{-make_xml_attrib("OID", param.oid)}}
|
66
45
|
{{-make_xml_attrib("SEMANTIC", param.semantic)}}>
|
odxtools/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odxtools
|
3
|
-
Version: 8.2.
|
3
|
+
Version: 8.2.1
|
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>
|
@@ -29,7 +29,7 @@ odxtools/diagcomm.py,sha256=j8esUkogoxHBwIEUBkAoXe28jX3vaRnnrgCR_gdP6VY,8110
|
|
29
29
|
odxtools/diagdatadictionaryspec.py,sha256=2zy5f-xnfGI0bnjPOEwG_IJxfsHhXZoOfdIS_fOr3L0,10552
|
30
30
|
odxtools/diaglayercontainer.py,sha256=0JC6ioUGe5c8FzXRotyGEGMMDz8fzKCsK204tGN3cAo,6524
|
31
31
|
odxtools/diagnostictroublecode.py,sha256=jKtO8JqU0HRpeSyrcHn4s21N4Jj-p19WVP-qw2H98gY,2459
|
32
|
-
odxtools/diagservice.py,sha256=
|
32
|
+
odxtools/diagservice.py,sha256=y1_qKI7kJXDWpjpw91loIdf-K7Ozo45BsYiOhVYGuXg,10291
|
33
33
|
odxtools/diagvariable.py,sha256=KUyRCV-H5xKITWYk9wxDnaS_N2nwDFGQzHaQRfNndKA,3829
|
34
34
|
odxtools/docrevision.py,sha256=m57a4lCWeR6QvNNxtwUNpLXAMgSq29ks1HorxoipFVk,2698
|
35
35
|
odxtools/dopbase.py,sha256=JMqlMNKyZJlXwcBFROetCIy1RsK-V_mSCR0MDuA-G5Y,2493
|
@@ -53,10 +53,11 @@ odxtools/inputparam.py,sha256=lyffK4UBG2d_0JzIaf1QZCsPXFti6gejiIWRSdr-CYA,1841
|
|
53
53
|
odxtools/internalconstr.py,sha256=QKEkaOcrFoL9xID-oHWWkeg-vtcPV6RFOW1fX2K3pwg,1363
|
54
54
|
odxtools/isotp_state_machine.py,sha256=O6v29IK7p_4gFqrr-fahnbp9Qmo78EEQfEwRsA_Vfjw,13339
|
55
55
|
odxtools/leadinglengthinfotype.py,sha256=mtq38k74hEh_CUY7NbVwdCc_aqKr7v5ABoS_SlKVXyI,4185
|
56
|
+
odxtools/library.py,sha256=E_A6K6jcEoUdXh4h4sQILj7_JM-6X5OUUWSM47G69CU,2067
|
56
57
|
odxtools/loadfile.py,sha256=hi8jVE7B1G9gklsb7MrGrp4aOAI65j0kNwvDeEEEN2k,1744
|
57
58
|
odxtools/matchingparameter.py,sha256=2cqaxFCZ28GvvUKCIM-jas3ae4eYGbULbkBlb3aH5RY,2232
|
58
59
|
odxtools/message.py,sha256=07GekN1MbYXm7HaUITDKTj2lBmGK-LB9W8gtBmfAOew,1057
|
59
|
-
odxtools/minmaxlengthtype.py,sha256=
|
60
|
+
odxtools/minmaxlengthtype.py,sha256=FxcfbuPEmXgYava3h0EPF43I5yTZW_lUcgTqOF5mnes,8917
|
60
61
|
odxtools/modification.py,sha256=oyyFsYHixy6XHOdqqTCx3IIkTAKlSN9wxBpNpvhUaJA,838
|
61
62
|
odxtools/multiplexer.py,sha256=flHlorv9grEMj8pNAWQJNrxhptnDxSsFERO7gpKYRME,10235
|
62
63
|
odxtools/multiplexercase.py,sha256=qfxWJzfJLYAsnhFGheUWDsUaIte2dSRJ0nadiN9SXDw,3176
|
@@ -73,7 +74,7 @@ odxtools/paramlengthinfotype.py,sha256=vhgvCPIRnyCF9t8yhkYf5MsHXQhWWeEgz_kS8AbiO
|
|
73
74
|
odxtools/parentref.py,sha256=kcY3VMyVaIUWD0iVNX8sD9qeI4peU8gijboquu0zD7E,3751
|
74
75
|
odxtools/physicaldimension.py,sha256=CEH7Ura4gqsqlBUxBW08ea9Pxh_Od8JruYQ8o9qOGME,3269
|
75
76
|
odxtools/physicaltype.py,sha256=oYjOhdrTVCJcLLBYgy6pxKsZHpuwm1vZ8svwSjsUB6E,2699
|
76
|
-
odxtools/progcode.py,sha256=
|
77
|
+
odxtools/progcode.py,sha256=Cx8ziCmQm2OfhinAuRrFrMuoThU7hgA6zNQKAT-AT0A,2276
|
77
78
|
odxtools/protstack.py,sha256=nb2RR4OEaGX6lJ6drHejJU-tkB1p0Ok0KLZhNMTdsEc,2012
|
78
79
|
odxtools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
79
80
|
odxtools/relateddoc.py,sha256=zb5Ea9vkd31kxTP4s5_PLF3LuCoUcG8rgLckStHVRDc,1301
|
@@ -102,7 +103,7 @@ odxtools/unitgroup.py,sha256=_WNpnYFmkiHQnOY8XhIviiQLXziY3kplH--7ufAWXyI,2067
|
|
102
103
|
odxtools/unitspec.py,sha256=RMdEQoLrPhGt9vo32fkwbTqymicHFkFQnydFoi3uBog,2924
|
103
104
|
odxtools/utils.py,sha256=PJFXkG74BzoheurrDYOwHZ6EuIcr1sdxf1tQGk6zSgs,1122
|
104
105
|
odxtools/variablegroup.py,sha256=--5sMDOMUg4I3hFyoVOFcGCTOrctrrMADdmH3Mn4wHk,848
|
105
|
-
odxtools/version.py,sha256=
|
106
|
+
odxtools/version.py,sha256=ry4mLPoauQf45skJo220Mc_ipdigukiUFwiTCQkO_wU,411
|
106
107
|
odxtools/writepdxfile.py,sha256=ZEoNkSxheqnXm836-HOpd04O6ipMXYKFzXZy6PM0YLc,7813
|
107
108
|
odxtools/xdoc.py,sha256=gDq-8l8x-Tj1ZJOttPxZchcO5_jEPwcXxMgT29VgTS0,1433
|
108
109
|
odxtools/cli/__init__.py,sha256=T7ano_FIyzBASxYpmcA5VJXU5bQLIy_Qk0HE_SDKelY,106
|
@@ -138,8 +139,8 @@ odxtools/compumethods/tabintpcompumethod.py,sha256=Gyf2qV5y53SHIcum5d5HQVGszoZCd
|
|
138
139
|
odxtools/compumethods/texttablecompumethod.py,sha256=vDYafbM0YaipjfN0NSlCFMiIPvp8waMNj3thNcwuYgk,5929
|
139
140
|
odxtools/diaglayers/basevariant.py,sha256=mXS-SF-tcwtdV-rxZZCH6_yqdA-yhtMX1SGo1MS8w7k,4452
|
140
141
|
odxtools/diaglayers/basevariantraw.py,sha256=A9h6p2Ri0sPPTW217rtEdNpAt5g6t0MwP9sgXqZ8pFo,4673
|
141
|
-
odxtools/diaglayers/diaglayer.py,sha256=
|
142
|
-
odxtools/diaglayers/diaglayerraw.py,sha256=
|
142
|
+
odxtools/diaglayers/diaglayer.py,sha256=kiziALQ4wUAz8aLSHSQzMAJ65c39rkww2zf3eAI6h4Q,16062
|
143
|
+
odxtools/diaglayers/diaglayerraw.py,sha256=kE5hoz6Yv5zGRoAD4Z2dD44Mrvn6EUitBm3K8aChV5o,12403
|
143
144
|
odxtools/diaglayers/diaglayertype.py,sha256=FXL-EVBdrAURuHSHo9OthFuEYEybQO66aMB1o2GxVdI,1340
|
144
145
|
odxtools/diaglayers/ecushareddata.py,sha256=QoV50wQIrJ2-faLtU1P7RrjdacbhPY2BfUtVtIyWqCM,3347
|
145
146
|
odxtools/diaglayers/ecushareddataraw.py,sha256=cvkBhqTLOAey7Pt1bjQ3Jkkenp-D3Zh5djpB4ZWWUvw,3375
|
@@ -177,11 +178,11 @@ odxtools/templates/macros/printBasicStructure.xml.jinja2,sha256=V5oWGZesU_U5pvPO
|
|
177
178
|
odxtools/templates/macros/printCompanyData.xml.jinja2,sha256=jcNmQBOGDw7wcKdam72NIJSOTxthfkPJvrmw24MBiYQ,2981
|
178
179
|
odxtools/templates/macros/printComparam.xml.jinja2,sha256=e3hPCswAymJteQIUNoc7FOwsK_FrbJOvJooWdEx_vuQ,2408
|
179
180
|
odxtools/templates/macros/printComparamRef.xml.jinja2,sha256=rBhrdUnp605fsUN9SaljpyaAojzaLBvTbkOuduKod18,1274
|
180
|
-
odxtools/templates/macros/printCompuMethod.xml.jinja2,sha256=
|
181
|
+
odxtools/templates/macros/printCompuMethod.xml.jinja2,sha256=9DilxMWnqOsXu7bNNlDqls-lEqcr_GPzhZum8rzDJP0,4430
|
181
182
|
odxtools/templates/macros/printDOP.xml.jinja2,sha256=t-6U0gZLdV2n6-YW5pkVFnHNVTAOnfqMch-mk_fGyjo,5146
|
182
183
|
odxtools/templates/macros/printDescription.xml.jinja2,sha256=7jcYEIXr7hbbKqSvIUIgXaQSXV4dKAR9UhY352BZct8,452
|
183
184
|
odxtools/templates/macros/printDiagComm.xml.jinja2,sha256=_SByYBYzPG9t7VNnAohFAXsgng9VrQcSacXH923wRzY,2239
|
184
|
-
odxtools/templates/macros/printDiagLayer.xml.jinja2,sha256=
|
185
|
+
odxtools/templates/macros/printDiagLayer.xml.jinja2,sha256=psPPZK6yj8e4QURnA1leySY9YDOV8Wj_UiMj2-f2Vw4,6656
|
185
186
|
odxtools/templates/macros/printDiagVariable.xml.jinja2,sha256=sQEU42Onf0WkRJZJyNUgeeGICc3MZaQJPQ0YKY6lRrU,2656
|
186
187
|
odxtools/templates/macros/printDynDefinedSpec.xml.jinja2,sha256=uX3C40VmlbH7sndlJNyTvq8upzaoq8vCk6S93gtpFIY,1742
|
187
188
|
odxtools/templates/macros/printDynamicEndmarkerField.xml.jinja2,sha256=6BmxPKesQvfy46iTiPSFu_iJffC6umZ_YRsTEd-0y5Q,587
|
@@ -196,6 +197,7 @@ odxtools/templates/macros/printEnvDataDesc.xml.jinja2,sha256=rBpPf51LFx5oNx_XjeT
|
|
196
197
|
odxtools/templates/macros/printFunctionalClass.xml.jinja2,sha256=TpOQTj-hlNLtIfcSTVzU-gRrfaWrgsTrIFMqm_1M6Qs,329
|
197
198
|
odxtools/templates/macros/printFunctionalGroup.xml.jinja2,sha256=zIeZbhf8haXhgJJUPiOnMe3lvqvfye4-zmwWDQJxFtQ,1159
|
198
199
|
odxtools/templates/macros/printHierarchyElement.xml.jinja2,sha256=GD6iNIE0Wu0QsJ8uLtwEV8N9t6mIhI00_KpCVzOVQBM,651
|
200
|
+
odxtools/templates/macros/printLibrary.xml.jinja2,sha256=wp8vZzHPLZayWZh6BOQ56kGyHSeyrlNacdlxBw9d0N0,683
|
199
201
|
odxtools/templates/macros/printMux.xml.jinja2,sha256=68IiPY_mIJQqQiqce3jUphqp3-xLfmEBL7CSb3Cz7eI,1869
|
200
202
|
odxtools/templates/macros/printParam.xml.jinja2,sha256=bdp-r1arWod-vV9ODUZn_QThtAAqkm31SqdJeGItJ1M,3183
|
201
203
|
odxtools/templates/macros/printParentRef.xml.jinja2,sha256=RllVKt2RgrMnWfsujGnBUiABwV2y4_ZfINYy7LXenPM,896
|
@@ -204,7 +206,7 @@ odxtools/templates/macros/printProtocol.xml.jinja2,sha256=1DXoRSq6z4dhpZnXWH3x9J
|
|
204
206
|
odxtools/templates/macros/printRequest.xml.jinja2,sha256=yq4xGSlQCioT7FRivyx40Cjs2CYr9EK6NLZf0W4wGW0,717
|
205
207
|
odxtools/templates/macros/printResponse.xml.jinja2,sha256=GsOYmnoh4ewhWg3FUdcovHuJxvuIjsSrXNtbcnnAQcM,683
|
206
208
|
odxtools/templates/macros/printService.xml.jinja2,sha256=zvjOCELEx4yim2FtdNKiExTsDPkAfQAP4Gf_QsondfQ,1546
|
207
|
-
odxtools/templates/macros/printSingleEcuJob.xml.jinja2,sha256=
|
209
|
+
odxtools/templates/macros/printSingleEcuJob.xml.jinja2,sha256=6phi3VxGllusm6KGgrjWiOj7g80ojHyxvesqmHvuNhs,2174
|
208
210
|
odxtools/templates/macros/printSpecialData.xml.jinja2,sha256=0eIFh9cWXfFrQN_f8G_lz3fUqmtysxY6tSN4DbuFY40,1386
|
209
211
|
odxtools/templates/macros/printState.xml.jinja2,sha256=BNnTEyczp43iP9Bn_plMLRsJsasra4sRyvmgODuZQYg,315
|
210
212
|
odxtools/templates/macros/printStateChart.xml.jinja2,sha256=XW1EhF1k8ogbEDt-QMjSOojKl4vjxXkq6BwJWR9GJsI,951
|
@@ -213,9 +215,9 @@ odxtools/templates/macros/printStaticField.xml.jinja2,sha256=fkV07zrL2pTo6b5ZPD1
|
|
213
215
|
odxtools/templates/macros/printStructure.xml.jinja2,sha256=CJUPZv_9lko63C5fNpOn5LlQqLCuS--qyhtx4NyD5Rk,567
|
214
216
|
odxtools/templates/macros/printTable.xml.jinja2,sha256=5DQjjJ-UxQ75ntov0S0LGnm_V7YWtKadBpNbmV1aBb8,1501
|
215
217
|
odxtools/templates/macros/printUnitSpec.xml.jinja2,sha256=opS6_Gr94WlAtREEyX4sLo-D-17Gni9Wvr3y1nfVgSA,2715
|
216
|
-
odxtools-8.2.
|
217
|
-
odxtools-8.2.
|
218
|
-
odxtools-8.2.
|
219
|
-
odxtools-8.2.
|
220
|
-
odxtools-8.2.
|
221
|
-
odxtools-8.2.
|
218
|
+
odxtools-8.2.1.dist-info/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
|
219
|
+
odxtools-8.2.1.dist-info/METADATA,sha256=XJFo9HuR5ut_oT-x6eOcoV_R2a5PQr9umexDRlXQPZg,44084
|
220
|
+
odxtools-8.2.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
221
|
+
odxtools-8.2.1.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
|
222
|
+
odxtools-8.2.1.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
|
223
|
+
odxtools-8.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|