pyxcp 0.22.10__cp310-cp310-win_amd64.whl → 0.22.12__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.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
@@ -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
@@ -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,15 +18,15 @@ 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.cp38-win_amd64.pyd,sha256=5VMsACPyJOwOkE_kmiqBBqDeK_Bxom_ytuf6__JOEKw,278016
29
- 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.cp38-win_amd64.pyd,sha256=zkRiyCw9-TfVZr1WS2G3SJDu5z0PTWRBV3F7hZMUkko,278016
29
+ pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=7Pk0o1wc6ek4jXYhiLkJAie3iO08xy1hROZ-nmpzOFY,259584
30
30
  pyxcp/cpp_ext/daqlist.hpp,sha256=sgqodW4vnN82s05mFyXQnpQox4KR3VDhP5FB_VhsmQc,7075
31
31
  pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
32
32
  pyxcp/cpp_ext/extension_wrapper.cpp,sha256=5ZUYLt87SEAZUzuBkBl7N0eXXBOVq_aZvlNdpVgmy4o,4528
@@ -38,9 +38,9 @@ pyxcp/daq_stim/optimize/__init__.py,sha256=E4HzY8P0aeegNgu71hUcbL-yR6Fzg5PGe8PSi
38
38
  pyxcp/daq_stim/optimize/binpacking.py,sha256=zTNjpt91MnGW5ha9Z07hQtuoJ7tspyRwRlLYbE6GMGs,1249
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=42gH3xnpqIPnchidEgzmnzOms0OmxMUF1PGiSWNhtxo,186880
42
- pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=1_HMSdbmcX_23ohzEIH2D-MjDNmQ1ZekH76Z94R-72I,186880
43
- pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=fJqji_m7qYjQO5_gZzAWUtkYN6dORAmqI80yWhK_duY,181248
41
+ pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=YskLVIiDKU5XEAMvho5NUyka9ECm08qCok8ub6jyWKA,186880
42
+ pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=xgMR2ABH1WH58MMIBkF8KJsZr4kDLkeG-OryTsSJJf4,186880
43
+ pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=XFhdTQcwx6ztvIjUY_IcpWvW5-HQl-2DpWHrwoszIsY,181248
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=5LbWkK86h_4mHd83dnwCU7BRvVYit8ijxBMT7pthtOE,1830
@@ -56,6 +56,8 @@ pyxcp/examples/conf_socket_can.toml,sha256=gTacQGm0p6fhPCMWC3ScLq9Xj-xJmNbjNXkjO
56
56
  pyxcp/examples/conf_sxi.json,sha256=cXwNGoOpvqhdjXBQcE8lKgTs50wi9beosWKskZGJ-nI,158
57
57
  pyxcp/examples/conf_sxi.toml,sha256=t-XsgRljcMdj0f3_CGRT60c77LeQPNbjIT17YxDK3Yg,125
58
58
  pyxcp/examples/ex_arrow.py,sha256=HvY5Lc7rL87-FgTTcZSQJLjSiTdfjfjMLu0mMmLpW10,3020
59
+ pyxcp/examples/ex_csv.py,sha256=GNWQ3IatXj3Kg5MUX6p8tzJRUppGreON9dkrNiqdTtk,2461
60
+ pyxcp/examples/ex_excel.py,sha256=VpoqRTv-rHz-MnaFKt5f7MqDrK9OLYyRJvVWzCFsayc,2828
59
61
  pyxcp/examples/ex_mdf.py,sha256=zfivlNkbbsfvwqsISttaoQk1R888r7UUtwSqocE60sU,3759
60
62
  pyxcp/examples/ex_sqlite.py,sha256=ludD0EIziBhBNnC3MOrQTGs06cl7iNyL2yefwe53zNc,4268
61
63
  pyxcp/examples/run_daq.py,sha256=l8PYfRZRKNuDrTwmOC_rc2aSPDJrxcLQ4RWmfPRUjRI,4947
@@ -82,17 +84,17 @@ pyxcp/recorder/lz4.h,sha256=Kz_2V6kvOunNHoPl9-EqxWDVCvYXbU0J-pkSnCeXubs,46483
82
84
  pyxcp/recorder/lz4hc.c,sha256=E56iE5CQ6fhQIVi3qNpxiIIP2sTGeC80JtVPyhidV6Q,88870
83
85
  pyxcp/recorder/lz4hc.h,sha256=dtxPbesyAongP7CK_pL0M2DL707iMm9jGKrl8hXXRNk,20592
84
86
  pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
85
- pyxcp/recorder/reader.hpp,sha256=qbz-LFg87h4yLaGiv_8zP-95UebbwICei0tvgHu6uII,5190
87
+ pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
86
88
  pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
87
89
  pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=OlljGRPIPcSw8V0boPfZGdDXLhAXtFn-stusAeiYGno,378368
89
- pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=pt4_SKKfYQNvyrgxFjUovW5VMXOZvJB4FMtLiFPCG8g,377856
90
- pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=2PNaXEC1VOLo9ZHuYHuHgj7X_P9NcZFkluYQPj7K8lk,364032
90
+ pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=mhP27o0y4AJzUgtmIer_DgyQYtcrKMTcbN8ZwVnydPE,377856
91
+ pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=EM3_3v-MOkrbYNTo3bvbpgKiRalJEN6EnMm39WXWCTY,377856
92
+ pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=ClhUHYx3TOjsckTysXn82P8MYLtT3ghSSWVfGCE5AtE,363520
91
93
  pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
92
94
  pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
93
95
  pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
94
96
  pyxcp/recorder/test_reko.py,sha256=M8lfKBmBUl-28IMVoD6lU5Bnorz7fYFOvcAjfVZxuXA,1014
95
- pyxcp/recorder/unfolder.hpp,sha256=1DOjH3YlExYtJfQpmnyxWiQTgM87ON59tNlhC6o2ACE,48082
97
+ pyxcp/recorder/unfolder.hpp,sha256=3gJKT2eMOZuT8o_M2NFLthdUIWd460vdwzlHaf-fQII,47998
96
98
  pyxcp/recorder/wrap.cpp,sha256=S3frBevIrPE5m3kt_mXe9TDOwWPJFiVa7Rt9FGMCv2A,8909
97
99
  pyxcp/recorder/writer.hpp,sha256=rNjtRTtJes5z-BzKR2K56P_Kvc9MEVQgycu8J0wKf1g,11284
98
100
  pyxcp/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -114,7 +116,7 @@ pyxcp/tests/test_transport.py,sha256=Qn2VjNRfYCU6DH8olVSBUCqb0zdAM9GlTbVBM99YxFQ
114
116
  pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
115
117
  pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
116
118
  pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
117
- pyxcp/transport/base.py,sha256=MQwdDpff34YOHyabP-NdV1Jq-w2umXMSMSNdc4nMGDU,16281
119
+ pyxcp/transport/base.py,sha256=EWevuuTht424_tgYnybU3Xh_jFAdBjdCcMTyU7u_gL4,16288
118
120
  pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
121
  pyxcp/transport/can.py,sha256=cQ8lrwBL7Ar0GSf48987TztR9wqYS_UnXUngzhaHXe0,14909
120
122
  pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
@@ -125,8 +127,8 @@ pyxcp/types.py,sha256=hY4Bb3qT3ZoabGnSKLY6S84MvVyuOCxwVONfs2skx2Y,26043
125
127
  pyxcp/utils.py,sha256=tujhw__jUSVIljHfHekN-nzERXC_1orVRBGKNyGqBuo,2961
126
128
  pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
129
  pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
128
- pyxcp-0.22.10.dist-info/entry_points.txt,sha256=2JbL-pWn9UxpBrS64aWiFFkq9x2A7y-dkrxYlfQqIJU,307
129
- pyxcp-0.22.10.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
130
- pyxcp-0.22.10.dist-info/METADATA,sha256=fOE_8OKC9r7-G424mSYcUxSqkgIrkRBT30Q2cMkj9zw,4076
131
- pyxcp-0.22.10.dist-info/WHEEL,sha256=Jr_qyVDoEAnAI5RcZqNdiGEGsXCke4YuTFjHKZdYyb4,98
132
- pyxcp-0.22.10.dist-info/RECORD,,
130
+ pyxcp-0.22.12.dist-info/entry_points.txt,sha256=2JbL-pWn9UxpBrS64aWiFFkq9x2A7y-dkrxYlfQqIJU,307
131
+ pyxcp-0.22.12.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
132
+ pyxcp-0.22.12.dist-info/METADATA,sha256=H6p5xGHQkEYQ9CciMWIFwsL0UQ06L1Bj-bHfD-Dx_x0,4076
133
+ pyxcp-0.22.12.dist-info/WHEEL,sha256=m3IvSLcO9dr-GyYVTyaKikpz8RWQ7IicWuXKArHYOZE,98
134
+ 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: cp310-cp310-win_amd64