odxtools 8.3.4__py3-none-any.whl → 9.0.0__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/basicstructure.py +36 -207
- odxtools/cli/_print_utils.py +163 -131
- odxtools/cli/browse.py +94 -79
- odxtools/cli/compare.py +88 -69
- odxtools/cli/list.py +2 -3
- odxtools/codec.py +211 -0
- odxtools/diaglayers/hierarchyelement.py +0 -10
- odxtools/dopbase.py +5 -3
- odxtools/dtcdop.py +101 -14
- odxtools/inputparam.py +0 -7
- odxtools/leadinglengthinfotype.py +1 -8
- odxtools/message.py +0 -7
- odxtools/minmaxlengthtype.py +4 -4
- odxtools/outputparam.py +0 -7
- odxtools/parameterinfo.py +12 -12
- odxtools/parameters/parameter.py +6 -4
- odxtools/paramlengthinfotype.py +8 -9
- odxtools/request.py +109 -16
- odxtools/response.py +115 -15
- odxtools/specialdatagroup.py +1 -1
- odxtools/templates/macros/printDOP.xml.jinja2 +16 -0
- odxtools/uds.py +0 -8
- odxtools/version.py +2 -2
- {odxtools-8.3.4.dist-info → odxtools-9.0.0.dist-info}/METADATA +7 -8
- {odxtools-8.3.4.dist-info → odxtools-9.0.0.dist-info}/RECORD +29 -28
- {odxtools-8.3.4.dist-info → odxtools-9.0.0.dist-info}/WHEEL +1 -1
- {odxtools-8.3.4.dist-info → odxtools-9.0.0.dist-info}/LICENSE +0 -0
- {odxtools-8.3.4.dist-info → odxtools-9.0.0.dist-info}/entry_points.txt +0 -0
- {odxtools-8.3.4.dist-info → odxtools-9.0.0.dist-info}/top_level.txt +0 -0
odxtools/response.py
CHANGED
@@ -1,15 +1,24 @@
|
|
1
1
|
# SPDX-License-Identifier: MIT
|
2
2
|
from dataclasses import dataclass
|
3
3
|
from enum import Enum
|
4
|
-
from typing import List, Optional, cast
|
4
|
+
from typing import Any, Dict, List, Optional, cast
|
5
5
|
from xml.etree import ElementTree
|
6
6
|
|
7
|
-
from .
|
7
|
+
from .admindata import AdminData
|
8
|
+
from .codec import (composite_codec_decode_from_pdu, composite_codec_encode_into_pdu,
|
9
|
+
composite_codec_get_coded_const_prefix, composite_codec_get_free_parameters,
|
10
|
+
composite_codec_get_required_parameters, composite_codec_get_static_bit_length)
|
11
|
+
from .decodestate import DecodeState
|
12
|
+
from .element import IdentifiableElement
|
8
13
|
from .encodestate import EncodeState
|
9
14
|
from .exceptions import odxraise
|
10
|
-
from .
|
11
|
-
from .
|
15
|
+
from .nameditemlist import NamedItemList
|
16
|
+
from .odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId
|
17
|
+
from .odxtypes import ParameterValue, ParameterValueDict
|
18
|
+
from .parameters.createanyparameter import create_any_parameter_from_et
|
19
|
+
from .parameters.parameter import Parameter
|
12
20
|
from .snrefcontext import SnRefContext
|
21
|
+
from .specialdatagroup import SpecialDataGroup
|
13
22
|
from .utils import dataclass_fields_asdict
|
14
23
|
|
15
24
|
|
@@ -19,17 +28,23 @@ class ResponseType(Enum):
|
|
19
28
|
GLOBAL_NEGATIVE = "GLOBAL-NEG-RESPONSE"
|
20
29
|
|
21
30
|
|
22
|
-
# TODO: The spec does not say that responses are basic structures. For
|
23
|
-
# now, we derive from it anyway because it simplifies the en- and
|
24
|
-
# decoding machinery...
|
25
31
|
@dataclass
|
26
|
-
class Response(
|
32
|
+
class Response(IdentifiableElement):
|
33
|
+
"""Represents all information related to an UDS response
|
34
|
+
|
35
|
+
This class implements the `CompositeCodec` interface.
|
36
|
+
"""
|
37
|
+
|
27
38
|
response_type: ResponseType
|
28
39
|
|
40
|
+
admin_data: Optional[AdminData]
|
41
|
+
parameters: NamedItemList[Parameter]
|
42
|
+
sdgs: List[SpecialDataGroup]
|
43
|
+
|
29
44
|
@staticmethod
|
30
45
|
def from_et(et_element: ElementTree.Element, doc_frags: List[OdxDocFragment]) -> "Response":
|
31
46
|
"""Reads a response."""
|
32
|
-
kwargs = dataclass_fields_asdict(
|
47
|
+
kwargs = dataclass_fields_asdict(IdentifiableElement.from_et(et_element, doc_frags))
|
33
48
|
|
34
49
|
try:
|
35
50
|
response_type = ResponseType(et_element.tag)
|
@@ -37,18 +52,103 @@ class Response(BasicStructure):
|
|
37
52
|
response_type = cast(ResponseType, None)
|
38
53
|
odxraise(f"Encountered unknown response type '{et_element.tag}'")
|
39
54
|
|
40
|
-
|
55
|
+
admin_data = AdminData.from_et(et_element.find("ADMIN-DATA"), doc_frags)
|
56
|
+
parameters = NamedItemList([
|
57
|
+
create_any_parameter_from_et(et_parameter, doc_frags)
|
58
|
+
for et_parameter in et_element.iterfind("PARAMS/PARAM")
|
59
|
+
])
|
60
|
+
sdgs = [
|
61
|
+
SpecialDataGroup.from_et(sdge, doc_frags) for sdge in et_element.iterfind("SDGS/SDG")
|
62
|
+
]
|
41
63
|
|
42
|
-
|
43
|
-
|
64
|
+
return Response(
|
65
|
+
response_type=response_type,
|
66
|
+
admin_data=admin_data,
|
67
|
+
parameters=parameters,
|
68
|
+
sdgs=sdgs,
|
69
|
+
**kwargs)
|
44
70
|
|
45
|
-
|
71
|
+
def _build_odxlinks(self) -> Dict[OdxLinkId, Any]:
|
72
|
+
result = {self.odx_id: self}
|
46
73
|
|
47
|
-
|
74
|
+
if self.admin_data is not None:
|
75
|
+
result.update(self.admin_data._build_odxlinks())
|
76
|
+
|
77
|
+
for param in self.parameters:
|
78
|
+
result.update(param._build_odxlinks())
|
79
|
+
|
80
|
+
for sdg in self.sdgs:
|
81
|
+
result.update(sdg._build_odxlinks())
|
82
|
+
|
83
|
+
return result
|
84
|
+
|
85
|
+
def _resolve_odxlinks(self, odxlinks: OdxLinkDatabase) -> None:
|
86
|
+
if self.admin_data is not None:
|
87
|
+
self.admin_data._resolve_odxlinks(odxlinks)
|
88
|
+
|
89
|
+
for param in self.parameters:
|
90
|
+
param._resolve_odxlinks(odxlinks)
|
91
|
+
|
92
|
+
for sdg in self.sdgs:
|
93
|
+
sdg._resolve_odxlinks(odxlinks)
|
48
94
|
|
49
95
|
def _resolve_snrefs(self, context: SnRefContext) -> None:
|
50
96
|
context.response = self
|
97
|
+
context.parameters = self.parameters
|
51
98
|
|
52
|
-
|
99
|
+
if self.admin_data is not None:
|
100
|
+
self.admin_data._resolve_snrefs(context)
|
101
|
+
|
102
|
+
for param in self.parameters:
|
103
|
+
param._resolve_snrefs(context)
|
104
|
+
|
105
|
+
for sdg in self.sdgs:
|
106
|
+
sdg._resolve_snrefs(context)
|
53
107
|
|
54
108
|
context.response = None
|
109
|
+
context.parameters = None
|
110
|
+
|
111
|
+
def encode(self, coded_request: Optional[bytes] = None, **kwargs: ParameterValue) -> bytearray:
|
112
|
+
encode_state = EncodeState(triggering_request=coded_request, is_end_of_pdu=True)
|
113
|
+
|
114
|
+
self.encode_into_pdu(physical_value=kwargs, encode_state=encode_state)
|
115
|
+
|
116
|
+
return encode_state.coded_message
|
117
|
+
|
118
|
+
def decode(self, message: bytes) -> ParameterValueDict:
|
119
|
+
decode_state = DecodeState(coded_message=message)
|
120
|
+
param_values = self.decode_from_pdu(decode_state)
|
121
|
+
|
122
|
+
if not isinstance(param_values, dict):
|
123
|
+
odxraise("Decoding a response must result in a dictionary")
|
124
|
+
|
125
|
+
return cast(ParameterValueDict, param_values)
|
126
|
+
|
127
|
+
def encode_into_pdu(self, physical_value: Optional[ParameterValue],
|
128
|
+
encode_state: EncodeState) -> None:
|
129
|
+
composite_codec_encode_into_pdu(self, physical_value, encode_state)
|
130
|
+
|
131
|
+
def decode_from_pdu(self, decode_state: DecodeState) -> ParameterValue:
|
132
|
+
return composite_codec_decode_from_pdu(self, decode_state)
|
133
|
+
|
134
|
+
def get_static_bit_length(self) -> Optional[int]:
|
135
|
+
return composite_codec_get_static_bit_length(self)
|
136
|
+
|
137
|
+
@property
|
138
|
+
def required_parameters(self) -> List[Parameter]:
|
139
|
+
return composite_codec_get_required_parameters(self)
|
140
|
+
|
141
|
+
@property
|
142
|
+
def free_parameters(self) -> List[Parameter]:
|
143
|
+
return composite_codec_get_free_parameters(self)
|
144
|
+
|
145
|
+
def print_free_parameters_info(self) -> None:
|
146
|
+
"""Return a human readable description of the structure's
|
147
|
+
free parameters.
|
148
|
+
"""
|
149
|
+
from .parameterinfo import parameter_info
|
150
|
+
|
151
|
+
print(parameter_info(self.free_parameters), end="")
|
152
|
+
|
153
|
+
def coded_const_prefix(self, request_prefix: bytes = b'') -> bytes:
|
154
|
+
return composite_codec_get_coded_const_prefix(self, request_prefix)
|
odxtools/specialdatagroup.py
CHANGED
@@ -13,8 +13,8 @@ from .specialdatagroupcaption import SpecialDataGroupCaption
|
|
13
13
|
class SpecialDataGroup:
|
14
14
|
sdg_caption: Optional[SpecialDataGroupCaption]
|
15
15
|
sdg_caption_ref: Optional[OdxLinkRef]
|
16
|
-
semantic_info: Optional[str] # the "SI" attribute
|
17
16
|
values: List[Union["SpecialDataGroup", SpecialData]]
|
17
|
+
semantic_info: Optional[str] # the "SI" attribute
|
18
18
|
|
19
19
|
@staticmethod
|
20
20
|
def from_et(et_element: ElementTree.Element,
|
@@ -145,5 +145,21 @@
|
|
145
145
|
{%- endif %}
|
146
146
|
{%- endfor %}
|
147
147
|
</DTCS>
|
148
|
+
{%- if dop.linked_dtc_dops_raw %}
|
149
|
+
<LINKED-DTC-DOPS>
|
150
|
+
{%- for linked_dtc_dop in dop.linked_dtc_dops_raw %}
|
151
|
+
<LINKED-DTC-DOP>
|
152
|
+
{%- if linked_dtc_dop.not_inherited_dtc_snrefs %}
|
153
|
+
<NOT-INHERITED-DTC-SNREFS>
|
154
|
+
{%- for ni_snref in linked_dtc_dop.not_inherited_dtc_snrefs %}
|
155
|
+
<NOT-INHERITED-DTC-SNREF SHORT-NAME="{{ni_snref}}" />
|
156
|
+
{%- endfor %}
|
157
|
+
</NOT-INHERITED-DTC-SNREFS>
|
158
|
+
{%- endif %}
|
159
|
+
<DTC-DOP-REF ID-REF="{{linked_dtc_dop.dtc_dop_ref.ref_id}}" />
|
160
|
+
</LINKED-DTC-DOP>
|
161
|
+
{%- endfor %}
|
162
|
+
</LINKED-DTC-DOPS>
|
163
|
+
{%- endif %}
|
148
164
|
</DTC-DOP>
|
149
165
|
{%- endmacro -%}
|
odxtools/uds.py
CHANGED
@@ -3,8 +3,6 @@ from enum import IntEnum
|
|
3
3
|
from itertools import chain
|
4
4
|
from typing import Optional
|
5
5
|
|
6
|
-
from deprecation import deprecated
|
7
|
-
|
8
6
|
import odxtools.obd as obd
|
9
7
|
|
10
8
|
|
@@ -170,9 +168,3 @@ def is_response_pending(telegram_payload: bytes, request_sid: Optional[int] = No
|
|
170
168
|
|
171
169
|
# if all of the above applies, we received a "stay tuned" response
|
172
170
|
return True
|
173
|
-
|
174
|
-
|
175
|
-
# previous versions of odxtools had a typo here. hit happens!
|
176
|
-
@deprecated(details="use is_response_pending()") # type: ignore[misc]
|
177
|
-
def is_reponse_pending(telegram_payload: bytes, request_sid: Optional[int] = None) -> bool:
|
178
|
-
return is_response_pending(telegram_payload, request_sid)
|
odxtools/version.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: odxtools
|
3
|
-
Version:
|
3
|
+
Version: 9.0.0
|
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>
|
@@ -23,27 +23,26 @@ Requires-Python: >=3.8
|
|
23
23
|
Description-Content-Type: text/markdown
|
24
24
|
License-File: LICENSE
|
25
25
|
Requires-Dist: bitstruct>=8.17
|
26
|
-
Requires-Dist:
|
26
|
+
Requires-Dist: argparse_addons>=0.12
|
27
27
|
Requires-Dist: jinja2>=3.1
|
28
28
|
Requires-Dist: python-can>=4.2
|
29
29
|
Requires-Dist: markdownify>=0.11
|
30
30
|
Requires-Dist: deprecation>=2.1
|
31
31
|
Requires-Dist: packaging
|
32
|
-
Requires-Dist: tabulate>=0.9
|
33
32
|
Requires-Dist: rich>=13.7
|
34
|
-
Requires-Dist:
|
35
|
-
Provides-Extra: all
|
36
|
-
Requires-Dist: odxtools[browse-tool,examples,test]; extra == "all"
|
33
|
+
Requires-Dist: typing_extensions>=4.9
|
37
34
|
Provides-Extra: browse-tool
|
38
35
|
Requires-Dist: InquirerPy>=0.3.4; extra == "browse-tool"
|
39
|
-
Provides-Extra: examples
|
40
|
-
Requires-Dist: can-isotp>=1.9; extra == "examples"
|
41
36
|
Provides-Extra: test
|
42
37
|
Requires-Dist: mypy>=1.5; extra == "test"
|
43
38
|
Requires-Dist: types-tabulate>=0.9.0.3; extra == "test"
|
44
39
|
Requires-Dist: ruff>=0.0.290; extra == "test"
|
45
40
|
Requires-Dist: pytest>=7.4; extra == "test"
|
46
41
|
Requires-Dist: coverage>=7.3; extra == "test"
|
42
|
+
Provides-Extra: examples
|
43
|
+
Requires-Dist: can-isotp>=1.9; extra == "examples"
|
44
|
+
Provides-Extra: all
|
45
|
+
Requires-Dist: odxtools[browse-tool,examples,test]; extra == "all"
|
47
46
|
|
48
47
|
<!-- SPDX-License-Identifier: MIT -->
|
49
48
|
[](https://pypi.org/project/odxtools)
|
@@ -4,7 +4,8 @@ odxtools/additionalaudience.py,sha256=Xjy_PhTfTV23oAMvml5XeZw3ex8xssIhgRseSsxKcx
|
|
4
4
|
odxtools/admindata.py,sha256=ue5MnYJK_jxNq6Okxy4aGtH15uBAnWXIjMBFSh36Q3g,1879
|
5
5
|
odxtools/audience.py,sha256=_O6UPKnrDbwMMKRnCJ5b8M3_I2jU5jMR6Ss5zLzk9yM,3361
|
6
6
|
odxtools/basecomparam.py,sha256=VxpIsTr6-S4e8Vw72hJXSLUFU5TvHy5CM0sweVL-ZWE,2384
|
7
|
-
odxtools/basicstructure.py,sha256=
|
7
|
+
odxtools/basicstructure.py,sha256=GcyZuasaH62JcINgyeD300N297q7_LP6iMfDy8fwzMg,5071
|
8
|
+
odxtools/codec.py,sha256=2aTfrQc0-cNuPAfXeDDyjxXAHjBJ1xy3ELCVeA9UQP0,8108
|
8
9
|
odxtools/commrelation.py,sha256=Gh3CqMuF9rS0X107oxUkISNT2VWDZVPCpOSu54q7hcs,4793
|
9
10
|
odxtools/companydata.py,sha256=o8vRONHfzmon3Ws0LLKX3-9Och34Uu91aAmBnNg2N34,2539
|
10
11
|
odxtools/companydocinfo.py,sha256=fcceuYX8eTKhVhtmji6yiMRi6gtqPAJdi5kpo-wyL_8,2267
|
@@ -32,8 +33,8 @@ odxtools/diagnostictroublecode.py,sha256=jKtO8JqU0HRpeSyrcHn4s21N4Jj-p19WVP-qw2H
|
|
32
33
|
odxtools/diagservice.py,sha256=y1_qKI7kJXDWpjpw91loIdf-K7Ozo45BsYiOhVYGuXg,10291
|
33
34
|
odxtools/diagvariable.py,sha256=KUyRCV-H5xKITWYk9wxDnaS_N2nwDFGQzHaQRfNndKA,3829
|
34
35
|
odxtools/docrevision.py,sha256=m57a4lCWeR6QvNNxtwUNpLXAMgSq29ks1HorxoipFVk,2698
|
35
|
-
odxtools/dopbase.py,sha256=
|
36
|
-
odxtools/dtcdop.py,sha256=
|
36
|
+
odxtools/dopbase.py,sha256=NCTTq2NF4DJI9nUAwBoa79IBgBjQtWo4V0WvkxuTx5g,2616
|
37
|
+
odxtools/dtcdop.py,sha256=3H0jSH6EHOA0-UJ9GcJwJuBCCciPhxZsz_dfRnNYF7A,11560
|
37
38
|
odxtools/dynamicendmarkerfield.py,sha256=Q7KKOBNSrAg5cehEP3i4YTPiqz5UetEIJDGah608DDk,5559
|
38
39
|
odxtools/dynamiclengthfield.py,sha256=Us0qRvkRPId7xSNKrYdsr1AhVFdTBezRMCBhXl98E00,5273
|
39
40
|
odxtools/dyndefinedspec.py,sha256=efvUG2kMUdwfmMG5qxGHzMSZ5CxdSJhmtzHecopnpHg,7610
|
@@ -49,15 +50,15 @@ odxtools/exceptions.py,sha256=ZApQkhOJ9gn4jk0uO1wmULn5PhNEl1aMYMSHDoXihh0,2714
|
|
49
50
|
odxtools/field.py,sha256=pdQpWxybPsiQ4oFKtvnjIEcQXV2WD0qH-NnBV54KMcI,3860
|
50
51
|
odxtools/functionalclass.py,sha256=IfhxKd02WNGftjSMyBJ8RsxVZgTBxzUM0h6EKHVrrxY,951
|
51
52
|
odxtools/globals.py,sha256=P6YbgyTSWHMw3sk5cEzsCvVaLrTiakLvewTgySb1jLo,139
|
52
|
-
odxtools/inputparam.py,sha256
|
53
|
+
odxtools/inputparam.py,sha256=-9BTmw8BjCM-zM7VOy30O220XKs7-GKRX032wjWGe3U,1667
|
53
54
|
odxtools/internalconstr.py,sha256=QKEkaOcrFoL9xID-oHWWkeg-vtcPV6RFOW1fX2K3pwg,1363
|
54
55
|
odxtools/isotp_state_machine.py,sha256=O6v29IK7p_4gFqrr-fahnbp9Qmo78EEQfEwRsA_Vfjw,13339
|
55
|
-
odxtools/leadinglengthinfotype.py,sha256=
|
56
|
+
odxtools/leadinglengthinfotype.py,sha256=RnxA6On49hy1-SZ8GFOx1wwfNDjXo4zG1GXKJp_gcBM,3865
|
56
57
|
odxtools/library.py,sha256=E_A6K6jcEoUdXh4h4sQILj7_JM-6X5OUUWSM47G69CU,2067
|
57
58
|
odxtools/loadfile.py,sha256=hi8jVE7B1G9gklsb7MrGrp4aOAI65j0kNwvDeEEEN2k,1744
|
58
59
|
odxtools/matchingparameter.py,sha256=2cqaxFCZ28GvvUKCIM-jas3ae4eYGbULbkBlb3aH5RY,2232
|
59
|
-
odxtools/message.py,sha256=
|
60
|
-
odxtools/minmaxlengthtype.py,sha256=
|
60
|
+
odxtools/message.py,sha256=PDY-CDgTmJA6dyNacCV57M-p_ETtR8MdU7WZGEew4zM,855
|
61
|
+
odxtools/minmaxlengthtype.py,sha256=GQUici8NS9_znw8qiTKWHO2Ky-5tr3SJmdrVKtDd__M,8917
|
61
62
|
odxtools/modification.py,sha256=oyyFsYHixy6XHOdqqTCx3IIkTAKlSN9wxBpNpvhUaJA,838
|
62
63
|
odxtools/multiplexer.py,sha256=flHlorv9grEMj8pNAWQJNrxhptnDxSsFERO7gpKYRME,10235
|
63
64
|
odxtools/multiplexercase.py,sha256=qfxWJzfJLYAsnhFGheUWDsUaIte2dSRJ0nadiN9SXDw,3176
|
@@ -68,9 +69,9 @@ odxtools/negoutputparam.py,sha256=u2IhJvy6n19t3nyADGG0H0XTm7JNdQ0-95FawGAdtiE,13
|
|
68
69
|
odxtools/obd.py,sha256=WsUbhdonqQJtxf972CUdYL78AMMTVjMQhoCJbaZhRIo,1860
|
69
70
|
odxtools/odxlink.py,sha256=7_O8pZB9prgjN-2rJHPMkce1RwV7PT988EmOONgxfng,9414
|
70
71
|
odxtools/odxtypes.py,sha256=MKfusVSYma_OZYmxCVm-kx7WBK8OHjeU3DnJhet4zeg,8055
|
71
|
-
odxtools/outputparam.py,sha256=
|
72
|
-
odxtools/parameterinfo.py,sha256=
|
73
|
-
odxtools/paramlengthinfotype.py,sha256=
|
72
|
+
odxtools/outputparam.py,sha256=reBgrSE7fORxfSVSTuim0FyxHrE6OsQOGIFUjhn5FlE,1394
|
73
|
+
odxtools/parameterinfo.py,sha256=PzhIZyYINNxykecPQWnRH1Ywrfgxx31DVax2VNN__CY,11183
|
74
|
+
odxtools/paramlengthinfotype.py,sha256=QMXGN5fd834abUvwql6j04ZiIbqixVHkQACaOx4xyH0,4699
|
74
75
|
odxtools/parentref.py,sha256=kcY3VMyVaIUWD0iVNX8sD9qeI4peU8gijboquu0zD7E,3751
|
75
76
|
odxtools/physicaldimension.py,sha256=CEH7Ura4gqsqlBUxBW08ea9Pxh_Od8JruYQ8o9qOGME,3269
|
76
77
|
odxtools/physicaltype.py,sha256=oYjOhdrTVCJcLLBYgy6pxKsZHpuwm1vZ8svwSjsUB6E,2699
|
@@ -78,14 +79,14 @@ odxtools/progcode.py,sha256=Cx8ziCmQm2OfhinAuRrFrMuoThU7hgA6zNQKAT-AT0A,2276
|
|
78
79
|
odxtools/protstack.py,sha256=nb2RR4OEaGX6lJ6drHejJU-tkB1p0Ok0KLZhNMTdsEc,2012
|
79
80
|
odxtools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
81
|
odxtools/relateddoc.py,sha256=zb5Ea9vkd31kxTP4s5_PLF3LuCoUcG8rgLckStHVRDc,1301
|
81
|
-
odxtools/request.py,sha256=
|
82
|
-
odxtools/response.py,sha256
|
82
|
+
odxtools/request.py,sha256=iX3D4VX-ctUEk0WpvQHr7UQHalhHkSeR9DLFbVoEQws,4902
|
83
|
+
odxtools/response.py,sha256=aJDoe-ZAKI4Zui4VbwnWLLb9g8Y_SgVZ0XFH7jYZRVI,5505
|
83
84
|
odxtools/scaleconstr.py,sha256=xSH8kmld5Gg1lVgjLWTZINEtDn2a3HemVqlXiHsl4Fs,1783
|
84
85
|
odxtools/servicebinner.py,sha256=TId3D3XHa98zbyC1sGWacQUlIZ5e2Egklelv6_Ra2II,3861
|
85
86
|
odxtools/singleecujob.py,sha256=rlpReb9816abYX0oihYXMkIQo8hnzbUkZqkTvX-IRZ4,3920
|
86
87
|
odxtools/snrefcontext.py,sha256=5ZbrZiX1gw6LC6o62RPuxzSo4tDR2LqRQ9w9Vi57FA8,953
|
87
88
|
odxtools/specialdata.py,sha256=5-1D_6dcEmi-TodCzCoBZK7gqeDY-cuRe1ybkTh4rBY,1033
|
88
|
-
odxtools/specialdatagroup.py,sha256=
|
89
|
+
odxtools/specialdatagroup.py,sha256=9pNCA89kGwhBiVN9nC_03ASHZT6q3FL8l2CxRf9jwU0,3070
|
89
90
|
odxtools/specialdatagroupcaption.py,sha256=pIa1l6EXVDXBisUtRkn6hTzAcUXFnXJoWstesayLfME,987
|
90
91
|
odxtools/standardlengthtype.py,sha256=SQBgdHIc9msFCBuS9GYyDeKE8bK1PgSvIkVEZSVoBcU,5225
|
91
92
|
odxtools/state.py,sha256=d--nCbV1qBmOmiTmUrQjDC_naispOM0a-H1AvCe5_xI,898
|
@@ -98,24 +99,24 @@ odxtools/swvariable.py,sha256=tp8XJUokYOcAUkrQLM92IYDf7evIefwZR_DgMm33iYQ,622
|
|
98
99
|
odxtools/table.py,sha256=zgpVveH8neSNhdcsPp0jG4f6H00M0NKCuAME8MSrf-Q,4024
|
99
100
|
odxtools/tablerow.py,sha256=hOi7FCX7TiCRxErCD1hKU6h2hT5_8V3ghtt8dJXOiQY,6307
|
100
101
|
odxtools/teammember.py,sha256=xn1y6k42zQoyM2SlEkZ8UFyiqBvVI5FNZAm_xt2Vt_Y,1772
|
101
|
-
odxtools/uds.py,sha256=
|
102
|
+
odxtools/uds.py,sha256=JN_PPne3XNtanGx69-lR4oxOGqDtM05EFcX2F6DjxYU,5569
|
102
103
|
odxtools/unit.py,sha256=PLMErZ6N9oA4z3fuwYsmqMajeVHFNtKhC-w7IzaTfvw,3588
|
103
104
|
odxtools/unitgroup.py,sha256=_WNpnYFmkiHQnOY8XhIviiQLXziY3kplH--7ufAWXyI,2067
|
104
105
|
odxtools/unitspec.py,sha256=RMdEQoLrPhGt9vo32fkwbTqymicHFkFQnydFoi3uBog,2924
|
105
106
|
odxtools/utils.py,sha256=PJFXkG74BzoheurrDYOwHZ6EuIcr1sdxf1tQGk6zSgs,1122
|
106
107
|
odxtools/variablegroup.py,sha256=--5sMDOMUg4I3hFyoVOFcGCTOrctrrMADdmH3Mn4wHk,848
|
107
|
-
odxtools/version.py,sha256=
|
108
|
+
odxtools/version.py,sha256=JUhnhMDi5G11GnJKO5jPzthe0-jnAAo_Og_J2g7KSgc,411
|
108
109
|
odxtools/writepdxfile.py,sha256=ZEoNkSxheqnXm836-HOpd04O6ipMXYKFzXZy6PM0YLc,7813
|
109
110
|
odxtools/xdoc.py,sha256=gDq-8l8x-Tj1ZJOttPxZchcO5_jEPwcXxMgT29VgTS0,1433
|
110
111
|
odxtools/cli/__init__.py,sha256=T7ano_FIyzBASxYpmcA5VJXU5bQLIy_Qk0HE_SDKelY,106
|
111
112
|
odxtools/cli/_parser_utils.py,sha256=p0L9NYYnml5ydfD22oC04EMhz8PKHgU40GPOPkybZwg,1116
|
112
|
-
odxtools/cli/_print_utils.py,sha256=
|
113
|
-
odxtools/cli/browse.py,sha256=
|
114
|
-
odxtools/cli/compare.py,sha256=
|
113
|
+
odxtools/cli/_print_utils.py,sha256=NWAnlOqIuMN4obAs_b0EcpnVHumMej6yAskK_bBsxF4,12348
|
114
|
+
odxtools/cli/browse.py,sha256=Hkf269s7Tg8vWq0WDRzZoU65zGShdddgOo5vLnjMB6I,16537
|
115
|
+
odxtools/cli/compare.py,sha256=mXF7C0rBHnRn9l9_jYNgnoOchSbfUh5XshnCY02UBr0,37485
|
115
116
|
odxtools/cli/decode.py,sha256=7tAUUyfJPaKNwVJfFZ61qGVc97i03wgb_wr2pAH_JWQ,4315
|
116
117
|
odxtools/cli/dummy_sub_parser.py,sha256=F2N_lRrxuU-beORcyrJ4bdbRsQl42-aPEBtyPJ74Tvo,1466
|
117
118
|
odxtools/cli/find.py,sha256=GZKzvsOus1Zv8n3nAG-ZsPgWJpB7z3wNxeqKtAL5mAo,4394
|
118
|
-
odxtools/cli/list.py,sha256=
|
119
|
+
odxtools/cli/list.py,sha256=fQH1gK3ajUhbp9-giIZk8qIZ-57FtADU1EggXo2yH4I,8980
|
119
120
|
odxtools/cli/main.py,sha256=_zPCU6N2ofpj_jQuQ_BU5EafBpMW0srhahZI8BgAM-0,2335
|
120
121
|
odxtools/cli/snoop.py,sha256=z8USSpmz18VAvkGpzepeaOlVJhi-8aeW10XRylsvZLU,10610
|
121
122
|
odxtools/compumethods/compucodecompumethod.py,sha256=cCgCCuFcu2K9QuW0ZNbfp6AQdgPy9QE7UnmRa6Iet28,2459
|
@@ -149,7 +150,7 @@ odxtools/diaglayers/ecuvariant.py,sha256=OsLWg-dx6OJ_OPuYcgoTJuDXEReaJclDRbU5YKq
|
|
149
150
|
odxtools/diaglayers/ecuvariantraw.py,sha256=bKlqFnBWkKdkM9EY5rFGOno3ClIVQNhgBoU5DseNnRc,4944
|
150
151
|
odxtools/diaglayers/functionalgroup.py,sha256=o5bUGGDYisr7CjHZZh83fokA80f0s0zpHC_501cg-f0,4093
|
151
152
|
odxtools/diaglayers/functionalgroupraw.py,sha256=H0-_XXlFTV8POGnh0S7CVBOKKQuyKHMB9lEyoAHuG_A,3963
|
152
|
-
odxtools/diaglayers/hierarchyelement.py,sha256=
|
153
|
+
odxtools/diaglayers/hierarchyelement.py,sha256=kYGKyn6ZdThOeC58m31ESLjpZ1YZ532tLDxahWvXxxo,36708
|
153
154
|
odxtools/diaglayers/hierarchyelementraw.py,sha256=IdFbnZIw7QGAMh3MW5N9vq5QNGBBAs5foCnbvotfqhQ,2058
|
154
155
|
odxtools/diaglayers/protocol.py,sha256=ypIhfySB6F16Y48XLZIPL36GfrKUznTCmiJ0ROIxYJo,2083
|
155
156
|
odxtools/diaglayers/protocolraw.py,sha256=Wf1q2l11mxw61gnveVVEZqgR0yj2RCxoaB3QLzdZQWc,3251
|
@@ -159,7 +160,7 @@ odxtools/parameters/dynamicparameter.py,sha256=mdZx12XbhTSYVVuXEsPYRll3zaHjbHIYI
|
|
159
160
|
odxtools/parameters/lengthkeyparameter.py,sha256=WSpSIbxFmEwBov6Jj5Ubj9gMr46OgrdNi5-UaahCjAo,5270
|
160
161
|
odxtools/parameters/matchingrequestparameter.py,sha256=VNYIpmP_Yt_pzMHPgGWZk1XYH5liIdyawNIwIR1Cbvw,2897
|
161
162
|
odxtools/parameters/nrcconstparameter.py,sha256=SjTHQlaBzvyUATyOzSFFWCcdkTeHcaoKO54kTomzb6Y,4823
|
162
|
-
odxtools/parameters/parameter.py,sha256=
|
163
|
+
odxtools/parameters/parameter.py,sha256=0WhCvULPzvZ07g9Nz-0NyHt1Y8E8Q4YsW0VF-EUg2ow,6145
|
163
164
|
odxtools/parameters/parameterwithdop.py,sha256=k7yJABRmHQTZNTEEPjyq3tBXJD4Aey365HpP7SGsEgk,3283
|
164
165
|
odxtools/parameters/physicalconstantparameter.py,sha256=2iC6EKVJZVHwVVmd4h8KJ6OLc7B5QOUawivQMqWPCRA,3593
|
165
166
|
odxtools/parameters/reservedparameter.py,sha256=8XQocU3_ExRZzXYEkITj535TTEUCNK87wIkrUTizgvI,1989
|
@@ -180,7 +181,7 @@ odxtools/templates/macros/printCompanyData.xml.jinja2,sha256=jcNmQBOGDw7wcKdam72
|
|
180
181
|
odxtools/templates/macros/printComparam.xml.jinja2,sha256=e3hPCswAymJteQIUNoc7FOwsK_FrbJOvJooWdEx_vuQ,2408
|
181
182
|
odxtools/templates/macros/printComparamRef.xml.jinja2,sha256=rBhrdUnp605fsUN9SaljpyaAojzaLBvTbkOuduKod18,1274
|
182
183
|
odxtools/templates/macros/printCompuMethod.xml.jinja2,sha256=9DilxMWnqOsXu7bNNlDqls-lEqcr_GPzhZum8rzDJP0,4430
|
183
|
-
odxtools/templates/macros/printDOP.xml.jinja2,sha256=
|
184
|
+
odxtools/templates/macros/printDOP.xml.jinja2,sha256=SAmp1okfyecCmHf4XiF2rao78-TIzmPQW4azBtjbu9A,5709
|
184
185
|
odxtools/templates/macros/printDescription.xml.jinja2,sha256=7jcYEIXr7hbbKqSvIUIgXaQSXV4dKAR9UhY352BZct8,452
|
185
186
|
odxtools/templates/macros/printDiagComm.xml.jinja2,sha256=_SByYBYzPG9t7VNnAohFAXsgng9VrQcSacXH923wRzY,2239
|
186
187
|
odxtools/templates/macros/printDiagLayer.xml.jinja2,sha256=gQQhNGpVQRfVichgJdwBS6gMvoLfi-nlGat9imlW62Y,6901
|
@@ -217,9 +218,9 @@ odxtools/templates/macros/printStructure.xml.jinja2,sha256=CJUPZv_9lko63C5fNpOn5
|
|
217
218
|
odxtools/templates/macros/printSubComponent.xml.jinja2,sha256=ETo-k0K7px5nu9kgVjgDnjPoy8rYRfzq5ojvsZhM3Rw,3416
|
218
219
|
odxtools/templates/macros/printTable.xml.jinja2,sha256=5DQjjJ-UxQ75ntov0S0LGnm_V7YWtKadBpNbmV1aBb8,1501
|
219
220
|
odxtools/templates/macros/printUnitSpec.xml.jinja2,sha256=opS6_Gr94WlAtREEyX4sLo-D-17Gni9Wvr3y1nfVgSA,2715
|
220
|
-
odxtools-
|
221
|
-
odxtools-
|
222
|
-
odxtools-
|
223
|
-
odxtools-
|
224
|
-
odxtools-
|
225
|
-
odxtools-
|
221
|
+
odxtools-9.0.0.dist-info/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
|
222
|
+
odxtools-9.0.0.dist-info/METADATA,sha256=tWTGI9ZkJVc1N19f-GHHD1VpCnDl7s1g-LSUA1fmJPE,44055
|
223
|
+
odxtools-9.0.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
224
|
+
odxtools-9.0.0.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
|
225
|
+
odxtools-9.0.0.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
|
226
|
+
odxtools-9.0.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|