Skip to content

Commit 00a257f

Browse files
committed
feat: add OverkizClientSettings dataclass (#766)
Add OverkizClientSettings to group behavioral configuration for OverkizClient. Includes action_queue (ActionQueueSettings | None) and rts_command_duration (int | None). This replaces the standalone action_queue constructor param and enables RTS duration injection.
1 parent a6482c1 commit 00a257f

2 files changed

Lines changed: 42 additions & 0 deletions

File tree

pyoverkiz/client_settings.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
"""Behavioral configuration for OverkizClient."""
2+
3+
from __future__ import annotations
4+
5+
from dataclasses import dataclass
6+
7+
from pyoverkiz.action_queue import ActionQueueSettings
8+
9+
10+
@dataclass(frozen=True, slots=True)
11+
class OverkizClientSettings:
12+
"""Behavioral configuration for OverkizClient.
13+
14+
All fields are optional and default to passive behavior.
15+
"""
16+
17+
action_queue: ActionQueueSettings | None = None
18+
rts_command_duration: int | None = None

tests/test_client_settings.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""Tests for OverkizClientSettings."""
2+
3+
from pyoverkiz.action_queue import ActionQueueSettings
4+
from pyoverkiz.client_settings import OverkizClientSettings
5+
6+
7+
def test_defaults():
8+
"""Default settings have no queue and no RTS duration."""
9+
settings = OverkizClientSettings()
10+
assert settings.action_queue is None
11+
assert settings.rts_command_duration is None
12+
13+
14+
def test_with_rts_duration():
15+
"""RTS command duration can be set."""
16+
settings = OverkizClientSettings(rts_command_duration=0)
17+
assert settings.rts_command_duration == 0
18+
19+
20+
def test_with_action_queue_settings():
21+
"""Passing ActionQueueSettings stores it directly."""
22+
qs = ActionQueueSettings(delay=1.0, max_actions=10)
23+
settings = OverkizClientSettings(action_queue=qs)
24+
assert settings.action_queue is qs

0 commit comments

Comments
 (0)