pyxcp 0.22.26__cp310-cp310-win_amd64.whl → 0.22.28__cp310-cp310-win_amd64.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.

Potentially problematic release.


This version of pyxcp might be problematic. Click here for more details.

pyxcp/__init__.py CHANGED
@@ -17,4 +17,4 @@ tb_install(show_locals=True, max_frames=3) # Install custom exception handler.
17
17
 
18
18
  # if you update this manually, do not forget to update
19
19
  # .bumpversion.cfg and pyproject.toml.
20
- __version__ = "0.22.26"
20
+ __version__ = "0.22.28"
pyxcp/checksum.py CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  .. [1] XCP Specification, BUILD_CHECKSUM service.
5
5
  """
6
+
6
7
  import enum
7
8
  import struct
8
9
  import zlib
@@ -641,7 +642,15 @@ def adder(modulus):
641
642
  return add
642
643
 
643
644
 
644
- def wordSum(modulus, step):
645
+ def pad_to_word_size(frame: bytes, word_size: int, padding_value=b"\x00") -> bytes:
646
+ padding_bytes = word_size - (len(frame) % word_size)
647
+ if padding_bytes == word_size:
648
+ return frame
649
+ else:
650
+ return frame + (padding_value * padding_bytes)
651
+
652
+
653
+ def wordSum(modulus: int, step: int) -> int:
645
654
  """Factory function for (double-)word modulus sums
646
655
 
647
656
  Parameters
@@ -657,13 +666,14 @@ def wordSum(modulus, step):
657
666
  summation function
658
667
  """
659
668
 
660
- def add(frame):
669
+ def add(frame: bytes):
661
670
  if step == 2:
662
671
  mask = "<H"
663
672
  elif step == 4:
664
673
  mask = "<I"
665
674
  else:
666
675
  raise NotImplementedError("Only WORDs or DWORDs are supported.")
676
+ frame = pad_to_word_size(frame, step)
667
677
  x = [struct.unpack(mask, frame[x : x + step])[0] for x in range(0, len(frame), step)]
668
678
  return sum(x) % modulus
669
679
 
@@ -680,7 +690,7 @@ CRC16 = Crc16(CRC16, 0x0000, 0x0000, True, True)
680
690
  CRC16_CCITT = Crc16(CRC16_CCITT, 0xFFFF, 0x0000, False, False)
681
691
 
682
692
 
683
- def CRC32(x):
693
+ def CRC32(x) -> int:
684
694
  return zlib.crc32(x) & 0xFFFFFFFF
685
695
 
686
696
 
@@ -703,7 +713,7 @@ ALGO = {
703
713
  }
704
714
 
705
715
 
706
- def check(frame, algo):
716
+ def check(frame: bytes, algo: str):
707
717
  """Calculate checksum using given algorithm
708
718
 
709
719
  Parameters
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
pyxcp/examples/run_daq.py CHANGED
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
 
3
+ import sys
3
4
  import time
4
5
 
5
6
  from pyxcp.cmdline import ArgumentParser
6
7
  from pyxcp.daq_stim import DaqList, DaqRecorder, DaqToCsv # noqa: F401
8
+ from pyxcp.types import XcpTimeoutError
7
9
 
8
10
 
9
11
  ap = ArgumentParser(description="DAQ test")
@@ -131,7 +133,12 @@ daq_parser = DaqToCsv(DAQ_LISTS) # Record to CSV file(s).
131
133
  # daq_parser = DaqRecorder(DAQ_LISTS, "run_daq", 2) # Record to ".xmraw" file.
132
134
 
133
135
  with ap.run(policy=daq_parser) as x:
134
- x.connect()
136
+ try:
137
+ x.connect()
138
+ except XcpTimeoutError:
139
+ print("TO")
140
+ sys.exit(2)
141
+
135
142
  if x.slaveProperties.optionalCommMode:
136
143
  x.getCommModeInfo()
137
144
 
Binary file
Binary file
Binary file
pyxcp/scripts/xcp_info.py CHANGED
@@ -9,6 +9,44 @@ from pyxcp.cmdline import ArgumentParser
9
9
  from pyxcp.types import TryCommandResult
10
10
 
11
11
 
12
+ def getPagInfo(x):
13
+ result = {}
14
+ if x.slaveProperties.supportsCalpag:
15
+ status, pag = x.try_command(x.getPagProcessorInfo)
16
+ if status == TryCommandResult.OK:
17
+ result["maxSegments"] = pag.maxSegments
18
+ result["pagProperties"] = {}
19
+ result["pagProperties"]["freezeSupported"] = pag.pagProperties.freezeSupported
20
+ result["segments"] = []
21
+ for i in range(pag.maxSegments):
22
+ segment = {}
23
+ status, std_info = x.try_command(x.getSegmentInfo, 0x01, i, 0, 0)
24
+ std_info = x.getSegmentInfo(0x01, i, 2, 0)
25
+ if status == TryCommandResult.OK:
26
+ segment["maxPages"] = std_info.maxPages
27
+ segment["addressExtension"] = std_info.addressExtension
28
+ segment["maxMapping"] = std_info.maxMapping
29
+ segment["compressionMethod"] = std_info.compressionMethod
30
+ segment["encryptionMethod"] = std_info.encryptionMethod
31
+
32
+ status, seg_address = x.try_command(x.getSegmentInfo, 0x00, i, 0, 0)
33
+ status, seg_length = x.try_command(x.getSegmentInfo, 0x00, i, 1, 0)
34
+
35
+ segment["address"] = seg_address.basicInfo
36
+ segment["length"] = seg_length.basicInfo
37
+
38
+ result["segments"].append(segment)
39
+
40
+ status, pgi = x.try_command(x.getPageInfo, i, 0)
41
+ # print("PAGE:", pgi)
42
+ # for j in range(si.maxPages):
43
+ # pgi = x.getPageInfo(i, j)
44
+ # print(pgi)
45
+ else:
46
+ break
47
+ return result
48
+
49
+
12
50
  def main():
13
51
  ap = ArgumentParser(description="XCP info/exploration tool.")
14
52
 
@@ -66,14 +104,10 @@ def main():
66
104
  print("\nPAG Info:")
67
105
  print("=========")
68
106
  if x.slaveProperties.supportsCalpag:
69
- status, pag = x.try_command(x.getPagProcessorInfo)
70
- if status == TryCommandResult.OK:
71
- print(pag)
72
- # for idx in range(pag.maxSegments):
73
- # x.getSegmentInfo(0x01, idx, 0, 0)
107
+ pgi = getPagInfo(x)
108
+ pprint(pgi)
74
109
  else:
75
110
  print("*** PAGING IS NOT SUPPORTED.")
76
-
77
111
  print("\nPGM Info:")
78
112
  print("=========")
79
113
  if x.slaveProperties.supportsPgm:
@@ -82,7 +116,6 @@ def main():
82
116
  print(pgm)
83
117
  else:
84
118
  print("*** FLASH PROGRAMMING IS NOT SUPPORTED.")
85
-
86
119
  if x.slaveProperties.transport_layer == "CAN":
87
120
  print("\nTransport-Layer CAN:")
88
121
  print("====================")
@@ -90,7 +123,8 @@ def main():
90
123
  if status == TryCommandResult.OK:
91
124
  print("CAN identifier for CMD/STIM:\n", res)
92
125
  else:
93
- print("*** GET_SLAVE_ID() IS NOT SUPPORTED.") # no response from bc address ???
126
+ pass
127
+ # print("*** GET_SLAVE_ID() IS NOT SUPPORTED.") # no response from bc address ???
94
128
 
95
129
  print("\nPer DAQ-list Identifier")
96
130
  print("-----------------------")
@@ -0,0 +1,31 @@
1
+ import argparse
2
+
3
+ from pyxcp.recorder.converter import convert_xmraw
4
+
5
+
6
+ parser = argparse.ArgumentParser(description="Convert .xmraw files.")
7
+
8
+ parser.add_argument(
9
+ "target_type",
10
+ help="target file type",
11
+ choices=[
12
+ "arrow",
13
+ "csv",
14
+ "excel",
15
+ "hdf5",
16
+ "mdf",
17
+ "sqlite3",
18
+ ],
19
+ )
20
+
21
+
22
+ def main():
23
+ parser.add_argument("xmraw_file", help=".xmraw file")
24
+ parser.add_argument("-t", "--taget-file-name", dest="target_file_name", help="target file name")
25
+ args = parser.parse_args()
26
+
27
+ convert_xmraw(args.target_type, args.xmraw_file, args.target_file_name)
28
+
29
+
30
+ if __name__ == "__main__":
31
+ main()
pyxcp/transport/base.py CHANGED
@@ -240,7 +240,7 @@ class BaseTransport(metaclass=abc.ABCMeta):
240
240
  xcpPDU = self.get()
241
241
  except EmptyFrameError:
242
242
  if not ignore_timeout:
243
- MSG = f"Response timed out (timeout={self.timeout}s)"
243
+ MSG = f"Response timed out (timeout={self.timeout / 1_000_000_000}s)"
244
244
  with self.policy_lock:
245
245
  self.policy.feed(types.FrameCategory.METADATA, self.counter_send, self.timestamp.value, bytes(MSG, "ascii"))
246
246
  raise types.XcpTimeoutError(MSG) from None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyxcp
3
- Version: 0.22.26
3
+ Version: 0.22.28
4
4
  Summary: Universal Calibration Protocol for Python
5
5
  License: LGPLv3
6
6
  Keywords: automotive,ecu,xcp,asam,autosar
@@ -1,4 +1,4 @@
1
- pyxcp/__init__.py,sha256=RJc-8q7P408Jmlwt5OMDoDop9h53YvraQnGC0mdVmtY,548
1
+ pyxcp/__init__.py,sha256=Gg_xWPOl3qvbv5BzHeRm8V4nGseVYi2kq0kj6Aq5AZs,548
2
2
  pyxcp/aml/EtasCANMonitoring.a2l,sha256=EJYwe3Z3H24vyWAa6lUgcdKnQY8pwFxjyCN6ZU1ST8w,1509
3
3
  pyxcp/aml/EtasCANMonitoring.aml,sha256=xl0DdyeiIaLW0mmmJNAyJS0CQdOLSxt9dxfgrdSlU8Y,2405
4
4
  pyxcp/aml/ifdata_CAN.a2l,sha256=NCUnCUEEgRbZYSLGtUGwL2e7zJ8hrp0SbmLHGv8uY58,612
@@ -16,7 +16,7 @@ pyxcp/asam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  pyxcp/asam/types.py,sha256=_gKcpBF5mon_SDWZBUW0PGBMcb37yrvhhEuk1wslg-s,2441
17
17
  pyxcp/asamkeydll.c,sha256=dVEvU0S1kgIo62S0La-T8xHSw668LM_DYc_fiQ0No6g,2952
18
18
  pyxcp/asamkeydll.sh,sha256=DC2NKUMwvi39OQgJ6514Chr4wc1LYbTmQHmMq9jAHHs,59
19
- pyxcp/checksum.py,sha256=alze1JiZ2JmdRul9QzP_-fuAqJcNyYBbo35zBwEKqHk,11535
19
+ pyxcp/checksum.py,sha256=hO2JW_eiO9I0A4eiqovMV9d_y5oidq_w8jKdAE4FeOo,11899
20
20
  pyxcp/cmdline.py,sha256=na3ZbWQ-5ezsi1MrkuxMTCAXonUF3X6-LutoneyE3dU,1529
21
21
  pyxcp/config/__init__.py,sha256=nToBy_zPFQZmCUgRZ1RUjlw-OulCcvoFuGFvPw242z8,41701
22
22
  pyxcp/config/legacy.py,sha256=4QdDheX8DbBKv5JVT72_C_cjCgKvZmhN3tJ6hsvBEtI,5220
@@ -24,9 +24,9 @@ pyxcp/constants.py,sha256=9yGfujC0ImTYQWfn41wyw8pluJTSrhMGWIVeIZTgsLg,1160
24
24
  pyxcp/cpp_ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  pyxcp/cpp_ext/bin.hpp,sha256=PwJloZek21la-RBSda2Hc0u_6gID0sfTduPeplaAyR4,2561
26
26
  pyxcp/cpp_ext/blockmem.hpp,sha256=ysaJwmTWGTfE54Outk3gJYOfAVFd_QaonBMtXLcXwCc,1242
27
- pyxcp/cpp_ext/cpp_ext.cp310-win_amd64.pyd,sha256=6QbsSXVMsmE8L8Uo3JIojb_U9EOrdJc-MZk-2GI3Y5c,279552
28
- pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=dAWWWsucJ22tqPC_06-Kr6nhz5nNe4m6YYeMhh384AY,279552
29
- pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=te0D-4CZw619YbwRrIxS8jmdS_UcPS2gQPCSb0Jx8Vg,260096
27
+ pyxcp/cpp_ext/cpp_ext.cp310-win_amd64.pyd,sha256=mgCEOaTY6z_62yzhW0hrsFGnVBV66NXcXnN-zoutj0g,288768
28
+ pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=U0n2Ef7_jHzJT6S1r8NkEj82HEp3rX3U-ve-FxmWzcQ,288256
29
+ pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=W6ihn06MkbY1JgKFbyozQfDurY1-yJpU1oD9uJa8okU,270336
30
30
  pyxcp/cpp_ext/daqlist.hpp,sha256=g2hlxgoQorAGKHedZFZ0c2FQh1APMIA9sVB6M6hD_n8,7277
31
31
  pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
32
32
  pyxcp/cpp_ext/extension_wrapper.cpp,sha256=FXFjyruBjQYqjCYZZcajdYv6dvNnCggMAbWLqJmfuTM,4756
@@ -38,9 +38,9 @@ pyxcp/daq_stim/optimize/__init__.py,sha256=FUWK0GkNpNT-sUlhibp7xa2aSYpm6Flh5yA2w
38
38
  pyxcp/daq_stim/optimize/binpacking.py,sha256=Iltho5diKlJG-ltbmx053U2vOFRlCISolXK61T14l_I,1257
39
39
  pyxcp/daq_stim/scheduler.cpp,sha256=a7VK7kP2Hs8yMlcDAkXwJ0bH88lr_yz156sphcHS7Z4,715
40
40
  pyxcp/daq_stim/scheduler.hpp,sha256=U_6tUbebmzX5vVZS0EFSgTaPsyxMg6yRXHG_aPWA0x4,1884
41
- pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=Ipaa8gxNZetfWUs8SHP-uQ-3bQ6aJzv7queAOKmcZBA,189440
42
- pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=Sh3DMZHjlD4EOKom7gyLPp2yMyIcVZK02msoFsFdCrg,189440
43
- pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=cfMM0LKRqcjWx-I0ijRk85aN9YEPlsToeNJU-dLBMec,183296
41
+ pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=XHhdvrEIu-faqrMT8XtErRRDkdnECr6_oiFKA1kjJ80,198656
42
+ pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=iwaHAOOMB4BfSb-HttBgEpof5yy7bN0FwtC3d9fv_C8,198656
43
+ pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=sBbo3nkMSZv65x0uI7AFNUFk6A5o2hAGsE0ejOmg81A,192512
44
44
  pyxcp/daq_stim/stim.cpp,sha256=F2OG67W4KKwTTiUCxm-9egIv3TLFdOkRunX6xf7YOtc,177
45
45
  pyxcp/daq_stim/stim.hpp,sha256=U-uInRrA6OCdMl1l1SWbQ_KEPpnNYrWut924IvbW6R0,18508
46
46
  pyxcp/daq_stim/stim_wrapper.cpp,sha256=iT2yxJ3LRG7HoYC1bwhM3tCAxF9X_HHierBNsLRmTJg,1995
@@ -55,7 +55,7 @@ pyxcp/examples/conf_nixnet.json,sha256=BvXPrljPGzaRTNPch3K0XfU3KSBP1sVDDNP7yY850
55
55
  pyxcp/examples/conf_socket_can.toml,sha256=gTacQGm0p6fhPCMWC3ScLq9Xj-xJmNbjNXkjO4o7r8k,269
56
56
  pyxcp/examples/conf_sxi.json,sha256=cXwNGoOpvqhdjXBQcE8lKgTs50wi9beosWKskZGJ-nI,158
57
57
  pyxcp/examples/conf_sxi.toml,sha256=t-XsgRljcMdj0f3_CGRT60c77LeQPNbjIT17YxDK3Yg,125
58
- pyxcp/examples/run_daq.py,sha256=gSKkJ_S4QgP6Pgeu-gNoh_hGzxtrAgcbQ1AEEC2QWHE,5484
58
+ pyxcp/examples/run_daq.py,sha256=osUkVyYiA2f1cTflqbwMdrxgyfXVJ7LmpHt3u68iyQU,5624
59
59
  pyxcp/examples/xcp_policy.py,sha256=io9tS2W-7PvR8ZzU203KolFrDp67eorUlwNWvA4kC5k,1921
60
60
  pyxcp/examples/xcp_read_benchmark.py,sha256=zOG0Yrji10vA0vhHa27KK7zgc3JDpzXzXsFnIU4C_AM,956
61
61
  pyxcp/examples/xcp_skel.py,sha256=YXLQC8nn8aAwYSVuBGhr1dvmdMBjmO1Ee1w3e5sy16s,1159
@@ -82,9 +82,9 @@ pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
82
82
  pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
83
83
  pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
84
84
  pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=kdZ8tFAEG6DYBZhh6gq353ciHfADV_tr-4xODSm0Xtw,377856
86
- pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=QXsP963LBZg8uxjZqmFgxBlxxjFKiKKrvja-v7asr1c,377856
87
- pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=MHWy_5Em0uDyGq39Rt3kmwMZRG9qYwcGN5tWug_i-Js,364032
85
+ pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=Cyd9a3uBZR8daO5V6eyVJmw8IRpUKGQPnU5yXcJ3xPA,386560
86
+ pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=GUHwztQv6u3-vUxr-J63Rh_XJoXBuI7sYMtapEyV7Qo,386048
87
+ pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=JPCYjHbOGiyd4Uyk1flpgpZDWAHZura30HEjonbE438,372736
88
88
  pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
89
89
  pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
90
90
  pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
@@ -97,8 +97,9 @@ pyxcp/scripts/pyxcp_probe_can_drivers.py,sha256=P_gscDTAofbSVA_Wd1GATrnyWGTf1-Dz
97
97
  pyxcp/scripts/xcp_examples.py,sha256=q2wNXHVZu4GjcIlZwp2j9Sqm5QH39Olro4BQaLoIqiM,2583
98
98
  pyxcp/scripts/xcp_fetch_a2l.py,sha256=72818jdJiLsDuWWfkAPxekZ7fzRRz_A4RVSy06LQNe4,1239
99
99
  pyxcp/scripts/xcp_id_scanner.py,sha256=2P53qrvM-rYFTBbbm7eAKyOxESkKrorieND-KoZZ9mo,421
100
- pyxcp/scripts/xcp_info.py,sha256=pNb0h7bwAuUEUbCFRIWyHCrOcTU6ElQkFMAvqzjDJUs,4152
100
+ pyxcp/scripts/xcp_info.py,sha256=H4bDcJilgkzHWapuCT49A3dq04CAwrp7z0zv1ibwkZQ,5711
101
101
  pyxcp/scripts/xcp_profile.py,sha256=ryJnx7cqQ40O05F3beuUEOthsiW_k9d_2wMf4Z9CWkc,615
102
+ pyxcp/scripts/xmraw_converter.py,sha256=LvjiKAWHUKs5QZNiIDT-vdNgPG0Gioas2MzLJOo62-Y,684
102
103
  pyxcp/stim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
104
  pyxcp/tests/test_asam_types.py,sha256=0M08q8dJIVx-rkUtFKTqUhhW9NkThYL83LW3d_yCols,587
104
105
  pyxcp/tests/test_binpacking.py,sha256=kxLwYNzop775BkV68WXBoXVnLIuP0y4EKIW7u9niMKc,7623
@@ -111,7 +112,7 @@ pyxcp/tests/test_transport.py,sha256=Qn2VjNRfYCU6DH8olVSBUCqb0zdAM9GlTbVBM99YxFQ
111
112
  pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
112
113
  pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
113
114
  pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
114
- pyxcp/transport/base.py,sha256=uyCJF6Lznm4gIa_Jq5Pkp6JAT6H6hQuZwryZkLz3kVI,16337
115
+ pyxcp/transport/base.py,sha256=Wf1ymrchtJ3JaETpVsGEV6X7OQR9o5DZmoD3zoXxkyU,16353
115
116
  pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
117
  pyxcp/transport/can.py,sha256=cQ8lrwBL7Ar0GSf48987TztR9wqYS_UnXUngzhaHXe0,14909
117
118
  pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
@@ -122,8 +123,8 @@ pyxcp/types.py,sha256=mjp3FhsTTbS3D5VuC-dfdbMql0lJwEfbZjf8a2pHi1o,26158
122
123
  pyxcp/utils.py,sha256=unlg0CoNwcWYfd-BE0hZJ93uhlAoW_nryv9tS_R3C44,2969
123
124
  pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
125
  pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
125
- pyxcp-0.22.26.dist-info/entry_points.txt,sha256=2JbL-pWn9UxpBrS64aWiFFkq9x2A7y-dkrxYlfQqIJU,307
126
- pyxcp-0.22.26.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
127
- pyxcp-0.22.26.dist-info/METADATA,sha256=_lhdH3MGmewLKRJk-lBDNRuqSu2n9VJs_hbwWsuSUD8,4088
128
- pyxcp-0.22.26.dist-info/WHEEL,sha256=GX2ImTsBnuQB1-UeuYbhJUp8NYXMHTQONElBI_kxGe0,98
129
- pyxcp-0.22.26.dist-info/RECORD,,
126
+ pyxcp-0.22.28.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
127
+ pyxcp-0.22.28.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
128
+ pyxcp-0.22.28.dist-info/METADATA,sha256=_lAXRVqtCZRJ7hL3Rm1k_OOQWMdHIDOF-1Jt_7JA9SE,4088
129
+ pyxcp-0.22.28.dist-info/WHEEL,sha256=ENVf5m8akLBsgFS4alP1170aopr_E8yR3ZCUZFODvPg,98
130
+ pyxcp-0.22.28.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: poetry-core 2.1.1
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp310-cp310-win_amd64
@@ -5,4 +5,5 @@ xcp-fetch-a2l=pyxcp.scripts.xcp_fetch_a2l:main
5
5
  xcp-id-scanner=pyxcp.scripts.xcp_id_scanner:main
6
6
  xcp-info=pyxcp.scripts.xcp_info:main
7
7
  xcp-profile=pyxcp.scripts.xcp_profile:main
8
+ xmraw-converter=pyxcp.scripts.xmraw_converter:main
8
9