pyxcp 0.25.1__cp314-cp314-macosx_11_0_arm64.whl → 0.25.9__cp314-cp314-macosx_11_0_arm64.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 (64) hide show
  1. pyxcp/__init__.py +2 -2
  2. pyxcp/cmdline.py +14 -29
  3. pyxcp/config/__init__.py +1257 -1257
  4. pyxcp/cpp_ext/aligned_buffer.hpp +1 -1
  5. pyxcp/cpp_ext/cpp_ext.cpython-310-darwin.so +0 -0
  6. pyxcp/cpp_ext/cpp_ext.cpython-311-darwin.so +0 -0
  7. pyxcp/cpp_ext/cpp_ext.cpython-312-darwin.so +0 -0
  8. pyxcp/cpp_ext/cpp_ext.cpython-313-darwin.so +0 -0
  9. pyxcp/cpp_ext/cpp_ext.cpython-314-darwin.so +0 -0
  10. pyxcp/cpp_ext/extension_wrapper.cpp +79 -2
  11. pyxcp/cpp_ext/framing.hpp +1 -1
  12. pyxcp/cpp_ext/helper.hpp +280 -280
  13. pyxcp/cpp_ext/sxi_framing.hpp +1 -1
  14. pyxcp/daq_stim/__init__.py +95 -32
  15. pyxcp/daq_stim/optimize/binpacking.py +2 -2
  16. pyxcp/daq_stim/scheduler.cpp +8 -8
  17. pyxcp/errormatrix.py +2 -2
  18. pyxcp/examples/xcp_read_benchmark.py +2 -2
  19. pyxcp/examples/xcp_skel.py +1 -2
  20. pyxcp/examples/xcp_unlock.py +10 -12
  21. pyxcp/examples/xcp_user_supplied_driver.py +1 -2
  22. pyxcp/examples/xcphello.py +2 -15
  23. pyxcp/examples/xcphello_recorder.py +2 -2
  24. pyxcp/master/__init__.py +1 -0
  25. pyxcp/master/master.py +14 -20
  26. pyxcp/recorder/.idea/misc.xml +1 -1
  27. pyxcp/recorder/.idea/modules.xml +1 -1
  28. pyxcp/recorder/.idea/recorder.iml +1 -1
  29. pyxcp/recorder/.idea/vcs.xml +1 -1
  30. pyxcp/recorder/converter/__init__.py +4 -10
  31. pyxcp/recorder/reader.hpp +138 -138
  32. pyxcp/recorder/reco.py +1 -0
  33. pyxcp/recorder/rekorder.hpp +274 -274
  34. pyxcp/recorder/wrap.cpp +184 -184
  35. pyxcp/recorder/writer.hpp +302 -302
  36. pyxcp/scripts/xcp_daq_recorder.py +54 -0
  37. pyxcp/scripts/xcp_fetch_a2l.py +2 -2
  38. pyxcp/scripts/xcp_id_scanner.py +1 -2
  39. pyxcp/scripts/xcp_info.py +66 -51
  40. pyxcp/scripts/xcp_profile.py +1 -2
  41. pyxcp/tests/test_binpacking.py +1 -0
  42. pyxcp/tests/test_daq.py +1 -1
  43. pyxcp/tests/test_framing.py +1 -1
  44. pyxcp/tests/test_master.py +104 -83
  45. pyxcp/tests/test_transport.py +0 -1
  46. pyxcp/timing.py +1 -1
  47. pyxcp/transport/base.py +1 -1
  48. pyxcp/transport/can.py +1 -1
  49. pyxcp/transport/eth.py +1 -1
  50. pyxcp/transport/hdf5_policy.py +167 -0
  51. pyxcp/transport/sxi.py +1 -1
  52. pyxcp/transport/transport_ext.cpython-310-darwin.so +0 -0
  53. pyxcp/transport/transport_ext.cpython-311-darwin.so +0 -0
  54. pyxcp/transport/transport_ext.cpython-312-darwin.so +0 -0
  55. pyxcp/transport/transport_ext.cpython-313-darwin.so +0 -0
  56. pyxcp/transport/transport_ext.cpython-314-darwin.so +0 -0
  57. pyxcp/transport/usb_transport.py +1 -1
  58. pyxcp/{utils.py → utils/__init__.py} +1 -2
  59. pyxcp/utils/cli.py +78 -0
  60. {pyxcp-0.25.1.dist-info → pyxcp-0.25.9.dist-info}/METADATA +1 -1
  61. {pyxcp-0.25.1.dist-info → pyxcp-0.25.9.dist-info}/RECORD +64 -56
  62. {pyxcp-0.25.1.dist-info → pyxcp-0.25.9.dist-info}/WHEEL +1 -1
  63. {pyxcp-0.25.1.dist-info → pyxcp-0.25.9.dist-info}/entry_points.txt +0 -0
  64. {pyxcp-0.25.1.dist-info → pyxcp-0.25.9.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,167 @@
1
+ #!/usr/bin/env python
2
+
3
+ import datetime
4
+ from pathlib import Path
5
+ from typing import List, Dict
6
+
7
+ import h5py
8
+ import numpy as np
9
+ from pyxcp.daq_stim import DaqOnlinePolicy, DaqList
10
+ from pyxcp import __version__ as pyxcp_version
11
+
12
+ BATCH_SIZE = 4096
13
+
14
+ MAP_TO_NP = {
15
+ "U8": np.uint8,
16
+ "I8": np.int8,
17
+ "U16": np.uint16,
18
+ "I16": np.int16,
19
+ "U32": np.uint32,
20
+ "I32": np.int32,
21
+ "U64": np.uint64,
22
+ "I64": np.int64,
23
+ "F32": np.float32,
24
+ "F64": np.float64,
25
+ "F16": np.float16,
26
+ "BF16": np.float16,
27
+ }
28
+
29
+ MAP_TO_ASAM_HO = {
30
+ "U8": "A_UINT8",
31
+ "I8": "A_INT8",
32
+ "U16": "A_UINT16",
33
+ "I16": "A_INT16",
34
+ "U32": "A_UINT32",
35
+ "I32": "A_INT32",
36
+ "U64": "A_UINT64",
37
+ "I64": "A_INT64",
38
+ "F32": "A_FLOAT32",
39
+ "F64": "A_FLOAT64",
40
+ "F16": "A_FLOAT16",
41
+ "BF16": "A_FLOAT16",
42
+ }
43
+
44
+
45
+ class BufferedDataset:
46
+ def __init__(self, dataset: h5py.Dataset):
47
+ self.dataset = dataset
48
+ self.buffer: List[int | float] = []
49
+
50
+ def add_sample(self, sample: int | float):
51
+ self.buffer.append(sample)
52
+ if len(self.buffer) >= BATCH_SIZE:
53
+ self.flush()
54
+
55
+ def flush(self):
56
+ batch = np.array(self.buffer)
57
+ self.dataset.resize((self.dataset.shape[0] + len(batch),))
58
+ self.dataset[-len(batch) :] = batch
59
+ self.buffer.clear()
60
+ self.dataset.flush()
61
+
62
+ def __len__(self):
63
+ return len(self.buffer)
64
+
65
+
66
+ class DatasetGroup:
67
+ def __init__(
68
+ self,
69
+ ts0_ds: BufferedDataset,
70
+ ts1_ds: BufferedDataset,
71
+ datasets: List[BufferedDataset],
72
+ ):
73
+ self.ts0_ds = ts0_ds
74
+ self.ts1_ds = ts1_ds
75
+ self.datasets = datasets
76
+
77
+ def feed(self, ts0: int, ts1: int, *datasets):
78
+ self.ts0_ds.add_sample(ts0)
79
+ self.ts1_ds.add_sample(ts1)
80
+ for dataset, value in zip(self.datasets, datasets):
81
+ dataset.add_sample(value)
82
+
83
+ def finalize(self):
84
+ for dataset in self.datasets:
85
+ dataset.flush()
86
+ self.ts0_ds.flush()
87
+ self.ts1_ds.flush()
88
+
89
+
90
+ def create_timestamp_column(hdf_file: h5py.File, group_name: str, num: int) -> h5py.Dataset:
91
+ result = hdf_file.create_dataset(
92
+ f"/{group_name}/timestamp{num}",
93
+ shape=(0,),
94
+ maxshape=(None,),
95
+ dtype=np.uint64,
96
+ chunks=True,
97
+ )
98
+ result.attrs["asam_data_type"] = "A_UINT64"
99
+ result.attrs["resolution"] = ("1 nanosecond",)
100
+ return result
101
+
102
+
103
+ class Hdf5OnlinePolicy(DaqOnlinePolicy):
104
+ def __init__(self, file_name: str | Path, daq_lists: List[DaqList], **metadata):
105
+ super().__init__(daq_lists=daq_lists)
106
+ path = Path(file_name)
107
+ if path.suffix != ".h5":
108
+ path = path.with_suffix(".h5")
109
+ self.hdf = h5py.File(path, "w", libver="latest")
110
+ self.metadata = self.set_metadata(**metadata)
111
+
112
+ def set_metadata(self, **metadata):
113
+ basic = {
114
+ "tool_name": "pyXCP",
115
+ "tool_version": f"{pyxcp_version}",
116
+ "created": f"{datetime.datetime.now().astimezone().isoformat()}",
117
+ }
118
+ for k, v in (basic | metadata).items():
119
+ self.hdf.attrs[k] = v
120
+
121
+ def initialize(self):
122
+ self.log.debug("Hdf5OnlinePolicy::Initialize()")
123
+ self.datasets: Dict[int, DatasetGroup] = {}
124
+ for num, daq_list in enumerate(self.daq_lists):
125
+ if daq_list.stim:
126
+ continue
127
+ grp = self.hdf.create_group(daq_list.name)
128
+ grp.attrs["event_num"] = daq_list.event_num
129
+ grp.attrs["enable_timestamps"] = daq_list.enable_timestamps
130
+ grp.attrs["prescaler"] = daq_list.prescaler
131
+ grp.attrs["priority"] = daq_list.priority
132
+ grp.attrs["direction"] = "STIM" if daq_list.stim else "DAQ"
133
+ ts0 = BufferedDataset(create_timestamp_column(self.hdf, daq_list.name, 0))
134
+ ts1 = BufferedDataset(create_timestamp_column(self.hdf, daq_list.name, 1))
135
+ meas_map = {m.name: m for m in self.daq_lists[num].measurements}
136
+ dsets = []
137
+ for name, _ in daq_list.headers:
138
+ meas = meas_map[name]
139
+ dataset = self.hdf.create_dataset(
140
+ f"/{daq_list.name}/{meas.name}/raw",
141
+ shape=(0,),
142
+ maxshape=(None,),
143
+ dtype=MAP_TO_NP[meas.data_type],
144
+ chunks=(1024,),
145
+ )
146
+ sub_group = dataset.parent
147
+ sub_group.attrs["asam_data_type"] = MAP_TO_ASAM_HO.get(meas.data_type, "n/a")
148
+ dataset.attrs["ecu_address"] = meas.address
149
+ dataset.attrs["ecu_address_extension"] = meas.ext
150
+ dsets.append(BufferedDataset(dataset))
151
+ self.datasets[num] = DatasetGroup(ts0_ds=ts0, ts1_ds=ts1, datasets=dsets)
152
+ self.hdf.flush()
153
+
154
+ def finalize(self):
155
+ self.log.debug("Hdf5OnlinePolicy::finalize()")
156
+ if hasattr(self, "datasets"):
157
+ for group in self.datasets.values():
158
+ group.finalize()
159
+ if hasattr(self, "hdf"):
160
+ self.hdf.close()
161
+
162
+ def on_daq_list(self, daq_list: int, timestamp0: int, timestamp1: int, payload: list):
163
+ group = self.datasets.get(daq_list)
164
+ if group is None:
165
+ self.log.warning(f"Received data for unknown DAQ list {daq_list}")
166
+ return
167
+ group.feed(timestamp0, timestamp1, *payload)
pyxcp/transport/sxi.py CHANGED
@@ -206,4 +206,4 @@ class SxI(BaseTransport):
206
206
 
207
207
  def close_connection(self) -> None:
208
208
  if hasattr(self, "comm_port") and self.comm_port.is_open and not self.has_user_supplied_interface:
209
- self.comm_port.close()
209
+ self.comm_port.close()
@@ -226,4 +226,4 @@ class Usb(BaseTransport):
226
226
 
227
227
  def close_connection(self):
228
228
  if self.device is not None:
229
- usb.util.dispose_resources(self.device)
229
+ usb.util.dispose_resources(self.device)
@@ -6,7 +6,7 @@ import sys
6
6
  from binascii import hexlify
7
7
  from enum import IntEnum
8
8
  from time import perf_counter, sleep
9
- from typing import Any, List, Optional, Union
9
+ from typing import Union
10
10
 
11
11
  import chardet
12
12
  import pytz
@@ -86,7 +86,6 @@ def delay(amount: float):
86
86
 
87
87
 
88
88
  class CurrentDatetime(TimestampInfo):
89
-
90
89
  def __init__(self, timestamp_ns: int):
91
90
  TimestampInfo.__init__(self, timestamp_ns)
92
91
  timezone = pytz.timezone(self.timezone)
pyxcp/utils/cli.py ADDED
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env python
2
+ """
3
+ Reusable command-line parser utilities.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import argparse
9
+ import sys
10
+ from collections.abc import Sequence
11
+
12
+
13
+ class StrippingParser:
14
+ """Base class for parsers that can strip recognized arguments from sys.argv.
15
+
16
+ This is useful when multiple argument parsers are used in a single process (chained),
17
+ and downstream parsers should not see arguments already handled by an
18
+ upstream parser.
19
+ """
20
+
21
+ def __init__(self, parser: argparse.ArgumentParser) -> None:
22
+ """Initialize with an existing ArgumentParser instance."""
23
+ self._parser = parser
24
+
25
+ @property
26
+ def parser(self) -> argparse.ArgumentParser:
27
+ """Return the underlying ArgumentParser instance."""
28
+ return self._parser
29
+
30
+ def parse_known(self, argv: Sequence[str] | None = None) -> tuple[argparse.Namespace, list[str]]:
31
+ """Parse known args from ``argv`` and return (namespace, remaining).
32
+
33
+ Does not mutate ``sys.argv``.
34
+ """
35
+ if argv is None:
36
+ argv = sys.argv[1:]
37
+ namespace, remaining = self._parser.parse_known_args(argv)
38
+
39
+ # Emulate standard -h/--help behavior if "help" is in the namespace
40
+ if getattr(namespace, "help", False):
41
+ # Print help and exit similarly to ArgumentParser
42
+ # We need a temporary full parser to render standard help including program name
43
+ full = argparse.ArgumentParser(description=self._parser.description)
44
+ for action in self._parser._actions:
45
+ if action.option_strings and action.dest == "help":
46
+ continue
47
+ full._add_action(action)
48
+ full.print_help()
49
+ sys.exit(0)
50
+
51
+ return namespace, list(remaining)
52
+
53
+ def strip_from_argv(self, argv: list[str] | None = None) -> None:
54
+ """Remove this parser's recognized options from ``sys.argv`` in-place.
55
+
56
+ If ``argv`` is provided, it is treated as a mutable list whose content
57
+ will be replaced with the stripped version (first element preserved as
58
+ program name). If omitted, ``sys.argv`` is modified.
59
+ """
60
+ arg_list = argv if argv is not None else sys.argv
61
+ if not arg_list:
62
+ return
63
+ _, remaining = self.parse_known(arg_list[1:])
64
+ # Rebuild argv with program name + remaining
65
+ prog = arg_list[0]
66
+ arg_list[:] = [prog] + remaining
67
+
68
+ def parse_and_strip(self, argv: list[str] | None = None) -> argparse.Namespace:
69
+ """Parse options and strip them from argv; returns the parsed namespace."""
70
+ arg_list = argv if argv is not None else sys.argv
71
+ if not arg_list:
72
+ # Fallback for empty list
73
+ return self.parse_known([])[0]
74
+ namespace, remaining = self.parse_known(arg_list[1:])
75
+ # mutate
76
+ prog = arg_list[0]
77
+ arg_list[:] = [prog] + remaining
78
+ return namespace
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyxcp
3
- Version: 0.25.1
3
+ Version: 0.25.9
4
4
  Summary: Universal Calibration Protocol for Python
5
5
  License: LGPLv3
6
6
  License-File: LICENSE
@@ -1,28 +1,22 @@
1
- pyxcp-0.25.1.dist-info/RECORD,,
2
- pyxcp-0.25.1.dist-info/WHEEL,sha256=CRznWDXU4s_gJVZNW1RTWtQbEVjRyjHhh4HJ3NfLWbg,134
3
- pyxcp-0.25.1.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
4
- pyxcp-0.25.1.dist-info/METADATA,sha256=LMohG4YmQdt3n8OLNBQOQESFGhNuixo2v96c9lbqYSg,12775
5
- pyxcp-0.25.1.dist-info/licenses/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
6
1
  pyxcp/dllif.py,sha256=m4e-_dgDLCD6COU5W2LdeYUlib_Xxyxbh977bbS-VAU,3344
7
2
  pyxcp/checksum.py,sha256=aveS0z4vthLXABEFhTqELqFNi7LM6ZzDzq7dD5Xe9oo,11167
8
3
  pyxcp/asamkeydll.sh,sha256=iema12sub6qNE0xAuzwGtx0FmkdaaOKoXalhrtWVaa8,57
9
4
  pyxcp/asamkeydll.c,sha256=l5RHYcEPY_Q07G-W5IjCq0xci8YfUR-3uYt84OOkOJI,2836
10
5
  pyxcp/constants.py,sha256=Yemk_Gi_m78EEU0v-sdGCAodb9dv_vqP969IU3izA2M,1113
11
- pyxcp/cmdline.py,sha256=OVSO-X6JV1Si2tKZ1ar2gYbiqCTlTaj5jY-z6N2Vk3Q,2453
12
- pyxcp/__init__.py,sha256=u3Xj1wUwmdRPOwA6wWA7Ndn9TEIO0QtBgGrb2m-A21I,527
6
+ pyxcp/cmdline.py,sha256=JHzI80gqQ16bC5_ArSmmzZ8CchFsR2dKz_21pdAoDk8,2288
7
+ pyxcp/__init__.py,sha256=itMFwacrx7Rf28UQ_wh5BpclsYMiDcSw2euRMU0mk_E,506
13
8
  pyxcp/types.py,sha256=dMYu4yzKL_TXFb7jUH31nVLRTDvss7nQO9O49OZju2k,24976
14
- pyxcp/timing.py,sha256=hzeQZ3P7ij_bfskoVMi10Iv5S4i_6TQYfnB8PXTX6c4,1645
15
- pyxcp/utils.py,sha256=cHb5RUNim90U1U_a4axRmfa2n_xhFdjqHoRBEODoscs,3404
9
+ pyxcp/timing.py,sha256=HizFH0TCqrlDYftHdfxZSNCsNBysg0omkroeae2OqRM,1642
16
10
  pyxcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- pyxcp/errormatrix.py,sha256=cYcsJ11Qm39DPuaR4BJ9fMpS3Hkphd_ezIQOKjI-pQE,44586
11
+ pyxcp/errormatrix.py,sha256=eQ8t13M3VxsJhTHF2RwiTcboV__ktj3TzEvzL3j1ImE,44586
18
12
  pyxcp/asamkeydll,sha256=gN2rba8QriwZO9AZ_cUdmf8TS48P1vjonaaAN3bc9gk,50584
19
13
  pyxcp/asam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
14
  pyxcp/asam/types.py,sha256=V4wSCGI1pXn0EsBemDyaHTBgY2wkV_BeLShnDIGGgDE,2310
21
15
  pyxcp/daq_stim/stim.cpython-314-darwin.so,sha256=KjE1uOTfx-rkcQ5zg5m5vFC1_V9EXE-Ix3ytHQQ7gXc,238120
22
16
  pyxcp/daq_stim/stim.cpython-312-darwin.so,sha256=jduyfSIFTpWrAV47wGzJL3tzoZfkfVmDMeFl64P_oTo,237880
23
17
  pyxcp/daq_stim/stim.cpp,sha256=sABgEfbQlt5kXbzAsndyhaDFWRWTJw3jJlNfanIVrRs,164
24
- pyxcp/daq_stim/__init__.py,sha256=59Cbs-veJD-ZFqf2oVfB8Vq9chmdARaY7KOyREZZW6c,13462
25
- pyxcp/daq_stim/scheduler.cpp,sha256=2XW9PmxrJR8DfYMVszGwBX-KANVviwPcUNBvnjw5MlM,1443
18
+ pyxcp/daq_stim/__init__.py,sha256=x9QL5BURTIhmPmiazSvLbQ9UTajyBSowIqAo48b9xa8,16140
19
+ pyxcp/daq_stim/scheduler.cpp,sha256=A5WwZreIFh9YXb2pjdHNHpmDJEGv_He2ZO461iyIVEs,1404
26
20
  pyxcp/daq_stim/stim.cpython-313-darwin.so,sha256=IX8coHUbNwfIvIDCQAeGmUJIZNSeAs9cvZe6Sm1VvMI,238120
27
21
  pyxcp/daq_stim/stim.hpp,sha256=1DwAhkY7XJN14aD2BxLJ4O1j4_a6RvpePIbAG1U8iOA,17904
28
22
  pyxcp/daq_stim/stim.cpython-310-darwin.so,sha256=ciy3m3t6O2ijjYa190hWupKTv4NYSe6xs7EipP3FBFk,237816
@@ -30,29 +24,37 @@ pyxcp/daq_stim/scheduler.hpp,sha256=H-kwyZBV3S8q6YlCq6OLUbaNXskyCOS4z3SRP32ikPY,
30
24
  pyxcp/daq_stim/stim_wrapper.cpp,sha256=7iL1-4BPavo5bfrph20Fvicn6HxGEZQqYLvdxniJBYU,1945
31
25
  pyxcp/daq_stim/stim.cpython-311-darwin.so,sha256=aahyParbpwhlB-BuKK1ZPOP8oiNfNFaserUsVLZ9XHE,237896
32
26
  pyxcp/daq_stim/optimize/__init__.py,sha256=joAKvAvlYQEi7VF2oVftn_ohgRO231wnc3e8fY231L4,2453
33
- pyxcp/daq_stim/optimize/binpacking.py,sha256=AZHABtAnzBVJ-MVUGLrxuAp_bAtv3C-gMxrXXXrgi-Y,1216
27
+ pyxcp/daq_stim/optimize/binpacking.py,sha256=cRJKdJfHa7adZQeYc4jzIiUp7z9UQadGexGNCZQgePU,1216
28
+ pyxcp/transport/transport_ext.cpython-312-darwin.so,sha256=TZKO7PX30RPfxubt3kD9mto7KrYYgJBiV6ZaB9J6mLc,579088
34
29
  pyxcp/transport/transport_wrapper.cpp,sha256=6TlcoK0s_0KfPB2CS28ip3aTva9Mh-9c9FPgIOtZHFI,12236
35
- pyxcp/transport/eth.py,sha256=AiUu2oowM8JqDPqYKfTPsa6BknY5d5NdnmzlR4v_Mqw,10275
36
- pyxcp/transport/sxi.py,sha256=MHe4RUY3nHZ8vQJ5ulqfV2vnXjJ1C98FWJpGtje7h3Y,7169
30
+ pyxcp/transport/eth.py,sha256=oWJT7ys5f3q-y6Pfe4YXi8ztNIEfh6C23lMTdTMSR68,10276
31
+ pyxcp/transport/sxi.py,sha256=uqU7hoqIt1WusTYZF054xRsA5Tu8fqC1y9PfuuCQ2Ek,7170
37
32
  pyxcp/transport/transport_ext.hpp,sha256=h57BM0XEiHDZj3Ze647cSsTdMtYmrnZ9AR_rLgqxhTw,6297
33
+ pyxcp/transport/transport_ext.cpython-314-darwin.so,sha256=NbiVuPjaEOVssEheMQRQtdS6iATy_YE_VsDzoNwJhG0,595872
38
34
  pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ pyxcp/transport/transport_ext.cpython-313-darwin.so,sha256=UW3nz3EHa556k46-SaXF2oRqlVdooYr_BqKHK5efSk8,579344
39
36
  pyxcp/transport/__init__.py,sha256=JNu4LcdhEHYCLGOj-JpgQ8Sp_cOLGKWWDqFNFxnig2U,404
40
- pyxcp/transport/usb_transport.py,sha256=yRMaT7B3QT_iod4o5e7R-viL4Jmb9mMWCHMwmGSTlso,8672
41
- pyxcp/transport/can.py,sha256=NZYr8uM_YrZ9ZkbjnQ889pjuf4tlylOzCeKYMe0TW4E,23371
42
- pyxcp/transport/base.py,sha256=ROegIFRponlLa4np7Qo727IJPok4jj_RthTQ40QdTYI,18299
37
+ pyxcp/transport/usb_transport.py,sha256=zkPAs11kp-B-fkISevHUjC5yVD05Oicia_wNvbjviEk,8673
38
+ pyxcp/transport/can.py,sha256=_Y7rXXkx1kZuLWThi2lpubIDOTvkR6riJSlCV2jPYIQ,23372
39
+ pyxcp/transport/transport_ext.cpython-310-darwin.so,sha256=g2FV_ewvY2TPxsSEkGHfT0DeXOcTcVD0K5TfH9kooXc,578944
40
+ pyxcp/transport/hdf5_policy.py,sha256=8gtImyZN9hKPl8zTmeGGTu800_GSINogMkr0B5MzqfM,5377
41
+ pyxcp/transport/transport_ext.cpython-311-darwin.so,sha256=c-7quQqJWpo2pLlntksqda-4H91kxCUcjNip7TDko5s,579088
42
+ pyxcp/transport/base.py,sha256=aVO2IkKxZTPV6NaaX6HrVYXqB0nE1jqz_66omSgc9Io,18300
43
43
  pyxcp/config/legacy.py,sha256=Uhu_6bp_W8yGmZ2s3TFzf8-5mGwLdeTss56BMYWpsZY,5100
44
- pyxcp/config/__init__.py,sha256=jsakRiNGpCGfTQfRFH9wPwgCW3GF-s97X9T7S6y4juM,48270
44
+ pyxcp/config/__init__.py,sha256=ptIA8nhiAWCq38bKMtvzELY-sOIy8nRNfiJStlDTjpI,47015
45
45
  pyxcp/tests/test_utils.py,sha256=gqv3bhhWfKKdKDkqnELqsOHCfpRRZwlReEy87Ya4Z2w,850
46
- pyxcp/tests/test_master.py,sha256=I5zbokLYC0Gb6VqpgwUcJlp4Cxl0IijxKZBVJWbUt5Y,73354
47
- pyxcp/tests/test_daq.py,sha256=mThMsweEwxzIFRQQ88BNz_60OQ-xmC5OamIxHx9VWis,5358
48
- pyxcp/tests/test_binpacking.py,sha256=BKgIGZDv_RjZOjNvbzEcjonQ4_QZHMZjn7_YPOfHdUI,7437
46
+ pyxcp/tests/test_master.py,sha256=g8B88DDXrcB8zheJP8ZWzIHtPs1VX-KHY9BgInLZ5C8,73100
47
+ pyxcp/tests/test_daq.py,sha256=JQHMNL3tW-lRzvkmQPcSgt3G_jy3dOCU2HS0a1eRzi8,5344
48
+ pyxcp/tests/test_binpacking.py,sha256=2CZHBkK8koTwT_Cy3-XYLuZF-7AkYAkkm2C2lfIw2-A,7455
49
49
  pyxcp/tests/test_asam_types.py,sha256=olmvcmEVRb4Oar2mOnCTN4qCdM3w6SoKmBpjwHfKwO8,563
50
50
  pyxcp/tests/test_checksum.py,sha256=rkkdLPH4But4wPxlRtVOC4Wd5kCH2suU4Dle6-HXHTk,1713
51
51
  pyxcp/tests/test_frame_padding.py,sha256=soGk99lWVN7oju_5F84HEBQ1V_zwH-4xh_hTPBgVp54,3049
52
52
  pyxcp/tests/test_daq_opt.py,sha256=plhoUEJmf39kRVkH-17TvFIeyGTt7DljMqdw2eO6Yjg,12585
53
- pyxcp/tests/test_transport.py,sha256=4Y_oKKg0mwFlpHXhQUb06YcY0L_uNcNiIsPaGMgKJy8,5815
54
- pyxcp/tests/test_framing.py,sha256=P67215OiXxWf1lSkIVM7t5DvYbqfdH6mneQ1TwxPRFg,7708
53
+ pyxcp/tests/test_transport.py,sha256=JvKFMa5RPyBX0ZidB6RKGF0gvngLJpO02hUgN2_dhxs,5771
54
+ pyxcp/tests/test_framing.py,sha256=69JupN4aNBzn_d72zQzovCVv_kaqfAQKlizKsiKSB50,7709
55
55
  pyxcp/tests/test_can.py,sha256=bAhtFxXQcNJ6xDO-RHLHbRVTa7eDXd8WrO1SqMJp6P8,62672
56
+ pyxcp/utils/__init__.py,sha256=9yTOLWmSjMPxeWRRG9dBE_KCTJZN5G8ThFpfWVwVOmk,3382
57
+ pyxcp/utils/cli.py,sha256=R1vY0LVC1IWjEkURJPWvqfAGaY4_2d29Bv28mSWO9W8,2949
56
58
  pyxcp/aml/ifdata_CAN.a2l,sha256=c7GbbYyyXSdpmCBok4AdqU17OdiiHGguhZqhenD-UhI,592
57
59
  pyxcp/aml/EtasCANMonitoring.a2l,sha256=at5QlrKbdY2JqkPpQ9b7cfHsYD62DKc_H3-IezQJGuE,1427
58
60
  pyxcp/aml/ifdata_Eth.a2l,sha256=ip_6mV2wPL0Eec9tD2sAxMxMnK5AzbnvAxHljsLe57U,239
@@ -66,51 +68,52 @@ pyxcp/aml/XCPonEth.aml,sha256=GfvkqVX4MqnAkUicjd-XVw4z2O3YtMag_A3b5isgcBE,2214
66
68
  pyxcp/aml/XCPonUSB.aml,sha256=rPGduH-PE8-tBeELSm3vfkbf62uhlVP6gvJL0OvMclc,4847
67
69
  pyxcp/aml/ifdata_SxI.a2l,sha256=8rAB6HTTAuNlFSrkFpR7fUA702yN4rTTNkw-xspZNV0,303
68
70
  pyxcp/aml/XCPonFlx.aml,sha256=z58FMu6ZF4hVun8WBCuxvDrq6FZ_gj3tZM15G7E8Uvw,4647
69
- pyxcp/master/__init__.py,sha256=o3XB9GDwLiqh-KRFC9YTOd0EvxJXDpyrcVxebiwT934,309
70
- pyxcp/master/master.py,sha256=XeRQ2qGYfiVP1PZp3dPbjk4tkdgg8rNFdCaPIsNFXb8,98991
71
+ pyxcp/master/__init__.py,sha256=fx2RRcd5N54E9NCZgG68OcB_KLKeQfFRyiZe-Ecsvik,310
72
+ pyxcp/master/master.py,sha256=7A9AgG1V7RyxcRX5Qpuq-4c2MlFMZ_vpPEj1wg3K8bo,98880
71
73
  pyxcp/master/errorhandler.py,sha256=HjaaO_QQlSs5IVkuGk5rjLv_La5HlYCdzt5BFhTALOE,25951
72
- pyxcp/examples/xcp_read_benchmark.py,sha256=Hl0hrjV3FE-ivswvYOh0MsKiHnk03z7w8lQDYnvfeM8,918
74
+ pyxcp/examples/xcp_read_benchmark.py,sha256=oE0ulTmVmoKXt5lWrPR8n9IGqHzKOm0FUZwpqTku0s8,918
73
75
  pyxcp/examples/conf_eth.toml,sha256=b6bKN-K07gMQHNj7yiyB-HKrkVtZREgPXS4ByQueBs4,190
74
- pyxcp/examples/xcphello_recorder.py,sha256=wL92d0dbPkjFzCT08JoRD9Mg2D6QbOpOzFDgSYdcNog,3302
76
+ pyxcp/examples/xcphello_recorder.py,sha256=yxnXGwY6O3vYxJxaTovinb_Ui6l-9KRKDt0x8FR5tuw,3302
75
77
  pyxcp/examples/conf_nixnet.json,sha256=R-RKw172YhssO_9rud5McxtjesphEadA9Ub2OEKHpGM,424
76
78
  pyxcp/examples/conf_can_vector.json,sha256=VtGmyt9ORPTo9yirv1fZM_XT9DARFFNwai11RaCNRWo,238
77
79
  pyxcp/examples/conf_can_user.toml,sha256=BqCID-GvaNbA6pbqRbyRMuzKAsJaYVube0ql4CvkMoY,298
78
- pyxcp/examples/xcp_user_supplied_driver.py,sha256=Wyep2KhtcFC2GzZuJPj5ikSqWIWYsf5D0mfs1jCtYX0,1104
79
- pyxcp/examples/xcp_skel.py,sha256=F2g2C79jiYZl0cpRHfzWusfn1ZvodOS_r1Az6aknZL4,1110
80
- pyxcp/examples/xcp_unlock.py,sha256=vl2Zv7Z6EuBxI2ZxbGQK6-0tZBVqd72FZllsvIfuJ5w,652
81
- pyxcp/examples/xcphello.py,sha256=JK9U_QkFP0AwKlZK9lFB66GAqUDFRoXL3XMYO5EdRQQ,2550
80
+ pyxcp/examples/xcp_user_supplied_driver.py,sha256=xC02xjfLtT6zhjP-kUXxWh2f35jcZofe1OMwnTJ9qTM,1091
81
+ pyxcp/examples/xcp_skel.py,sha256=SYghH9mxJyP2oU2snfr-OswcvZvOobqk7UQGbFQIiow,1109
82
+ pyxcp/examples/xcp_unlock.py,sha256=aijlbyRBnujzBv2-qDjMEKP7Jk-GY31npzgVP2Zd7Ws,696
83
+ pyxcp/examples/xcphello.py,sha256=Ab_pTX4xL-NaMAKQwyYyy2GkABNYO2LLBz5veRCq-bI,2291
82
84
  pyxcp/examples/run_daq.py,sha256=IjfQiXXmlhQ2pGh5KW9QRqztb8LBTLS0eW3I7cFkPmo,5511
83
85
  pyxcp/examples/conf_socket_can.toml,sha256=JB9zHHaya2mDXf0zPY7zEKiBDX2chzBBRxt7h3LxxDk,257
84
86
  pyxcp/examples/conf_can.toml,sha256=oGkZYgmcpPsJ6YKGELm6DqF-hNvokJHCq99LAqxCyso,351
85
87
  pyxcp/examples/conf_can_vector.toml,sha256=kKaYPum6MbN5s3zFc6rn232grpAM5QTwrQARODg5d9k,251
86
88
  pyxcp/examples/xcp_policy.py,sha256=0A4v8Tr-xj2yVwHRoDaou97R6Hk6Yx96bPovnUoe5ro,1861
87
- pyxcp/scripts/xcp_id_scanner.py,sha256=fRNtjQYMc3Rn8ZurOTBUvPp7JJdmIVCHvZiuoX70ytU,402
89
+ pyxcp/scripts/xcp_id_scanner.py,sha256=9sbJFUYI8NZRZM5SOPaa7wK9Xs_HNIcs217JeMLNHHo,401
88
90
  pyxcp/scripts/xmraw_converter.py,sha256=W_Znm5OzBKfcyiUgwHIaLYdc2DEusX6jv2b03KAHYrk,653
89
- pyxcp/scripts/xcp_profile.py,sha256=5IoBMv8tV64nxKCVaJ4bBF7dl3_fqqsQ2tr0OoM87Vw,588
91
+ pyxcp/scripts/xcp_profile.py,sha256=Ah2KWCzlbwZm9NTXfxafbozxw4IkbdDTxKh5E_rGX7Y,587
90
92
  pyxcp/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
- pyxcp/scripts/xcp_fetch_a2l.py,sha256=tLdrU03xmnfz_-FeYSq-TH5ZsDLvpQRBvXpO5NZZohU,1199
92
- pyxcp/scripts/xcp_info.py,sha256=vXGNjO8tFJhiudp9ItZ9946NIRStj4brEpY4nNo9bTo,5505
93
+ pyxcp/scripts/xcp_fetch_a2l.py,sha256=7tl6leBxZsntM3OKnGI3mCujfDjm-gg4ILBSIaN78fI,1199
94
+ pyxcp/scripts/xcp_info.py,sha256=sqwCK3jRHU0YvPtnSxKoC4RRspVM_vvwEVWo7JnlirQ,6278
95
+ pyxcp/scripts/xcp_daq_recorder.py,sha256=uFTRNEyZ7_YL1ke57DWH-BiMC4b0-RPZlrmjujVkyfU,1531
93
96
  pyxcp/scripts/xcp_examples.py,sha256=rsvpb6moMhBxAcP5hBnHug9x-6i65WVwL5Q_tHty59c,2519
94
97
  pyxcp/scripts/pyxcp_probe_can_drivers.py,sha256=qnNLYa6hInzNrVyYh7xXYt_SB5b-tgMJHXJwIkz7lbE,547
95
98
  pyxcp/recorder/build_gcc_arm.sh,sha256=spqHf6D8Jd4NACYG65SNjb-BLMntELwBDO4PpHUiyYc,238
96
99
  pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
100
  pyxcp/recorder/mio.hpp,sha256=emP4qMXTxOe1wRSkB_U0hgOVz4aMUgG5dqcCvNNkAjs,61632
98
101
  pyxcp/recorder/build_gcc.cmd,sha256=A1xt8AS7VZxjJq21VzX8cOT7wl9ap_AIXBWbcIEddCw,237
99
- pyxcp/recorder/writer.hpp,sha256=rNjtRTtJes5z-BzKR2K56P_Kvc9MEVQgycu8J0wKf1g,11284
102
+ pyxcp/recorder/writer.hpp,sha256=OzDjyOc3_h-2A1sfclaStH4UYidytX_f9l5vpqRltRA,10982
100
103
  pyxcp/recorder/rekorder.cpython-310-darwin.so,sha256=w9pw6ugYi7KqbqOX86KwaFiYz-wS2LgY40dB3plEXTw,529984
101
104
  pyxcp/recorder/lz4hc.c,sha256=GhoLtpQF6ViHkhQ_TaLw9UCzSB_MO-fdflgjR_xFFfM,86829
102
105
  pyxcp/recorder/lz4.h,sha256=BkRLAtxukE15Z2yO0Pjrq-n6hw5W6jkGFR5f14MzpEU,45604
103
106
  pyxcp/recorder/rekorder.cpp,sha256=LtN3Ud_pigNZ70gJ5-tyFJZN-3PMDVwqbbH694--TxQ,1841
104
- pyxcp/recorder/wrap.cpp,sha256=oCsEOnRsvLlaWjyN09X7mcHLzzqCyLskREKb6kmyqNE,8707
107
+ pyxcp/recorder/wrap.cpp,sha256=ISwANK9QSSF3QzrX-ct8jVdTSorejNqPFv9I0WYZCUY,8523
105
108
  pyxcp/recorder/build_clang.sh,sha256=TZHpQZbRE6M6vHf_ln5laO9tyREUbMu-HAw0VDGx5yw,179
106
- pyxcp/recorder/reader.hpp,sha256=ssdaAaG_fHKrJMuMo_tfcCaCjFrIC5HQGNXgR343bVY,5131
109
+ pyxcp/recorder/reader.hpp,sha256=iWzi_wYuWS0rqJ4CIInhryftKdU0hTVDnnqHH0S4mFY,4993
107
110
  pyxcp/recorder/__init__.py,sha256=tMqiPL3tbYEVpxAIIBBr6dF4fKNmMJQN0kxkfgWBGLA,2680
108
111
  pyxcp/recorder/test_reko.py,sha256=sIM_BBY9sq1ZUTawoxmDzdtd5qHPT9w6eVYZoY4iFik,980
109
112
  pyxcp/recorder/build_clang.cmd,sha256=vIWwC1zF_WChakjfj8VaUCN6X8HwyqvGgFRdUub1TtE,174
110
113
  pyxcp/recorder/rekorder.cpython-311-darwin.so,sha256=8AXLZN1G6hhWP1DYIKwEu5nIwYZ2eeJMtgackkHpmqY,530128
111
- pyxcp/recorder/reco.py,sha256=SAO_XMKSBWHhdzxfkmV9ZoPvJjale4BGi8O9p5Sd_iE,8448
114
+ pyxcp/recorder/reco.py,sha256=DRY1iR8DQf8qp1EJgscQUEk80gd0gtXqslzBc_hfzKY,8449
112
115
  pyxcp/recorder/setup.py,sha256=piwBqaIX6SY1CyjKlantmd3I_VS6rk56sELvmPguKNM,957
113
- pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
116
+ pyxcp/recorder/rekorder.hpp,sha256=8RBUDN_MejmDQwm1IWxakPpQOE8ZN6yuJpeeAAlsPb0,7364
114
117
  pyxcp/recorder/rekorder.cpython-314-darwin.so,sha256=34KFqWuG1URGDneczaYk6GoNU4qkgxSfd-iHniWKfEw,546912
115
118
  pyxcp/recorder/lz4hc.h,sha256=U_uN3Q2wIi3_dbEceJ16xHJZGotUiBTcnL6O5ARPi8M,20179
116
119
  pyxcp/recorder/rekorder.cpython-312-darwin.so,sha256=3OBGF_7vokZYz-UtBgKpSZBGbbze6iQ0Trz9X_XtJGA,530144
@@ -118,12 +121,12 @@ pyxcp/recorder/lz4.c,sha256=k5b33lJ7yENd6cdWn7eZjlZUWoS088LYCMAjXAF3RTk,118145
118
121
  pyxcp/recorder/build_gcc.sh,sha256=uvMhL4faEJmhG_8rzSOxEBRRqrACC0kmZgaERN8GkUs,209
119
122
  pyxcp/recorder/rekorder.cpython-313-darwin.so,sha256=eJdOP68XJPafDp6gEPRzAiIY0y7X40fAt0ohdxV9Qok,530400
120
123
  pyxcp/recorder/unfolder.hpp,sha256=myQB5iHXLMx-cNYizm6J04revO5eW4ErSHBr73Ftqu0,48337
121
- pyxcp/recorder/converter/__init__.py,sha256=mqzH3jxGpFrtS2dHyfDLCYKeJycav3_-6z8svlI07eU,14452
122
- pyxcp/recorder/.idea/recorder.iml,sha256=VS0bPCaxLv9_ekiFyBbbDcE9EokzLkqLX8tI6g_-kaA,241
123
- pyxcp/recorder/.idea/vcs.xml,sha256=2Cg3gn9Srf2N_M7Ph6v0awcDagAOvhQn5XsMyXwYFQg,417
124
+ pyxcp/recorder/converter/__init__.py,sha256=RzdPTvUPy4mYdGtjEDIASt-5zvTdaopJ10Av7rz49Bw,14449
125
+ pyxcp/recorder/.idea/recorder.iml,sha256=Uac-W-hqE20I8EQsN-K3uiM7ON5GPEI8XoEbFfQ_dPA,242
126
+ pyxcp/recorder/.idea/vcs.xml,sha256=maW9cVjzaPQX8tL7QZRVr9VlVBFHJIM-auqlSyB3DdA,418
124
127
  pyxcp/recorder/.idea/.gitignore,sha256=ClVIsXOqwO-UO7s6-FDWdve2Ud3tufjX8Gc1vCgJs9s,176
125
- pyxcp/recorder/.idea/modules.xml,sha256=afB-6aqGDhgmK5Yv9RBUV5fxGAO14LxeFSM9soNFkqU,268
126
- pyxcp/recorder/.idea/misc.xml,sha256=ZeoYTIMQZwzia_4-XE8LHT0w7vvhFvou_GVkdOPQLrA,137
128
+ pyxcp/recorder/.idea/modules.xml,sha256=vOcqSKHDcdapjX7aKD3tZ5HdC_uCAHk4XkJQ-ZIK0Tw,269
129
+ pyxcp/recorder/.idea/misc.xml,sha256=1mFo944w-NE1LqCACq1LFwLyST6jC_DrY0QHY0xCaTw,138
127
130
  pyxcp/recorder/.idea/sonarlint/issuestore/index.pb,sha256=pt_itWgvTAnMANXontA5cYFLHGjruv10VB_c2Ij5YFs,184
128
131
  pyxcp/recorder/.idea/sonarlint/issuestore/9/a/9a2aa4db38d3115ed60da621e012c0efc0172aae,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
132
  pyxcp/recorder/.idea/sonarlint/issuestore/3/8/3808afc69ac1edb9d760000a2f137335b1b99728,sha256=YKcXNhekpl1LD7TEGHPjjXbmwyfY0c50DyveDrMVFxo,602
@@ -136,19 +139,24 @@ pyxcp/stim/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
139
  pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
140
  pyxcp/vector/map.py,sha256=dSxM15eXvZh6izITdJmFxr1rplDUlfaJUbtrm2Xv-dE,2224
138
141
  pyxcp/cpp_ext/event.hpp,sha256=X2_ThYx8fzz-XR9McmsKM2Hb9I2x7XZeQGy1OyUs6iE,1133
139
- pyxcp/cpp_ext/cpp_ext.cpython-313-darwin.so,sha256=JK86uSyw9N_N0vXWNbnSsDe8hvKIwIFq7ncBRzmCZMM,355824
142
+ pyxcp/cpp_ext/cpp_ext.cpython-313-darwin.so,sha256=ZzXeinfJxEOFXrdm2zH9GjmKAj-rHY_gMnwaOG5jlkU,372400
140
143
  pyxcp/cpp_ext/blockmem.hpp,sha256=wSUDTgwO9zNn0c29hZ_MRH7cHDIFKma2MYVxip9ARNE,1184
141
144
  pyxcp/cpp_ext/mcobject.hpp,sha256=QHv3QFGguakOfQZVOS3k0eFciIz1B5uGC54lhe00YJA,6274
142
- pyxcp/cpp_ext/cpp_ext.cpython-314-darwin.so,sha256=u57cRj215gCBvXiG0AU6AelWOW5g_r-V73MZy7yW9uA,372336
145
+ pyxcp/cpp_ext/cpp_ext.cpython-314-darwin.so,sha256=XDkKrOP_tujrdbmct57mMPuSo56kckNIrPS6mfOeSgs,372400
143
146
  pyxcp/cpp_ext/tsqueue.hpp,sha256=PuDd0kmj61afjW0yva6T8pZL3m4fPCeWsuvEyx2M-80,980
144
- pyxcp/cpp_ext/extension_wrapper.cpp,sha256=q0WvdaTsYXRd6WaBT52bdldclI7LG1HvI9OEPfI0PnU,6409
145
- pyxcp/cpp_ext/cpp_ext.cpython-312-darwin.so,sha256=LgJmQks1ISrefkFHQp9l1yF8i8rvOp7fvKg5VW3OLrQ,355568
147
+ pyxcp/cpp_ext/extension_wrapper.cpp,sha256=Mq4AYKLRMhCmad9OcGw8Z5WT36wdgXe8xqMRofJZjZU,9644
148
+ pyxcp/cpp_ext/cpp_ext.cpython-312-darwin.so,sha256=qdn5GUFji0pojZMlmVb21CDN9rTZmxwsP6maBGdDpR0,372160
146
149
  pyxcp/cpp_ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
- pyxcp/cpp_ext/sxi_framing.hpp,sha256=y-5a2tnHBPwsOjQa2iSRy9bEuePzpLURvYvwgrGbfok,11504
148
- pyxcp/cpp_ext/helper.hpp,sha256=ONAsVupIqqmNDp8bgGWS0TfSYeCFkk3kwwZbbqsh0HQ,7813
150
+ pyxcp/cpp_ext/sxi_framing.hpp,sha256=ddK7GGJUxtDd_K0HCp-z-LGhCOMvHDfKtdEKw0WU1Ac,11505
151
+ pyxcp/cpp_ext/helper.hpp,sha256=-DucElUSgC2ynPBqoFlPs-4xifXRBAcN35xxqz0nL00,7533
149
152
  pyxcp/cpp_ext/bin.hpp,sha256=QRDjy-yHsDH2uz-fZAxdwZXH40B6l7LsviJ6BTjp0HA,2568
150
- pyxcp/cpp_ext/cpp_ext.cpython-311-darwin.so,sha256=lXmaqXNS0voOEE13mRrhLICoRadCbn-AI_rbsce_orM,355568
153
+ pyxcp/cpp_ext/cpp_ext.cpython-311-darwin.so,sha256=J_9-syVq0G81YmXcdzf3UoBN2PHQ5Ps4JULr0MXRt34,372144
151
154
  pyxcp/cpp_ext/daqlist.hpp,sha256=ch_wYTmfPws8Db_i_dlWThX_kXCKnPS_RhGIX1ZUspg,13622
152
- pyxcp/cpp_ext/cpp_ext.cpython-310-darwin.so,sha256=5mELOu9QetOifgTD2EiEOXuOHX9oWfQqzCKFCJz6jdk,355488
153
- pyxcp/cpp_ext/framing.hpp,sha256=9MJA8YUG2hApMGopPgD1F5ys9Tz12WWMocSxHYgiy3c,11299
154
- pyxcp/cpp_ext/aligned_buffer.hpp,sha256=ovvMCPjmoj1PIeMH57FmiUwR39oG4WB-1poI3go7bw0,5279
155
+ pyxcp/cpp_ext/cpp_ext.cpython-310-darwin.so,sha256=pe57WnKrafl1FTKWjPcf7T1odqy6G2xelSttRIePl4E,372064
156
+ pyxcp/cpp_ext/framing.hpp,sha256=uB9LxpcqPnKQtEvCkj3z8gsYuyfUebAQgiRSEipMCrI,11300
157
+ pyxcp/cpp_ext/aligned_buffer.hpp,sha256=_70GjiJWP3a2lafk2FhjfDNdvTB3LN8GFPt_bmTw-Rw,5280
158
+ pyxcp-0.25.9.dist-info/RECORD,,
159
+ pyxcp-0.25.9.dist-info/WHEEL,sha256=hBsKSE9xeRM30vhgjMW7oZathCdLI60DdbxS3IS3qEI,134
160
+ pyxcp-0.25.9.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
161
+ pyxcp-0.25.9.dist-info/METADATA,sha256=ub_a7ZYBMg38bxQIIOeVgasdRClWC8GfRudg6M1Dw1Q,12775
162
+ pyxcp-0.25.9.dist-info/licenses/LICENSE,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.2.1
2
+ Generator: poetry-core 2.3.0
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp314-cp314-macosx_11_0_arm64
5
5
  Generator: delocate 0.13.0