pyxcp 0.22.10__cp312-cp312-win_amd64.whl → 0.22.11__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.11"
pyxcp/config/__init__.py CHANGED
@@ -933,7 +933,10 @@ class PyXCP(Application):
933
933
  exit(2)
934
934
  else:
935
935
  self._read_configuration(self.config_file)
936
- self._setup_logger()
936
+ if logging.getLogger().hasHandlers():
937
+ self.log = logging.getLogger()
938
+ else:
939
+ 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()
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyxcp
3
- Version: 0.22.10
3
+ Version: 0.22.11
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=qJTsh51O0ValCtABif9KgajJOlsCAiM3d_LNOJ8tu5w,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=BWrmH3kdVk4__z2eU-3EKuYtXB7bxcSq2K1sWUYtQXo,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=sASj5hJAQ1Ydwufb8TaGb5Xbrqrj9kDXqStDe6PNZKY,278016
28
+ pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=Xe26qmkTt8ESHYEzfD4JMhpTWuQHnyHeM2BqTmkceO4,280064
29
+ pyxcp/cpp_ext/cpp_ext.cp312-win_amd64.pyd,sha256=oah4raKt6YK07sKWnIZ-bVa2BDmeSb5ryAy4s4_zDL4,284160
30
+ pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=LTqT6LndI9cL27VjSyDRWaJodSPN9ul798F4diZ-mL8,278016
31
+ pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=MiCjOjgtrrx5phVWpoyPHLqperKQ7whWY4PBfK1-aDw,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=cqUPEkQJAXuurqYVvGAELbTwlg89kvyJ0uehVyBfkmI,186880
44
+ pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=Awx7JV7gAjUO-dRA8Xv4JXGVTVK6tFym72Oql0VJ65Y,189440
45
+ pyxcp/daq_stim/stim.cp312-win_amd64.pyd,sha256=L4ztjZ9NfqbRzVSNeRvhVetJ5dPqTLb8pPIrmkdRuJ0,190976
46
+ pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=QgOvk1Ff411UTO7a0C1hy_Q49ZEtbWAUqkecTp451Qg,186880
47
+ pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=vYkA_iLZ7JVNnjaf2GmeDWIgSMu_JlAUMkoQloR2Axw,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
@@ -89,11 +91,11 @@ pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
89
91
  pyxcp/recorder/reader.hpp,sha256=qbz-LFg87h4yLaGiv_8zP-95UebbwICei0tvgHu6uII,5190
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=NchL2HipGRFb2Ai-raUb7rgjzFXd6eZCDqVPXd23Mwk,378368
95
+ pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=2AwvKo8dsDjgTralpqQcFzPa52UIjjDiyJK6ZZXwJ1I,380416
96
+ pyxcp/recorder/rekorder.cp312-win_amd64.pyd,sha256=S_2PIRY6kC2eTYljIfKgb2bcPFX6Td2N3bYOKRC3w_o,382976
97
+ pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=_1VnBqbPMV2pnCdJAFJbvwQvcMOWeGZCzLypwsN-haI,377856
98
+ pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=4N4CqJdSlzQBLusSwg_n566FRo6M7JIUrYZwY8j3t44,364032
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
@@ -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.11.dist-info/entry_points.txt,sha256=2JbL-pWn9UxpBrS64aWiFFkq9x2A7y-dkrxYlfQqIJU,307
137
+ pyxcp-0.22.11.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
138
+ pyxcp-0.22.11.dist-info/METADATA,sha256=0DJ5GVLdiuKA9LDdmtpy58xSLiImjhkHgqgmEisr6T8,4076
139
+ pyxcp-0.22.11.dist-info/WHEEL,sha256=4N0hGcnWMI_Ty6ATf4qJqqSl-UNI-Ln828iTWGIywmU,98
140
+ pyxcp-0.22.11.dist-info/RECORD,,