Skip to content

Commit 4d1bcfc

Browse files
reworked aliases
All enum aliases reworked. Removed unused aliases.
1 parent 73d13f3 commit 4d1bcfc

23 files changed

+150
-191
lines changed

tests/software_tests/message/test_uds_message.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def test_addressing_type__get(self, value):
7878

7979
def test_addressing_type__set(self, example_addressing_type):
8080
UdsMessage.addressing_type.fset(self.mock_uds_message, value=example_addressing_type)
81-
assert self.mock_uds_message._UdsMessage__addressing_type == example_addressing_type
81+
assert self.mock_uds_message._UdsMessage__addressing_type == self.mock_validate_addressing.return_value
8282
self.mock_validate_addressing.assert_called_once_with(example_addressing_type)
8383

8484
def test_addressing_type__set_second_call(self, example_addressing_type):

tests/software_tests/packet/test_abstract_packet.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def test_direction__get(self, direction):
6565

6666
def test_direction__set(self, example_transmission_direction):
6767
AbstractUdsPacketRecord.direction.fset(self.mock_packet_record, value=example_transmission_direction)
68-
assert self.mock_packet_record._AbstractUdsPacketRecord__direction == example_transmission_direction
68+
assert self.mock_packet_record._AbstractUdsPacketRecord__direction == self.mock_validate_direction.return_value
6969
self.mock_validate_direction.assert_called_once_with(example_transmission_direction)
7070

7171
@pytest.mark.parametrize("old_value", [None, 0, "some direction"])

tests/software_tests/packet/test_can_packet_record.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,16 @@ def test_init(self, frame, direction, addressing_type, addressing_format, transm
6060
addressing_format=addressing_format,
6161
transmission_time=transmission_time)
6262
assert self.mock_can_packet_record._CanPacketRecord__addressing_type \
63-
== self.mock_addressing_type_class.return_value
63+
== self.mock_addressing_type_class.validate_member.return_value
6464
assert self.mock_can_packet_record._CanPacketRecord__addressing_format \
65-
== self.mock_can_addressing_format_class.return_value
65+
== self.mock_can_addressing_format_class.validate_member.return_value
6666
self.mock_abstract_uds_packet_record_init.assert_called_once_with(frame=frame,
6767
direction=direction,
6868
transmission_time=transmission_time)
6969
self.mock_can_packet_record._CanPacketRecord__assess_packet_type.assert_called_once_with()
7070
self.mock_can_packet_record._CanPacketRecord__assess_ai_attributes.assert_called_once_with()
7171
self.mock_addressing_type_class.validate_member.assert_called_once_with(addressing_type)
72-
self.mock_addressing_type_class.assert_called_once_with(addressing_type)
7372
self.mock_can_addressing_format_class.validate_member.assert_called_once_with(addressing_format)
74-
self.mock_can_addressing_format_class.assert_called_once_with(addressing_format)
7573

7674
# raw_frame_data
7775

@@ -160,12 +158,12 @@ def test_assess_packet_type(self, raw_frame_data, ai_data_bytes_number):
160158
self.mock_can_packet_record.raw_frame_data = raw_frame_data
161159
self.mock_can_ai_class.get_ai_data_bytes_number.return_value = ai_data_bytes_number
162160
assert CanPacketRecord._CanPacketRecord__assess_packet_type(self=self.mock_can_packet_record) is None
163-
assert self.mock_can_packet_record._CanPacketRecord__packet_type == self.mock_can_packet_type_class.return_value
161+
assert self.mock_can_packet_record._CanPacketRecord__packet_type \
162+
== self.mock_can_packet_type_class.validate_member.return_value
164163
n_pci_value = raw_frame_data[ai_data_bytes_number] >> 4
165164
self.mock_can_ai_class.get_ai_data_bytes_number.assert_called_once_with(
166165
self.mock_can_packet_record.addressing_format)
167166
self.mock_can_packet_type_class.validate_member.assert_called_once_with(n_pci_value)
168-
self.mock_can_packet_type_class.assert_called_once_with(n_pci_value)
169167

170168
# __assess_ai_attributes
171169

@@ -195,8 +193,8 @@ def test_assess_ai_attributes(self, addressing_format, can_id, raw_frame_data,
195193
assert CanPacketRecord._CanPacketRecord__assess_ai_attributes(self=self.mock_can_packet_record) is None
196194
self.mock_can_ai_class.get_ai_data_bytes_number.assert_called_once_with(addressing_format)
197195
self.mock_can_ai_class.decode_packet_ai.assert_called_once_with(addressing_format=addressing_format,
198-
can_id=can_id,
199-
ai_data_bytes=raw_frame_data[:ai_data_bytes_number])
196+
can_id=can_id,
197+
ai_data_bytes=raw_frame_data[:ai_data_bytes_number])
200198
assert self.mock_can_packet_record._CanPacketRecord__target_address == decoded_ai["target_address"]
201199
assert self.mock_can_packet_record._CanPacketRecord__source_address == decoded_ai["source_address"]
202200
assert self.mock_can_packet_record._CanPacketRecord__address_extension == decoded_ai["address_extension"]

uds/can/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@
2525
from .single_frame import CanSingleFrameHandler
2626
from .first_frame import CanFirstFrameHandler
2727
from .consecutive_frame import CanConsecutiveFrameHandler
28-
from .flow_control import CanFlowControlHandler, CanFlowStatus, CanFlowStatusAlias, CanSTminTranslator
28+
from .flow_control import CanFlowControlHandler, CanFlowStatus, CanSTminTranslator

uds/can/abstract_addressing_information.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from abc import ABC, abstractmethod
77
from copy import deepcopy
88

9-
from uds.transmission_attributes import AddressingTypeAlias, AddressingType
9+
from uds.transmission_attributes import AddressingType
1010
from .addressing_format import CanAddressingFormat
1111
from .frame_fields import CanIdHandler
1212

@@ -15,7 +15,7 @@ class PacketAIParamsAlias(TypedDict):
1515
"""Alias of :ref:`Addressing Information <knowledge-base-n-ai>` parameters of CAN packets stream."""
1616

1717
addressing_format: CanAddressingFormat
18-
addressing_type: AddressingTypeAlias
18+
addressing_type: AddressingType
1919
can_id: int
2020
target_address: Optional[int]
2121
source_address: Optional[int]
@@ -25,7 +25,7 @@ class PacketAIParamsAlias(TypedDict):
2525
class AbstractCanAddressingInformation(ABC):
2626
"""Abstract definition of CAN Entity (either server or client) Addressing Information."""
2727

28-
ADDRESSING_FORMAT_NAME: str = "addressing_format"
28+
ADDRESSING_FORMAT_NAME: str = "addressing_format" # noqa: F841
2929
"""Name of :ref:`CAN Addressing Format <knowledge-base-can-addressing>` parameter in Addressing Information."""
3030
ADDRESSING_TYPE_NAME: str = CanIdHandler.ADDRESSING_TYPE_NAME
3131
"""Name of :ref:`Addressing Type <knowledge-base-can-addressing>` parameter in Addressing Information."""
@@ -135,7 +135,7 @@ def tx_packets_functional_ai(self, value: InputAIParamsAlias):
135135
@classmethod
136136
@abstractmethod
137137
def validate_packet_ai(cls,
138-
addressing_type: AddressingTypeAlias,
138+
addressing_type: AddressingType,
139139
can_id: Optional[int] = None,
140140
target_address: Optional[int] = None,
141141
source_address: Optional[int] = None,

uds/can/addressing_format.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Implementation of CAN Addressing Formats."""
22

3-
__all__: "CanAddressingFormat" = ["CanAddressingFormat"]
3+
__all__ = ["CanAddressingFormat"]
44

55
from aenum import unique, StrEnum
66

@@ -16,17 +16,17 @@ class CanAddressingFormat(StrEnum, ValidatedEnum):
1616
:ref:`Network Address Information (N_AI) <knowledge-base-n-ai>` is provided.
1717
"""
1818

19-
NORMAL_11BIT_ADDRESSING: "CanAddressingFormat" = "Normal 11-bit Addressing"
19+
NORMAL_11BIT_ADDRESSING: "CanAddressingFormat" = "Normal 11-bit Addressing" # type: ignore
2020
""":ref:`Normal addressing <knowledge-base-can-normal-addressing>` format that uses 11-bit CAN Identifiers."""
21-
NORMAL_FIXED_ADDRESSING: "CanAddressingFormat" = "Normal Fixed Addressing"
21+
NORMAL_FIXED_ADDRESSING: "CanAddressingFormat" = "Normal Fixed Addressing" # type: ignore
2222
""":ref:`Normal fixed addressing <knowledge-base-can-normal-fixed-addressing>` format.
2323
It is a subformat of :ref:`Normal addressing <knowledge-base-can-normal-addressing>` which uses 29-bit
2424
CAN Identifiers only."""
25-
EXTENDED_ADDRESSING: "CanAddressingFormat" = "Extended Addressing"
25+
EXTENDED_ADDRESSING: "CanAddressingFormat" = "Extended Addressing" # type: ignore
2626
""":ref:`Extended addressing <knowledge-base-can-extended-addressing>` format."""
27-
MIXED_11BIT_ADDRESSING: "CanAddressingFormat" = "Mixed 11-bit Addressing"
27+
MIXED_11BIT_ADDRESSING: "CanAddressingFormat" = "Mixed 11-bit Addressing" # type: ignore
2828
""":ref:`Mixed addressing with 11-bit CAN ID <knowledge-base-can-mixed-11-bit-addressing>` format.
2929
It is a subformat of :ref:`mixed addressing <knowledge-base-can-mixed-addressing>`."""
30-
MIXED_29BIT_ADDRESSING: "CanAddressingFormat" = "Mixed 29-bit Addressing"
30+
MIXED_29BIT_ADDRESSING: "CanAddressingFormat" = "Mixed 29-bit Addressing" # type: ignore
3131
""":ref:`Mixed addressing with 29-bit CAN ID <knowledge-base-can-mixed-29-bit-addressing>` format.
3232
It is a subformat of :ref:`mixed addressing <knowledge-base-can-mixed-addressing>`."""

uds/can/addressing_information.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
from uds.utilities import InconsistentArgumentsError, \
1212
RawBytesAlias, RawBytesListAlias, validate_raw_byte, validate_raw_bytes
13-
from uds.transmission_attributes import AddressingTypeAlias
13+
from uds.transmission_attributes import AddressingType
1414
from .addressing_format import CanAddressingFormat
1515
from .frame_fields import CanIdHandler
1616
from .abstract_addressing_information import AbstractCanAddressingInformation, PacketAIParamsAlias
@@ -37,7 +37,15 @@ class DataBytesAIParamsAlias(TypedDict, total=False):
3737
target_address: int
3838
address_extension: int
3939

40-
def __new__(cls,
40+
class DecodedAIParamsAlias(TypedDict, total=True):
41+
"""Alias of :ref:`Addressing Information <knowledge-base-n-ai>` parameters encoded in CAN ID and data field."""
42+
43+
addressing_type: Optional[AddressingType]
44+
target_address: Optional[int]
45+
source_address: Optional[int]
46+
address_extension: Optional[int]
47+
48+
def __new__(cls, # type: ignore
4149
addressing_format: CanAddressingFormat,
4250
rx_physical: AbstractCanAddressingInformation.InputAIParamsAlias,
4351
tx_physical: AbstractCanAddressingInformation.InputAIParamsAlias,
@@ -61,7 +69,7 @@ def __new__(cls,
6169
@classmethod
6270
def validate_packet_ai(cls,
6371
addressing_format: CanAddressingFormat,
64-
addressing_type: AddressingTypeAlias,
72+
addressing_type: AddressingType,
6573
can_id: Optional[int] = None,
6674
target_address: Optional[int] = None,
6775
source_address: Optional[int] = None,
@@ -109,7 +117,7 @@ def validate_ai_data_bytes(cls, addressing_format: CanAddressingFormat, ai_data_
109117
def decode_packet_ai(cls,
110118
addressing_format: CanAddressingFormat,
111119
can_id: int,
112-
ai_data_bytes: RawBytesAlias) -> PacketAIParamsAlias:
120+
ai_data_bytes: RawBytesAlias) -> DecodedAIParamsAlias:
113121
"""
114122
Decode Addressing Information parameters from CAN ID and data bytes.
115123
@@ -129,11 +137,12 @@ def decode_packet_ai(cls,
129137
"""
130138
from_data_bytes = cls.decode_ai_data_bytes(addressing_format=addressing_format, ai_data_bytes=ai_data_bytes)
131139
from_can_id = CanIdHandler.decode_can_id(addressing_format=addressing_format, can_id=can_id)
132-
names = (AbstractCanAddressingInformation.ADDRESSING_TYPE_NAME,
133-
AbstractCanAddressingInformation.TARGET_ADDRESS_NAME,
134-
AbstractCanAddressingInformation.SOURCE_ADDRESS_NAME,
135-
AbstractCanAddressingInformation.ADDRESS_EXTENSION_NAME)
136-
return {name: from_data_bytes.get(name, None) or from_can_id.get(name, None) for name in names} # TODO: update to match return annotation
140+
items_names = (AbstractCanAddressingInformation.ADDRESSING_TYPE_NAME,
141+
AbstractCanAddressingInformation.TARGET_ADDRESS_NAME,
142+
AbstractCanAddressingInformation.SOURCE_ADDRESS_NAME,
143+
AbstractCanAddressingInformation.ADDRESS_EXTENSION_NAME)
144+
return {name: from_data_bytes.get(name, None) or from_can_id.get(name, None)
145+
for name in items_names} # type: ignore
137146

138147
@classmethod
139148
def decode_ai_data_bytes(cls,
@@ -159,10 +168,10 @@ def decode_ai_data_bytes(cls,
159168
CanAddressingFormat.NORMAL_FIXED_ADDRESSING}:
160169
return {}
161170
if addressing_format == CanAddressingFormat.EXTENDED_ADDRESSING:
162-
return {AbstractCanAddressingInformation.TARGET_ADDRESS_NAME: ai_data_bytes[0]}
171+
return {AbstractCanAddressingInformation.TARGET_ADDRESS_NAME: ai_data_bytes[0]} # type: ignore
163172
if addressing_format in {CanAddressingFormat.MIXED_11BIT_ADDRESSING,
164173
CanAddressingFormat.MIXED_29BIT_ADDRESSING}:
165-
return {AbstractCanAddressingInformation.ADDRESS_EXTENSION_NAME: ai_data_bytes[0]}
174+
return {AbstractCanAddressingInformation.ADDRESS_EXTENSION_NAME: ai_data_bytes[0]} # type: ignore
166175
raise NotImplementedError(f"Missing implementation for: {addressing_format}")
167176

168177
@classmethod
@@ -189,11 +198,11 @@ def encode_ai_data_bytes(cls,
189198
return []
190199
if addressing_format == CanAddressingFormat.EXTENDED_ADDRESSING:
191200
validate_raw_byte(target_address)
192-
return [target_address]
201+
return [target_address] # type: ignore
193202
if addressing_format in (CanAddressingFormat.MIXED_11BIT_ADDRESSING,
194203
CanAddressingFormat.MIXED_29BIT_ADDRESSING):
195204
validate_raw_byte(address_extension)
196-
return [address_extension]
205+
return [address_extension] # type: ignore
197206
raise NotImplementedError(f"Missing implementation for: {addressing_format}")
198207

199208
@classmethod

uds/can/extended_addressing_information.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from typing import Optional
66

77
from uds.utilities import InconsistentArgumentsError, UnusedArgumentError, validate_raw_byte
8-
from uds.transmission_attributes import AddressingType, AddressingTypeAlias
8+
from uds.transmission_attributes import AddressingType
99
from .addressing_format import CanAddressingFormat
1010
from .frame_fields import CanIdHandler
1111
from .abstract_addressing_information import AbstractCanAddressingInformation, PacketAIParamsAlias
@@ -24,12 +24,11 @@ def addressing_format(self) -> CanAddressingFormat:
2424

2525
@classmethod
2626
def validate_packet_ai(cls,
27-
addressing_type: AddressingTypeAlias,
27+
addressing_type: AddressingType,
2828
can_id: Optional[int] = None,
2929
target_address: Optional[int] = None,
3030
source_address: Optional[int] = None,
31-
address_extension: Optional[int] = None
32-
) -> PacketAIParamsAlias:
31+
address_extension: Optional[int] = None) -> PacketAIParamsAlias:
3332
"""
3433
Validate Addressing Information parameters of a CAN packet that uses Extended Addressing format.
3534

uds/can/flow_control.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77
- :ref:`Separation Time minimum (STmin) <knowledge-base-can-st-min>`
88
"""
99

10-
__all__ = ["CanFlowStatus", "CanFlowStatusAlias", "CanSTminTranslator", "CanFlowControlHandler",
11-
"UnrecognizedSTminWarning"]
10+
__all__ = ["CanFlowStatus", "CanSTminTranslator", "CanFlowControlHandler", "UnrecognizedSTminWarning"]
1211

13-
from typing import Union, Optional, Any
12+
from typing import Optional, Any
1413
from warnings import warn
1514

1615
from aenum import unique
@@ -42,18 +41,14 @@ class CanFlowStatus(NibbleEnum, ValidatedEnum):
4241
Consecutive Frames transmission.
4342
"""
4443

45-
ContinueToSend = 0x0
44+
ContinueToSend: "CanFlowStatus" = 0x0 # type: ignore
4645
"""Asks to resume Consecutive Frames transmission."""
47-
Wait = 0x1 # noqa: F841
46+
Wait: "CanFlowStatus" = 0x1 # type: ignore # noqa: F841
4847
"""Asks to pause Consecutive Frames transmission."""
49-
Overflow = 0x2 # noqa: F841
48+
Overflow: "CanFlowStatus" = 0x2 # type: ignore # noqa: F841
5049
"""Asks to abort transmission of a diagnostic message."""
5150

5251

53-
CanFlowStatusAlias = Union[CanFlowStatus, int]
54-
"""Typing alias that describes :class:`~uds.can.flow_control.CanFlowStatus` member."""
55-
56-
5752
class CanSTminTranslator:
5853
"""
5954
Helper class that provides STmin values mapping.
@@ -178,7 +173,7 @@ class CanFlowControlHandler:
178173
@classmethod
179174
def create_valid_frame_data(cls, *,
180175
addressing_format: CanAddressingFormat,
181-
flow_status: CanFlowStatusAlias,
176+
flow_status: CanFlowStatus,
182177
block_size: Optional[int] = None,
183178
st_min: Optional[int] = None,
184179
dlc: Optional[int] = None,
@@ -237,7 +232,7 @@ def create_valid_frame_data(cls, *,
237232
@classmethod
238233
def create_any_frame_data(cls, *,
239234
addressing_format: CanAddressingFormat,
240-
flow_status: CanFlowStatusAlias,
235+
flow_status: CanFlowStatus,
241236
dlc: int,
242237
block_size: Optional[int] = None,
243238
st_min: Optional[int] = None,
@@ -305,7 +300,7 @@ def is_flow_control(cls, addressing_format: CanAddressingFormat, raw_frame_data:
305300
@classmethod
306301
def decode_flow_status(cls,
307302
addressing_format: CanAddressingFormat,
308-
raw_frame_data: RawBytesAlias) -> CanFlowStatusAlias:
303+
raw_frame_data: RawBytesAlias) -> CanFlowStatus:
309304
"""
310305
Extract Flow Status value from Flow Control data bytes.
311306
@@ -410,7 +405,7 @@ def validate_frame_data(cls, addressing_format: CanAddressingFormat, raw_frame_d
410405

411406
@classmethod
412407
def __encode_valid_flow_status(cls,
413-
flow_status: CanFlowStatusAlias,
408+
flow_status: CanFlowStatus,
414409
block_size: Optional[int] = None,
415410
st_min: Optional[int] = None,
416411
filler_byte: int = DEFAULT_FILLER_BYTE) -> RawBytesListAlias:

0 commit comments

Comments
 (0)