pyxcp 0.22.10__cp312-cp312-win_amd64.whl → 0.22.12__cp312-cp312-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.10"
20
+ __version__ = "0.22.12"
pyxcp/config/__init__.py CHANGED
@@ -932,8 +932,11 @@ class PyXCP(Application):
932
932
  self.subapp.start()
933
933
  exit(2)
934
934
  else:
935
+ if logging.getLogger().hasHandlers():
936
+ self.log = logging.getLogger()
937
+ else:
938
+ self._setup_logger()
935
939
  self._read_configuration(self.config_file)
936
- self._setup_logger()
937
940
 
938
941
  def _setup_logger(self):
939
942
  from pyxcp.types import Command
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,85 @@
1
+ import argparse
2
+ import logging
3
+ import os
4
+ import csv
5
+ from array import array
6
+ from dataclasses import dataclass, field
7
+ from mmap import PAGESIZE
8
+ from pathlib import Path
9
+ from typing import Any, List
10
+
11
+ from pyxcp.recorder import XcpLogFileDecoder
12
+ from pyxcp.recorder.converter import MAP_TO_ARRAY
13
+
14
+
15
+ MAP_TO_SQL = {
16
+ "U8": "INTEGER",
17
+ "I8": "INTEGER",
18
+ "U16": "INTEGER",
19
+ "I16": "INTEGER",
20
+ "U32": "INTEGER",
21
+ "I32": "INTEGER",
22
+ "U64": "INTEGER",
23
+ "I64": "INTEGER",
24
+ "F32": "FLOAT",
25
+ "F64": "FLOAT",
26
+ "F16": "FLOAT",
27
+ "BF16": "FLOAT",
28
+ }
29
+
30
+ logger = logging.getLogger("PyXCP")
31
+
32
+ parser = argparse.ArgumentParser(description="Use .xmraw files in an Apache Arrow application.")
33
+ parser.add_argument("xmraw_file", help=".xmraw file")
34
+ args = parser.parse_args()
35
+
36
+
37
+ @dataclass
38
+ class Storage:
39
+ name: str
40
+ arrow_type: Any
41
+ arr: array
42
+
43
+
44
+ @dataclass
45
+ class StorageContainer:
46
+ name: str
47
+ arr: List[Storage] = field(default_factory=[])
48
+ ts0: List[int] = field(default_factory=lambda: array("Q"))
49
+ ts1: List[int] = field(default_factory=lambda: array("Q"))
50
+
51
+
52
+ class Decoder(XcpLogFileDecoder):
53
+
54
+ def __init__(self, recording_file_name: str):
55
+ super().__init__(recording_file_name)
56
+
57
+ def initialize(self) -> None:
58
+ self.arrow_tables = []
59
+ self.csv_writers = []
60
+ for dl in self.daq_lists:
61
+ result = []
62
+ for name, type_str in dl.headers:
63
+ array_txpe = MAP_TO_ARRAY[type_str]
64
+ sql_type = MAP_TO_SQL[type_str]
65
+ sd = Storage(name, sql_type, array(array_txpe))
66
+ result.append(sd)
67
+ sc = StorageContainer(dl.name, result)
68
+ writer = csv.writer(open(f"{sc.name}.csv", "w", newline=""), dialect="excel")
69
+ headers = ["ts0", "ts1"] + [e.name for e in sc.arr]
70
+ writer.writerow(headers)
71
+ self.csv_writers.append(writer)
72
+ self.arrow_tables.append(sc)
73
+ print("\nInserting data...")
74
+
75
+ def finalize(self) -> None:
76
+ print("Done.")
77
+
78
+ def on_daq_list(self, daq_list_num: int, timestamp0: int, timestamp1: int, measurements: list) -> None:
79
+ sc = self.arrow_tables[daq_list_num]
80
+ writer = self.csv_writers[daq_list_num]
81
+ data = [timestamp0, timestamp1, *measurements]
82
+ writer.writerow(data)
83
+
84
+ decoder = Decoder(args.xmraw_file)
85
+ decoder.run()
@@ -0,0 +1,95 @@
1
+ import argparse
2
+ import logging
3
+ import os
4
+ import xlsxwriter
5
+ from array import array
6
+ from dataclasses import dataclass, field
7
+ from mmap import PAGESIZE
8
+ from pathlib import Path
9
+ from typing import Any, List
10
+
11
+ from pyxcp.recorder import XcpLogFileDecoder
12
+ from pyxcp.recorder.converter import MAP_TO_ARRAY
13
+
14
+
15
+ MAP_TO_SQL = {
16
+ "U8": "INTEGER",
17
+ "I8": "INTEGER",
18
+ "U16": "INTEGER",
19
+ "I16": "INTEGER",
20
+ "U32": "INTEGER",
21
+ "I32": "INTEGER",
22
+ "U64": "INTEGER",
23
+ "I64": "INTEGER",
24
+ "F32": "FLOAT",
25
+ "F64": "FLOAT",
26
+ "F16": "FLOAT",
27
+ "BF16": "FLOAT",
28
+ }
29
+
30
+ logger = logging.getLogger("PyXCP")
31
+
32
+ parser = argparse.ArgumentParser(description="Use .xmraw files in an Apache Arrow application.")
33
+ parser.add_argument("xmraw_file", help=".xmraw file")
34
+ args = parser.parse_args()
35
+
36
+
37
+ @dataclass
38
+ class Storage:
39
+ name: str
40
+ arrow_type: Any
41
+ arr: array
42
+
43
+
44
+ @dataclass
45
+ class StorageContainer:
46
+ name: str
47
+ arr: List[Storage] = field(default_factory=[])
48
+ ts0: List[int] = field(default_factory=lambda: array("Q"))
49
+ ts1: List[int] = field(default_factory=lambda: array("Q"))
50
+
51
+
52
+ class Decoder(XcpLogFileDecoder):
53
+
54
+ def __init__(self, recording_file_name: str):
55
+ super().__init__(recording_file_name)
56
+ self.xls_file_name = Path(recording_file_name).with_suffix(".xlsx")
57
+ try:
58
+ os.unlink(self.xls_file_name)
59
+ except Exception as e:
60
+ print(e)
61
+
62
+ def initialize(self) -> None:
63
+ self.arrow_tables = []
64
+ self.xls_workbook = xlsxwriter.Workbook(self.xls_file_name)
65
+ self.xls_sheets = []
66
+ self.rows = []
67
+ for dl in self.daq_lists:
68
+ result = []
69
+ for name, type_str in dl.headers:
70
+ array_txpe = MAP_TO_ARRAY[type_str]
71
+ sql_type = MAP_TO_SQL[type_str]
72
+ sd = Storage(name, sql_type, array(array_txpe))
73
+ result.append(sd)
74
+ sc = StorageContainer(dl.name, result)
75
+ sheet = self.xls_workbook.add_worksheet(sc.name)
76
+ self.xls_sheets.append(sheet)
77
+ headers = ["ts0", "ts1"] + [e.name for e in sc.arr]
78
+ sheet.write_row(0, 0, headers)
79
+ self.rows.append(1)
80
+ self.arrow_tables.append(sc)
81
+ print("\nInserting data...")
82
+
83
+ def finalize(self) -> None:
84
+ self.xls_workbook.close()
85
+ print("Done.")
86
+
87
+ def on_daq_list(self, daq_list_num: int, timestamp0: int, timestamp1: int, measurements: list) -> None:
88
+ sheet = self.xls_sheets[daq_list_num]
89
+ row = self.rows[daq_list_num]
90
+ data = [timestamp0, timestamp1] + measurements
91
+ sheet.write_row(row, 0, data)
92
+ self.rows[daq_list_num] += 1
93
+
94
+ decoder = Decoder(args.xmraw_file)
95
+ decoder.run()
pyxcp/recorder/reader.hpp CHANGED
@@ -33,11 +33,11 @@ class XcpLogFileReader {
33
33
  if (detail::VERSION != m_header.version) {
34
34
  throw std::runtime_error("File version mismatch.");
35
35
  }
36
-
36
+ #if 0
37
37
  if (m_header.num_containers < 1) {
38
38
  throw std::runtime_error("At least one container required.");
39
39
  }
40
-
40
+ #endif
41
41
  m_offset += detail::FILE_HEADER_SIZE;
42
42
 
43
43
  if ((m_header.options & XMRAW_HAS_METADATA) == XMRAW_HAS_METADATA) {
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -640,9 +640,11 @@ struct MeasurementParameters {
640
640
 
641
641
  #undef max // Thanks to Windows.
642
642
 
643
- auto get_overflow_value() const {
643
+ auto get_overflow_value() const -> std::uint64_t {
644
644
  std::uint64_t ov_value{};
645
645
  switch (m_ts_size) {
646
+ case 0:
647
+ return 0ULL;
646
648
  case 1:
647
649
  ov_value = std::numeric_limits<std::uint8_t>::max();
648
650
  break;
@@ -659,9 +661,7 @@ struct MeasurementParameters {
659
661
  throw std::runtime_error("Invalid timestamp size");
660
662
  }
661
663
  ov_value++;
662
- std::cout << "TS-V: " << ov_value << " scale: " << m_ts_scale_factor << std::endl;
663
664
  ov_value = static_cast<std::uint64_t>(ov_value * m_ts_scale_factor);
664
- std::cout << "OVRF-Value: " << ov_value << std::endl;
665
665
  return ov_value;
666
666
  }
667
667
 
@@ -1080,7 +1080,7 @@ class DAQPolicyBase {
1080
1080
  virtual void set_parameters(const MeasurementParameters& params) noexcept {
1081
1081
  m_overflow_value = params.get_overflow_value();
1082
1082
  m_overflow_counter = 0ULL;
1083
- std::cout << "Overflow value: " << m_overflow_value << ", Overflow counter: " << m_overflow_counter << std::endl;
1083
+ // std::cout << "Overflow value: " << m_overflow_value << ", Overflow counter: " << m_overflow_counter << std::endl;
1084
1084
  initialize();
1085
1085
  }
1086
1086
 
pyxcp/transport/base.py CHANGED
@@ -82,10 +82,9 @@ class LegacyFrameAcquisitionPolicy(FrameAcquisitionPolicy):
82
82
  }
83
83
 
84
84
  def feed(self, frame_type: types.FrameCategory, counter: int, timestamp: int, payload: bytes) -> None:
85
- # print(f"{frame_type.name:8} {counter:6} {timestamp:7.7f} {hexDump(payload)}")
86
85
  if frame_type not in self.filtered_out:
87
86
  queue = self.QUEUE_MAP.get(frame_type)
88
- if queue:
87
+ if queue is not None:
89
88
  queue.append((counter, timestamp, payload))
90
89
 
91
90
 
@@ -118,7 +117,7 @@ class StdoutPolicy(FrameAcquisitionPolicy):
118
117
 
119
118
  def feed(self, frame_type: types.FrameCategory, counter: int, timestamp: int, payload: bytes) -> None:
120
119
  if frame_type not in self.filtered_out:
121
- print(f"{frame_type.name:8} {counter:6} {timestamp:8u} {hexDump(payload)}")
120
+ print(f"{frame_type.name:8} {counter:6} {timestamp:8d} {hexDump(payload)}")
122
121
 
123
122
 
124
123
  class EmptyFrameError(Exception):
@@ -210,7 +209,12 @@ class BaseTransport(metaclass=abc.ABCMeta):
210
209
 
211
210
  @property
212
211
  def start_datetime(self) -> int:
213
- """"""
212
+ """datetime of program start.
213
+
214
+ Returns
215
+ -------
216
+ int
217
+ """
214
218
  return self._start_datetime
215
219
 
216
220
  def start_listener(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxcp
3
- Version: 0.22.10
3
+ Version: 0.22.12
4
4
  Summary: Universal Calibration Protocol for Python
5
5
  Home-page: https://github.com/christoph2/pyxcp
6
6
  License: LGPLv3
@@ -1,4 +1,4 @@
1
- pyxcp/__init__.py,sha256=5gNaTsZlwx90n0_iLoI9I5zhLtWz-lprPLROdm7DBZk,548
1
+ pyxcp/__init__.py,sha256=rzqutj_NIktuafZn4ti6vl4JGdf6GvLUr3VGJhfN7Q4,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
@@ -18,17 +18,17 @@ pyxcp/asamkeydll.c,sha256=dVEvU0S1kgIo62S0La-T8xHSw668LM_DYc_fiQ0No6g,2952
18
18
  pyxcp/asamkeydll.sh,sha256=DC2NKUMwvi39OQgJ6514Chr4wc1LYbTmQHmMq9jAHHs,59
19
19
  pyxcp/checksum.py,sha256=alze1JiZ2JmdRul9QzP_-fuAqJcNyYBbo35zBwEKqHk,11535
20
20
  pyxcp/cmdline.py,sha256=uSbCtKtQT0JQxMhcoUUx_UJ1nMUILMWckEQGe_tNxXk,1496
21
- pyxcp/config/__init__.py,sha256=V66iNkrUVF1iR3X15nl_1a37qRlpEc-xZ5P-UMP0rp4,41832
21
+ pyxcp/config/__init__.py,sha256=Vv0CPXg6hDftPRMmiv845KqcksZPlBqJMmmyWyrH-Vs,41954
22
22
  pyxcp/config/legacy.py,sha256=4QdDheX8DbBKv5JVT72_C_cjCgKvZmhN3tJ6hsvBEtI,5220
23
23
  pyxcp/constants.py,sha256=9yGfujC0ImTYQWfn41wyw8pluJTSrhMGWIVeIZTgsLg,1160
24
24
  pyxcp/cpp_ext/__init__.py,sha256=iCsEqSZQIsaNSjQkgTp-DKvOCkRtV6QOydnSUDx5jVk,136
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=s2YX9NSLlGVms5rR2NrsOWOU2zlGcXEu2MXGtA0bw2A,278016
28
- pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=iy06blgvZQDQx6tBa-05_wxUI857WR-sUf0FUjQyfkA,280064
29
- pyxcp/cpp_ext/cpp_ext.cp312-win_amd64.pyd,sha256=l5zRKN3qoNQ-VEXjlhl1L4fXFnC3vJ0LjTJ-Hws-pzg,284160
30
- pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=5VMsACPyJOwOkE_kmiqBBqDeK_Bxom_ytuf6__JOEKw,278016
31
- pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=y9LmrJRmsR62znnQwT7wGGCIClNjAhQtG176iD4Df4o,259584
27
+ pyxcp/cpp_ext/cpp_ext.cp310-win_amd64.pyd,sha256=78rV894PWY7xDOwuC8vmTdhE8g76hlCzZa_o0i-hOnk,278016
28
+ pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=McO4tKC0mRSk8Oenkmswfp1ZcnbANlVKBgXzJBktUUU,280064
29
+ pyxcp/cpp_ext/cpp_ext.cp312-win_amd64.pyd,sha256=xfQ4oUl1GNB53xHLFILBjfUQbjQZd1QOvXSnk0YVMxE,284160
30
+ pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=zkRiyCw9-TfVZr1WS2G3SJDu5z0PTWRBV3F7hZMUkko,278016
31
+ pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=7Pk0o1wc6ek4jXYhiLkJAie3iO08xy1hROZ-nmpzOFY,259584
32
32
  pyxcp/cpp_ext/daqlist.hpp,sha256=sgqodW4vnN82s05mFyXQnpQox4KR3VDhP5FB_VhsmQc,7075
33
33
  pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
34
34
  pyxcp/cpp_ext/extension_wrapper.cpp,sha256=5ZUYLt87SEAZUzuBkBl7N0eXXBOVq_aZvlNdpVgmy4o,4528
@@ -40,11 +40,11 @@ pyxcp/daq_stim/optimize/__init__.py,sha256=E4HzY8P0aeegNgu71hUcbL-yR6Fzg5PGe8PSi
40
40
  pyxcp/daq_stim/optimize/binpacking.py,sha256=zTNjpt91MnGW5ha9Z07hQtuoJ7tspyRwRlLYbE6GMGs,1249
41
41
  pyxcp/daq_stim/scheduler.cpp,sha256=a7VK7kP2Hs8yMlcDAkXwJ0bH88lr_yz156sphcHS7Z4,715
42
42
  pyxcp/daq_stim/scheduler.hpp,sha256=U_6tUbebmzX5vVZS0EFSgTaPsyxMg6yRXHG_aPWA0x4,1884
43
- pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=42gH3xnpqIPnchidEgzmnzOms0OmxMUF1PGiSWNhtxo,186880
44
- pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=-wNSKkdA7UeFftpuIH7YUT96OunqG7wVXPBFswYhc68,189440
45
- pyxcp/daq_stim/stim.cp312-win_amd64.pyd,sha256=Q0H4ALP0zL7GBGFgeVhgHojAGV-wBniWWbIaetleqbI,190976
46
- pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=1_HMSdbmcX_23ohzEIH2D-MjDNmQ1ZekH76Z94R-72I,186880
47
- pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=fJqji_m7qYjQO5_gZzAWUtkYN6dORAmqI80yWhK_duY,181248
43
+ pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=YskLVIiDKU5XEAMvho5NUyka9ECm08qCok8ub6jyWKA,186880
44
+ pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=R6GddM_xf-4dcPT05zTrZ1uwx9j3_0DFs5QASjcj744,189440
45
+ pyxcp/daq_stim/stim.cp312-win_amd64.pyd,sha256=gzV_21KppPSzLnjJoh1nCoOmJJRo3nByDP-mdfuWzWY,190976
46
+ pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=xgMR2ABH1WH58MMIBkF8KJsZr4kDLkeG-OryTsSJJf4,186880
47
+ pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=XFhdTQcwx6ztvIjUY_IcpWvW5-HQl-2DpWHrwoszIsY,181248
48
48
  pyxcp/daq_stim/stim.cpp,sha256=F2OG67W4KKwTTiUCxm-9egIv3TLFdOkRunX6xf7YOtc,177
49
49
  pyxcp/daq_stim/stim.hpp,sha256=U-uInRrA6OCdMl1l1SWbQ_KEPpnNYrWut924IvbW6R0,18508
50
50
  pyxcp/daq_stim/stim_wrapper.cpp,sha256=5LbWkK86h_4mHd83dnwCU7BRvVYit8ijxBMT7pthtOE,1830
@@ -60,6 +60,8 @@ pyxcp/examples/conf_socket_can.toml,sha256=gTacQGm0p6fhPCMWC3ScLq9Xj-xJmNbjNXkjO
60
60
  pyxcp/examples/conf_sxi.json,sha256=cXwNGoOpvqhdjXBQcE8lKgTs50wi9beosWKskZGJ-nI,158
61
61
  pyxcp/examples/conf_sxi.toml,sha256=t-XsgRljcMdj0f3_CGRT60c77LeQPNbjIT17YxDK3Yg,125
62
62
  pyxcp/examples/ex_arrow.py,sha256=HvY5Lc7rL87-FgTTcZSQJLjSiTdfjfjMLu0mMmLpW10,3020
63
+ pyxcp/examples/ex_csv.py,sha256=GNWQ3IatXj3Kg5MUX6p8tzJRUppGreON9dkrNiqdTtk,2461
64
+ pyxcp/examples/ex_excel.py,sha256=VpoqRTv-rHz-MnaFKt5f7MqDrK9OLYyRJvVWzCFsayc,2828
63
65
  pyxcp/examples/ex_mdf.py,sha256=zfivlNkbbsfvwqsISttaoQk1R888r7UUtwSqocE60sU,3759
64
66
  pyxcp/examples/ex_sqlite.py,sha256=ludD0EIziBhBNnC3MOrQTGs06cl7iNyL2yefwe53zNc,4268
65
67
  pyxcp/examples/run_daq.py,sha256=l8PYfRZRKNuDrTwmOC_rc2aSPDJrxcLQ4RWmfPRUjRI,4947
@@ -86,19 +88,19 @@ pyxcp/recorder/lz4.h,sha256=Kz_2V6kvOunNHoPl9-EqxWDVCvYXbU0J-pkSnCeXubs,46483
86
88
  pyxcp/recorder/lz4hc.c,sha256=E56iE5CQ6fhQIVi3qNpxiIIP2sTGeC80JtVPyhidV6Q,88870
87
89
  pyxcp/recorder/lz4hc.h,sha256=dtxPbesyAongP7CK_pL0M2DL707iMm9jGKrl8hXXRNk,20592
88
90
  pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
89
- pyxcp/recorder/reader.hpp,sha256=qbz-LFg87h4yLaGiv_8zP-95UebbwICei0tvgHu6uII,5190
91
+ pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
90
92
  pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
91
93
  pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=OlljGRPIPcSw8V0boPfZGdDXLhAXtFn-stusAeiYGno,378368
93
- pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=Kib-Z6wAxfpifsehS92zh9CIa5DmTZkosggAVFATCsU,380416
94
- pyxcp/recorder/rekorder.cp312-win_amd64.pyd,sha256=s-qSEgM0f72PhogiDxZY5zGXMbYnV5WiPf0o_aB8pjg,382976
95
- pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=pt4_SKKfYQNvyrgxFjUovW5VMXOZvJB4FMtLiFPCG8g,377856
96
- pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=2PNaXEC1VOLo9ZHuYHuHgj7X_P9NcZFkluYQPj7K8lk,364032
94
+ pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=mhP27o0y4AJzUgtmIer_DgyQYtcrKMTcbN8ZwVnydPE,377856
95
+ pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=zgPGvIyU_QcfRXcjNG_BGFjJ3OD6IEMzTuU1Okdyq1k,380416
96
+ pyxcp/recorder/rekorder.cp312-win_amd64.pyd,sha256=Hk62esfwiS13rX3Wkt9-iX4sWjy_R81FU2EB0F7CxCQ,382976
97
+ pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=EM3_3v-MOkrbYNTo3bvbpgKiRalJEN6EnMm39WXWCTY,377856
98
+ pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=ClhUHYx3TOjsckTysXn82P8MYLtT3ghSSWVfGCE5AtE,363520
97
99
  pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
98
100
  pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
99
101
  pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
100
102
  pyxcp/recorder/test_reko.py,sha256=M8lfKBmBUl-28IMVoD6lU5Bnorz7fYFOvcAjfVZxuXA,1014
101
- pyxcp/recorder/unfolder.hpp,sha256=1DOjH3YlExYtJfQpmnyxWiQTgM87ON59tNlhC6o2ACE,48082
103
+ pyxcp/recorder/unfolder.hpp,sha256=3gJKT2eMOZuT8o_M2NFLthdUIWd460vdwzlHaf-fQII,47998
102
104
  pyxcp/recorder/wrap.cpp,sha256=S3frBevIrPE5m3kt_mXe9TDOwWPJFiVa7Rt9FGMCv2A,8909
103
105
  pyxcp/recorder/writer.hpp,sha256=rNjtRTtJes5z-BzKR2K56P_Kvc9MEVQgycu8J0wKf1g,11284
104
106
  pyxcp/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -120,7 +122,7 @@ pyxcp/tests/test_transport.py,sha256=Qn2VjNRfYCU6DH8olVSBUCqb0zdAM9GlTbVBM99YxFQ
120
122
  pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
121
123
  pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
122
124
  pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
123
- pyxcp/transport/base.py,sha256=MQwdDpff34YOHyabP-NdV1Jq-w2umXMSMSNdc4nMGDU,16281
125
+ pyxcp/transport/base.py,sha256=EWevuuTht424_tgYnybU3Xh_jFAdBjdCcMTyU7u_gL4,16288
124
126
  pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
127
  pyxcp/transport/can.py,sha256=cQ8lrwBL7Ar0GSf48987TztR9wqYS_UnXUngzhaHXe0,14909
126
128
  pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
@@ -131,8 +133,8 @@ pyxcp/types.py,sha256=hY4Bb3qT3ZoabGnSKLY6S84MvVyuOCxwVONfs2skx2Y,26043
131
133
  pyxcp/utils.py,sha256=tujhw__jUSVIljHfHekN-nzERXC_1orVRBGKNyGqBuo,2961
132
134
  pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
135
  pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
134
- pyxcp-0.22.10.dist-info/entry_points.txt,sha256=2JbL-pWn9UxpBrS64aWiFFkq9x2A7y-dkrxYlfQqIJU,307
135
- pyxcp-0.22.10.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
136
- pyxcp-0.22.10.dist-info/METADATA,sha256=fOE_8OKC9r7-G424mSYcUxSqkgIrkRBT30Q2cMkj9zw,4076
137
- pyxcp-0.22.10.dist-info/WHEEL,sha256=4N0hGcnWMI_Ty6ATf4qJqqSl-UNI-Ln828iTWGIywmU,98
138
- pyxcp-0.22.10.dist-info/RECORD,,
136
+ pyxcp-0.22.12.dist-info/entry_points.txt,sha256=2JbL-pWn9UxpBrS64aWiFFkq9x2A7y-dkrxYlfQqIJU,307
137
+ pyxcp-0.22.12.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
138
+ pyxcp-0.22.12.dist-info/METADATA,sha256=H6p5xGHQkEYQ9CciMWIFwsL0UQ06L1Bj-bHfD-Dx_x0,4076
139
+ pyxcp-0.22.12.dist-info/WHEEL,sha256=mplBUCx-pBi3qWfkXZJ51YVNhldljO04tS33S9GKuiU,98
140
+ pyxcp-0.22.12.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 1.9.1
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp312-cp312-win_amd64