axis 61__tar.gz → 62__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.
- {axis-61 → axis-62}/PKG-INFO +1 -1
- {axis-61 → axis-62}/axis/interfaces/pwdgrp_cgi.py +2 -4
- {axis-61 → axis-62}/axis/models/api.py +1 -1
- {axis-61 → axis-62}/axis/models/port_management.py +1 -1
- {axis-61 → axis-62}/axis/models/ptz_cgi.py +9 -7
- {axis-61 → axis-62}/axis.egg-info/PKG-INFO +1 -1
- {axis-61 → axis-62}/axis.egg-info/requires.txt +7 -7
- {axis-61 → axis-62}/pyproject.toml +8 -8
- {axis-61 → axis-62}/tests/test_port_management.py +14 -12
- {axis-61 → axis-62}/LICENSE +0 -0
- {axis-61 → axis-62}/README.md +0 -0
- {axis-61 → axis-62}/axis/__init__.py +0 -0
- {axis-61 → axis-62}/axis/__main__.py +0 -0
- {axis-61 → axis-62}/axis/device.py +0 -0
- {axis-61 → axis-62}/axis/errors.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/__init__.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/api_discovery.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/api_handler.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/__init__.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/application_handler.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/applications.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/fence_guard.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/loitering_guard.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/motion_guard.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/object_analytics.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/applications/vmd4.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/basic_device_info.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/event_instances.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/event_manager.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/light_control.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/mqtt.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/__init__.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/brand.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/image.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/io_port.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/param_cgi.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/param_handler.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/properties.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/ptz.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/parameters/stream_profile.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/pir_sensor_configuration.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/port_cgi.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/port_management.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/ptz.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/stream_profiles.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/user_groups.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/vapix.py +0 -0
- {axis-61 → axis-62}/axis/interfaces/view_areas.py +0 -0
- {axis-61 → axis-62}/axis/models/__init__.py +0 -0
- {axis-61 → axis-62}/axis/models/api_discovery.py +0 -0
- {axis-61 → axis-62}/axis/models/applications/__init__.py +0 -0
- {axis-61 → axis-62}/axis/models/applications/application.py +0 -0
- {axis-61 → axis-62}/axis/models/applications/fence_guard.py +0 -0
- {axis-61 → axis-62}/axis/models/applications/loitering_guard.py +0 -0
- {axis-61 → axis-62}/axis/models/applications/motion_guard.py +0 -0
- {axis-61 → axis-62}/axis/models/applications/object_analytics.py +0 -0
- {axis-61 → axis-62}/axis/models/applications/vmd4.py +0 -0
- {axis-61 → axis-62}/axis/models/basic_device_info.py +0 -0
- {axis-61 → axis-62}/axis/models/configuration.py +0 -0
- {axis-61 → axis-62}/axis/models/event.py +0 -0
- {axis-61 → axis-62}/axis/models/event_instance.py +0 -0
- {axis-61 → axis-62}/axis/models/light_control.py +0 -0
- {axis-61 → axis-62}/axis/models/mqtt.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/__init__.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/brand.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/image.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/io_port.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/param_cgi.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/properties.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/ptz.py +0 -0
- {axis-61 → axis-62}/axis/models/parameters/stream_profile.py +0 -0
- {axis-61 → axis-62}/axis/models/pir_sensor_configuration.py +0 -0
- {axis-61 → axis-62}/axis/models/port_cgi.py +0 -0
- {axis-61 → axis-62}/axis/models/pwdgrp_cgi.py +0 -0
- {axis-61 → axis-62}/axis/models/stream_profile.py +0 -0
- {axis-61 → axis-62}/axis/models/user_group.py +0 -0
- {axis-61 → axis-62}/axis/models/view_area.py +0 -0
- {axis-61 → axis-62}/axis/py.typed +0 -0
- {axis-61 → axis-62}/axis/rtsp.py +0 -0
- {axis-61 → axis-62}/axis/stream_manager.py +0 -0
- {axis-61 → axis-62}/axis.egg-info/SOURCES.txt +0 -0
- {axis-61 → axis-62}/axis.egg-info/dependency_links.txt +0 -0
- {axis-61 → axis-62}/axis.egg-info/entry_points.txt +0 -0
- {axis-61 → axis-62}/axis.egg-info/top_level.txt +0 -0
- {axis-61 → axis-62}/setup.cfg +0 -0
- {axis-61 → axis-62}/tests/test_api_discovery.py +0 -0
- {axis-61 → axis-62}/tests/test_api_handler.py +0 -0
- {axis-61 → axis-62}/tests/test_basic_device_info.py +0 -0
- {axis-61 → axis-62}/tests/test_configuration.py +0 -0
- {axis-61 → axis-62}/tests/test_device.py +0 -0
- {axis-61 → axis-62}/tests/test_event.py +0 -0
- {axis-61 → axis-62}/tests/test_event_instances.py +0 -0
- {axis-61 → axis-62}/tests/test_event_stream.py +0 -0
- {axis-61 → axis-62}/tests/test_light_control.py +0 -0
- {axis-61 → axis-62}/tests/test_mqtt.py +0 -0
- {axis-61 → axis-62}/tests/test_pir_sensor_configuration.py +0 -0
- {axis-61 → axis-62}/tests/test_port_cgi.py +0 -0
- {axis-61 → axis-62}/tests/test_ptz.py +0 -0
- {axis-61 → axis-62}/tests/test_pwdgrp_cgi.py +0 -0
- {axis-61 → axis-62}/tests/test_rtsp.py +0 -0
- {axis-61 → axis-62}/tests/test_stream_manager.py +0 -0
- {axis-61 → axis-62}/tests/test_stream_profiles.py +0 -0
- {axis-61 → axis-62}/tests/test_user_groups.py +0 -0
- {axis-61 → axis-62}/tests/test_vapix.py +0 -0
- {axis-61 → axis-62}/tests/test_view_areas.py +0 -0
{axis-61 → axis-62}/PKG-INFO
RENAMED
|
@@ -34,11 +34,9 @@ class Users(ApiHandler[User]):
|
|
|
34
34
|
@property
|
|
35
35
|
def listed_in_parameters(self) -> bool:
|
|
36
36
|
"""Is pwdgrp.cgi supported."""
|
|
37
|
-
|
|
37
|
+
return self.vapix.params.property_handler.supported and (
|
|
38
38
|
self.vapix.params.property_handler["0"].api_http_version >= 3
|
|
39
|
-
)
|
|
40
|
-
return True
|
|
41
|
-
return False
|
|
39
|
+
)
|
|
42
40
|
|
|
43
41
|
async def _api_request(self) -> dict[str, User]:
|
|
44
42
|
"""Get default data of basic device information."""
|
|
@@ -308,13 +308,15 @@ class PtzControlRequest(ApiRequest):
|
|
|
308
308
|
if command_bool is not None:
|
|
309
309
|
data[key] = "on" if command_bool else "off"
|
|
310
310
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
311
|
+
data |= {
|
|
312
|
+
key: command_enum
|
|
313
|
+
for key, command_enum in (
|
|
314
|
+
("imagerotation", self.image_rotation),
|
|
315
|
+
("ircutfilter", self.ir_cut_filter),
|
|
316
|
+
("move", self.move),
|
|
317
|
+
)
|
|
318
|
+
if command_enum is not None
|
|
319
|
+
}
|
|
318
320
|
|
|
319
321
|
if self.continuous_pantilt_move:
|
|
320
322
|
pan_speed, tilt_speed = self.continuous_pantilt_move
|
|
@@ -5,20 +5,20 @@ xmltodict>=0.13.0
|
|
|
5
5
|
|
|
6
6
|
[requirements]
|
|
7
7
|
httpx==0.27.0
|
|
8
|
-
orjson==3.10.
|
|
9
|
-
packaging==24.
|
|
8
|
+
orjson==3.10.6
|
|
9
|
+
packaging==24.1
|
|
10
10
|
xmltodict==0.13.0
|
|
11
11
|
|
|
12
12
|
[requirements_dev]
|
|
13
|
-
pre-commit==3.7.
|
|
13
|
+
pre-commit==3.7.1
|
|
14
14
|
|
|
15
15
|
[requirements_test]
|
|
16
|
-
mypy==1.
|
|
17
|
-
pytest==8.
|
|
16
|
+
mypy==1.10.1
|
|
17
|
+
pytest==8.2.2
|
|
18
18
|
pytest-aiohttp==1.0.5
|
|
19
|
-
pytest-asyncio==0.23.
|
|
19
|
+
pytest-asyncio==0.23.7
|
|
20
20
|
pytest-cov==5.0.0
|
|
21
21
|
respx==0.21.1
|
|
22
|
-
ruff==0.
|
|
22
|
+
ruff==0.5.0
|
|
23
23
|
types-orjson==3.6.2
|
|
24
24
|
types-xmltodict==v0.13.0.3
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "axis"
|
|
7
|
-
version = "
|
|
7
|
+
version = "62"
|
|
8
8
|
license = {text = "MIT"}
|
|
9
9
|
description = "A Python library for communicating with devices from Axis Communications"
|
|
10
10
|
readme = "README.md"
|
|
@@ -29,23 +29,23 @@ dependencies = [
|
|
|
29
29
|
[project.optional-dependencies]
|
|
30
30
|
requirements = [
|
|
31
31
|
"httpx==0.27.0",
|
|
32
|
-
"orjson==3.10.
|
|
33
|
-
"packaging==24.
|
|
32
|
+
"orjson==3.10.6",
|
|
33
|
+
"packaging==24.1",
|
|
34
34
|
"xmltodict==0.13.0",
|
|
35
35
|
]
|
|
36
36
|
requirements_test = [
|
|
37
|
-
"mypy==1.
|
|
38
|
-
"pytest==8.
|
|
37
|
+
"mypy==1.10.1",
|
|
38
|
+
"pytest==8.2.2",
|
|
39
39
|
"pytest-aiohttp==1.0.5",
|
|
40
|
-
"pytest-asyncio==0.23.
|
|
40
|
+
"pytest-asyncio==0.23.7",
|
|
41
41
|
"pytest-cov==5.0.0",
|
|
42
42
|
"respx==0.21.1",
|
|
43
|
-
"ruff==0.
|
|
43
|
+
"ruff==0.5.0",
|
|
44
44
|
"types-orjson==3.6.2",
|
|
45
45
|
"types-xmltodict==v0.13.0.3",
|
|
46
46
|
]
|
|
47
47
|
requirements_dev = [
|
|
48
|
-
"pre-commit==3.7.
|
|
48
|
+
"pre-commit==3.7.1"
|
|
49
49
|
]
|
|
50
50
|
|
|
51
51
|
[project.urls]
|
|
@@ -55,7 +55,7 @@ async def test_get_ports(respx_mock, io_port_management):
|
|
|
55
55
|
"method": "setPorts",
|
|
56
56
|
"apiVersion": "1.0",
|
|
57
57
|
"context": "Axis library",
|
|
58
|
-
"params": [{"port": "0", "state": "open"}],
|
|
58
|
+
"params": {"ports": [{"port": "0", "state": "open"}]},
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
await io_port_management.close("0")
|
|
@@ -67,7 +67,7 @@ async def test_get_ports(respx_mock, io_port_management):
|
|
|
67
67
|
"method": "setPorts",
|
|
68
68
|
"apiVersion": "1.0",
|
|
69
69
|
"context": "Axis library",
|
|
70
|
-
"params": [{"port": "0", "state": "closed"}],
|
|
70
|
+
"params": {"ports": [{"port": "0", "state": "closed"}]},
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
|
|
@@ -105,16 +105,18 @@ async def test_set_ports(respx_mock, io_port_management):
|
|
|
105
105
|
"method": "setPorts",
|
|
106
106
|
"apiVersion": "1.0",
|
|
107
107
|
"context": "Axis library",
|
|
108
|
-
"params":
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
108
|
+
"params": {
|
|
109
|
+
"ports": [
|
|
110
|
+
{
|
|
111
|
+
"port": "0",
|
|
112
|
+
"usage": "",
|
|
113
|
+
"direction": "",
|
|
114
|
+
"name": "",
|
|
115
|
+
"normalState": "",
|
|
116
|
+
"state": "closed",
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
},
|
|
118
120
|
}
|
|
119
121
|
|
|
120
122
|
|
{axis-61 → axis-62}/LICENSE
RENAMED
|
File without changes
|
{axis-61 → axis-62}/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis-61 → axis-62}/axis/rtsp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{axis-61 → axis-62}/setup.cfg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|