odxtools 9.4.1__py3-none-any.whl → 9.6.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 (113) hide show
  1. odxtools/additionalaudience.py +2 -2
  2. odxtools/admindata.py +3 -0
  3. odxtools/audience.py +9 -13
  4. odxtools/basecomparam.py +1 -2
  5. odxtools/basevariantpattern.py +38 -0
  6. odxtools/basicstructure.py +34 -35
  7. odxtools/commrelation.py +2 -1
  8. odxtools/companydata.py +1 -2
  9. odxtools/companyspecificinfo.py +3 -0
  10. odxtools/comparam.py +16 -8
  11. odxtools/comparaminstance.py +12 -12
  12. odxtools/comparamspec.py +4 -3
  13. odxtools/comparamsubset.py +26 -24
  14. odxtools/compumethods/compuconst.py +4 -4
  15. odxtools/compumethods/limit.py +9 -9
  16. odxtools/compumethods/linearsegment.py +8 -8
  17. odxtools/dataobjectproperty.py +16 -18
  18. odxtools/description.py +4 -2
  19. odxtools/determinenumberofitems.py +4 -4
  20. odxtools/diagcodedtype.py +20 -20
  21. odxtools/diagcomm.py +61 -41
  22. odxtools/diagdatadictionaryspec.py +51 -55
  23. odxtools/diaglayercontainer.py +25 -25
  24. odxtools/diaglayers/basevariant.py +5 -0
  25. odxtools/diaglayers/basevariantraw.py +7 -1
  26. odxtools/diaglayers/diaglayerraw.py +26 -27
  27. odxtools/diaglayers/ecuvariant.py +16 -0
  28. odxtools/diagnostictroublecode.py +13 -10
  29. odxtools/diagservice.py +48 -50
  30. odxtools/diagvariable.py +10 -8
  31. odxtools/docrevision.py +5 -5
  32. odxtools/dtcdop.py +17 -17
  33. odxtools/dynamicendmarkerfield.py +8 -8
  34. odxtools/dynamiclengthfield.py +2 -0
  35. odxtools/dyndefinedspec.py +21 -8
  36. odxtools/ecuvariantpattern.py +20 -9
  37. odxtools/encodestate.py +3 -3
  38. odxtools/endofpdufield.py +7 -9
  39. odxtools/environmentdatadescription.py +9 -20
  40. odxtools/field.py +21 -21
  41. odxtools/inputparam.py +15 -14
  42. odxtools/leadinglengthinfotype.py +4 -4
  43. odxtools/matchingbasevariantparameter.py +38 -0
  44. odxtools/matchingparameter.py +108 -28
  45. odxtools/minmaxlengthtype.py +6 -6
  46. odxtools/multiplexer.py +38 -39
  47. odxtools/multiplexercase.py +3 -6
  48. odxtools/multiplexerdefaultcase.py +3 -6
  49. odxtools/multiplexerswitchkey.py +4 -4
  50. odxtools/negoutputparam.py +6 -9
  51. odxtools/odxlink.py +21 -5
  52. odxtools/odxtypes.py +7 -6
  53. odxtools/outputparam.py +9 -8
  54. odxtools/parameterinfo.py +1 -1
  55. odxtools/parameters/codedconstparameter.py +28 -27
  56. odxtools/parameters/dynamicparameter.py +9 -9
  57. odxtools/parameters/lengthkeyparameter.py +18 -18
  58. odxtools/parameters/matchingrequestparameter.py +15 -15
  59. odxtools/parameters/nrcconstparameter.py +32 -24
  60. odxtools/parameters/parameter.py +35 -37
  61. odxtools/parameters/parameterwithdop.py +6 -6
  62. odxtools/parameters/physicalconstantparameter.py +19 -20
  63. odxtools/parameters/reservedparameter.py +10 -11
  64. odxtools/parameters/systemparameter.py +10 -11
  65. odxtools/parameters/tableentryparameter.py +19 -20
  66. odxtools/parameters/tablekeyparameter.py +0 -2
  67. odxtools/parameters/tablestructparameter.py +27 -21
  68. odxtools/parameters/valueparameter.py +20 -20
  69. odxtools/parentref.py +6 -7
  70. odxtools/physicaldimension.py +11 -11
  71. odxtools/physicaltype.py +9 -14
  72. odxtools/preconditionstateref.py +85 -0
  73. odxtools/progcode.py +1 -2
  74. odxtools/protstack.py +4 -4
  75. odxtools/relateddoc.py +3 -4
  76. odxtools/scaleconstr.py +0 -1
  77. odxtools/singleecujob.py +8 -4
  78. odxtools/specialdata.py +10 -9
  79. odxtools/specialdatagroup.py +1 -0
  80. odxtools/standardlengthtype.py +18 -18
  81. odxtools/statechart.py +10 -6
  82. odxtools/statemachine.py +186 -0
  83. odxtools/statetransitionref.py +231 -0
  84. odxtools/structure.py +4 -4
  85. odxtools/subcomponent.py +78 -11
  86. odxtools/table.py +23 -13
  87. odxtools/tablerow.py +86 -69
  88. odxtools/teammember.py +4 -4
  89. odxtools/templates/macros/printBaseVariant.xml.jinja2 +4 -9
  90. odxtools/templates/macros/printBaseVariantPattern.xml.jinja2 +32 -0
  91. odxtools/templates/macros/printCompanyData.xml.jinja2 +2 -2
  92. odxtools/templates/macros/printComparam.xml.jinja2 +3 -5
  93. odxtools/templates/macros/printDOP.xml.jinja2 +4 -1
  94. odxtools/templates/macros/printDiagComm.xml.jinja2 +6 -5
  95. odxtools/templates/macros/printEcuVariantPattern.xml.jinja2 +7 -6
  96. odxtools/templates/macros/printParam.xml.jinja2 +5 -5
  97. odxtools/templates/macros/printPreConditionStateRef.xml.jinja2 +18 -0
  98. odxtools/templates/macros/printStateTransitionRef.xml.jinja2 +18 -0
  99. odxtools/templates/macros/printTable.xml.jinja2 +13 -9
  100. odxtools/text.py +35 -0
  101. odxtools/unit.py +1 -3
  102. odxtools/unitgroup.py +6 -8
  103. odxtools/variantmatcher.py +209 -0
  104. odxtools/variantpattern.py +38 -0
  105. odxtools/version.py +2 -2
  106. {odxtools-9.4.1.dist-info → odxtools-9.6.0.dist-info}/METADATA +3 -2
  107. {odxtools-9.4.1.dist-info → odxtools-9.6.0.dist-info}/RECORD +111 -102
  108. {odxtools-9.4.1.dist-info → odxtools-9.6.0.dist-info}/WHEEL +1 -1
  109. odxtools/createecuvariantpatterns.py +0 -18
  110. odxtools/ecuvariantmatcher.py +0 -171
  111. {odxtools-9.4.1.dist-info → odxtools-9.6.0.dist-info}/entry_points.txt +0 -0
  112. {odxtools-9.4.1.dist-info → odxtools-9.6.0.dist-info/licenses}/LICENSE +0 -0
  113. {odxtools-9.4.1.dist-info → odxtools-9.6.0.dist-info}/top_level.txt +0 -0
@@ -1,113 +1,119 @@
1
1
  odxtools/__init__.py,sha256=kfejU9B_COPKCNfhbzkq_RuQ1VpH0S_EA4gstYaANtk,2458
2
2
  odxtools/__main__.py,sha256=MKzFqY8KAV0BGsBXs04QwPpW5OGuT-rZQ4QlM8Tar8Y,119
3
- odxtools/additionalaudience.py,sha256=Xjy_PhTfTV23oAMvml5XeZw3ex8xssIhgRseSsxKcxQ,956
4
- odxtools/admindata.py,sha256=ue5MnYJK_jxNq6Okxy4aGtH15uBAnWXIjMBFSh36Q3g,1879
5
- odxtools/audience.py,sha256=_O6UPKnrDbwMMKRnCJ5b8M3_I2jU5jMR6Ss5zLzk9yM,3361
6
- odxtools/basecomparam.py,sha256=VxpIsTr6-S4e8Vw72hJXSLUFU5TvHy5CM0sweVL-ZWE,2384
7
- odxtools/basicstructure.py,sha256=GcyZuasaH62JcINgyeD300N297q7_LP6iMfDy8fwzMg,5071
3
+ odxtools/additionalaudience.py,sha256=5em2cDyswmyj3v82CgO2bxX1jUTyHvp0crT4piOL9F0,967
4
+ odxtools/admindata.py,sha256=CMFmkgwg94KJAogHQs07HLkr3QS_GqQMT5LP7-HfLEw,1966
5
+ odxtools/audience.py,sha256=RL_9Z1BzBcZGk-BL_f67YhHUo0oil036wX8BqTAVLQw,3392
6
+ odxtools/basecomparam.py,sha256=QrOiS5TS9chKwwe1-64RuqWsrjmdTI26jspINy6yT4c,2381
7
+ odxtools/basevariantpattern.py,sha256=MDQFcn0uPuy8EL0tw-vLHsz8sAZyKk4c4p7sjnbCeLQ,1462
8
+ odxtools/basicstructure.py,sha256=lAZ8uTTy24pPMvhzOTTTjgueaTfLFjqP-bDjAkK4Rvw,5070
8
9
  odxtools/codec.py,sha256=2aTfrQc0-cNuPAfXeDDyjxXAHjBJ1xy3ELCVeA9UQP0,8108
9
- odxtools/commrelation.py,sha256=Gh3CqMuF9rS0X107oxUkISNT2VWDZVPCpOSu54q7hcs,4793
10
- odxtools/companydata.py,sha256=o8vRONHfzmon3Ws0LLKX3-9Och34Uu91aAmBnNg2N34,2539
10
+ odxtools/commrelation.py,sha256=pFw5srGtdBkd561YN-_2CBWKgk6ZHlAy3ruzy_73sG4,4819
11
+ odxtools/companydata.py,sha256=X-ZxTFxfbywJ_ccas3piUHT3-2AWPEADPzkxesBcc0c,2516
11
12
  odxtools/companydocinfo.py,sha256=fcceuYX8eTKhVhtmji6yiMRi6gtqPAJdi5kpo-wyL_8,2267
12
13
  odxtools/companyrevisioninfo.py,sha256=a_aAAeF_8AW-AREOpDgm_eji1i38gttT7Zg3lSo7l88,1356
13
- odxtools/companyspecificinfo.py,sha256=Fww7CqQmU-4HUtyaJatcgg9VV8iZzj4YQ5M0UqJVs2c,1537
14
- odxtools/comparam.py,sha256=uVThBbKO8_aoTWYFH5OhyKdAnq1Psq2gifEmvfL0-I0,1592
15
- odxtools/comparaminstance.py,sha256=RzXBrxCPhKTKq7JAGbHPXvXoA-E0JPQearTmyYpV2UU,4717
16
- odxtools/comparamspec.py,sha256=ktOYZORh1mdabACvdqTOUTb6Arb7pc3jbXEECt5ClzY,1838
17
- odxtools/comparamsubset.py,sha256=pkyRopwgstTHRIFhmf3832zmKj1_6SQoA5gedZkw-eo,4125
14
+ odxtools/companyspecificinfo.py,sha256=Zl2Gafh_H3ZfmlPNUBChL_aCW7mgx3Zd3ECJPt2ABrA,1623
15
+ odxtools/comparam.py,sha256=UKfb-c1y99d3jnMvyGezSM50ZRlNfnkNKfBRzZcJ3h0,1910
16
+ odxtools/comparaminstance.py,sha256=OH6P-tit9j4MFq2C4SDgZoPBAydXRRH0ptDe1-5jd2k,4717
17
+ odxtools/comparamspec.py,sha256=fxKOXOth14ZC5is3LF30SXuaGFaXcP-qSGj6fYPywMk,1866
18
+ odxtools/comparamsubset.py,sha256=nI4hEBkX22yGu7rNirpv9Dr8LoknlNxArm5cs6QPGGY,4208
18
19
  odxtools/complexcomparam.py,sha256=4EJQXVmi_i3Eas5LAF-sEC5XnAUMZKr2sS6LoDNskk0,3729
19
20
  odxtools/complexdop.py,sha256=AHkHMf_IEWfy-_zSiCuZXmdTNCXiCOpg5GRZ5uMVV5A,280
20
21
  odxtools/createanycomparam.py,sha256=RP0XA2Ut4GL2NWy05RvKBrTnpbvvCG2XuNL8OO-9rbI,617
21
22
  odxtools/createanydiagcodedtype.py,sha256=0DVmMj4UCDYIg0zu9pgTplyhHmRedz1KJcchq1uKMjg,1216
22
- odxtools/createecuvariantpatterns.py,sha256=FXHLGR4M791MRkpU2_keck88hoMYkuyPiCUxuGbUasQ,559
23
23
  odxtools/database.py,sha256=VJk-EOzHHtxjkhP7o0h470B0oyg73ZafK3w1UjnwRNM,9945
24
- odxtools/dataobjectproperty.py,sha256=N-8YJUXdvvlmM3IZYu5SokSnST1hbgPRr3sI-VP4Epk,6238
24
+ odxtools/dataobjectproperty.py,sha256=8o2Wqb2Ee1ZqHJgq9jO_Z6KPNgUW0htgY2ah8GV_Cak,6242
25
25
  odxtools/decodestate.py,sha256=VdYB4Q3yuFqCNV0IK2QfS_120n9dIgyLnPOwc3Hy33U,8292
26
- odxtools/description.py,sha256=xaSfOjRCWn7_9BhdTgI0ESPtaU-iUE815Z6WobYYL-A,1952
27
- odxtools/determinenumberofitems.py,sha256=DxM9udr1MQfEojiLdc35bbjniQl1fkeHcTMpoo9AfPI,1558
28
- odxtools/diagcodedtype.py,sha256=tDzJCxK-9qF0qhiDHNxwg3uXcHz4AwNWEcI12dd84RE,4927
29
- odxtools/diagcomm.py,sha256=f41tLKpWB-tu6QfpPzIXtma4kmJkuEwtXU8iSsq1zng,8093
30
- odxtools/diagdatadictionaryspec.py,sha256=2zy5f-xnfGI0bnjPOEwG_IJxfsHhXZoOfdIS_fOr3L0,10552
31
- odxtools/diaglayercontainer.py,sha256=IkO0mwI-mvoyu15z-u0cMOVrx34DyhdOuk4Cd9BTFRM,5333
32
- odxtools/diagnostictroublecode.py,sha256=6W1aEjCNSsN_hF9HAgO78MWy0t6nkD6HnzF8owHVzhQ,2321
33
- odxtools/diagservice.py,sha256=kqcz9QRBCibz2TMMglWdaqd0r_rVcbEpA-d5a-VfxSk,13050
34
- odxtools/diagvariable.py,sha256=SjhHcY1CWx6ADIlKNZVhS-pUXHlocsVho-aRZC0FBkA,5282
35
- odxtools/docrevision.py,sha256=m57a4lCWeR6QvNNxtwUNpLXAMgSq29ks1HorxoipFVk,2698
26
+ odxtools/description.py,sha256=Wx6xfLce26YBdQecmh3uMEsucalyVbzq8PbitrOyJvs,1961
27
+ odxtools/determinenumberofitems.py,sha256=a0QJ7Z950nSN0HgTa8FT5IwsU4gjlX_OTzptG3GbrLc,1558
28
+ odxtools/diagcodedtype.py,sha256=6Sa_oKqYMf9q8OmHDaXeuRi7ELW4f81rAsHZBRYJ6Z4,4927
29
+ odxtools/diagcomm.py,sha256=Pl0o5LMY9RrPZr9FfWAoyfKAQ3DufwqxvQ68Y7tTNzg,8847
30
+ odxtools/diagdatadictionaryspec.py,sha256=L5VD6wlG7U6iJSBHYsBuTsE1qEQuqbiyhyUqX-Q5EUQ,10361
31
+ odxtools/diaglayercontainer.py,sha256=ESBAbeed2NU8lO3HaqGQiYa3TgnWJBk6dYChMgygZ2U,5333
32
+ odxtools/diagnostictroublecode.py,sha256=cAlVlopNrin_gqXG5UcvuWfv2Qrvhb3kD_a9pag9hvo,2390
33
+ odxtools/diagservice.py,sha256=pOMgGfi0JZKE94GTByLvqZdcluz_WU3fcjByMDq5IG8,13048
34
+ odxtools/diagvariable.py,sha256=Syk9O8JvelUY1SsoOGe_2ZxngplO_TnYXOXok7I7ysw,5284
35
+ odxtools/docrevision.py,sha256=_dktYapOJdPlae_ouuuUGeto9Jur8ZN7oKNldP-Zrms,2740
36
36
  odxtools/dopbase.py,sha256=NCTTq2NF4DJI9nUAwBoa79IBgBjQtWo4V0WvkxuTx5g,2616
37
- odxtools/dtcdop.py,sha256=3H0jSH6EHOA0-UJ9GcJwJuBCCciPhxZsz_dfRnNYF7A,11560
38
- odxtools/dynamicendmarkerfield.py,sha256=Q7KKOBNSrAg5cehEP3i4YTPiqz5UetEIJDGah608DDk,5559
39
- odxtools/dynamiclengthfield.py,sha256=Us0qRvkRPId7xSNKrYdsr1AhVFdTBezRMCBhXl98E00,5273
40
- odxtools/dyndefinedspec.py,sha256=efvUG2kMUdwfmMG5qxGHzMSZ5CxdSJhmtzHecopnpHg,7610
37
+ odxtools/dtcdop.py,sha256=9q0zvQD18ZPT4JM_TXtEUkxBHpq3jZKD7ucRSIJZH4c,11560
38
+ odxtools/dynamicendmarkerfield.py,sha256=YjR-XA9Wrm4v7w72noLCIwskvAmXIfWm0me_T7YSM6o,5559
39
+ odxtools/dynamiclengthfield.py,sha256=a21WvHuNKnMDYTmyj7JY_dPiSTq_N2_Jy-hYqtf_6GM,5275
40
+ odxtools/dyndefinedspec.py,sha256=m8pIJUIkZ7NI_-ftFcmxGrrKN4VgBlEerKqqMX0tmr8,8351
41
41
  odxtools/dynenddopref.py,sha256=SYXrmRUQoLWD4UI3WV92oA5rNhxbDuRv6H1MeXeuWhM,1199
42
- odxtools/ecuvariantmatcher.py,sha256=muZfBcHVUQFXn3mBRwLtQ2asGV1oDYkDrBwZ9WYuLKU,6848
43
- odxtools/ecuvariantpattern.py,sha256=Xp2NpS13sVvyOjy2PgxLvXPptAfmYSH_KDIjqYByZHs,863
42
+ odxtools/ecuvariantpattern.py,sha256=HxiDLdZWD2aOtBoCKJQjpTY8Fm1ptFtFK3-CcCj3hQo,1330
44
43
  odxtools/element.py,sha256=nCJkQMIPC26XfD4w1VrTH3l7Cd_BemMM_5lALh5gC7E,1259
45
- odxtools/encodestate.py,sha256=V3AEH3g6TYQIfP-TP2yinBgfCtEbdlbJ1xWgY_zhAVs,13566
44
+ odxtools/encodestate.py,sha256=OuGB3kUI1bHCg4xKxAM4EHqyuc9S4Rwj-J7DrpCCvrI,13540
46
45
  odxtools/encoding.py,sha256=5gn6PDqwU9K2RzEfEO9kcBj1v55TSKI1nCXNcTiZE9s,1994
47
- odxtools/endofpdufield.py,sha256=mGkhTj-YGdJ4EHMsK3AlWV6G_KLWI4ymiFKbY8U2W50,3359
46
+ odxtools/endofpdufield.py,sha256=__5wkk_nnIR25fzPnVXTd6erP-ypeukN3zOaH7P1OGs,3338
48
47
  odxtools/environmentdata.py,sha256=_wSKhV_NuMG6UPMnpOxz6mVjvrXsd2mtqqT7VKSSxHU,1414
49
- odxtools/environmentdatadescription.py,sha256=p1NThRs6WcoP62JTlqOvwKLqq967kBN7a86N89NeESA,11760
48
+ odxtools/environmentdatadescription.py,sha256=s3HhJdH5VPnZvgzmP7zUBLQJNQ02KHNTrHfP-ZxLrMU,11168
50
49
  odxtools/exceptions.py,sha256=ZApQkhOJ9gn4jk0uO1wmULn5PhNEl1aMYMSHDoXihh0,2714
51
- odxtools/field.py,sha256=pdQpWxybPsiQ4oFKtvnjIEcQXV2WD0qH-NnBV54KMcI,3860
50
+ odxtools/field.py,sha256=N0qzsIjoJYqMHyEo2FS5dmC55YVJ0OVlHIgWNeF9dt8,3860
52
51
  odxtools/functionalclass.py,sha256=DmJhtihbM64Vw-EYkzD1V5hRC-3Gt1XHdGqGUmaishk,1136
53
52
  odxtools/globals.py,sha256=P6YbgyTSWHMw3sk5cEzsCvVaLrTiakLvewTgySb1jLo,139
54
- odxtools/inputparam.py,sha256=SumMU1-zxgtGmGBAyB9mb6S1HuTrriE-8ggTY9UV5lY,1807
53
+ odxtools/inputparam.py,sha256=rLRj_5gSrw9IzDa36exmnbLmfKEb7ehCNcYp8Byi5wA,1808
55
54
  odxtools/internalconstr.py,sha256=QKEkaOcrFoL9xID-oHWWkeg-vtcPV6RFOW1fX2K3pwg,1363
56
55
  odxtools/isotp_state_machine.py,sha256=O6v29IK7p_4gFqrr-fahnbp9Qmo78EEQfEwRsA_Vfjw,13339
57
- odxtools/leadinglengthinfotype.py,sha256=oD0uwLECssJZDKicKYlOZRbrcCeTfz-CiWa-SROfrIU,4013
56
+ odxtools/leadinglengthinfotype.py,sha256=7dTZtcA8QbIDF9XP4GD8aOwxgeyJhDH0FLePe6or8wQ,4013
58
57
  odxtools/library.py,sha256=E_A6K6jcEoUdXh4h4sQILj7_JM-6X5OUUWSM47G69CU,2067
59
58
  odxtools/loadfile.py,sha256=hi8jVE7B1G9gklsb7MrGrp4aOAI65j0kNwvDeEEEN2k,1744
60
- odxtools/matchingparameter.py,sha256=2cqaxFCZ28GvvUKCIM-jas3ae4eYGbULbkBlb3aH5RY,2232
59
+ odxtools/matchingbasevariantparameter.py,sha256=hpxAWJQfEGsChEkSos5K8pJDgblu4gbBsEG6f2VhMg8,1287
60
+ odxtools/matchingparameter.py,sha256=s__CH9Dk1pOuJWVfxSRG81GPpwyOYUdihM51cLKzb0s,5747
61
61
  odxtools/message.py,sha256=PDY-CDgTmJA6dyNacCV57M-p_ETtR8MdU7WZGEew4zM,855
62
- odxtools/minmaxlengthtype.py,sha256=tL_PSvDrZ1JZAnqup5RJWTyj9nuueQ_OjlowG-ZWciU,9710
62
+ odxtools/minmaxlengthtype.py,sha256=MvA4rvRclkOwXCwZRH48KBQVg82l76nfTigTy5F_xxs,9723
63
63
  odxtools/modification.py,sha256=9EJJUCNTzM05HGT6UZ7r2yLDm7voBFPO-hldBC9D4aw,875
64
- odxtools/multiplexer.py,sha256=flHlorv9grEMj8pNAWQJNrxhptnDxSsFERO7gpKYRME,10235
65
- odxtools/multiplexercase.py,sha256=qfxWJzfJLYAsnhFGheUWDsUaIte2dSRJ0nadiN9SXDw,3176
66
- odxtools/multiplexerdefaultcase.py,sha256=u3YxZZawhXTOdrC5ltt1YNNaDMGrbL9qsz6PTKrPdSM,2104
67
- odxtools/multiplexerswitchkey.py,sha256=fnCpPcg47JQZQsrqS2RAa_O-JrfUb0pvhKv8hhs1RXQ,1551
64
+ odxtools/multiplexer.py,sha256=_uhmYuCVsggQwU3ZSnlmPQ3B3nKDZWLK6-3UtCiCfRw,10207
65
+ odxtools/multiplexercase.py,sha256=hmr2vga4WbB3WnyWwPdB2_AnI9Zgk_pGqgc7tk2ylTE,3093
66
+ odxtools/multiplexerdefaultcase.py,sha256=ljQmqOcQ7kGdGj7FFHCZ6tQ0y5kStJgo3alL8TugJXA,2021
67
+ odxtools/multiplexerswitchkey.py,sha256=5sE4hf6kTJeYcDK-Nowzape88f9hBBH5-YksiJH-EM8,1551
68
68
  odxtools/nameditemlist.py,sha256=KqKILKq8lqo3qQKmR5HBAkePqfggFhI7yAoenYprjNs,6960
69
- odxtools/negoutputparam.py,sha256=u2IhJvy6n19t3nyADGG0H0XTm7JNdQ0-95FawGAdtiE,1373
69
+ odxtools/negoutputparam.py,sha256=p-LUbo61FU7ac5l7k5koKfA5eI7JohS6JZ1BzmF5nj8,1280
70
70
  odxtools/obd.py,sha256=WsUbhdonqQJtxf972CUdYL78AMMTVjMQhoCJbaZhRIo,1860
71
71
  odxtools/odxcategory.py,sha256=5R5vUTcYnsgfzGD3c0TM6qFYXpbW-d-t1VpUmgZYHWU,3221
72
- odxtools/odxlink.py,sha256=WVPOXNIldLdz0YnwVpRVe42ugC6G1WX4Ic2Khhz-ito,10194
73
- odxtools/odxtypes.py,sha256=XJ6OR2_fsILR_cA3lDK47XAtYQ5U6KsH7r4Qn5nSNH8,8094
74
- odxtools/outputparam.py,sha256=VqD7jJ5yDvIq9KAatGWD17CWfuSqySQl142FXZYeQHE,1468
75
- odxtools/parameterinfo.py,sha256=PzhIZyYINNxykecPQWnRH1Ywrfgxx31DVax2VNN__CY,11183
72
+ odxtools/odxlink.py,sha256=gXB5G5QUPpIpfXlsC_Qm76bxzuRJs7X4fPlAjhG3PVE,10648
73
+ odxtools/odxtypes.py,sha256=wBVhBFUI99Hd_yrMh54oXHnnKLLS_IwdSpPXEzTJuOQ,8143
74
+ odxtools/outputparam.py,sha256=LQhoqeYti6NWehqUvboLMeoqNu6EHgEIu5IYSQmaOVE,1469
75
+ odxtools/parameterinfo.py,sha256=opbLCqsh7ry6XzWARaAGDcS9GWo_6VrxSUOyKrJ_hQM,11182
76
76
  odxtools/paramlengthinfotype.py,sha256=zJ3gRweIEngl2C4wJoT2uuTf05NRNSJ4RlDmC2L3UBE,4859
77
- odxtools/parentref.py,sha256=kcY3VMyVaIUWD0iVNX8sD9qeI4peU8gijboquu0zD7E,3751
78
- odxtools/physicaldimension.py,sha256=CEH7Ura4gqsqlBUxBW08ea9Pxh_Od8JruYQ8o9qOGME,3269
79
- odxtools/physicaltype.py,sha256=mCyoESSNhHYYoj7bLidZYazi0N2HhoEbyw2iFjRPqII,2727
80
- odxtools/progcode.py,sha256=Cx8ziCmQm2OfhinAuRrFrMuoThU7hgA6zNQKAT-AT0A,2276
81
- odxtools/protstack.py,sha256=nb2RR4OEaGX6lJ6drHejJU-tkB1p0Ok0KLZhNMTdsEc,2012
77
+ odxtools/parentref.py,sha256=m5m5-HSON7Pp5JJMj_rDKWwKqbnLY7-ItI8Xg4U5-hA,3750
78
+ odxtools/physicaldimension.py,sha256=z7_Qr13hF1kohqgA_4EgkeWMLcC_GicFp8Q-7Vep69s,3376
79
+ odxtools/physicaltype.py,sha256=9j82eRiiMcsh89gLRHKUGzfI2Kdf0YU-5GeWMkm2ZYs,2527
80
+ odxtools/preconditionstateref.py,sha256=hBYke_Fp9Jz3kNEPVfZf064NIBNaRjIkjIGJhESrb2M,3340
81
+ odxtools/progcode.py,sha256=rhUMTsesFyeqNis3qh_dr8M-yDSrGCHA4nwEhvTIj1o,2275
82
+ odxtools/protstack.py,sha256=vPXOvyyYxGjVscoHiLy7389CMoZerUkuG8HuBQnFWeU,2012
82
83
  odxtools/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
- odxtools/relateddoc.py,sha256=zb5Ea9vkd31kxTP4s5_PLF3LuCoUcG8rgLckStHVRDc,1301
84
+ odxtools/relateddoc.py,sha256=o97gIQpS2QZilL4otSSE8rV_3X-l7Rhk0IGM1NZCzJM,1300
84
85
  odxtools/request.py,sha256=iX3D4VX-ctUEk0WpvQHr7UQHalhHkSeR9DLFbVoEQws,4902
85
86
  odxtools/response.py,sha256=aJDoe-ZAKI4Zui4VbwnWLLb9g8Y_SgVZ0XFH7jYZRVI,5505
86
- odxtools/scaleconstr.py,sha256=oZtpxNh0mn_9oa-J6xxdPz09tMiQ9Y2DE1Ae-1ovMqI,1787
87
+ odxtools/scaleconstr.py,sha256=NgzgSLcKt7Ae0hLlKI7yIz5aUHGW1ypDDrnJ-vYRgsQ,1786
87
88
  odxtools/servicebinner.py,sha256=TId3D3XHa98zbyC1sGWacQUlIZ5e2Egklelv6_Ra2II,3861
88
- odxtools/singleecujob.py,sha256=rlpReb9816abYX0oihYXMkIQo8hnzbUkZqkTvX-IRZ4,3920
89
+ odxtools/singleecujob.py,sha256=P3spnu5KqPZruS3kw4Y7Rkxa7DRdiyY_9tuI_cKOu4o,3954
89
90
  odxtools/snrefcontext.py,sha256=5ZbrZiX1gw6LC6o62RPuxzSo4tDR2LqRQ9w9Vi57FA8,953
90
- odxtools/specialdata.py,sha256=5-1D_6dcEmi-TodCzCoBZK7gqeDY-cuRe1ybkTh4rBY,1033
91
- odxtools/specialdatagroup.py,sha256=9pNCA89kGwhBiVN9nC_03ASHZT6q3FL8l2CxRf9jwU0,3070
91
+ odxtools/specialdata.py,sha256=EBt5ygH2ypxnh4KzMk5FtjyQWiLshHgQCIQsNIw6Ioc,1078
92
+ odxtools/specialdatagroup.py,sha256=1pvVYliFKJCltZg8LvoiKKzMdHtaR_YWRXIOjhhiW1s,3116
92
93
  odxtools/specialdatagroupcaption.py,sha256=pIa1l6EXVDXBisUtRkn6hTzAcUXFnXJoWstesayLfME,987
93
- odxtools/standardlengthtype.py,sha256=-Zi4yNXSiEPj0wk3mOQLaWhw15JkxCaZjBDcxqf9NzA,8190
94
+ odxtools/standardlengthtype.py,sha256=sRY786GAPy8NS5psSDgJ4koX3NCP7SQAqH2GIdUNboI,8107
94
95
  odxtools/state.py,sha256=d--nCbV1qBmOmiTmUrQjDC_naispOM0a-H1AvCe5_xI,898
95
- odxtools/statechart.py,sha256=ZT8amPjec25pexwnOAPiifGEmKa68rliOILLnB6tNJc,2956
96
+ odxtools/statechart.py,sha256=9RFzxUX6kHckavAUKy8REYuqN1AybU5hvXNEL5EHiE8,3051
97
+ odxtools/statemachine.py,sha256=Pene6OVuqB5S7TTFRPVlK8aCqiPgeYxlR7wDDfXDWck,7006
96
98
  odxtools/statetransition.py,sha256=Q7UaDksJmiKVGnO4GsxPH9pFIKt12ZOkDeJn4KICiGk,2599
99
+ odxtools/statetransitionref.py,sha256=tiCBPY0_oGVUBt2YU9g9F_QlKRl0keWyG1AtwwuLTt0,9229
97
100
  odxtools/staticfield.py,sha256=NBZa5UZD4BD4UekpqF5bq_IzFjxUafmvpCHIEptOl-s,4434
98
- odxtools/structure.py,sha256=kRBP00MDN1w9w3Vc2XnhZDC_SBBVCZwayGGJoKJ6U_c,866
99
- odxtools/subcomponent.py,sha256=OPnpbliL7OTfYy9dR0hpQclyqQiTUEa2e2n7GmIoZVE,10401
101
+ odxtools/structure.py,sha256=XFKHgWyPuowedGuGL5Pi0tIi-JywY0gAgS7aUcCV0kc,866
102
+ odxtools/subcomponent.py,sha256=b-0Zz8DXg5ss5rJIn3sJ8UzOSuB7iSTv2sgGaJkgtxk,12924
100
103
  odxtools/swvariable.py,sha256=7vmVTAqtKIn81UpAZrboIZpbbD4jqwW0MEiK0m5bZNo,697
101
- odxtools/table.py,sha256=UTNQMVuQOj3uOYos_V1eH3QgWXncv6MPRXUhTYUxiMA,6030
102
- odxtools/tablerow.py,sha256=QWOQxd83EN6jnOXDAc3ogaFxCz9R416vZSXpmZKjjnQ,9759
103
- odxtools/teammember.py,sha256=xn1y6k42zQoyM2SlEkZ8UFyiqBvVI5FNZAm_xt2Vt_Y,1772
104
+ odxtools/table.py,sha256=Hit1t4XSuWXFVHRew3JV-_bNjze5ebeqvwvfRkyRiDA,6258
105
+ odxtools/tablerow.py,sha256=d6pMqpst9TyWMqrEE5d0QamWFdcsKCeN7uCng6aC2m4,10141
106
+ odxtools/teammember.py,sha256=ESNsVHsbsfknjD1mvshZg705VscLBHmswSPp2LsL1qA,1851
107
+ odxtools/text.py,sha256=S45s47Eh1QjjwxCUE6fKSVDlBCMu_cUtkP90qJVk24M,1020
104
108
  odxtools/uds.py,sha256=ttjCaqwfAU-DlM5peFpZCcwzq60QjBMxVpaOyUyY48k,5567
105
- odxtools/unit.py,sha256=n2aJdXWvtZbqvoGUXDRA6nXc5QwM25suZZg8dQG6y1A,3408
106
- odxtools/unitgroup.py,sha256=_WNpnYFmkiHQnOY8XhIviiQLXziY3kplH--7ufAWXyI,2067
109
+ odxtools/unit.py,sha256=E9u6O5MhBpbqb3CZ2SgsjHNhzBPmt3nU8H3I1Nwdguc,3370
110
+ odxtools/unitgroup.py,sha256=mt5vK7BpfuzKlU5u2yVSyBdhlX9sMqhTYUvGVVMr4Ao,1968
107
111
  odxtools/unitspec.py,sha256=IAmDSLscVb4QUGgbQT-xXhtywW3qs0o9FfelnVYvimk,3074
108
112
  odxtools/utils.py,sha256=FaNlouR0FvO4W4nk3Wr7Ogx1wC4tYfuMOo07KF2QxbE,2764
109
113
  odxtools/variablegroup.py,sha256=--5sMDOMUg4I3hFyoVOFcGCTOrctrrMADdmH3Mn4wHk,848
110
- odxtools/version.py,sha256=rCNnPeguHEaZ5sV4KzLUwq9jwQUlDxbmYLFI4XE-Jkk,511
114
+ odxtools/variantmatcher.py,sha256=a1c1NtZgxRBA7OsRhEBM-3mgKUHqSywYXggT7Q5alJo,8355
115
+ odxtools/variantpattern.py,sha256=f3t1KXXjrNkJLGmEc7iGG86Nj4h6Fdh9loFKTt-1Ffc,1431
116
+ odxtools/version.py,sha256=eKw6pZxDlATsbtc6mns2HnFWZ9ce4NPGBmJCk4tOcaw,511
111
117
  odxtools/writepdxfile.py,sha256=ZEoNkSxheqnXm836-HOpd04O6ipMXYKFzXZy6PM0YLc,7813
112
118
  odxtools/xdoc.py,sha256=gDq-8l8x-Tj1ZJOttPxZchcO5_jEPwcXxMgT29VgTS0,1433
113
119
  odxtools/cli/__init__.py,sha256=T7ano_FIyzBASxYpmcA5VJXU5bQLIy_Qk0HE_SDKelY,106
@@ -122,7 +128,7 @@ odxtools/cli/list.py,sha256=fQH1gK3ajUhbp9-giIZk8qIZ-57FtADU1EggXo2yH4I,8980
122
128
  odxtools/cli/main.py,sha256=_zPCU6N2ofpj_jQuQ_BU5EafBpMW0srhahZI8BgAM-0,2335
123
129
  odxtools/cli/snoop.py,sha256=z8USSpmz18VAvkGpzepeaOlVJhi-8aeW10XRylsvZLU,10610
124
130
  odxtools/compumethods/compucodecompumethod.py,sha256=cCgCCuFcu2K9QuW0ZNbfp6AQdgPy9QE7UnmRa6Iet28,2459
125
- odxtools/compumethods/compuconst.py,sha256=14JIJXVKSe4bPWb5JyKXB6tAASMcWznExE1w6z1SMoc,806
131
+ odxtools/compumethods/compuconst.py,sha256=sUPw4zwUBVB04Ra2q6NkhBMfUXPM3NtATXEeYfVu_no,806
126
132
  odxtools/compumethods/compudefaultvalue.py,sha256=Lw8Fnm854dpNCvO8waKWg_hSRyW-NwvoQFFjyW3RHwY,980
127
133
  odxtools/compumethods/compuinternaltophys.py,sha256=7BHDeUpe8XUlvdUrLh0p416NREsGiZq5Rx6fQSzbosA,2102
128
134
  odxtools/compumethods/compuinversevalue.py,sha256=oG5tWSJkvoDmJPmb9EAGGutslbTrwZok5nfG20iZ8vk,220
@@ -132,23 +138,23 @@ odxtools/compumethods/compurationalcoeffs.py,sha256=N95JWi06Wkgk3zAK57ONy7mQ9prp
132
138
  odxtools/compumethods/compuscale.py,sha256=xkwIfkoRF4faICy2jlfB6rx4xYRQb0jL5fq6NMNPX8k,4487
133
139
  odxtools/compumethods/createanycompumethod.py,sha256=w68p6ME_WSnV44X3zah4FJ1IROEU6mAglcKivMw7om8,2830
134
140
  odxtools/compumethods/identicalcompumethod.py,sha256=VVQ0tAkmowXZMBFQd9-n0VnsodDFRHXWdWgpNxdHAkQ,2077
135
- odxtools/compumethods/limit.py,sha256=QjrY6dd0Kc7n4CcweMBrkwlX4hsmx0bkQEaQKmTxQ18,4164
141
+ odxtools/compumethods/limit.py,sha256=NSYSVD7hKVNooEQ-gCIvr43jy5g9f_5rKXq9qlSrfJY,4164
136
142
  odxtools/compumethods/linearcompumethod.py,sha256=Q1wELL2Y_nMomy-_7OUHLo-hDkepXLHveWorje5eDEE,3671
137
- odxtools/compumethods/linearsegment.py,sha256=_P96JyY5hatNlFvj-yXbWVBrx3rIj83_nu8SPpLezGk,7131
143
+ odxtools/compumethods/linearsegment.py,sha256=qzBoz_vxCR7hKNesvTXNvmd7MTxKJpKmdwLT5Qy8CX8,7131
138
144
  odxtools/compumethods/ratfunccompumethod.py,sha256=FgG1_jX3WvjbCFz989SqDC5WkwaZ0xR-CN-M5lkTH5I,4393
139
145
  odxtools/compumethods/ratfuncsegment.py,sha256=_gWFz8FowgQ4X3YIdeYJaeX-QG23U25k4yLh02cn7j0,2834
140
146
  odxtools/compumethods/scalelinearcompumethod.py,sha256=o_Re17G4XlCn-XbStnvlTs9XVN4h71mkkYyIOii-7w4,5895
141
147
  odxtools/compumethods/scaleratfunccompumethod.py,sha256=3imvLJgN3gkc7pILPIwAILHw0Ie5Ih_vysVGA8wYRgk,4457
142
148
  odxtools/compumethods/tabintpcompumethod.py,sha256=Gyf2qV5y53SHIcum5d5HQVGszoZCdu47jxMCQ6yKdQk,8065
143
149
  odxtools/compumethods/texttablecompumethod.py,sha256=vDYafbM0YaipjfN0NSlCFMiIPvp8waMNj3thNcwuYgk,5929
144
- odxtools/diaglayers/basevariant.py,sha256=mXS-SF-tcwtdV-rxZZCH6_yqdA-yhtMX1SGo1MS8w7k,4452
145
- odxtools/diaglayers/basevariantraw.py,sha256=A9h6p2Ri0sPPTW217rtEdNpAt5g6t0MwP9sgXqZ8pFo,4673
150
+ odxtools/diaglayers/basevariant.py,sha256=x9WW-gpYl517la1nc2CJMj08-S_KGFb_8nwIOQN9Vg0,4645
151
+ odxtools/diaglayers/basevariantraw.py,sha256=ujW58iFFWFSL9dzgUM4f5bPOA8oTZ7BjbH5lUHtLMJQ,4970
146
152
  odxtools/diaglayers/diaglayer.py,sha256=xs529IVG_18Fi8kbEZkD2vHjHRr57jeE4A_2lDLRKCQ,16254
147
- odxtools/diaglayers/diaglayerraw.py,sha256=ihOq51PWZUi4L7k0R5k06aLxZ8ppUkRYFym4hK_gXq8,12985
153
+ odxtools/diaglayers/diaglayerraw.py,sha256=IAValDxqCe4NpwFOKcwJWGAE7aJbgSzND-WZXRjpRAg,12961
148
154
  odxtools/diaglayers/diaglayertype.py,sha256=FXL-EVBdrAURuHSHo9OthFuEYEybQO66aMB1o2GxVdI,1340
149
155
  odxtools/diaglayers/ecushareddata.py,sha256=QoV50wQIrJ2-faLtU1P7RrjdacbhPY2BfUtVtIyWqCM,3347
150
156
  odxtools/diaglayers/ecushareddataraw.py,sha256=cvkBhqTLOAey7Pt1bjQ3Jkkenp-D3Zh5djpB4ZWWUvw,3375
151
- odxtools/diaglayers/ecuvariant.py,sha256=OsLWg-dx6OJ_OPuYcgoTJuDXEReaJclDRbU5YKqrtBA,4368
157
+ odxtools/diaglayers/ecuvariant.py,sha256=SE1JYUo3F67WO1wu8hYekW34s6OV7ORdoKkL62fZchU,4863
152
158
  odxtools/diaglayers/ecuvariantraw.py,sha256=bKlqFnBWkKdkM9EY5rFGOno3ClIVQNhgBoU5DseNnRc,4944
153
159
  odxtools/diaglayers/functionalgroup.py,sha256=o5bUGGDYisr7CjHZZh83fokA80f0s0zpHC_501cg-f0,4093
154
160
  odxtools/diaglayers/functionalgroupraw.py,sha256=H0-_XXlFTV8POGnh0S7CVBOKKQuyKHMB9lEyoAHuG_A,3963
@@ -156,36 +162,37 @@ odxtools/diaglayers/hierarchyelement.py,sha256=kQf2CRMVTalPJnskF1wsTTkgKOzZMBdZX
156
162
  odxtools/diaglayers/hierarchyelementraw.py,sha256=IdFbnZIw7QGAMh3MW5N9vq5QNGBBAs5foCnbvotfqhQ,2058
157
163
  odxtools/diaglayers/protocol.py,sha256=ypIhfySB6F16Y48XLZIPL36GfrKUznTCmiJ0ROIxYJo,2083
158
164
  odxtools/diaglayers/protocolraw.py,sha256=Wf1q2l11mxw61gnveVVEZqgR0yj2RCxoaB3QLzdZQWc,3251
159
- odxtools/parameters/codedconstparameter.py,sha256=g34JJxQkyL5R27XiGCgkXyt7UzxFtBhZgv_FbTe2aiQ,3893
165
+ odxtools/parameters/codedconstparameter.py,sha256=x5pKlG2H5cdbwTKAeXetd4hORhdVUD6wec91X5Ar1oQ,3924
160
166
  odxtools/parameters/createanyparameter.py,sha256=m26HHUQrxwDak3eBBciVBLic768Qlo4F2xn1z3r0boM,2566
161
- odxtools/parameters/dynamicparameter.py,sha256=mdZx12XbhTSYVVuXEsPYRll3zaHjbHIYIzA6yUy4zck,1569
162
- odxtools/parameters/lengthkeyparameter.py,sha256=r9beVso1DQRJ81CU6e8Dxqexbp8W4QksDcc_BtItSCQ,5269
163
- odxtools/parameters/matchingrequestparameter.py,sha256=lss2Fb5eW1plb9NjA8dalt-tTMiKFTki1vGKHqYLkJw,2934
164
- odxtools/parameters/nrcconstparameter.py,sha256=SjTHQlaBzvyUATyOzSFFWCcdkTeHcaoKO54kTomzb6Y,4823
165
- odxtools/parameters/parameter.py,sha256=0WhCvULPzvZ07g9Nz-0NyHt1Y8E8Q4YsW0VF-EUg2ow,6145
166
- odxtools/parameters/parameterwithdop.py,sha256=k7yJABRmHQTZNTEEPjyq3tBXJD4Aey365HpP7SGsEgk,3283
167
- odxtools/parameters/physicalconstantparameter.py,sha256=yBQbPRFRr5oDIvOMH4kmyE-xLA7UCPFm6otFvMHi9yc,3612
168
- odxtools/parameters/reservedparameter.py,sha256=4wCBmqoZDhALgW0HXk22VzOL6Ogrywa8CbWoo4dZnEQ,2026
169
- odxtools/parameters/systemparameter.py,sha256=CX5YeAcLs0ffDpksTOMXHSGvuPmRIF2Il_lnuCmbNI8,3593
170
- odxtools/parameters/tableentryparameter.py,sha256=aPV0u-3PbromnzKqRQ9uYC7iL-fJXSsuHnyuPnPkNqg,2726
171
- odxtools/parameters/tablekeyparameter.py,sha256=tkBJrK1KD7lV5vvqt5UP8y5C4IAkRuWKcvlDLQrziQo,9943
172
- odxtools/parameters/tablestructparameter.py,sha256=Doym0Tybi_t8w7nqM9n_ZAFwRWm-yJOnsaSqi4u5KiU,7032
173
- odxtools/parameters/valueparameter.py,sha256=khsmiaLhpW2PjUKQaAkntwurxsml3TUzNwaZCaWNS50,3063
167
+ odxtools/parameters/dynamicparameter.py,sha256=cM5vxCzx3-jAONacMOBaTJIDJ_9SQK4ENSU1BugDgUY,1569
168
+ odxtools/parameters/lengthkeyparameter.py,sha256=zGvIqkdtP3K6cGU1_TzbFa02E9MgDcydtUqrghhHj_Y,5269
169
+ odxtools/parameters/matchingrequestparameter.py,sha256=o-mYNaYh6m-tgf15wPl3msMXH3Urb30DyJNEUwWnyqM,2934
170
+ odxtools/parameters/nrcconstparameter.py,sha256=8qnCb__0W4Af0baB-RO7oIzZXCSneNHNEt6s_nhw_nY,5046
171
+ odxtools/parameters/parameter.py,sha256=IfC90A6Ld5R_QhKvXR531V8BChBow6WJkdEksxvxfW8,6157
172
+ odxtools/parameters/parameterwithdop.py,sha256=x7Yn-7wtVCxKjcF0PBVtSWopDwlQFwu5ObUOejQjAdI,3283
173
+ odxtools/parameters/physicalconstantparameter.py,sha256=i0J0qD95Fvf47Bo5znANt714nOm4lnWBLUpSpuMcRHE,3611
174
+ odxtools/parameters/reservedparameter.py,sha256=gUfiEfbJQbYeqYM5cggLtH42Zt_U1gp-8_8PWz2Xi0g,2025
175
+ odxtools/parameters/systemparameter.py,sha256=HYbmAsx2wYloUs25IG9QQuY3_9L9rnyb6ihYz_xR2Ys,3592
176
+ odxtools/parameters/tableentryparameter.py,sha256=dPl8wf8lmUY2otW2UVogYKiCiM8X9ghEB9BfDkDTlBU,2725
177
+ odxtools/parameters/tablekeyparameter.py,sha256=mQk6s5Ke5VkwDW2NYgDDYIPNT2iGHIFaSsxCedlaQ64,9941
178
+ odxtools/parameters/tablestructparameter.py,sha256=WhOxzgFA7JekR5jFf_As_B5CQPdwLR5uhdkRhSzto80,7179
179
+ odxtools/parameters/valueparameter.py,sha256=_WNaaZmZPKvE_1jo3vOeVz5Vhew1SbR0bozqvdg5NcM,3063
174
180
  odxtools/templates/comparam-spec.odx-c.xml.jinja2,sha256=A9q0SQCGhBaV2xUcXHFVkmZIBpbl9OP2x6JD0umzrdU,904
175
181
  odxtools/templates/comparam-subset.odx-cs.xml.jinja2,sha256=xL4vy0yAsSajJRF_w7wCQFSklUIgyHwCHgGPlLTGK_A,1751
176
182
  odxtools/templates/diag_layer_container.odx-d.xml.jinja2,sha256=fDH9K2IdGfX-dVV0pEpn2kkHIBQTT9B0Sb5dF4vGWco,1798
177
183
  odxtools/templates/index.xml.jinja2,sha256=Z1bcntvvky7NoH0Q0CRJgUORwf3g96PFPGeOpi7VATw,647
178
184
  odxtools/templates/macros/printAdminData.xml.jinja2,sha256=YTB_CbhnALF6RIbE0XKQHRbC6c0PSZ_DxdrRHgqMD_s,2590
179
185
  odxtools/templates/macros/printAudience.xml.jinja2,sha256=vaYL_-GPVdlLc7WAQTbkVZZbFuQptnCbOhXJb3tsHv8,1286
180
- odxtools/templates/macros/printBaseVariant.xml.jinja2,sha256=l4Jp8v9ZfPXvIisqVLgTpzc5UdYGeIocY4vAcgCiiaE,1480
186
+ odxtools/templates/macros/printBaseVariant.xml.jinja2,sha256=Ovf7NvO5jzy_9w1-iXi_q2dedoEfsQOYCK_WASkcITQ,1451
187
+ odxtools/templates/macros/printBaseVariantPattern.xml.jinja2,sha256=foL_DmH4mWFzPObZ3VjPixdzbomAA5jK7GLpAhJsKVE,1192
181
188
  odxtools/templates/macros/printBasicStructure.xml.jinja2,sha256=V5oWGZesU_U5pvPO3Rtlodc7sxe5mFWY-uURLnQ8OfQ,614
182
- odxtools/templates/macros/printCompanyData.xml.jinja2,sha256=jcNmQBOGDw7wcKdam72NIJSOTxthfkPJvrmw24MBiYQ,2981
183
- odxtools/templates/macros/printComparam.xml.jinja2,sha256=e3hPCswAymJteQIUNoc7FOwsK_FrbJOvJooWdEx_vuQ,2408
189
+ odxtools/templates/macros/printCompanyData.xml.jinja2,sha256=GkQM6tIx-RxhOfZz4XqNPgnMRn82MZ4OVBOukhkRHtc,2989
190
+ odxtools/templates/macros/printComparam.xml.jinja2,sha256=75nb34_fancCqpiPLjon5xsr3J9cScvq5ibLrWknoz0,2345
184
191
  odxtools/templates/macros/printComparamRef.xml.jinja2,sha256=rBhrdUnp605fsUN9SaljpyaAojzaLBvTbkOuduKod18,1274
185
192
  odxtools/templates/macros/printCompuMethod.xml.jinja2,sha256=9DilxMWnqOsXu7bNNlDqls-lEqcr_GPzhZum8rzDJP0,4430
186
- odxtools/templates/macros/printDOP.xml.jinja2,sha256=d3ZrE1FZpJ8RZb0iMd9Fvpn6R4KVqnwm8hHvO0qUULg,5748
193
+ odxtools/templates/macros/printDOP.xml.jinja2,sha256=RUnofs7WCrGHzbUIK6yRPNMlk_SXPuwFsSpUg7HGY-o,5970
187
194
  odxtools/templates/macros/printDescription.xml.jinja2,sha256=95Zamh5YtS5d-R3RVdOZV5xqb9syho_L0-CFq0PPJdI,589
188
- odxtools/templates/macros/printDiagComm.xml.jinja2,sha256=_SByYBYzPG9t7VNnAohFAXsgng9VrQcSacXH923wRzY,2239
195
+ odxtools/templates/macros/printDiagComm.xml.jinja2,sha256=05J7BGIf8vv41ksZuKnv--gMuA--vKtAATdxfAuKKro,2374
189
196
  odxtools/templates/macros/printDiagLayer.xml.jinja2,sha256=jVsoXIThQxIYte0d8lzEc7R7mm54vzT-GKAxu5NKk-Q,6901
190
197
  odxtools/templates/macros/printDiagVariable.xml.jinja2,sha256=sg81-vgZFOsBt-e-CJ9BxcfoWMAf6imhJXS9_ftq1YM,3172
191
198
  odxtools/templates/macros/printDynDefinedSpec.xml.jinja2,sha256=uX3C40VmlbH7sndlJNyTvq8upzaoq8vCk6S93gtpFIY,1742
@@ -193,7 +200,7 @@ odxtools/templates/macros/printDynamicEndmarkerField.xml.jinja2,sha256=6BmxPKesQ
193
200
  odxtools/templates/macros/printDynamicLengthField.xml.jinja2,sha256=bNvNh_4xyp4L6v7cxJ5cO1yOHYPnSFiaK9oY4l63fDU,784
194
201
  odxtools/templates/macros/printEcuSharedData.xml.jinja2,sha256=WK08eoDFEjj9o3eOuy__H0r9ioo688rTuQp6uXE6Tdo,820
195
202
  odxtools/templates/macros/printEcuVariant.xml.jinja2,sha256=Nsgj2VUWZvSDFPQsn6wv75M9TaryOB-tlQYCVq9hDEM,1594
196
- odxtools/templates/macros/printEcuVariantPattern.xml.jinja2,sha256=uSUrX1n2YVw6tt1-A0Lmlgy_W3dxW4r8bVErdrf_6vk,846
203
+ odxtools/templates/macros/printEcuVariantPattern.xml.jinja2,sha256=YoYyzmxerJLJzUNoQ8H-JBnOqiwpVdODqk2KNRdWKWo,844
197
204
  odxtools/templates/macros/printElementId.xml.jinja2,sha256=Oe4sgtBB_VhTz6uJzaiTCpQki2ulKKfpBq56FVgBC-I,570
198
205
  odxtools/templates/macros/printEndOfPdu.xml.jinja2,sha256=ptjwOxyNTABATOajiitcvlJRKVGP_osh2wSJTCbaa38,679
199
206
  odxtools/templates/macros/printEnvData.xml.jinja2,sha256=2Goatqb66d-pCf9wqJDXn1EZWNhkQ8FJANKQMOnxuJs,609
@@ -204,8 +211,9 @@ odxtools/templates/macros/printHierarchyElement.xml.jinja2,sha256=GD6iNIE0Wu0QsJ
204
211
  odxtools/templates/macros/printLibrary.xml.jinja2,sha256=wp8vZzHPLZayWZh6BOQ56kGyHSeyrlNacdlxBw9d0N0,683
205
212
  odxtools/templates/macros/printMux.xml.jinja2,sha256=68IiPY_mIJQqQiqce3jUphqp3-xLfmEBL7CSb3Cz7eI,1869
206
213
  odxtools/templates/macros/printOdxCategory.xml.jinja2,sha256=SatvRj0yafePV_Xg6Un1d5KXq3yZyqV9f5YZU1wlzws,856
207
- odxtools/templates/macros/printParam.xml.jinja2,sha256=U96BZDgcG8O0ewTXY8DHY8z29I8BkD4ndX0r7JAk54w,3197
214
+ odxtools/templates/macros/printParam.xml.jinja2,sha256=VvIA-4IjG1ugEPtACc4FKA-d8MlzaI8_Dcw8UR2vNc4,3221
208
215
  odxtools/templates/macros/printParentRef.xml.jinja2,sha256=QpC5d_zys3OgttshMUsWVUVxpYfSazyJqeANtA-k3FY,1768
216
+ odxtools/templates/macros/printPreConditionStateRef.xml.jinja2,sha256=h6oQnvO8_1r5vSYlvyXMNT1ZEFaUpGg5bGMkZkWlBjU,614
209
217
  odxtools/templates/macros/printProtStack.xml.jinja2,sha256=0FHHvuduiMPhAE19vpTHu3cQeM9kSybWj5FbybcXnGk,773
210
218
  odxtools/templates/macros/printProtocol.xml.jinja2,sha256=QYfA8-3HWPVmpKW8bA7shKhrZ3s8iKQd8BfOYSRnMiU,1034
211
219
  odxtools/templates/macros/printRequest.xml.jinja2,sha256=yq4xGSlQCioT7FRivyx40Cjs2CYr9EK6NLZf0W4wGW0,717
@@ -216,14 +224,15 @@ odxtools/templates/macros/printSpecialData.xml.jinja2,sha256=0eIFh9cWXfFrQN_f8G_
216
224
  odxtools/templates/macros/printState.xml.jinja2,sha256=BNnTEyczp43iP9Bn_plMLRsJsasra4sRyvmgODuZQYg,315
217
225
  odxtools/templates/macros/printStateChart.xml.jinja2,sha256=XW1EhF1k8ogbEDt-QMjSOojKl4vjxXkq6BwJWR9GJsI,951
218
226
  odxtools/templates/macros/printStateTransition.xml.jinja2,sha256=J2t0yU82UBegUSH9sAbnkdgEYPTUU0A7I-CokuPQxDo,510
227
+ odxtools/templates/macros/printStateTransitionRef.xml.jinja2,sha256=rm6uKfRq8J_IlZ6KQP6jOwdvqMBI-mYcdLdjKse_seM,606
219
228
  odxtools/templates/macros/printStaticField.xml.jinja2,sha256=fkV07zrL2pTo6b5ZPD14V0uC1aEk2P4roXyDhp-ah38,521
220
229
  odxtools/templates/macros/printStructure.xml.jinja2,sha256=M8p82SlgKaDk6nJA-0wr6FhyfFCYw9UTrqvB8WnzdxU,645
221
230
  odxtools/templates/macros/printSubComponent.xml.jinja2,sha256=ETo-k0K7px5nu9kgVjgDnjPoy8rYRfzq5ojvsZhM3Rw,3416
222
- odxtools/templates/macros/printTable.xml.jinja2,sha256=IMAaYNtpxs_6V7VxM_hfOeGkFfkyRjSmwvmr9_K8Ddc,3075
231
+ odxtools/templates/macros/printTable.xml.jinja2,sha256=uB0o-B3aJ64pkxY0flGoSx69QeSfdGjx30YhUtCAKy8,3336
223
232
  odxtools/templates/macros/printUnitSpec.xml.jinja2,sha256=KOjRVwtdIg7uGl4B9cLpvW68-TYeE33Tz9sWZdnwkBE,2878
224
- odxtools-9.4.1.dist-info/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
225
- odxtools-9.4.1.dist-info/METADATA,sha256=jqTqPdpARQPDAnEyGaDMfjBGoOidZ1AyYZB_DZc5qyE,44055
226
- odxtools-9.4.1.dist-info/WHEEL,sha256=nn6H5-ilmfVryoAQl3ZQ2l8SH5imPWFpm1A5FgEuFV4,91
227
- odxtools-9.4.1.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
228
- odxtools-9.4.1.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
229
- odxtools-9.4.1.dist-info/RECORD,,
233
+ odxtools-9.6.0.dist-info/licenses/LICENSE,sha256=NeGPFQdTa6EKeON3aShVlPAIquJnbbiOfj0suz6rzyQ,1074
234
+ odxtools-9.6.0.dist-info/METADATA,sha256=xvQdgv7nxsZmapsSJ2nhZyjvlEQB15erYOhVIAYUwDg,44077
235
+ odxtools-9.6.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
236
+ odxtools-9.6.0.dist-info/entry_points.txt,sha256=_sBDzuNoT8LbbCjfc-OJiUt5WPrtOq_x-rr9txhrPjY,53
237
+ odxtools-9.6.0.dist-info/top_level.txt,sha256=pdS02kE5ZdgsaBRZDpX3NBFlaSx3zotsqX4E4V6tXEI,9
238
+ odxtools-9.6.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.1)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,18 +0,0 @@
1
- # SPDX-License-Identifier: MIT
2
- from typing import List, Optional
3
- from xml.etree import ElementTree
4
-
5
- from .ecuvariantpattern import EcuVariantPattern
6
- from .odxlink import OdxDocFragment
7
-
8
-
9
- def create_ecu_variant_patterns_from_et(et_element: Optional[ElementTree.Element],
10
- doc_frags: List[OdxDocFragment]) -> List[EcuVariantPattern]:
11
-
12
- if et_element is None:
13
- return []
14
-
15
- return [
16
- EcuVariantPattern.from_et(evp_elem, doc_frags)
17
- for evp_elem in et_element.iterfind("ECU-VARIANT-PATTERN")
18
- ]
@@ -1,171 +0,0 @@
1
- # SPDX-License-Identifier: MIT
2
- from enum import Enum
3
- from typing import Dict, Generator, List, Optional
4
-
5
- from .diaglayers.diaglayer import DiagLayer
6
- from .diaglayers.diaglayertype import DiagLayerType
7
- from .diaglayers.ecuvariant import EcuVariant
8
- from .diagservice import DiagService
9
- from .exceptions import OdxError, odxassert, odxrequire
10
- from .matchingparameter import MatchingParameter
11
- from .odxtypes import ParameterValue
12
- from .response import Response
13
-
14
-
15
- class EcuVariantMatcher:
16
- """EcuVariantMatcher implements the matching algorithm of ecu variants according to their
17
- ECU-VARIANT-PATTERN according to ISO 22901-1.
18
-
19
- Usage (example):
20
-
21
- ```python
22
-
23
- # initialize the matcher with a list of ecu variants,
24
- # i.e., DiagLayer instances of variant_type == DiagLayerType.ECU-VARIANT
25
- matcher = EcuVariantMatcher(ecu_variant_candidates=[...], use_cache=use_cache)
26
-
27
- # run the request loop to obtain responses for every request
28
- for req in matcher.request_loop():
29
- resp = ... # make a UDS request
30
- matcher.evaluate(resp)
31
-
32
- # result
33
- if matcher.has_match()
34
- match = matcher.get_active_ecu_variant()
35
- ```
36
- """
37
-
38
- class State(Enum):
39
- PENDING = 0
40
- NO_MATCH = 1
41
- MATCH = 2
42
-
43
- @staticmethod
44
- def get_ident_service(diag_layer: DiagLayer, matching_param: MatchingParameter) -> DiagService:
45
- service_name = matching_param.diag_comm_snref
46
- service = odxrequire(diag_layer.services.get(service_name))
47
- return service
48
-
49
- @staticmethod
50
- def encode_ident_request(diag_layer: DiagLayer, matching_param: MatchingParameter) -> bytes:
51
- service = EcuVariantMatcher.get_ident_service(diag_layer, matching_param)
52
- return bytes(service.encode_request())
53
-
54
- @staticmethod
55
- def decode_ident_response(
56
- diag_layer: DiagLayer,
57
- matching_param: MatchingParameter,
58
- response_bytes: bytes,
59
- ) -> str:
60
- """Decode a binary response and extract the identification string according
61
- to the snref or snpathref of the matching_param.
62
- """
63
- service = EcuVariantMatcher.get_ident_service(diag_layer, matching_param)
64
-
65
- # ISO 22901 requires that snref or snpathref is resolvable in at least one
66
- # POS-RESPONSE or NEG-RESPONSE
67
- pos_neg_responses: List[Response] = []
68
- if service.positive_responses is not None:
69
- pos_neg_responses.extend(service.positive_responses)
70
- if service.negative_responses is not None:
71
- pos_neg_responses.extend(service.negative_responses)
72
-
73
- for any_response in pos_neg_responses:
74
- decoded_val: Optional[ParameterValue] = any_response.decode(response_bytes)
75
- # disassemble snref / snpathref
76
- path_ref = matching_param.out_param_if.split(".")
77
- for ref in path_ref:
78
- if isinstance(decoded_val, dict) and ref in decoded_val:
79
- decoded_val = decoded_val[ref]
80
- else:
81
- decoded_val = None
82
- break
83
-
84
- if decoded_val is not None:
85
- if isinstance(decoded_val, str) or isinstance(decoded_val, int):
86
- return str(decoded_val)
87
-
88
- raise OdxError(f"The snref or snpathref '{matching_param.out_param_if}' is cannot be \
89
- resolved for any positive or negative response.")
90
-
91
- def __init__(self, ecu_variant_candidates: List[EcuVariant], use_cache: bool = True):
92
-
93
- self.ecus = ecu_variant_candidates
94
- for ecu in self.ecus:
95
- odxassert(ecu.variant_type == DiagLayerType.ECU_VARIANT)
96
-
97
- self.use_cache = use_cache
98
- self.req_resp_cache: Dict[bytes, bytes] = {}
99
- self._recent_ident_response: Optional[bytes] = None
100
-
101
- self._state = EcuVariantMatcher.State.PENDING
102
-
103
- def request_loop(self) -> Generator[bytes, None, None]:
104
- """The request loop yields byte sequences of requests, which shall be executed within the
105
- loop body. It is required to pass the response back to the matcher using the evaluate method.
106
- """
107
- if not self.is_pending():
108
- return
109
-
110
- for ecu in self.ecus:
111
- any_match = False
112
- for pattern in ecu.ecu_variant_patterns:
113
- all_match = True
114
- for matching_param in pattern.matching_parameters:
115
- req_bytes = bytes(EcuVariantMatcher.encode_ident_request(ecu, matching_param))
116
- if self.use_cache and req_bytes in self.req_resp_cache:
117
- resp_bytes = self.req_resp_cache[req_bytes]
118
- else:
119
- yield req_bytes
120
- resp_bytes = self._get_ident_response()
121
- self._update_cache(req_bytes, resp_bytes)
122
- ident_val = EcuVariantMatcher.decode_ident_response(
123
- ecu, matching_param, resp_bytes)
124
- all_match &= matching_param.is_match(ident_val)
125
- if all_match:
126
- any_match = True
127
- break
128
- if any_match:
129
- self._state = EcuVariantMatcher.State.MATCH
130
- self._match = ecu
131
- break
132
- if self.is_pending():
133
- # no pattern has matched for any ecu variant
134
- self._state = EcuVariantMatcher.State.NO_MATCH
135
-
136
- def evaluate(self, resp_bytes: bytes) -> None:
137
- """Update the matcher with the response to a requst.
138
-
139
- Warning: Use this method EXACTLY once within the loop body of the request loop.
140
- """
141
- self._recent_ident_response = bytes(resp_bytes)
142
-
143
- def is_pending(self) -> bool:
144
- """True iff request loop has not yet been run."""
145
- return self._state == EcuVariantMatcher.State.PENDING
146
-
147
- def has_match(self) -> bool:
148
- """Returns true iff the non-pending matcher found a matching ecu variant.
149
-
150
- Raises a runtime error if the matcher is pending.
151
- """
152
- if self.is_pending():
153
- raise RuntimeError(
154
- "EcuVariantMatcher is pending. Run the request_loop to determine the active ecu variant."
155
- )
156
- return self._state == EcuVariantMatcher.State.MATCH
157
-
158
- def get_active_ecu_variant(self) -> DiagLayer:
159
- """Returns the matched, i.e., active ecu variant if such a variant has been found."""
160
- odxassert(self.has_match())
161
- return self._match
162
-
163
- def _update_cache(self, req_bytes: bytes, resp_bytes: bytes) -> None:
164
- if self.use_cache:
165
- self.req_resp_cache[req_bytes] = resp_bytes
166
-
167
- def _get_ident_response(self) -> bytes:
168
- if not self._recent_ident_response:
169
- raise RuntimeError(
170
- "No response available. Did you forget to call 'evaluate()' in a loop?")
171
- return self._recent_ident_response