pyxcp 0.22.29__cp311-cp311-win_amd64.whl → 0.22.31__cp311-cp311-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.29"
20
+ __version__ = "0.22.31"
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
pyxcp/master/master.py CHANGED
@@ -579,10 +579,10 @@ class Master:
579
579
  result = []
580
580
  for _ in chunks:
581
581
  data = self.upload(chunk_size)
582
- result.extend(data)
582
+ result.extend(data[:chunk_size])
583
583
  if remaining:
584
584
  data = self.upload(remaining)
585
- result.extend(data)
585
+ result.extend(data[:remaining])
586
586
  return bytes(result)
587
587
 
588
588
  pull = fetch # fetch() may be completely replaced by pull() someday.
@@ -694,7 +694,7 @@ class Master:
694
694
  callback_remaining = total_length
695
695
  for _ in chunks:
696
696
  block = data[offset : offset + max_payload]
697
- dl_func(block, max_payload, last=True)
697
+ dl_func(block, max_payload, last=False)
698
698
  offset += max_payload
699
699
  callback_remaining -= chunk_size
700
700
  if callback and callback_remaining <= total_length - (total_length / 100) * percent_complete:
Binary file
Binary file
Binary file
Binary file
pyxcp/transport/base.py CHANGED
@@ -278,7 +278,7 @@ class BaseTransport(metaclass=abc.ABCMeta):
278
278
  err = types.XcpError.parse(xcpPDU[1:])
279
279
  raise types.XcpResponseError(err)
280
280
  with self.command_lock:
281
- if isinstance(*data, list):
281
+ if isinstance(data, list):
282
282
  data = data[0] # C++ interfacing.
283
283
  frame = self._prepare_request(cmd, *data)
284
284
  with self.policy_lock:
pyxcp/transport/can.py CHANGED
@@ -351,13 +351,11 @@ class Can(BaseTransport):
351
351
  result[n] = value
352
352
  elif value is not None:
353
353
  self.logger.warning(f"XCPonCAN - {self.interface_name!r} has no support for parameter {n!r}.")
354
-
355
354
  # Parameter names that need to be mapped.
356
355
  for base_name, name in can_interface_config_class.CAN_PARAM_MAP.items():
357
356
  value = getattr(self.config, base_name)
358
- if value is not None:
357
+ if name is not None and value is not None:
359
358
  result[name] = value
360
-
361
359
  # Interface specific parameters.
362
360
  cxx = getattr(self.config, self.interface_name)
363
361
  for name in can_interface_config_class.class_own_traits().keys():
pyxcp/utils.py CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env python
2
2
  import datetime
3
+ from enum import IntEnum
3
4
  import functools
4
5
  import operator
5
6
  import sys
@@ -100,3 +101,27 @@ class CurrentDatetime(TimestampInfo):
100
101
  utc_offset={self.utc_offset},
101
102
  dst_offset={self.dst_offset}
102
103
  )"""
104
+
105
+
106
+ def enum_from_str(enum_class: IntEnum, enumerator: str) -> IntEnum:
107
+ """Create an `IntEnum` instance from an enumerator `str`.
108
+
109
+ Parameters
110
+ ----------
111
+ enum_class: IntEnum
112
+
113
+ enumerator: str
114
+
115
+ Example
116
+ -------
117
+
118
+ class Color(enum.IntEnum):
119
+ RED = 0
120
+ GREEN = 1
121
+ BLUE = 2
122
+
123
+ color: Color = enum_from_str(Color, "GREEN")
124
+
125
+
126
+ """
127
+ return enum_class(enum_class.__members__.get(enumerator))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyxcp
3
- Version: 0.22.29
3
+ Version: 0.22.31
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=CfVT1SdmpLo0RUcrWbWh55AgFA7AMWc7swLMPD1DN-s,548
1
+ pyxcp/__init__.py,sha256=SdJ01JZMvTsGjkdO-dPuwf3GP76AGn_l4rTR-K3DKSk,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
@@ -24,10 +24,10 @@ 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=OIbbZtaaP47n_F1IG7x_tJjcGLY9Rnf9_DqX5I3gxXE,288768
28
- pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=A5rYGNlvk21SZ-URHHN_KRZNZW-Yi_s8c-I8-PBM_4A,291328
29
- pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=LhPMsPk4SJaN8mm-0n7MnTSFL9VSe_nk06FVa7NVpLA,288256
30
- pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=y-IKXP6XtB0a7xTbrn42pARyjiYfIOmYgzIMyv0emTg,270336
27
+ pyxcp/cpp_ext/cpp_ext.cp310-win_amd64.pyd,sha256=a17VSE4yYtyfopbh8QC8lIXGnFVb-n1uxPLkCp6QR6o,288768
28
+ pyxcp/cpp_ext/cpp_ext.cp311-win_amd64.pyd,sha256=a6lTSDZoS-hl4Squ_Zu9v6_3UVfi0NAwTpEQMkRGDSo,291328
29
+ pyxcp/cpp_ext/cpp_ext.cp38-win_amd64.pyd,sha256=SMn_FKLNvpUR-H0IRWXUwrgmCReNAbHSTjWSiFkmny4,288256
30
+ pyxcp/cpp_ext/cpp_ext.cp39-win_amd64.pyd,sha256=SNzRmJeFPIe8v4e8aAqiDGp81nsTay3zqO-6Ege2jIU,270336
31
31
  pyxcp/cpp_ext/daqlist.hpp,sha256=g2hlxgoQorAGKHedZFZ0c2FQh1APMIA9sVB6M6hD_n8,7277
32
32
  pyxcp/cpp_ext/event.hpp,sha256=Z-1yxsEKsr81NnLVEWJ2ANA8FV7YsM7EbNxaw-elheE,1200
33
33
  pyxcp/cpp_ext/extension_wrapper.cpp,sha256=FXFjyruBjQYqjCYZZcajdYv6dvNnCggMAbWLqJmfuTM,4756
@@ -39,10 +39,10 @@ pyxcp/daq_stim/optimize/__init__.py,sha256=FUWK0GkNpNT-sUlhibp7xa2aSYpm6Flh5yA2w
39
39
  pyxcp/daq_stim/optimize/binpacking.py,sha256=Iltho5diKlJG-ltbmx053U2vOFRlCISolXK61T14l_I,1257
40
40
  pyxcp/daq_stim/scheduler.cpp,sha256=a7VK7kP2Hs8yMlcDAkXwJ0bH88lr_yz156sphcHS7Z4,715
41
41
  pyxcp/daq_stim/scheduler.hpp,sha256=U_6tUbebmzX5vVZS0EFSgTaPsyxMg6yRXHG_aPWA0x4,1884
42
- pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=F7w1aw2XEhDpIWM9M9haK_8OR9jw3vmaV8SiaI8s-84,198656
43
- pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=li0q5g0vn8OtON_JekO9B1aGeDsWj1x1tfB1i8H-ig4,201216
44
- pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=W9jYBCX2yy0h2PLXYbaiXiG__AsDBE4OLr5UDZl5_xE,198656
45
- pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=v7n3DIq0mJsuHWwrL8c0ugcECSUNjkoGXowHlZ75ESY,192512
42
+ pyxcp/daq_stim/stim.cp310-win_amd64.pyd,sha256=Wj9tgJD-j7Le9-VCyxlCRA5l1otQfiop_DwAALDBJy8,198656
43
+ pyxcp/daq_stim/stim.cp311-win_amd64.pyd,sha256=8ChwWg59O499aNKFbCibfv5VXt6va2cDTQlq0eNY3rQ,201216
44
+ pyxcp/daq_stim/stim.cp38-win_amd64.pyd,sha256=MKvmDUc__VjdUJHv_MsUxWKxbNa_c7-gR0x9FLTAhpY,198656
45
+ pyxcp/daq_stim/stim.cp39-win_amd64.pyd,sha256=z6TUHHU89qAV0HiVCMrJRGMHL-dle-CC2IfZk6NYQXY,192512
46
46
  pyxcp/daq_stim/stim.cpp,sha256=F2OG67W4KKwTTiUCxm-9egIv3TLFdOkRunX6xf7YOtc,177
47
47
  pyxcp/daq_stim/stim.hpp,sha256=U-uInRrA6OCdMl1l1SWbQ_KEPpnNYrWut924IvbW6R0,18508
48
48
  pyxcp/daq_stim/stim_wrapper.cpp,sha256=iT2yxJ3LRG7HoYC1bwhM3tCAxF9X_HHierBNsLRmTJg,1995
@@ -67,7 +67,7 @@ pyxcp/examples/xcphello.py,sha256=xbcWq8StRJyUZBLUvknsXv7VkEBD5SU0SJjlZTHsSzs,26
67
67
  pyxcp/examples/xcphello_recorder.py,sha256=QHWJsq5h5CI9t5qEmMSorZyzirTpoXz4nzuKTMzbZCA,3409
68
68
  pyxcp/master/__init__.py,sha256=QQbkUJM1WQ-5p2MiNFYxLAmHhNsCQLzDp-S4aoOFxoA,318
69
69
  pyxcp/master/errorhandler.py,sha256=ulL6WiraZbVZnM2pfR8S9vlWAAP5UXwXqmbjjxH9rgc,15359
70
- pyxcp/master/master.py,sha256=VFi4Dh_cguGrx6tWngEpBqU1KtXtwmOAPRwj-3Q5oik,78363
70
+ pyxcp/master/master.py,sha256=D2WAvESt2pMnxWYbkcE8V1Uya_jpDKk3vInRfj4NsEY,78389
71
71
  pyxcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  pyxcp/recorder/__init__.py,sha256=jeTmKvfjIenxHxt7zn6HMjnDpuPQU0d9SdnYK_t3gdE,2850
73
73
  pyxcp/recorder/build_clang.cmd,sha256=JvFngSnb28XcBGXxC6MGrcOCGYfahOIvHpgRpqbA6HQ,175
@@ -84,10 +84,10 @@ pyxcp/recorder/mio.hpp,sha256=5ASJLKSEykH0deAQD5uak-_yAgd5p2n8t06315GSGrg,63346
84
84
  pyxcp/recorder/reader.hpp,sha256=rr9XZ_ciL6eF2_xEqyt9XYNqTIze9ytAsnf8uYukO9U,5201
85
85
  pyxcp/recorder/reco.py,sha256=6N6FIwfCEVMpi5dr3eUOQa1lowcg2LCnS_sy_-b-UiQ,8725
86
86
  pyxcp/recorder/recorder.rst,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=tDhQFadGaNHF4yQ8T4JRRtlmoHdm3-DpYgR3xUSKk0A,386560
88
- pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=hnimRgMAelEZkvXowLJobCDXx1wDCY97wIt2YqCGPy8,388608
89
- pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=Qjxu3vW-7qFBSz35p_OiqnBa7BJ18E5rV4QNmPNbboE,386048
90
- pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=8vVyKQbXq9Dj7bQAV4oNWJcRFJ_aCAtm-Wf-7IYDJmI,372736
87
+ pyxcp/recorder/rekorder.cp310-win_amd64.pyd,sha256=H-TFi4_kPUouR6B4rz9wMj7rdJzipJ64StPGy8BSCak,386560
88
+ pyxcp/recorder/rekorder.cp311-win_amd64.pyd,sha256=bHnGWM1CG8x_ZJZpdThkd0syl1faB56hi67WJ7UxYgc,388608
89
+ pyxcp/recorder/rekorder.cp38-win_amd64.pyd,sha256=5RQe8zdjjepIyJyv0Cxq5USc7M8DBhzK4vkEE-t8gcc,386048
90
+ pyxcp/recorder/rekorder.cp39-win_amd64.pyd,sha256=_LUvcbiyRshoetYwUYggPstcooD-_xF2cdMS8PruihE,372736
91
91
  pyxcp/recorder/rekorder.cpp,sha256=U0LMyk8pZXx9emgS_WPVthvn_9IpgE7JGrh4kg-8CX4,1900
92
92
  pyxcp/recorder/rekorder.hpp,sha256=sWvRch9bVt6mmgrFHp5mwWhap7HoFG4geeb7UqEIzio,7638
93
93
  pyxcp/recorder/setup.py,sha256=_99XFPQAd5V4LcJaSGJwdnbxgxJ7kl8DEXfHsnKO1Yg,998
@@ -115,19 +115,19 @@ pyxcp/tests/test_transport.py,sha256=Qn2VjNRfYCU6DH8olVSBUCqb0zdAM9GlTbVBM99YxFQ
115
115
  pyxcp/tests/test_utils.py,sha256=SrURAFc_6jtHng3PSZ5gpqXzVBVuPoMPB0YNvOvaIE0,880
116
116
  pyxcp/timing.py,sha256=zE6qPqOuidg6saNt7_zmbQgufxL9Id6akVYhAtpweQc,1705
117
117
  pyxcp/transport/__init__.py,sha256=31PaQLj76n5pXr68aJRWcYfrxEYWWgYoe9f_w3jZxsc,438
118
- pyxcp/transport/base.py,sha256=Wf1ymrchtJ3JaETpVsGEV6X7OQR9o5DZmoD3zoXxkyU,16353
118
+ pyxcp/transport/base.py,sha256=n_tCkebmpq3WXRZncOP5XWgUnSavaBBm3oGZhpeCF9U,16352
119
119
  pyxcp/transport/base_transport.hpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
- pyxcp/transport/can.py,sha256=cQ8lrwBL7Ar0GSf48987TztR9wqYS_UnXUngzhaHXe0,14909
120
+ pyxcp/transport/can.py,sha256=pypHU1k5lZODrZpNLsC3IEJ5pPi58OZU_zryd9twr_M,14926
121
121
  pyxcp/transport/eth.py,sha256=xPzN2oSALoPKJVvZpBljPSV1AxfpjRusOzymO-TD1Rw,8711
122
122
  pyxcp/transport/sxi.py,sha256=vM8WZIKuu_dNuqkxZM_1n6iQkQCCzo4ykWpiG6ba8Fk,4695
123
123
  pyxcp/transport/transport_wrapper.cpp,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
124
  pyxcp/transport/usb_transport.py,sha256=JuYrwkWsUdibdVNA57LBEQT3a3ykOgWPdWcfqj96nDE,8343
125
125
  pyxcp/types.py,sha256=mjp3FhsTTbS3D5VuC-dfdbMql0lJwEfbZjf8a2pHi1o,26158
126
- pyxcp/utils.py,sha256=unlg0CoNwcWYfd-BE0hZJ93uhlAoW_nryv9tS_R3C44,2969
126
+ pyxcp/utils.py,sha256=gVIhPSvZs-y4o6QB35iJQd0VK_Z9sa3UtCDI3dYQeyo,3457
127
127
  pyxcp/vector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  pyxcp/vector/map.py,sha256=7Gnhvr79geMeqqGVIJPxODXGwABdNDinnqzhpooN5TE,2306
129
- pyxcp-0.22.29.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
130
- pyxcp-0.22.29.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
131
- pyxcp-0.22.29.dist-info/METADATA,sha256=2IV2kgBpGDSwKrvsS8Mstr2Z0BCOWdzbwuNQOn_LWZI,4088
132
- pyxcp-0.22.29.dist-info/WHEEL,sha256=hAjrwIdyeCDRZUAIRkSN3U0jR-RjwzSh5uFvppaSuws,98
133
- pyxcp-0.22.29.dist-info/RECORD,,
129
+ pyxcp-0.22.31.dist-info/entry_points.txt,sha256=LkHsEwubm30s4oiyCy0cKj6k97ALvQ6KjAVdyEcqu7g,358
130
+ pyxcp-0.22.31.dist-info/LICENSE,sha256=fTqV5eBpeAZO0_jit8j4Ref9ikBSlHJ8xwj5TLg7gFk,7817
131
+ pyxcp-0.22.31.dist-info/METADATA,sha256=_u-XbxKp6UK1eHiVONWuts2lNOVVW3oXPoVHBs3XkkA,4088
132
+ pyxcp-0.22.31.dist-info/WHEEL,sha256=hAjrwIdyeCDRZUAIRkSN3U0jR-RjwzSh5uFvppaSuws,98
133
+ pyxcp-0.22.31.dist-info/RECORD,,