Skip to content

Commit e7de6f3

Browse files
1.7 (#31)
1 parent 8987931 commit e7de6f3

8 files changed

+21
-13
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ repos:
1414

1515

1616
- repo: https://github.com/astral-sh/ruff-pre-commit
17-
rev: v0.7.2
17+
rev: v0.11.2
1818
hooks:
1919
- id: ruff
2020
name: ruff unused imports

.ruff.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ ignore = [
3434
"UP038", # Use X | Y in {} call instead of (X, Y)
3535

3636
# https://docs.astral.sh/ruff/rules/#flake8-annotations-ann
37-
"ANN101", # Missing type annotation for {name} in method
38-
"ANN102", # Missing type annotation for {name} in classmethod
3937
"ANN401", # Dynamically typed expressions (typing.Any) are disallowed in {name}
4038

4139
# https://docs.astral.sh/ruff/rules/#flake8-blind-except-ble
@@ -59,6 +57,9 @@ ignore = [
5957

6058
# https://docs.astral.sh/ruff/rules/#ruff-specific-rules-ruf
6159
"RUF005", # Consider {expression} instead of concatenation
60+
61+
# https://docs.astral.sh/ruff/rules/#flake8-pytest-style-pt
62+
"PT007", # Wrong values type in @pytest.mark.parametrize expected {values} of {row}
6263
]
6364

6465

src/smllib/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.6'
1+
__version__ = '1.7'

src/smllib/reader.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ def __init__(self, build_ctx: Optional[CTX_HINT] = None, crc: Literal['kermit',
1818
self.crc_func: Callable[[Union[memoryview, bytes]], int] = getattr(crc_module, crc).get_crc
1919
except AttributeError:
2020
available = [f'"{n:s}"' for n in dir(crc_module) if not n.startswith('_')]
21-
raise ValueError(f'Unsupported CRC "{crc}"! Available: {", ".join(available):s}')
21+
msg = f'Unsupported CRC "{crc}"! Available: {", ".join(available):s}'
22+
raise ValueError(msg) from None
2223

2324
def add(self, _bytes: bytes) -> None:
2425
self.bytes += _bytes

src/smllib/sml/_base_obj.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88
class SmlBaseObj:
99
__sml__: typing.ClassVar[dict]
1010

11-
def format_msg(self, indent: int = 0):
11+
def format_msg(self, indent: int = 0) -> str:
1212
indent += 1
1313
r = f'<{self.__class__.__name__}>\n'
1414
w = max(map(len, self.__dict__), default=0)
1515
for k, v in self.__dict__.items():
1616
if isinstance(v, SmlBaseObj):
17-
r += f'{INDENT * indent}{k!s:s} {v.format_msg(indent)}'
17+
r += f'{INDENT * indent}{k!s:s} {v.format_msg(indent):s}'
1818
elif isinstance(v, (tuple, list)):
1919
r += f'{INDENT * indent}{k!s:s}:\n'
2020
for e in v:
21-
r += f'{INDENT * (indent + 1)}{e.format_msg(indent + 1)}'
21+
r += f'{INDENT * (indent + 1)}{e.format_msg(indent + 1):s}'
2222
else:
2323
r += f'{INDENT * indent}{k!s:{w}s}: {v}\n'
2424
return r

src/smllib/sml/list_entry.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from datetime import datetime
12
from typing import ClassVar, Dict, Optional, Union
23

34
from smllib.const import OBIS_NAMES, UNITS
@@ -31,7 +32,7 @@ def __repr__(self) -> str:
3132
r.append(f'{k}: {v}')
3233
return f'<{", ".join(r)}>'
3334

34-
def format_msg(self, indent: int = 0):
35+
def format_msg(self, indent: int = 0) -> str:
3536
indent += 1
3637
r = f'<{self.__class__.__name__}>\n'
3738
w = max(map(len, self.__dict__), default=0)
@@ -54,7 +55,7 @@ def format_msg(self, indent: int = 0):
5455
r += f'{INDENT*indent}-> {summary:s}\n'
5556
return r
5657

57-
def get_value(self) -> Union[None, float, str]:
58+
def get_value(self) -> Union[None, float, str, datetime]:
5859
if self.value is None:
5960
return None
6061

src/smllib/sml/sml_time.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
TIME_HINT = Union[None, int, datetime]
88

99

10-
def build_time(_in):
10+
def build_time(_in) -> TIME_HINT:
1111
if _in is None:
1212
return _in
1313

@@ -24,6 +24,9 @@ def build_time(_in):
2424
return datetime.fromtimestamp(value_s.value, timezone.utc)
2525
if _type == 3:
2626
ts, offset1, offset2 = value_s.value
27-
return datetime.fromtimestamp(ts.value, timezone(timedelta(minutes=offset1.value) + timedelta(minutes=offset2.value)))
27+
return datetime.fromtimestamp(
28+
ts.value,
29+
timezone(timedelta(minutes=offset1.value) + timedelta(minutes=offset2.value))
30+
)
2831

2932
raise UnsupportedChoiceValue(_type)

src/smllib/sml_frame_snippet.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ def __init__(self, value: Union[None, bool, int, str, float, list, CEndOfSmlMsg]
2525
self.msg: Optional[memoryview] = msg
2626

2727
def stop_pos(self, pos: int, buf: memoryview) -> 'SmlFrameSnippet':
28-
assert self.msg is None
28+
if self.msg is not None:
29+
msg = 'Message is already set'
30+
raise ValueError(msg)
2931
self.msg = buf[self.pos: pos]
3032
return self
3133

0 commit comments

Comments
 (0)