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.
Files changed (105) hide show
  1. {axis-61 → axis-62}/PKG-INFO +1 -1
  2. {axis-61 → axis-62}/axis/interfaces/pwdgrp_cgi.py +2 -4
  3. {axis-61 → axis-62}/axis/models/api.py +1 -1
  4. {axis-61 → axis-62}/axis/models/port_management.py +1 -1
  5. {axis-61 → axis-62}/axis/models/ptz_cgi.py +9 -7
  6. {axis-61 → axis-62}/axis.egg-info/PKG-INFO +1 -1
  7. {axis-61 → axis-62}/axis.egg-info/requires.txt +7 -7
  8. {axis-61 → axis-62}/pyproject.toml +8 -8
  9. {axis-61 → axis-62}/tests/test_port_management.py +14 -12
  10. {axis-61 → axis-62}/LICENSE +0 -0
  11. {axis-61 → axis-62}/README.md +0 -0
  12. {axis-61 → axis-62}/axis/__init__.py +0 -0
  13. {axis-61 → axis-62}/axis/__main__.py +0 -0
  14. {axis-61 → axis-62}/axis/device.py +0 -0
  15. {axis-61 → axis-62}/axis/errors.py +0 -0
  16. {axis-61 → axis-62}/axis/interfaces/__init__.py +0 -0
  17. {axis-61 → axis-62}/axis/interfaces/api_discovery.py +0 -0
  18. {axis-61 → axis-62}/axis/interfaces/api_handler.py +0 -0
  19. {axis-61 → axis-62}/axis/interfaces/applications/__init__.py +0 -0
  20. {axis-61 → axis-62}/axis/interfaces/applications/application_handler.py +0 -0
  21. {axis-61 → axis-62}/axis/interfaces/applications/applications.py +0 -0
  22. {axis-61 → axis-62}/axis/interfaces/applications/fence_guard.py +0 -0
  23. {axis-61 → axis-62}/axis/interfaces/applications/loitering_guard.py +0 -0
  24. {axis-61 → axis-62}/axis/interfaces/applications/motion_guard.py +0 -0
  25. {axis-61 → axis-62}/axis/interfaces/applications/object_analytics.py +0 -0
  26. {axis-61 → axis-62}/axis/interfaces/applications/vmd4.py +0 -0
  27. {axis-61 → axis-62}/axis/interfaces/basic_device_info.py +0 -0
  28. {axis-61 → axis-62}/axis/interfaces/event_instances.py +0 -0
  29. {axis-61 → axis-62}/axis/interfaces/event_manager.py +0 -0
  30. {axis-61 → axis-62}/axis/interfaces/light_control.py +0 -0
  31. {axis-61 → axis-62}/axis/interfaces/mqtt.py +0 -0
  32. {axis-61 → axis-62}/axis/interfaces/parameters/__init__.py +0 -0
  33. {axis-61 → axis-62}/axis/interfaces/parameters/brand.py +0 -0
  34. {axis-61 → axis-62}/axis/interfaces/parameters/image.py +0 -0
  35. {axis-61 → axis-62}/axis/interfaces/parameters/io_port.py +0 -0
  36. {axis-61 → axis-62}/axis/interfaces/parameters/param_cgi.py +0 -0
  37. {axis-61 → axis-62}/axis/interfaces/parameters/param_handler.py +0 -0
  38. {axis-61 → axis-62}/axis/interfaces/parameters/properties.py +0 -0
  39. {axis-61 → axis-62}/axis/interfaces/parameters/ptz.py +0 -0
  40. {axis-61 → axis-62}/axis/interfaces/parameters/stream_profile.py +0 -0
  41. {axis-61 → axis-62}/axis/interfaces/pir_sensor_configuration.py +0 -0
  42. {axis-61 → axis-62}/axis/interfaces/port_cgi.py +0 -0
  43. {axis-61 → axis-62}/axis/interfaces/port_management.py +0 -0
  44. {axis-61 → axis-62}/axis/interfaces/ptz.py +0 -0
  45. {axis-61 → axis-62}/axis/interfaces/stream_profiles.py +0 -0
  46. {axis-61 → axis-62}/axis/interfaces/user_groups.py +0 -0
  47. {axis-61 → axis-62}/axis/interfaces/vapix.py +0 -0
  48. {axis-61 → axis-62}/axis/interfaces/view_areas.py +0 -0
  49. {axis-61 → axis-62}/axis/models/__init__.py +0 -0
  50. {axis-61 → axis-62}/axis/models/api_discovery.py +0 -0
  51. {axis-61 → axis-62}/axis/models/applications/__init__.py +0 -0
  52. {axis-61 → axis-62}/axis/models/applications/application.py +0 -0
  53. {axis-61 → axis-62}/axis/models/applications/fence_guard.py +0 -0
  54. {axis-61 → axis-62}/axis/models/applications/loitering_guard.py +0 -0
  55. {axis-61 → axis-62}/axis/models/applications/motion_guard.py +0 -0
  56. {axis-61 → axis-62}/axis/models/applications/object_analytics.py +0 -0
  57. {axis-61 → axis-62}/axis/models/applications/vmd4.py +0 -0
  58. {axis-61 → axis-62}/axis/models/basic_device_info.py +0 -0
  59. {axis-61 → axis-62}/axis/models/configuration.py +0 -0
  60. {axis-61 → axis-62}/axis/models/event.py +0 -0
  61. {axis-61 → axis-62}/axis/models/event_instance.py +0 -0
  62. {axis-61 → axis-62}/axis/models/light_control.py +0 -0
  63. {axis-61 → axis-62}/axis/models/mqtt.py +0 -0
  64. {axis-61 → axis-62}/axis/models/parameters/__init__.py +0 -0
  65. {axis-61 → axis-62}/axis/models/parameters/brand.py +0 -0
  66. {axis-61 → axis-62}/axis/models/parameters/image.py +0 -0
  67. {axis-61 → axis-62}/axis/models/parameters/io_port.py +0 -0
  68. {axis-61 → axis-62}/axis/models/parameters/param_cgi.py +0 -0
  69. {axis-61 → axis-62}/axis/models/parameters/properties.py +0 -0
  70. {axis-61 → axis-62}/axis/models/parameters/ptz.py +0 -0
  71. {axis-61 → axis-62}/axis/models/parameters/stream_profile.py +0 -0
  72. {axis-61 → axis-62}/axis/models/pir_sensor_configuration.py +0 -0
  73. {axis-61 → axis-62}/axis/models/port_cgi.py +0 -0
  74. {axis-61 → axis-62}/axis/models/pwdgrp_cgi.py +0 -0
  75. {axis-61 → axis-62}/axis/models/stream_profile.py +0 -0
  76. {axis-61 → axis-62}/axis/models/user_group.py +0 -0
  77. {axis-61 → axis-62}/axis/models/view_area.py +0 -0
  78. {axis-61 → axis-62}/axis/py.typed +0 -0
  79. {axis-61 → axis-62}/axis/rtsp.py +0 -0
  80. {axis-61 → axis-62}/axis/stream_manager.py +0 -0
  81. {axis-61 → axis-62}/axis.egg-info/SOURCES.txt +0 -0
  82. {axis-61 → axis-62}/axis.egg-info/dependency_links.txt +0 -0
  83. {axis-61 → axis-62}/axis.egg-info/entry_points.txt +0 -0
  84. {axis-61 → axis-62}/axis.egg-info/top_level.txt +0 -0
  85. {axis-61 → axis-62}/setup.cfg +0 -0
  86. {axis-61 → axis-62}/tests/test_api_discovery.py +0 -0
  87. {axis-61 → axis-62}/tests/test_api_handler.py +0 -0
  88. {axis-61 → axis-62}/tests/test_basic_device_info.py +0 -0
  89. {axis-61 → axis-62}/tests/test_configuration.py +0 -0
  90. {axis-61 → axis-62}/tests/test_device.py +0 -0
  91. {axis-61 → axis-62}/tests/test_event.py +0 -0
  92. {axis-61 → axis-62}/tests/test_event_instances.py +0 -0
  93. {axis-61 → axis-62}/tests/test_event_stream.py +0 -0
  94. {axis-61 → axis-62}/tests/test_light_control.py +0 -0
  95. {axis-61 → axis-62}/tests/test_mqtt.py +0 -0
  96. {axis-61 → axis-62}/tests/test_pir_sensor_configuration.py +0 -0
  97. {axis-61 → axis-62}/tests/test_port_cgi.py +0 -0
  98. {axis-61 → axis-62}/tests/test_ptz.py +0 -0
  99. {axis-61 → axis-62}/tests/test_pwdgrp_cgi.py +0 -0
  100. {axis-61 → axis-62}/tests/test_rtsp.py +0 -0
  101. {axis-61 → axis-62}/tests/test_stream_manager.py +0 -0
  102. {axis-61 → axis-62}/tests/test_stream_profiles.py +0 -0
  103. {axis-61 → axis-62}/tests/test_user_groups.py +0 -0
  104. {axis-61 → axis-62}/tests/test_vapix.py +0 -0
  105. {axis-61 → axis-62}/tests/test_view_areas.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: axis
3
- Version: 61
3
+ Version: 62
4
4
  Summary: A Python library for communicating with devices from Axis Communications
5
5
  Author-email: Robert Svensson <Kane610@users.noreply.github.com>
6
6
  License: MIT
@@ -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
- if self.vapix.params.property_handler.supported and (
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."""
@@ -58,7 +58,7 @@ ApiResponseT = TypeVar("ApiResponseT", bound=ApiResponseSupportDecode)
58
58
 
59
59
 
60
60
  @dataclass
61
- class ApiRequest(ABC):
61
+ class ApiRequest:
62
62
  """Create API request body."""
63
63
 
64
64
  method: str = field(init=False)
@@ -247,7 +247,7 @@ class SetPortsRequest(ApiRequest):
247
247
  "apiVersion": self.api_version,
248
248
  "context": self.context,
249
249
  "method": "setPorts",
250
- "params": ports,
250
+ "params": {"ports": ports},
251
251
  }
252
252
  )
253
253
 
@@ -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
- for key, command_enum in (
312
- ("imagerotation", self.image_rotation),
313
- ("ircutfilter", self.ir_cut_filter),
314
- ("move", self.move),
315
- ):
316
- if command_enum is not None:
317
- data[key] = command_enum
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: axis
3
- Version: 61
3
+ Version: 62
4
4
  Summary: A Python library for communicating with devices from Axis Communications
5
5
  Author-email: Robert Svensson <Kane610@users.noreply.github.com>
6
6
  License: MIT
@@ -5,20 +5,20 @@ xmltodict>=0.13.0
5
5
 
6
6
  [requirements]
7
7
  httpx==0.27.0
8
- orjson==3.10.0
9
- packaging==24.0
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.0
13
+ pre-commit==3.7.1
14
14
 
15
15
  [requirements_test]
16
- mypy==1.9.0
17
- pytest==8.1.1
16
+ mypy==1.10.1
17
+ pytest==8.2.2
18
18
  pytest-aiohttp==1.0.5
19
- pytest-asyncio==0.23.6
19
+ pytest-asyncio==0.23.7
20
20
  pytest-cov==5.0.0
21
21
  respx==0.21.1
22
- ruff==0.3.5
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 = "61"
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.0",
33
- "packaging==24.0",
32
+ "orjson==3.10.6",
33
+ "packaging==24.1",
34
34
  "xmltodict==0.13.0",
35
35
  ]
36
36
  requirements_test = [
37
- "mypy==1.9.0",
38
- "pytest==8.1.1",
37
+ "mypy==1.10.1",
38
+ "pytest==8.2.2",
39
39
  "pytest-aiohttp==1.0.5",
40
- "pytest-asyncio==0.23.6",
40
+ "pytest-asyncio==0.23.7",
41
41
  "pytest-cov==5.0.0",
42
42
  "respx==0.21.1",
43
- "ruff==0.3.5",
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.0"
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
- "port": "0",
111
- "usage": "",
112
- "direction": "",
113
- "name": "",
114
- "normalState": "",
115
- "state": "closed",
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
 
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
File without changes
File without changes