smartbox 2.2.1__tar.gz → 2.3.1__tar.gz
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.
- {smartbox-2.2.1 → smartbox-2.3.1}/.github/workflows/publish-to-pypi.yml +6 -6
- {smartbox-2.2.1 → smartbox-2.3.1}/.github/workflows/python-package.yml +13 -14
- {smartbox-2.2.1 → smartbox-2.3.1}/.gitignore +2 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/PKG-INFO +8 -8
- {smartbox-2.2.1 → smartbox-2.3.1}/pyproject.toml +20 -20
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/reseller.py +6 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/socket.py +4 -5
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/conftest.py +1 -1
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/test_cmd.py +18 -18
- {smartbox-2.2.1 → smartbox-2.3.1}/tox.ini +3 -1
- smartbox-2.3.1/uv.lock +1254 -0
- smartbox-2.2.1/uv.lock +0 -875
- {smartbox-2.2.1 → smartbox-2.3.1}/.github/FUNDING.yml +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/.github/ISSUE_TEMPLATE/new-reseller.md +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/.github/dependabot.yml +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/.pre-commit-config.yaml +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/.vscode/settings.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/CHANGELOG.md +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/CODEOWNERS +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/LICENSE +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/README.md +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/api-notes.md +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/codecov.yml +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/__init__.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/cmd.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/error.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/models.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/py.typed +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/session.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/src/smartbox/update_manager.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/__init__.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/common.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/acm/1/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/acm/1/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/acm/1/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/connected.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/htr/0/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/htr/0/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/htr/0/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/htr_system/power_limit.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/mgr/away_status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/mgr/nodes.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/pmo/3/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/pmo/3/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device1/pmo/3/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/connected.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/0/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/0/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/0/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/1/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/1/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/1/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/2/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/2/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/2/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/3/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/3/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/3/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/4/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/4/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/4/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/5/samples.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/5/setup.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_mod/5/status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/htr_system/power_limit.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/mgr/away_status.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs/device2/mgr/nodes.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/devs.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/grouped_devs.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/groups/test_home/guest_users.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/fixtures/test_path.json +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/test_models.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/test_reseller.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/test_session.py +0 -0
- {smartbox-2.2.1 → smartbox-2.3.1}/tests/test_update_manager.py +0 -0
|
@@ -14,18 +14,18 @@ jobs:
|
|
|
14
14
|
permissions:
|
|
15
15
|
id-token: write
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v5
|
|
18
18
|
with:
|
|
19
19
|
fetch-depth: 0
|
|
20
20
|
- name: Install uv
|
|
21
|
-
uses: astral-sh/setup-uv@
|
|
21
|
+
uses: astral-sh/setup-uv@v7
|
|
22
22
|
with:
|
|
23
|
-
|
|
23
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
24
24
|
- name: Set up Python ${{ env.PYTHON_VERSION }}
|
|
25
|
-
uses: actions/setup-python@
|
|
25
|
+
uses: actions/setup-python@v6.0.0
|
|
26
26
|
with:
|
|
27
|
-
|
|
27
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
28
28
|
- name: Build a binary wheel and a source tarball
|
|
29
29
|
run: uv build
|
|
30
30
|
- name: Publish 📦 to PyPI
|
|
31
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
31
|
+
uses: pypa/gh-action-pypi-publish@release/v1.13
|
|
@@ -11,21 +11,20 @@ on:
|
|
|
11
11
|
pull_request:
|
|
12
12
|
|
|
13
13
|
jobs:
|
|
14
|
-
|
|
15
14
|
linter:
|
|
16
15
|
runs-on: ubuntu-latest
|
|
17
16
|
strategy:
|
|
18
17
|
max-parallel: 4
|
|
19
18
|
matrix:
|
|
20
|
-
python-version: [3.13]
|
|
19
|
+
python-version: [3.13, 3.14]
|
|
21
20
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
21
|
+
- uses: actions/checkout@v5
|
|
23
22
|
- name: Install uv
|
|
24
|
-
uses: astral-sh/setup-uv@
|
|
23
|
+
uses: astral-sh/setup-uv@v7
|
|
25
24
|
with:
|
|
26
25
|
python-version: ${{ matrix.python-version }}
|
|
27
26
|
- name: Set up Python ${{ matrix.python-version }}
|
|
28
|
-
uses: actions/setup-python@
|
|
27
|
+
uses: actions/setup-python@v6.0.0
|
|
29
28
|
with:
|
|
30
29
|
python-version: ${{ matrix.python-version }}
|
|
31
30
|
- name: Install the project
|
|
@@ -38,16 +37,16 @@ jobs:
|
|
|
38
37
|
strategy:
|
|
39
38
|
max-parallel: 1
|
|
40
39
|
matrix:
|
|
41
|
-
python-version: [3.13]
|
|
40
|
+
python-version: [3.13, 3.14]
|
|
42
41
|
|
|
43
42
|
steps:
|
|
44
|
-
- uses: actions/checkout@
|
|
43
|
+
- uses: actions/checkout@v5
|
|
45
44
|
- name: Install uv
|
|
46
|
-
uses: astral-sh/setup-uv@
|
|
45
|
+
uses: astral-sh/setup-uv@v7
|
|
47
46
|
with:
|
|
48
47
|
python-version: ${{ matrix.python-version }}
|
|
49
48
|
- name: Set up Python ${{ matrix.python-version }}
|
|
50
|
-
uses: actions/setup-python@
|
|
49
|
+
uses: actions/setup-python@v6.0.0
|
|
51
50
|
with:
|
|
52
51
|
python-version: ${{ matrix.python-version }}
|
|
53
52
|
- name: Install the project
|
|
@@ -60,17 +59,17 @@ jobs:
|
|
|
60
59
|
strategy:
|
|
61
60
|
max-parallel: 4
|
|
62
61
|
matrix:
|
|
63
|
-
python-version: [3.13]
|
|
62
|
+
python-version: [3.13, 3.14]
|
|
64
63
|
|
|
65
64
|
steps:
|
|
66
|
-
- uses: actions/checkout@
|
|
65
|
+
- uses: actions/checkout@v5
|
|
67
66
|
- name: Install uv
|
|
68
|
-
uses: astral-sh/setup-uv@
|
|
67
|
+
uses: astral-sh/setup-uv@v7
|
|
69
68
|
with:
|
|
70
69
|
python-version: ${{ matrix.python-version }}
|
|
71
70
|
|
|
72
71
|
- name: Set up Python ${{ matrix.python-version }}
|
|
73
|
-
uses: actions/setup-python@
|
|
72
|
+
uses: actions/setup-python@v6.0.0
|
|
74
73
|
with:
|
|
75
74
|
python-version: ${{ matrix.python-version }}
|
|
76
75
|
- name: Install the project
|
|
@@ -78,7 +77,7 @@ jobs:
|
|
|
78
77
|
uv sync --all-extras --dev
|
|
79
78
|
uv run tox -e py
|
|
80
79
|
- name: "Upload coverage to Codecov"
|
|
81
|
-
uses: codecov/codecov-action@v5
|
|
80
|
+
uses: codecov/codecov-action@v5.5.1
|
|
82
81
|
with:
|
|
83
82
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
84
83
|
fail_ci_if_error: true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smartbox
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Python API to control heating 'smart boxes'
|
|
5
5
|
Project-URL: Homepage, https://github.com/ajtudela/smartbox
|
|
6
6
|
Project-URL: Issues, https://github.com/ajtudela/smartbox/issues
|
|
@@ -11,13 +11,13 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Requires-Python: >=3.13
|
|
14
|
-
Requires-Dist: aiohttp
|
|
15
|
-
Requires-Dist: asyncclick
|
|
16
|
-
Requires-Dist: jq
|
|
17
|
-
Requires-Dist: pydantic
|
|
18
|
-
Requires-Dist: python-socketio
|
|
19
|
-
Requires-Dist: requests
|
|
20
|
-
Requires-Dist: websocket-client
|
|
14
|
+
Requires-Dist: aiohttp
|
|
15
|
+
Requires-Dist: asyncclick
|
|
16
|
+
Requires-Dist: jq
|
|
17
|
+
Requires-Dist: pydantic==2.12.2
|
|
18
|
+
Requires-Dist: python-socketio
|
|
19
|
+
Requires-Dist: requests
|
|
20
|
+
Requires-Dist: websocket-client
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
|
|
23
23
|
# smartbox  [](https://badge.fury.io/py/smartbox) [](https://codecov.io/gh/ajtudela/smartbox) [](https://pypi.python.org/pypi/smartbox/) [](https://pypi.python.org/pypi/smartbox/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "smartbox"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.3.1"
|
|
4
4
|
requires-python = ">=3.13"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name="Alberto Tudela", email="ajtudela@gmail.com" },
|
|
@@ -18,13 +18,13 @@ classifiers = [
|
|
|
18
18
|
license = "MIT"
|
|
19
19
|
license-files = ["LICEN[CS]E*"]
|
|
20
20
|
dependencies = [
|
|
21
|
-
"aiohttp
|
|
22
|
-
"asyncclick
|
|
23
|
-
"jq
|
|
24
|
-
"pydantic
|
|
25
|
-
"python-socketio
|
|
26
|
-
"requests
|
|
27
|
-
"websocket-client
|
|
21
|
+
"aiohttp",
|
|
22
|
+
"asyncclick",
|
|
23
|
+
"jq",
|
|
24
|
+
"pydantic==2.12.2",
|
|
25
|
+
"python-socketio",
|
|
26
|
+
"requests",
|
|
27
|
+
"websocket-client",
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.urls]
|
|
@@ -43,18 +43,18 @@ members = ["smartbox"]
|
|
|
43
43
|
|
|
44
44
|
[dependency-groups]
|
|
45
45
|
dev = [
|
|
46
|
-
"pre-commit
|
|
47
|
-
"freezegun
|
|
48
|
-
"pytest
|
|
49
|
-
"pytest-asyncio
|
|
50
|
-
"pytest-cov
|
|
51
|
-
"pytest-mock
|
|
52
|
-
"pytest-randomly
|
|
53
|
-
"requests-mock
|
|
54
|
-
"tox
|
|
55
|
-
"ruff
|
|
56
|
-
"mypy
|
|
57
|
-
"time-machine
|
|
46
|
+
"pre-commit",
|
|
47
|
+
"freezegun",
|
|
48
|
+
"pytest",
|
|
49
|
+
"pytest-asyncio",
|
|
50
|
+
"pytest-cov",
|
|
51
|
+
"pytest-mock",
|
|
52
|
+
"pytest-randomly",
|
|
53
|
+
"requests-mock",
|
|
54
|
+
"tox",
|
|
55
|
+
"ruff",
|
|
56
|
+
"mypy",
|
|
57
|
+
"time-machine",
|
|
58
58
|
]
|
|
59
59
|
|
|
60
60
|
[tool.pytest.ini_options]
|
|
@@ -49,6 +49,12 @@ class AvailableResellers:
|
|
|
49
49
|
api_url="api-elnur",
|
|
50
50
|
serial_id=7,
|
|
51
51
|
),
|
|
52
|
+
"api-valderoma": SmartboxReseller(
|
|
53
|
+
name="Valderoma",
|
|
54
|
+
web_url="https://wifi.valderoma.fr/",
|
|
55
|
+
api_url="api-climastar",
|
|
56
|
+
serial_id=8,
|
|
57
|
+
),
|
|
52
58
|
"api-hjm": SmartboxReseller(
|
|
53
59
|
name="HJM",
|
|
54
60
|
web_url="https://api.calorhjm.com/",
|
|
@@ -45,17 +45,16 @@ class SmartboxAPIV2Namespace(socketio.AsyncClientNamespace):
|
|
|
45
45
|
_LOGGER.debug("Namespace %s connected", self._namespace)
|
|
46
46
|
self._namespace_connected = True
|
|
47
47
|
|
|
48
|
-
async def on_disconnect(self) -> None:
|
|
48
|
+
async def on_disconnect(self, reason: str) -> None:
|
|
49
49
|
"""Disconnection of namespace."""
|
|
50
50
|
_LOGGER.debug(
|
|
51
|
-
"Namespace %s disconnected, disconnecting socket",
|
|
51
|
+
"Namespace %s disconnected, disconnecting socket. Reason: %s",
|
|
52
52
|
self._namespace,
|
|
53
|
+
reason,
|
|
53
54
|
)
|
|
54
55
|
self._namespace_connected = False
|
|
55
56
|
self._received_message = False
|
|
56
57
|
self._received_dev_data = False
|
|
57
|
-
# we need to call disconnect to disconnect all namespaces
|
|
58
|
-
await self.disconnect()
|
|
59
58
|
|
|
60
59
|
@property
|
|
61
60
|
def connected(self) -> bool:
|
|
@@ -197,7 +196,7 @@ class SocketSession:
|
|
|
197
196
|
if remaining > 0:
|
|
198
197
|
await asyncio.sleep(sleep_time)
|
|
199
198
|
else:
|
|
200
|
-
|
|
199
|
+
_LOGGER.warning(
|
|
201
200
|
"Failed to connect after %s attempts, falling through to refresh token",
|
|
202
201
|
self._reconnect_attempts,
|
|
203
202
|
)
|
|
@@ -14,7 +14,7 @@ DEFAULT_ARGS = [
|
|
|
14
14
|
]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
@pytest.mark.
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
18
|
async def test_health_check(runner, mock_session):
|
|
19
19
|
devices_future = asyncio.Future()
|
|
20
20
|
devices_future.set_result("")
|
|
@@ -28,7 +28,7 @@ async def test_health_check(runner, mock_session):
|
|
|
28
28
|
assert "" in result.output
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
@pytest.mark.
|
|
31
|
+
@pytest.mark.asyncio
|
|
32
32
|
async def test_api_version(runner, mock_session):
|
|
33
33
|
devices_future = asyncio.Future()
|
|
34
34
|
devices_future.set_result(
|
|
@@ -44,7 +44,7 @@ async def test_api_version(runner, mock_session):
|
|
|
44
44
|
assert "subminor" in result.output
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
@pytest.mark.
|
|
47
|
+
@pytest.mark.asyncio
|
|
48
48
|
async def test_devices(runner, async_smartbox_session):
|
|
49
49
|
result = await runner.invoke(
|
|
50
50
|
smartbox,
|
|
@@ -54,14 +54,14 @@ async def test_devices(runner, async_smartbox_session):
|
|
|
54
54
|
assert "device1" in result.output
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
@pytest.mark.
|
|
57
|
+
@pytest.mark.asyncio
|
|
58
58
|
async def test_homes(runner, async_smartbox_session):
|
|
59
59
|
result = await runner.invoke(smartbox, [*DEFAULT_ARGS, "homes"])
|
|
60
60
|
assert result.exit_code == 0
|
|
61
61
|
assert "home1" in result.output
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
@pytest.mark.
|
|
64
|
+
@pytest.mark.asyncio
|
|
65
65
|
async def test_nodes(runner, async_smartbox_session):
|
|
66
66
|
result = await runner.invoke(smartbox, [*DEFAULT_ARGS, "nodes"])
|
|
67
67
|
assert result.exit_code == 0
|
|
@@ -69,7 +69,7 @@ async def test_nodes(runner, async_smartbox_session):
|
|
|
69
69
|
assert "Smart Light" in result.output
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
@pytest.mark.
|
|
72
|
+
@pytest.mark.asyncio
|
|
73
73
|
async def test_status(runner, async_smartbox_session):
|
|
74
74
|
result = await runner.invoke(smartbox, [*DEFAULT_ARGS, "status"])
|
|
75
75
|
assert result.exit_code == 0
|
|
@@ -77,7 +77,7 @@ async def test_status(runner, async_smartbox_session):
|
|
|
77
77
|
assert "true_radiant_active" in result.output
|
|
78
78
|
|
|
79
79
|
|
|
80
|
-
@pytest.mark.
|
|
80
|
+
@pytest.mark.asyncio
|
|
81
81
|
async def test_device_away_status(runner, async_smartbox_session):
|
|
82
82
|
result = await runner.invoke(
|
|
83
83
|
smartbox,
|
|
@@ -87,7 +87,7 @@ async def test_device_away_status(runner, async_smartbox_session):
|
|
|
87
87
|
assert "away" in result.output
|
|
88
88
|
|
|
89
89
|
|
|
90
|
-
@pytest.mark.
|
|
90
|
+
@pytest.mark.asyncio
|
|
91
91
|
async def test_socket(runner, mocker, mock_session):
|
|
92
92
|
mock_socket_session = mocker.patch("smartbox.cmd.SocketSession")
|
|
93
93
|
mock_socket_session.return_value.run.return_value = asyncio.Future()
|
|
@@ -100,7 +100,7 @@ async def test_socket(runner, mocker, mock_session):
|
|
|
100
100
|
assert result.exit_code == 0
|
|
101
101
|
|
|
102
102
|
|
|
103
|
-
@pytest.mark.
|
|
103
|
+
@pytest.mark.asyncio
|
|
104
104
|
async def test_set_status(runner, mock_session):
|
|
105
105
|
devices_future = asyncio.Future()
|
|
106
106
|
devices_future.set_result([{"name": "Device1", "dev_id": "1"}])
|
|
@@ -135,7 +135,7 @@ async def test_set_status(runner, mock_session):
|
|
|
135
135
|
)
|
|
136
136
|
|
|
137
137
|
|
|
138
|
-
@pytest.mark.
|
|
138
|
+
@pytest.mark.asyncio
|
|
139
139
|
async def test_set_setup(runner, mock_session):
|
|
140
140
|
devices_future = asyncio.Future()
|
|
141
141
|
devices_future.set_result([{"name": "Device1", "dev_id": "1"}])
|
|
@@ -187,7 +187,7 @@ async def test_set_setup(runner, mock_session):
|
|
|
187
187
|
)
|
|
188
188
|
|
|
189
189
|
|
|
190
|
-
@pytest.mark.
|
|
190
|
+
@pytest.mark.asyncio
|
|
191
191
|
async def test_set_device_away_status(runner, mock_session):
|
|
192
192
|
devices_future = asyncio.Future()
|
|
193
193
|
devices_future.set_result([{"name": "Device1", "dev_id": "1"}])
|
|
@@ -221,7 +221,7 @@ async def test_set_device_away_status(runner, mock_session):
|
|
|
221
221
|
)
|
|
222
222
|
|
|
223
223
|
|
|
224
|
-
@pytest.mark.
|
|
224
|
+
@pytest.mark.asyncio
|
|
225
225
|
async def test_node_samples(runner, mock_session):
|
|
226
226
|
devices_future = asyncio.Future()
|
|
227
227
|
devices_future.set_result([{"name": "Device1", "dev_id": "1"}])
|
|
@@ -262,7 +262,7 @@ async def test_node_samples(runner, mock_session):
|
|
|
262
262
|
)
|
|
263
263
|
|
|
264
264
|
|
|
265
|
-
@pytest.mark.
|
|
265
|
+
@pytest.mark.asyncio
|
|
266
266
|
async def test_reseller(runner, mocker, reseller):
|
|
267
267
|
result = await runner.invoke(
|
|
268
268
|
smartbox,
|
|
@@ -273,7 +273,7 @@ async def test_reseller(runner, mocker, reseller):
|
|
|
273
273
|
assert "http" in result.output
|
|
274
274
|
|
|
275
275
|
|
|
276
|
-
@pytest.mark.
|
|
276
|
+
@pytest.mark.asyncio
|
|
277
277
|
async def test_device_power_limit(runner, mock_session):
|
|
278
278
|
devices_future = asyncio.Future()
|
|
279
279
|
devices_future.set_result([{"name": "Device1", "dev_id": "1"}])
|
|
@@ -298,7 +298,7 @@ async def test_device_power_limit(runner, mock_session):
|
|
|
298
298
|
)
|
|
299
299
|
|
|
300
300
|
|
|
301
|
-
@pytest.mark.
|
|
301
|
+
@pytest.mark.asyncio
|
|
302
302
|
async def test_setup(runner, mock_session):
|
|
303
303
|
devices_future = asyncio.Future()
|
|
304
304
|
devices_future.set_result([{"name": "Device1", "dev_id": "1"}])
|
|
@@ -327,7 +327,7 @@ async def test_setup(runner, mock_session):
|
|
|
327
327
|
)
|
|
328
328
|
|
|
329
329
|
|
|
330
|
-
@pytest.mark.
|
|
330
|
+
@pytest.mark.asyncio
|
|
331
331
|
async def test_set_device_power_limit(runner, mock_session):
|
|
332
332
|
devices_future = asyncio.Future()
|
|
333
333
|
devices_future.set_result([{"name": "Device1", "dev_id": "1"}])
|
|
@@ -355,7 +355,7 @@ async def test_set_device_power_limit(runner, mock_session):
|
|
|
355
355
|
)
|
|
356
356
|
|
|
357
357
|
|
|
358
|
-
@pytest.mark.
|
|
358
|
+
@pytest.mark.asyncio
|
|
359
359
|
async def test_guests(runner, mock_session):
|
|
360
360
|
guests_future = asyncio.Future()
|
|
361
361
|
guests_future.set_result(
|
|
@@ -375,7 +375,7 @@ async def test_guests(runner, mock_session):
|
|
|
375
375
|
)
|
|
376
376
|
|
|
377
377
|
|
|
378
|
-
@pytest.mark.
|
|
378
|
+
@pytest.mark.asyncio
|
|
379
379
|
async def test_device_connected_status(runner, async_smartbox_session):
|
|
380
380
|
result = await runner.invoke(
|
|
381
381
|
smartbox,
|