odxtools 6.7.1__py3-none-any.whl → 7.1.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.
Files changed (60) hide show
  1. odxtools/basicstructure.py +102 -112
  2. odxtools/dataobjectproperty.py +3 -7
  3. odxtools/decodestate.py +1 -13
  4. odxtools/diagcodedtype.py +9 -96
  5. odxtools/diagcomm.py +11 -3
  6. odxtools/diagdatadictionaryspec.py +14 -14
  7. odxtools/diaglayer.py +52 -1
  8. odxtools/diaglayerraw.py +13 -7
  9. odxtools/diagservice.py +12 -16
  10. odxtools/dopbase.py +5 -8
  11. odxtools/dtcdop.py +21 -19
  12. odxtools/dynamicendmarkerfield.py +119 -0
  13. odxtools/dynamiclengthfield.py +39 -29
  14. odxtools/dynenddopref.py +38 -0
  15. odxtools/encodestate.py +188 -23
  16. odxtools/endofpdufield.py +33 -18
  17. odxtools/environmentdata.py +8 -1
  18. odxtools/environmentdatadescription.py +21 -15
  19. odxtools/field.py +4 -3
  20. odxtools/leadinglengthinfotype.py +25 -12
  21. odxtools/matchingparameter.py +2 -2
  22. odxtools/minmaxlengthtype.py +36 -26
  23. odxtools/multiplexer.py +42 -23
  24. odxtools/multiplexercase.py +3 -3
  25. odxtools/multiplexerdefaultcase.py +7 -3
  26. odxtools/nameditemlist.py +14 -0
  27. odxtools/odxlink.py +38 -4
  28. odxtools/odxtypes.py +20 -2
  29. odxtools/parameterinfo.py +126 -40
  30. odxtools/parameters/codedconstparameter.py +17 -13
  31. odxtools/parameters/dynamicparameter.py +5 -4
  32. odxtools/parameters/lengthkeyparameter.py +66 -17
  33. odxtools/parameters/matchingrequestparameter.py +23 -11
  34. odxtools/parameters/nrcconstparameter.py +42 -22
  35. odxtools/parameters/parameter.py +35 -42
  36. odxtools/parameters/parameterwithdop.py +15 -22
  37. odxtools/parameters/physicalconstantparameter.py +16 -16
  38. odxtools/parameters/reservedparameter.py +5 -2
  39. odxtools/parameters/systemparameter.py +3 -2
  40. odxtools/parameters/tableentryparameter.py +3 -2
  41. odxtools/parameters/tablekeyparameter.py +88 -39
  42. odxtools/parameters/tablestructparameter.py +45 -44
  43. odxtools/parameters/valueparameter.py +16 -17
  44. odxtools/paramlengthinfotype.py +30 -22
  45. odxtools/request.py +9 -0
  46. odxtools/response.py +5 -13
  47. odxtools/standardlengthtype.py +51 -13
  48. odxtools/statechart.py +5 -9
  49. odxtools/statetransition.py +3 -8
  50. odxtools/staticfield.py +30 -20
  51. odxtools/tablerow.py +5 -3
  52. odxtools/templates/macros/printDynamicEndmarkerField.xml.jinja2 +16 -0
  53. odxtools/templates/macros/printVariant.xml.jinja2 +8 -0
  54. odxtools/version.py +2 -2
  55. {odxtools-6.7.1.dist-info → odxtools-7.1.0.dist-info}/METADATA +1 -1
  56. {odxtools-6.7.1.dist-info → odxtools-7.1.0.dist-info}/RECORD +60 -57
  57. {odxtools-6.7.1.dist-info → odxtools-7.1.0.dist-info}/LICENSE +0 -0
  58. {odxtools-6.7.1.dist-info → odxtools-7.1.0.dist-info}/WHEEL +0 -0
  59. {odxtools-6.7.1.dist-info → odxtools-7.1.0.dist-info}/entry_points.txt +0 -0
  60. {odxtools-6.7.1.dist-info → odxtools-7.1.0.dist-info}/top_level.txt +0 -0
@@ -5,7 +5,7 @@ from xml.etree import ElementTree
5
5
 
6
6
  from .element import IdentifiableElement
7
7
  from .exceptions import odxrequire
8
- from .odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId
8
+ from .odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId, resolve_snref
9
9
  from .state import State
10
10
  from .utils import dataclass_fields_asdict
11
11
 
@@ -55,10 +55,5 @@ class StateTransition(IdentifiableElement):
55
55
  # chart. To mitigate this a bit, the non-standard parameters are
56
56
  # keyword-only...
57
57
  def _resolve_snrefs(self, diag_layer: "DiagLayer", *, states: Iterable[State]) -> None:
58
- self._source_state: State
59
- self._target_state: State
60
- for st in states:
61
- if st.short_name == self.source_snref:
62
- self._source_state = st
63
- if st.short_name == self.target_snref:
64
- self._target_state = st
58
+ self._source_state = resolve_snref(self.source_snref, states, State)
59
+ self._target_state = resolve_snref(self.target_snref, states, State)
odxtools/staticfield.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # SPDX-License-Identifier: MIT
2
2
  from dataclasses import dataclass
3
- from typing import TYPE_CHECKING, Any, Dict, List
3
+ from typing import TYPE_CHECKING, Any, Dict, List, Sequence
4
4
  from xml.etree import ElementTree
5
5
 
6
6
  from typing_extensions import override
@@ -48,36 +48,39 @@ class StaticField(Field):
48
48
  super()._resolve_snrefs(diag_layer)
49
49
 
50
50
  @override
51
- def convert_physical_to_bytes(
52
- self,
53
- physical_value: ParameterValue,
54
- encode_state: EncodeState,
55
- bit_position: int = 0,
56
- ) -> bytes:
51
+ def encode_into_pdu(self, physical_value: ParameterValue, encode_state: EncodeState) -> None:
52
+
57
53
  if not isinstance(physical_value,
58
- (tuple, list)) or len(physical_value) != self.fixed_number_of_items:
54
+ Sequence) or len(physical_value) != self.fixed_number_of_items:
59
55
  odxraise(f"Value for static field '{self.short_name}' "
60
56
  f"must be a list of size {self.fixed_number_of_items}")
61
57
 
62
- result = bytearray()
63
- for val in physical_value:
58
+ orig_is_end_of_pdu = encode_state.is_end_of_pdu
59
+ encode_state.is_end_of_pdu = False
60
+ for i, val in enumerate(physical_value):
64
61
  if not isinstance(val, dict):
65
62
  odxraise(f"The individual parameter values for static field '{self.short_name}' "
66
63
  f"must be dictionaries for structure '{self.structure.short_name}'")
67
64
 
68
- data = self.structure.convert_physical_to_bytes(val, encode_state)
65
+ if i == len(physical_value) - 1:
66
+ encode_state.is_end_of_pdu = orig_is_end_of_pdu
69
67
 
70
- if len(data) > self.item_byte_size:
71
- odxraise(f"Insufficient item byte size for static field {self.short_name}: "
72
- f"Is {self.item_byte_size} bytes, but need at least {len(data)} bytes")
73
- data = data[:self.item_byte_size]
74
- elif len(data) < self.item_byte_size:
68
+ pos_before = encode_state.cursor_byte_position
69
+ self.structure.encode_into_pdu(val, encode_state)
70
+ pos_after = encode_state.cursor_byte_position
71
+
72
+ if pos_after - pos_before > self.item_byte_size:
73
+ odxraise(
74
+ f"Insufficient item byte size for static field {self.short_name}: "
75
+ f"Is {self.item_byte_size} bytes, but need at least {pos_after - pos_before} bytes"
76
+ )
77
+ encode_state.cursor_byte_position = pos_before + self.item_byte_size
78
+ elif pos_after - pos_before < self.item_byte_size:
75
79
  # add some padding bytes
76
- data = data.ljust(self.item_byte_size, b'\x00')
80
+ encode_state.emplace_bytes(b'\x00' * (self.item_byte_size -
81
+ (pos_after - pos_before)))
77
82
 
78
- result += data
79
-
80
- return result
83
+ encode_state.is_end_of_pdu = orig_is_end_of_pdu
81
84
 
82
85
  @override
83
86
  def decode_from_pdu(self, decode_state: DecodeState) -> ParameterValue:
@@ -85,6 +88,10 @@ class StaticField(Field):
85
88
  odxassert(decode_state.cursor_bit_position == 0,
86
89
  "No bit position can be specified for static length fields!")
87
90
 
91
+ orig_origin = decode_state.origin_byte_position
92
+ orig_cursor = decode_state.cursor_byte_position
93
+ decode_state.origin_byte_position = decode_state.cursor_byte_position
94
+
88
95
  result: List[ParameterValue] = []
89
96
  for _ in range(self.fixed_number_of_items):
90
97
  orig_cursor = decode_state.cursor_byte_position
@@ -98,4 +105,7 @@ class StaticField(Field):
98
105
 
99
106
  decode_state.cursor_byte_position = orig_cursor + self.item_byte_size
100
107
 
108
+ decode_state.origin_byte_position = orig_origin
109
+ decode_state.cursor_byte_position = max(orig_cursor, decode_state.cursor_byte_position)
110
+
101
111
  return result
odxtools/tablerow.py CHANGED
@@ -9,7 +9,7 @@ from .dataobjectproperty import DataObjectProperty
9
9
  from .dtcdop import DtcDop
10
10
  from .element import IdentifiableElement
11
11
  from .exceptions import odxassert, odxraise, odxrequire
12
- from .odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId, OdxLinkRef
12
+ from .odxlink import OdxDocFragment, OdxLinkDatabase, OdxLinkId, OdxLinkRef, resolve_snref
13
13
  from .odxtypes import AtomicOdxType
14
14
  from .specialdatagroup import SpecialDataGroup
15
15
  from .utils import dataclass_fields_asdict
@@ -128,9 +128,11 @@ class TableRow(IdentifiableElement):
128
128
  ddd_spec = diag_layer.diag_data_dictionary_spec
129
129
 
130
130
  if self.structure_snref is not None:
131
- self._structure = odxrequire(ddd_spec.structures.get(self.structure_snref))
131
+ self._structure = resolve_snref(self.structure_snref, ddd_spec.structures,
132
+ BasicStructure)
132
133
  if self.dop_snref is not None:
133
- self._dop = odxrequire(ddd_spec.data_object_props.get(self.dop_snref))
134
+ self._dop = resolve_snref(self.dop_snref, ddd_spec.data_object_props,
135
+ DataObjectProperty)
134
136
 
135
137
  for sdg in self.sdgs:
136
138
  sdg._resolve_snrefs(diag_layer)
@@ -0,0 +1,16 @@
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 printStaticField(demf) -%}
9
+ <DYNAMIC-ENDMARKER-FIELD ID="{{demf.odx_id.local_id}}">
10
+ {{ peid.printElementIdSubtags(demf)|indent(1) }}
11
+ <BASIC-STRUCTURE-REF ID-REF="{{demf.structure_ref.ref_id}}" />
12
+ <DYN-END-DOP-REF ID-REF="{{demf.dyn_end_dop_ref.ref_id}}">
13
+ <TERMINATION-VALUE>{{demf.dyn_end_dop_ref.termination_value_raw}}</TERMINATION-VALUE>
14
+ </DYN-END-DOP-REF>
15
+ </DYNAMIC-ENDMARKER-FIELD>
16
+ {%- endmacro -%}
@@ -11,6 +11,7 @@
11
11
  {%- import('macros/printEndOfPdu.xml.jinja2') as peopdu %}
12
12
  {%- import('macros/printStaticField.xml.jinja2') as psf %}
13
13
  {%- import('macros/printDynamicLengthField.xml.jinja2') as pdlf %}
14
+ {%- import('macros/printDynamicEndmarkerField.xml.jinja2') as pdemf %}
14
15
  {%- import('macros/printMux.xml.jinja2') as pm %}
15
16
  {%- import('macros/printEnvData.xml.jinja2') as ped %}
16
17
  {%- import('macros/printEnvDataDesc.xml.jinja2') as pedd %}
@@ -82,6 +83,13 @@
82
83
  {%- endfor %}
83
84
  </DYNAMIC-LENGTH-FIELDS>
84
85
  {%- endif %}
86
+ {%- if ddds.dynamic_endmarker_fields %}
87
+ <DYNAMIC-ENDMARKER-FIELDS>
88
+ {%- for demf in ddds.dynamic_endmarker_fields %}
89
+ {{ pdemf.printDynamicEndmarkerField(demf)|indent(3) }}
90
+ {%- endfor %}
91
+ </DYNAMIC-ENDMARKER-FIELDS>
92
+ {%- endif %}
85
93
  {%- if ddds.end_of_pdu_fields %}
86
94
  <END-OF-PDU-FIELDS>
87
95
  {%- for eopdu in ddds.end_of_pdu_fields %}
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 = '6.7.1'
16
- __version_tuple__ = version_tuple = (6, 7, 1)
15
+ __version__ = version = '7.1.0'
16
+ __version_tuple__ = version_tuple = (7, 1, 0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odxtools
3
- Version: 6.7.1
3
+ Version: 7.1.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>
@@ -4,7 +4,7 @@ odxtools/additionalaudience.py,sha256=e08SzJpxkx8Zeb9fiNWWpPuneTA7INCW9qcU335eTn
4
4
  odxtools/admindata.py,sha256=mc7yyK5yGpd1A4Rv2rv9pf9Ja-PNvB_IB1wEaIEbBNU,1919
5
5
  odxtools/audience.py,sha256=6PaZRi_-e5GDN2BZgynLWx03brvw0QgMBcl5N8heO0Y,3324
6
6
  odxtools/basecomparam.py,sha256=TTNUHm5Q8BY56HEmaK3NvDsW3K1LV6bLdxFExMJO1-I,2418
7
- odxtools/basicstructure.py,sha256=onq5Y0AbBrdEhDU-ScbERLBXpw3I_qEATn3rZRHIZBc,13439
7
+ odxtools/basicstructure.py,sha256=CAOEs8jD5OYwXTxTZYgi7tuDk_zfaLGHbEKqSHtAiHM,13262
8
8
  odxtools/companydata.py,sha256=RaxSq0E6kall8wZL8av5HPO9KSXLZpE_hSEIkvpzCw0,2579
9
9
  odxtools/companydocinfo.py,sha256=KLVUA-TvOnHjPYF32W8JAv8Q6LLuo6-x9u3Mj7ewBiM,2294
10
10
  odxtools/companyrevisioninfo.py,sha256=vvozMDtDZg3znZNN6Nx1MqjSsSmXtg9nY-TkF_sIHzk,1390
@@ -21,85 +21,87 @@ odxtools/createcompanydatas.py,sha256=Lkyx5gIGCozaX412GiPRUzjFOa5sZvT1LYOf_ycysd
21
21
  odxtools/createecuvariantpatterns.py,sha256=FXHLGR4M791MRkpU2_keck88hoMYkuyPiCUxuGbUasQ,559
22
22
  odxtools/createsdgs.py,sha256=tPdkPN4cHBWGddMWb7QLvyUIA9boa87da2Aj_2m3C2o,531
23
23
  odxtools/database.py,sha256=030VDfHpvICWP8jagJlRm5z1AM5VC_LlJZydiY3sBw4,6741
24
- odxtools/dataobjectproperty.py,sha256=B5g4OTMCbgy40-KMY1wWTA-Nx1KaqcdwBogq5mWSNxk,6324
25
- odxtools/decodestate.py,sha256=at3ISfhn7AKMJbHxnfuxuxL4sOvdC19t40cEVYOUO-k,4883
24
+ odxtools/dataobjectproperty.py,sha256=JeQUaM2eO_WrZUSlqMJAYk9J0-gK8epz8NqUVOD-Rz8,6146
25
+ odxtools/decodestate.py,sha256=mgr9dmn8dM7jU6Y7en_Bf8lAx4HHMlpsdbVup5qqgzw,4490
26
26
  odxtools/determinenumberofitems.py,sha256=9MlJgWnvGtOLGou1IU5suYdbMesRngyTPSgb7As6LIU,1561
27
- odxtools/diagcodedtype.py,sha256=IWzx_em8aj8KGo1xvwidq6Fk1zJZYxsbXPG9yCsnYLA,7409
28
- odxtools/diagcomm.py,sha256=nS57xwrArzU22jbgJ5io7zpmq2P0Qz8fxnbqb60VIJg,7623
29
- odxtools/diagdatadictionaryspec.py,sha256=v9Tg2C_rjXQGJG1BdrIkYPQYZGxcyTUHxQ6f5BsTEwU,10615
30
- odxtools/diaglayer.py,sha256=9Y-p_qfQbt2Dqoc62RnYfMrm-sEZZX4VB1FQx8XdDcM,45120
27
+ odxtools/diagcodedtype.py,sha256=trrZfgoxnui3AC42XeUzfz2THq-wwnFMPr6AKOqN3YU,3673
28
+ odxtools/diagcomm.py,sha256=NbAijFV_-inBwWtYNK-iNBg2ZaUy2uHUEtydolSyOKs,7921
29
+ odxtools/diagdatadictionaryspec.py,sha256=pBrU7p03-sG877pAqKHovuszRsN8sspU2-xS_AFtHWA,10618
30
+ odxtools/diaglayer.py,sha256=tZWh_jt8e2qsqqRBq6ruwjA6IIvP2-q6cWymVetQSJg,47619
31
31
  odxtools/diaglayercontainer.py,sha256=1Kq6vVp_Bu9qpwN4kdoRU-bm9L5McwcKPBQn1z81RCI,5877
32
- odxtools/diaglayerraw.py,sha256=RMDB-Dv0_bOeju0FuDZ2goB53HOjF97U-qKgel6vVM0,13945
32
+ odxtools/diaglayerraw.py,sha256=4XKMIYS1PQBo-XIC-UohtfZZuPxTNOQ8enn2ODjuY8Y,14307
33
33
  odxtools/diaglayertype.py,sha256=FXL-EVBdrAURuHSHo9OthFuEYEybQO66aMB1o2GxVdI,1340
34
34
  odxtools/diagnostictroublecode.py,sha256=FD1wDdNbA53PAj16JO0NfNgHddQ4csv_ldIwIUBoRwo,2496
35
- odxtools/diagservice.py,sha256=TtY9kN3idjcGjkHWOwncWbltDaSG1X14ZjT-0yqrwBQ,9788
35
+ odxtools/diagservice.py,sha256=2ULG0ssEZJH_XRuNqsLaTCzVWMEemwdhxys3fDSYjyg,9609
36
36
  odxtools/docrevision.py,sha256=NKrOSaoz5GJwi4UXlrGYa1EOhMqZKcOCFT38c5VzU4k,2738
37
- odxtools/dopbase.py,sha256=66q77rZeix5KULIMiLR9hcYwedvByT7vspbbU96riT4,2635
38
- odxtools/dtcdop.py,sha256=YSRe0NUHWEyOHaCkmd3SXQT0WHXcrO3FWNS7Lute-Zc,7504
39
- odxtools/dynamiclengthfield.py,sha256=sS3ZHm4PZjYo-T-UANMRXYtu1xOOuRgl2O_gXAP4WiY,5020
37
+ odxtools/dopbase.py,sha256=UKoPhG8HkaTh2UFXKSMwK-StAnMy9pdZ_IMRtz-gvCs,2520
38
+ odxtools/dtcdop.py,sha256=4VvgwFhXF5HlIedc2ad8cRXIrdW4x27xjJEbpDfaL3g,7456
39
+ odxtools/dynamicendmarkerfield.py,sha256=Yobz-30rjo0cfNyYaXTqiqlf67og92i4W_z0xCtSiaw,4552
40
+ odxtools/dynamiclengthfield.py,sha256=XNpowqfz14OU6YYoP_krCTxRX9SOIQogAPTxEASgQFM,5617
41
+ odxtools/dynenddopref.py,sha256=SYXrmRUQoLWD4UI3WV92oA5rNhxbDuRv6H1MeXeuWhM,1199
40
42
  odxtools/ecuvariantmatcher.py,sha256=FO85WesRmkssSsTrjW8Ehg87FRmv1oHTkH5jPwumWYI,6882
41
43
  odxtools/ecuvariantpattern.py,sha256=Xp2NpS13sVvyOjy2PgxLvXPptAfmYSH_KDIjqYByZHs,863
42
44
  odxtools/element.py,sha256=JLLpie8XmnMrUFR1nX9PUXoBmU60tfoSI5p7-QjCXQE,1209
43
- odxtools/encodestate.py,sha256=8YyqnCrVhcZu_EmE1ZaF3TCycn-IJfkU-dAjSxYeMT4,2131
44
- odxtools/endofpdufield.py,sha256=ibGmi3s_snwJK4zjn8Zl-JtznlJ0oirLE51oYN98iFo,2801
45
- odxtools/environmentdata.py,sha256=r6sUlm0C-DeSbE-WhkLf51O5ja8TquqdW-vdNI4gaDY,1144
46
- odxtools/environmentdatadescription.py,sha256=jnnhca0zgvwVIXJIil8oO4IkfjBLiG6BL_93JWCQJJc,4347
45
+ odxtools/encodestate.py,sha256=f5yIynCU1dGKSlOOL4LMeFqsL6CJGlt3IesT_bwKZ04,9428
46
+ odxtools/endofpdufield.py,sha256=QN1QD1qzxSdQqpXRUByl3scTww_jqEuuceFZq9nL4GA,3511
47
+ odxtools/environmentdata.py,sha256=_wSKhV_NuMG6UPMnpOxz6mVjvrXsd2mtqqT7VKSSxHU,1414
48
+ odxtools/environmentdatadescription.py,sha256=0WvwusNHIK5OBkXOCW_Kd3uunsoqprauRJJEvYLFI2I,4368
47
49
  odxtools/exceptions.py,sha256=FgS11U7ABMnc7T602bE1XMBLj9P0oDwwdpp-L3NafGY,2505
48
- odxtools/field.py,sha256=M8tv1-N9TaZGCMv77pTJSvseHW8hh7o-8cIOB3QeCM0,3829
50
+ odxtools/field.py,sha256=tdtvAzF9mNcxRBloq_c8-Td2w0QGGOFsF7FrbDLK5iw,3934
49
51
  odxtools/functionalclass.py,sha256=Rrnpqm-wTRc7TUfnKfiOeOi1XrvKB9TN2HiXtCU2YLY,985
50
52
  odxtools/globals.py,sha256=P6YbgyTSWHMw3sk5cEzsCvVaLrTiakLvewTgySb1jLo,139
51
53
  odxtools/inputparam.py,sha256=yQk23WBv4bFWI3nW1yv0dORf-Jso9sf1Zms7CyQaPGc,1875
52
54
  odxtools/internalconstr.py,sha256=QKEkaOcrFoL9xID-oHWWkeg-vtcPV6RFOW1fX2K3pwg,1363
53
55
  odxtools/isotp_state_machine.py,sha256=O6v29IK7p_4gFqrr-fahnbp9Qmo78EEQfEwRsA_Vfjw,13339
54
- odxtools/leadinglengthinfotype.py,sha256=60hK3tLv6NeZqrmd4idzWa-aGFsrUzGmCWx2EyBhOqk,3171
56
+ odxtools/leadinglengthinfotype.py,sha256=Dg_dNySVoYsKWCSKrStLDobvNiSXRTCSlYYXnlXP_DY,3664
55
57
  odxtools/load_file.py,sha256=H-cnL2cwVmxIirvm5onzhq-fSxNjSmVaQr7ZrXZHjtE,461
56
58
  odxtools/load_odx_d_file.py,sha256=QBVa9r9L4s6ffNWd_LM7NJq2WCxdsJs_EU0RzqgRYrk,172
57
59
  odxtools/load_pdx_file.py,sha256=Eo4cIYWzqe_w1w4LQ-aqNPfHG-hJaxmigOs4y_ZlVlU,186
58
- odxtools/matchingparameter.py,sha256=QWiWlwzJWJc0UWilkhoFyGkAey80MvA_WDsuRdaT5HA,2229
60
+ odxtools/matchingparameter.py,sha256=DFS2sm351H-a_8UC1zaRoPjwel8U9EhrWulMDJzcKeg,2231
59
61
  odxtools/message.py,sha256=07GekN1MbYXm7HaUITDKTj2lBmGK-LB9W8gtBmfAOew,1057
60
- odxtools/minmaxlengthtype.py,sha256=ryH7uMWvHxnJwRdXaOICO4qaN4unqgb3jMHt44KlOWo,7879
62
+ odxtools/minmaxlengthtype.py,sha256=fAF5FX2PahOm5Z-C1bo5taedxxL8YUAdBFjCeDFS_-o,8114
61
63
  odxtools/modification.py,sha256=zO_vdbLnAM876VNyX53rGrUrG4YaKDq799Y3xzrsEyg,872
62
- odxtools/multiplexer.py,sha256=9oVduCSlr-gT4Vwb8gws4YuzFkns9yAeD_baFdP1FQQ,7618
63
- odxtools/multiplexercase.py,sha256=gktKeyp_QdjkhtaiCSO67uOYDS5t1KwiseCaO9crE8E,3126
64
- odxtools/multiplexerdefaultcase.py,sha256=F13aTRZAriGatM-Rv-t-rqEqTriADkigHTLfE317BJk,1979
64
+ odxtools/multiplexer.py,sha256=8mEaBseTY4OAbEC5RcpdROnq4uG3yiMyvAShZza-r7M,8354
65
+ odxtools/multiplexercase.py,sha256=UiSXoOMgUw5YzbBEnyxfZs9PPyolHziD7OowKo3GeWg,3154
66
+ odxtools/multiplexerdefaultcase.py,sha256=7M3BPn1NNKs4hzxkRCJEufyTylLfbtaJM8ZOJbR3xV8,2081
65
67
  odxtools/multiplexerswitchkey.py,sha256=jvX8b9hM1XRwet20AvtsYXZZt137M0rTjLFLKhtF43M,1554
66
- odxtools/nameditemlist.py,sha256=jbhpo27af1cFij6ULsrmtUaN6uwjG-N9W2GGJeioDEA,6164
68
+ odxtools/nameditemlist.py,sha256=JgolDW_PCa5tHjGIGBwzhWtcre6JisVvv3onFk3dGKE,6539
67
69
  odxtools/negoutputparam.py,sha256=QJ4X4Nlo2MbBi7VbOjBvD32gTDLPpF1l6NjChzikh-k,1407
68
70
  odxtools/obd.py,sha256=WsUbhdonqQJtxf972CUdYL78AMMTVjMQhoCJbaZhRIo,1860
69
- odxtools/odxlink.py,sha256=DgysSkAWflTHAp-m5VGPKnDiku4ntnsti1iAhyHRvVY,8932
70
- odxtools/odxtypes.py,sha256=Q8RkINFzIrCwpdNzUSczsnIL58OrGqEVPOZ-n3xQWkc,7036
71
+ odxtools/odxlink.py,sha256=iIZPwF_fNVQKJtrux9NqJDA-kkE6ueRGsTXpVvxfMU8,10146
72
+ odxtools/odxtypes.py,sha256=tp_IlCz3rHycZ1mV3TaUAEW0B1XI2xkBjxdyC2SIlNY,7525
71
73
  odxtools/outputparam.py,sha256=R_pVosDwE-7-l3JAV3CRhsGEKRRnVjv80fnRlZUncI4,1670
72
- odxtools/parameterinfo.py,sha256=ExYMhG_u_jl7DHe_W78Lnf6RW3dxVejtPV1KBjbk7CM,3951
73
- odxtools/paramlengthinfotype.py,sha256=-q1IP1fQ3YPQmwQEytiTQ2bC12ttD01VTPTBJkoE4cc,3718
74
+ odxtools/parameterinfo.py,sha256=mnGCe_LpVKghVRSQWut3mznFfdE9wLJQbA6Xz_Hn0Q8,8147
75
+ odxtools/paramlengthinfotype.py,sha256=fjlFd-AEVAiEnEuVEdGiIQoaFjQPDI10ZNDqRznggfU,4155
74
76
  odxtools/parentref.py,sha256=dvHJji5NabfdDX-JZ9IQNfrU0JVNnkuH8eWWg7XvaCk,3316
75
77
  odxtools/physicaldimension.py,sha256=gvgYoeY7dTujDv_H5XW6S8lvGQadAPUlau6YD_KRJ84,3393
76
78
  odxtools/physicaltype.py,sha256=oYjOhdrTVCJcLLBYgy6pxKsZHpuwm1vZ8svwSjsUB6E,2699
77
79
  odxtools/progcode.py,sha256=vIra_TU34YCa-YKvdvc3cywZMQBWSEg2ugMS6dNJUoI,1765
78
80
  odxtools/protstack.py,sha256=Sf3gdvBLQbsdFOsN2shUtBs5SfjGzu8pLz_3td9ugxw,2046
79
81
  odxtools/relateddoc.py,sha256=jbBMEYycGF0TqwxNKibWyA9r6fFAWHS5lA-tN0El9QI,1335
80
- odxtools/request.py,sha256=SYyJAJAp3FieKIn4bIxHcAAws3kacX0DQZALnVtg_34,719
81
- odxtools/response.py,sha256=c-5ohQoBTP1JVnUqptR86eIXBl5VnttSWdui4tKDvNs,2030
82
+ odxtools/request.py,sha256=-juV4Vpoe7TTjMa1ys6e2qqKSAepvfYVEQ84XEOE0ZA,1029
83
+ odxtools/response.py,sha256=qOUAorH44MaZ_Dyxy5casIabJJCUg9ZjX_1puBljLow,1599
82
84
  odxtools/scaleconstr.py,sha256=9SmUv-h3e4cOglTDJwEyT9Fz-LRFrPLGPha27-Ygndk,1780
83
85
  odxtools/servicebinner.py,sha256=ijFp5CqU5PO0Wx_YFtJB8tQigMLhg9TYu78BQELoet0,3859
84
86
  odxtools/singleecujob.py,sha256=ZY16lxvkCR4KrdviB7IXwqGRF8Z5tXZxG4MgLWHdmdw,3891
85
87
  odxtools/specialdata.py,sha256=3E-KxtoCUpHeaiMH6Zp4jivALkCsNaTlZ9KROcCDWnE,1067
86
88
  odxtools/specialdatagroup.py,sha256=KP3vy8BqeTA_qZcmteAmV7ckC65zjpI3B1hKXyzctJI,3077
87
89
  odxtools/specialdatagroupcaption.py,sha256=AVUA1M-EXPA9k_EqOAZWajRIhQdGKp_HlLXlre2ZDhE,1039
88
- odxtools/standardlengthtype.py,sha256=eVZd72knF2tTlGkIPgTX4CC7h7lgRXxuffA7qo0EBRU,2433
90
+ odxtools/standardlengthtype.py,sha256=RFbntOwZHZTGwJ8YdbkPSeUD_-d6uQLrupc-wlPwcus,3876
89
91
  odxtools/state.py,sha256=os5HJvZj7_2zutJhyiq701JA_CSpyS1C6XJKHFWEKVY,932
90
- odxtools/statechart.py,sha256=fksrDgmldajQ3eXU99sEcFfAp5gaNS5g3Fb5VbBM50I,3246
91
- odxtools/statetransition.py,sha256=pCH-WjCIiIKVBpBYfBp9ie6TBSUO_lPvPE3CAmgM3XU,2206
92
- odxtools/staticfield.py,sha256=InE7nSk-RY_kr7BOTOo8LKys_UAKLP0AUoTuif-TM6Q,3846
92
+ odxtools/statechart.py,sha256=1KWEkdzx0YJ3n2hAB4pLMmWvBoRh-TtJ3BKLLkweK6A,3172
93
+ odxtools/statetransition.py,sha256=7tTaG3Ab00gZuIbdwQQpXE6nUgkmDgy6tuN19E9QzPA,2099
94
+ odxtools/staticfield.py,sha256=8n777YLSOPEogH8OyMgPVBtBroIrXzeteu17yoGXvpk,4623
93
95
  odxtools/structure.py,sha256=W8uX1YQuJUApKfeLxYqlnU3EZ3AjTqcYpCUStR43ORI,582
94
96
  odxtools/table.py,sha256=lgsamAWOKuw0ym-6LQjYjpoH_iglx2PRwHn0CvJ5hu4,4051
95
- odxtools/tablerow.py,sha256=4PBOcfJIOzK3WVtmr_mssf7NlD4hh-6agkOBSwFApSQ,6149
97
+ odxtools/tablerow.py,sha256=FVsqWZf9GtsJ8SgM_eNCauZi6pP0cde-bDthmxao65I,6280
96
98
  odxtools/teammember.py,sha256=nhpTD7TYoixKe-K2MDoyYP4K_xlmWQtAxTm4Srh4CLo,1806
97
99
  odxtools/uds.py,sha256=69SyVnQDcyspzSf6QVfm_Uk9iCxczD6UcrO1PxhNo7E,5894
98
100
  odxtools/unit.py,sha256=Yhf8Q2PkOnOImO7C7nehS59ua6kWd2da73VRQ0xNRfU,3701
99
101
  odxtools/unitgroup.py,sha256=HCFwmUR_-N1_bfcDQiWV2rq29uRQWbVMbxSASw8P8ow,2101
100
102
  odxtools/unitspec.py,sha256=WFifnGPLfaRzCUpZNY8lvB5_jXuoGJuvKcyL1R04oJ0,2981
101
103
  odxtools/utils.py,sha256=JeUgIYnxysVELmSYbKH49IC9dU6B31Cwoo85Ag10V74,1983
102
- odxtools/version.py,sha256=v91MbC56MHoAoT4fOiMyGx_etT2swZvPR4v--skkB1A,411
104
+ odxtools/version.py,sha256=jXWXDdqcry2vyc742uYcr4NaI1j-6TGMyveJUqhZf9Y,411
103
105
  odxtools/write_pdx_file.py,sha256=qx02oe-BFJ0lmDJMh5tR0qS5mpzalUV6vVP2eXtjaBo,7307
104
106
  odxtools/xdoc.py,sha256=pUYo6l60ns9LOEdutE06WMcNy25yNVl1Ni4lMpYt1pY,1467
105
107
  odxtools/cli/__init__.py,sha256=T7ano_FIyzBASxYpmcA5VJXU5bQLIy_Qk0HE_SDKelY,106
@@ -123,21 +125,21 @@ odxtools/compumethods/linearcompumethod.py,sha256=kW_siDBRdfNXZLdll1kUFd6sAgXdtI
123
125
  odxtools/compumethods/scalelinearcompumethod.py,sha256=ZUY6JRuIIWkCfHR0b3WOBlvAspmaz4oIbJtiEMg34Hk,1644
124
126
  odxtools/compumethods/tabintpcompumethod.py,sha256=BY1uSwwfsfj6GaBoLpmiHTvSnYZFWIpFybWH2jZk3f0,7302
125
127
  odxtools/compumethods/texttablecompumethod.py,sha256=ICDyTTuOcZDzCexbVOLYLjc4XwwS3G7W2R8UJBLstfE,3347
126
- odxtools/parameters/codedconstparameter.py,sha256=wLayKz98zpcvqSLEpL6GCfTP5VmsBOhKW1sjwxjSozc,4213
128
+ odxtools/parameters/codedconstparameter.py,sha256=UxIp6JEnqTLpP2YNwTvfFeS4BBejKEoB_V1Qtw39o7M,4341
127
129
  odxtools/parameters/createanyparameter.py,sha256=m26HHUQrxwDak3eBBciVBLic768Qlo4F2xn1z3r0boM,2566
128
- odxtools/parameters/dynamicparameter.py,sha256=3KHQRVyAB7emZnHOhWhncC_JZJSTAMnTKfMeyKLgoKs,1483
129
- odxtools/parameters/lengthkeyparameter.py,sha256=zVg2C9NENgESi4E_N4GXRMvkIeFex4UM7aOsK4oN0Ng,3375
130
- odxtools/parameters/matchingrequestparameter.py,sha256=BYT20ho08QCtiFhyHXMcMHQtO-fKKB8NmY_ytmqu1u0,2354
131
- odxtools/parameters/nrcconstparameter.py,sha256=n77raakhDWW8vM5kdlIywJbf990GhX76wBCxZ481Tlo,4749
132
- odxtools/parameters/parameter.py,sha256=4oCcWnomeBv0rIPVq5wNk2FYSscyvmmUxuOR7MBUvfo,6306
133
- odxtools/parameters/parameterwithdop.py,sha256=-QAcx1XEheRF_C2FnOJOR0f-G0tBP7I2ZaZmge05iqc,3757
134
- odxtools/parameters/physicalconstantparameter.py,sha256=BCNek_yBb37ZGM4Yjy4sGiGHWTD-NxVCMDF2ItV5-Po,3759
135
- odxtools/parameters/reservedparameter.py,sha256=64FGgZ2ZAmZLNghewYbiIDZw9bkBPuTGszB0-1k_Wu4,1744
136
- odxtools/parameters/systemparameter.py,sha256=yWjKzf5IzrKX_8a18h6leez4FPKM7egGO1SMtYFonZA,1694
137
- odxtools/parameters/tableentryparameter.py,sha256=mdt8L3TKzuEf1_NmLUpuDhasQ-maqYdSQ3WAJlmplhQ,2324
138
- odxtools/parameters/tablekeyparameter.py,sha256=rexy27Rh-UHbzrxC1xwBo_hr1bsTE7UsaCqjEqfI1xM,7700
139
- odxtools/parameters/tablestructparameter.py,sha256=B7clyvqbGFzY_JomJ5cLI9wXu0oqfwM9EVmPWvWO-2s,7148
140
- odxtools/parameters/valueparameter.py,sha256=CpRAm2x0adtXyX38R68L-JWXhsbhJGjXk2TlyszCzxc,3330
130
+ odxtools/parameters/dynamicparameter.py,sha256=mdZx12XbhTSYVVuXEsPYRll3zaHjbHIYIzA6yUy4zck,1569
131
+ odxtools/parameters/lengthkeyparameter.py,sha256=Ew5GW1CpjLMNdiX03ysYq5kC00Ep_BQGzmldeFcFiEo,5881
132
+ odxtools/parameters/matchingrequestparameter.py,sha256=VNYIpmP_Yt_pzMHPgGWZk1XYH5liIdyawNIwIR1Cbvw,2897
133
+ odxtools/parameters/nrcconstparameter.py,sha256=d2HZxd5Jo3gX3wZB1P8MqpiE5tVthXt2VDFtGLPfQUo,5698
134
+ odxtools/parameters/parameter.py,sha256=em9YzaMrwzrdjRH0XrGa1Mke77LyoKXlqueoWdUytOs,6267
135
+ odxtools/parameters/parameterwithdop.py,sha256=a0yb7ZhVy3DaNTh3JgUMBIouQyiNuXDJinh2bEGJzX4,3417
136
+ odxtools/parameters/physicalconstantparameter.py,sha256=eQrEN3p7iFTBjLv_ht79gFHCA-fa6cAnPQAbYxYCOj8,3750
137
+ odxtools/parameters/reservedparameter.py,sha256=GSwTZh5Gc_QTiVPfHJSwCDX1rAOke5KEFcEzTRJRRZc,1930
138
+ odxtools/parameters/systemparameter.py,sha256=AFhyd7KxVzAjrOxgpq7PMGjo4gFd26ABxTAyaA46bbs,1784
139
+ odxtools/parameters/tableentryparameter.py,sha256=SuNAFn1wN_hyO2MVd1lT3oQllZ6nLjAIBJHX0HYRyko,2414
140
+ odxtools/parameters/tablekeyparameter.py,sha256=KBuPxwuOY1ZmSkRxqVcYYGu0p0N7dU4SCd69hDaoJuM,9913
141
+ odxtools/parameters/tablestructparameter.py,sha256=ILEYsuPLIl41dMyE4BCrYT7w3VGqcq6hwPrpkmkMLqI,7114
142
+ odxtools/parameters/valueparameter.py,sha256=dl8UyCBg8MISydHZH-u2p0kUwIg1UaihUSs-bxUKLKw,3220
141
143
  odxtools/templates/comparam-spec.odx-c.xml.jinja2,sha256=6EFYwQP5H1prtygR4-1FA8O-GsInRj8QVfWbdN_H0ss,1562
142
144
  odxtools/templates/comparam-subset.odx-cs.xml.jinja2,sha256=z7eCUbreEx5nUosus2jyyluz4L3j1e2iKA3eZU9KlEc,2522
143
145
  odxtools/templates/diag_layer_container.odx-d.xml.jinja2,sha256=nr1LMD8_fJF7rNaq1gERufbgf36aHqfzD95kg4sMQCc,2026
@@ -150,6 +152,7 @@ odxtools/templates/macros/printComparam.xml.jinja2,sha256=XsbUNK4zO927WSv8zsmodN
150
152
  odxtools/templates/macros/printComparamRef.xml.jinja2,sha256=y2-fj2-OFn3z27zI0v8V0tw9DOsi4zcqu4ZC2Xm32-M,1344
151
153
  odxtools/templates/macros/printDOP.xml.jinja2,sha256=6mlevpfG-C_ZMEzNIDC1WkFZT__lTmHaP_9Y7tsjEZM,8463
152
154
  odxtools/templates/macros/printDiagComm.xml.jinja2,sha256=eIKtu3xEmoQllyNYOWQx5Iv2oljKSg3lR6V4As-SFE0,2231
155
+ odxtools/templates/macros/printDynamicEndmarkerField.xml.jinja2,sha256=EvUOkfVsNAT61B5OApyE7Yh45C_A_iBg9gCTiq_td7w,579
153
156
  odxtools/templates/macros/printDynamicLengthField.xml.jinja2,sha256=YCwgKV2na49mlHQQmI8L85ZYqUktaYuNil-K6rp4BR8,776
154
157
  odxtools/templates/macros/printEcuVariantPattern.xml.jinja2,sha256=5J2e8cIIdBJ9MUMZp4cgfrSFCUm5UHsLpViPz9WPT0g,842
155
158
  odxtools/templates/macros/printElementId.xml.jinja2,sha256=TLQPmKuSym73Y3Rcp9A2IN6kfNr3hAmlq3XyE2SessI,360
@@ -173,10 +176,10 @@ odxtools/templates/macros/printStaticField.xml.jinja2,sha256=JIXFhyNrnQ-2_vWy6Rx
173
176
  odxtools/templates/macros/printStructure.xml.jinja2,sha256=uswYs2xse0B9hZut_FN1GvvR0xsZa_3pZRnlF0ElEEc,559
174
177
  odxtools/templates/macros/printTable.xml.jinja2,sha256=DGd-TolTeBFoDuowd_KW0ZZT_etKRjwq9lia0yXror4,1466
175
178
  odxtools/templates/macros/printUnitSpec.xml.jinja2,sha256=AJ5jWYKRmoIZkrd25R1KmjjgU6pfOqRiOQHtUAuS6GI,2813
176
- odxtools/templates/macros/printVariant.xml.jinja2,sha256=kL3wZG2S7OlKQI3YMTRUYOBJBbVjulruR_bt9WOEiks,6934
177
- odxtools-6.7.1.dist-info/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
178
- odxtools-6.7.1.dist-info/METADATA,sha256=ZtPoKih9DmpbnUT7qW9bzmzGIdRtBJk9pUQod0PbTIQ,44108
179
- odxtools-6.7.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
180
- odxtools-6.7.1.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
181
- odxtools-6.7.1.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
182
- odxtools-6.7.1.dist-info/RECORD,,
179
+ odxtools/templates/macros/printVariant.xml.jinja2,sha256=EoRph66FQ7odFHFwhFqxiltnEkbZstkJCOlq6U_1KG0,7258
180
+ odxtools-7.1.0.dist-info/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
181
+ odxtools-7.1.0.dist-info/METADATA,sha256=78nxIpFNjLGYrSnz9OEaGQC4S6YIC0S7AJgNtBwPQCA,44108
182
+ odxtools-7.1.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
183
+ odxtools-7.1.0.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
184
+ odxtools-7.1.0.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
185
+ odxtools-7.1.0.dist-info/RECORD,,