axis 53__tar.gz → 55__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 (109) hide show
  1. {axis-53 → axis-55}/PKG-INFO +7 -7
  2. {axis-53 → axis-55}/axis/vapix/interfaces/applications/applications.py +2 -2
  3. {axis-53 → axis-55}/axis/vapix/models/applications/application.py +4 -4
  4. {axis-53 → axis-55}/axis/vapix/models/parameters/ptz.py +10 -10
  5. {axis-53 → axis-55}/axis.egg-info/PKG-INFO +7 -7
  6. axis-55/axis.egg-info/entry_points.txt +2 -0
  7. {axis-53 → axis-55}/axis.egg-info/requires.txt +5 -5
  8. {axis-53 → axis-55}/pyproject.toml +8 -7
  9. {axis-53 → axis-55}/setup.py +1 -1
  10. axis-53/axis.egg-info/entry_points.txt +0 -2
  11. {axis-53 → axis-55}/LICENSE +0 -0
  12. {axis-53 → axis-55}/README.md +0 -0
  13. {axis-53 → axis-55}/axis/__init__.py +0 -0
  14. {axis-53 → axis-55}/axis/__main__.py +0 -0
  15. {axis-53 → axis-55}/axis/configuration.py +0 -0
  16. {axis-53 → axis-55}/axis/device.py +0 -0
  17. {axis-53 → axis-55}/axis/errors.py +0 -0
  18. {axis-53 → axis-55}/axis/event_stream.py +0 -0
  19. {axis-53 → axis-55}/axis/models/__init__.py +0 -0
  20. {axis-53 → axis-55}/axis/models/event.py +0 -0
  21. {axis-53 → axis-55}/axis/py.typed +0 -0
  22. {axis-53 → axis-55}/axis/rtsp.py +0 -0
  23. {axis-53 → axis-55}/axis/stream_manager.py +0 -0
  24. {axis-53 → axis-55}/axis/vapix/__init__.py +0 -0
  25. {axis-53 → axis-55}/axis/vapix/interfaces/__init__.py +0 -0
  26. {axis-53 → axis-55}/axis/vapix/interfaces/api_discovery.py +0 -0
  27. {axis-53 → axis-55}/axis/vapix/interfaces/api_handler.py +0 -0
  28. {axis-53 → axis-55}/axis/vapix/interfaces/applications/__init__.py +0 -0
  29. {axis-53 → axis-55}/axis/vapix/interfaces/applications/application_handler.py +0 -0
  30. {axis-53 → axis-55}/axis/vapix/interfaces/applications/fence_guard.py +0 -0
  31. {axis-53 → axis-55}/axis/vapix/interfaces/applications/loitering_guard.py +0 -0
  32. {axis-53 → axis-55}/axis/vapix/interfaces/applications/motion_guard.py +0 -0
  33. {axis-53 → axis-55}/axis/vapix/interfaces/applications/object_analytics.py +0 -0
  34. {axis-53 → axis-55}/axis/vapix/interfaces/applications/vmd4.py +0 -0
  35. {axis-53 → axis-55}/axis/vapix/interfaces/basic_device_info.py +0 -0
  36. {axis-53 → axis-55}/axis/vapix/interfaces/event_instances.py +0 -0
  37. {axis-53 → axis-55}/axis/vapix/interfaces/light_control.py +0 -0
  38. {axis-53 → axis-55}/axis/vapix/interfaces/mqtt.py +0 -0
  39. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/__init__.py +0 -0
  40. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/brand.py +0 -0
  41. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/image.py +0 -0
  42. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/io_port.py +0 -0
  43. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/param_cgi.py +0 -0
  44. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/param_handler.py +0 -0
  45. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/properties.py +0 -0
  46. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/ptz.py +0 -0
  47. {axis-53 → axis-55}/axis/vapix/interfaces/parameters/stream_profile.py +0 -0
  48. {axis-53 → axis-55}/axis/vapix/interfaces/pir_sensor_configuration.py +0 -0
  49. {axis-53 → axis-55}/axis/vapix/interfaces/port_cgi.py +0 -0
  50. {axis-53 → axis-55}/axis/vapix/interfaces/port_management.py +0 -0
  51. {axis-53 → axis-55}/axis/vapix/interfaces/ptz.py +0 -0
  52. {axis-53 → axis-55}/axis/vapix/interfaces/pwdgrp_cgi.py +0 -0
  53. {axis-53 → axis-55}/axis/vapix/interfaces/stream_profiles.py +0 -0
  54. {axis-53 → axis-55}/axis/vapix/interfaces/user_groups.py +0 -0
  55. {axis-53 → axis-55}/axis/vapix/interfaces/view_areas.py +0 -0
  56. {axis-53 → axis-55}/axis/vapix/models/__init__.py +0 -0
  57. {axis-53 → axis-55}/axis/vapix/models/api.py +0 -0
  58. {axis-53 → axis-55}/axis/vapix/models/api_discovery.py +0 -0
  59. {axis-53 → axis-55}/axis/vapix/models/applications/__init__.py +0 -0
  60. {axis-53 → axis-55}/axis/vapix/models/applications/fence_guard.py +0 -0
  61. {axis-53 → axis-55}/axis/vapix/models/applications/loitering_guard.py +0 -0
  62. {axis-53 → axis-55}/axis/vapix/models/applications/motion_guard.py +0 -0
  63. {axis-53 → axis-55}/axis/vapix/models/applications/object_analytics.py +0 -0
  64. {axis-53 → axis-55}/axis/vapix/models/applications/vmd4.py +0 -0
  65. {axis-53 → axis-55}/axis/vapix/models/basic_device_info.py +0 -0
  66. {axis-53 → axis-55}/axis/vapix/models/event_instance.py +0 -0
  67. {axis-53 → axis-55}/axis/vapix/models/light_control.py +0 -0
  68. {axis-53 → axis-55}/axis/vapix/models/mqtt.py +0 -0
  69. {axis-53 → axis-55}/axis/vapix/models/parameters/__init__.py +0 -0
  70. {axis-53 → axis-55}/axis/vapix/models/parameters/brand.py +0 -0
  71. {axis-53 → axis-55}/axis/vapix/models/parameters/image.py +0 -0
  72. {axis-53 → axis-55}/axis/vapix/models/parameters/io_port.py +0 -0
  73. {axis-53 → axis-55}/axis/vapix/models/parameters/param_cgi.py +0 -0
  74. {axis-53 → axis-55}/axis/vapix/models/parameters/properties.py +0 -0
  75. {axis-53 → axis-55}/axis/vapix/models/parameters/stream_profile.py +0 -0
  76. {axis-53 → axis-55}/axis/vapix/models/pir_sensor_configuration.py +0 -0
  77. {axis-53 → axis-55}/axis/vapix/models/port_cgi.py +0 -0
  78. {axis-53 → axis-55}/axis/vapix/models/port_management.py +0 -0
  79. {axis-53 → axis-55}/axis/vapix/models/ptz_cgi.py +0 -0
  80. {axis-53 → axis-55}/axis/vapix/models/pwdgrp_cgi.py +0 -0
  81. {axis-53 → axis-55}/axis/vapix/models/stream_profile.py +0 -0
  82. {axis-53 → axis-55}/axis/vapix/models/user_group.py +0 -0
  83. {axis-53 → axis-55}/axis/vapix/models/view_area.py +0 -0
  84. {axis-53 → axis-55}/axis/vapix/vapix.py +0 -0
  85. {axis-53 → axis-55}/axis.egg-info/SOURCES.txt +0 -0
  86. {axis-53 → axis-55}/axis.egg-info/dependency_links.txt +0 -0
  87. {axis-53 → axis-55}/axis.egg-info/top_level.txt +0 -0
  88. {axis-53 → axis-55}/setup.cfg +0 -0
  89. {axis-53 → axis-55}/tests/test_api_discovery.py +0 -0
  90. {axis-53 → axis-55}/tests/test_api_handler.py +0 -0
  91. {axis-53 → axis-55}/tests/test_basic_device_info.py +0 -0
  92. {axis-53 → axis-55}/tests/test_configuration.py +0 -0
  93. {axis-53 → axis-55}/tests/test_device.py +0 -0
  94. {axis-53 → axis-55}/tests/test_event.py +0 -0
  95. {axis-53 → axis-55}/tests/test_event_instances.py +0 -0
  96. {axis-53 → axis-55}/tests/test_event_stream.py +0 -0
  97. {axis-53 → axis-55}/tests/test_light_control.py +0 -0
  98. {axis-53 → axis-55}/tests/test_mqtt.py +0 -0
  99. {axis-53 → axis-55}/tests/test_pir_sensor_configuration.py +0 -0
  100. {axis-53 → axis-55}/tests/test_port_cgi.py +0 -0
  101. {axis-53 → axis-55}/tests/test_port_management.py +0 -0
  102. {axis-53 → axis-55}/tests/test_ptz.py +0 -0
  103. {axis-53 → axis-55}/tests/test_pwdgrp_cgi.py +0 -0
  104. {axis-53 → axis-55}/tests/test_rtsp.py +0 -0
  105. {axis-53 → axis-55}/tests/test_stream_manager.py +0 -0
  106. {axis-53 → axis-55}/tests/test_stream_profiles.py +0 -0
  107. {axis-53 → axis-55}/tests/test_user_groups.py +0 -0
  108. {axis-53 → axis-55}/tests/test_vapix.py +0 -0
  109. {axis-53 → axis-55}/tests/test_view_areas.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: axis
3
- Version: 53
3
+ Version: 55
4
4
  Summary: A Python library for communicating with devices from Axis Communications
5
5
  Home-page: https://github.com/Kane610/axis
6
- Download-URL: https://github.com/Kane610/axis/archive/v53.tar.gz
6
+ Download-URL: https://github.com/Kane610/axis/archive/v55.tar.gz
7
7
  Author: Robert Svensson
8
8
  Author-email: Robert Svensson <Kane610@users.noreply.github.com>
9
9
  License: MIT
@@ -27,16 +27,16 @@ Requires-Dist: xmltodict>=0.13.0
27
27
  Provides-Extra: requirements
28
28
  Requires-Dist: httpx==0.27.0; extra == "requirements"
29
29
  Requires-Dist: orjson==3.9.15; extra == "requirements"
30
- Requires-Dist: packaging==23.2; extra == "requirements"
30
+ Requires-Dist: packaging==24.0; extra == "requirements"
31
31
  Requires-Dist: xmltodict==0.13.0; extra == "requirements"
32
32
  Provides-Extra: requirements-test
33
- Requires-Dist: mypy==1.8.0; extra == "requirements-test"
34
- Requires-Dist: pytest==8.1.0; extra == "requirements-test"
33
+ Requires-Dist: mypy==1.9.0; extra == "requirements-test"
34
+ Requires-Dist: pytest==8.1.1; extra == "requirements-test"
35
35
  Requires-Dist: pytest-aiohttp==1.0.5; extra == "requirements-test"
36
- Requires-Dist: pytest-asyncio==0.23.5; extra == "requirements-test"
36
+ Requires-Dist: pytest-asyncio==0.23.5.post1; extra == "requirements-test"
37
37
  Requires-Dist: pytest-cov==4.1.0; extra == "requirements-test"
38
38
  Requires-Dist: respx==0.20.2; extra == "requirements-test"
39
- Requires-Dist: ruff==0.3.1; extra == "requirements-test"
39
+ Requires-Dist: ruff==0.3.2; extra == "requirements-test"
40
40
  Requires-Dist: types-orjson==3.6.2; extra == "requirements-test"
41
41
  Requires-Dist: types-xmltodict==v0.13.0.3; extra == "requirements-test"
42
42
  Provides-Extra: requirements-dev
@@ -32,9 +32,9 @@ class ApplicationsHandler(ApiHandler[Application]):
32
32
 
33
33
  async def _api_request(self) -> dict[str, Application]:
34
34
  """Get default data of API discovery."""
35
- return await self.get_api_list()
35
+ return await self.list_applications()
36
36
 
37
- async def get_api_list(self) -> dict[str, Application]:
37
+ async def list_applications(self) -> dict[str, Application]:
38
38
  """List all APIs registered on API Discovery service."""
39
39
  bytes_data = await self.vapix.api_request(ListApplicationsRequest())
40
40
  response = ListApplicationsResponse.decode(bytes_data)
@@ -75,10 +75,10 @@ class ApplicationStatus(enum.StrEnum):
75
75
  class Application(ApiItem):
76
76
  """Representation of an Application instance."""
77
77
 
78
- application_id: str
78
+ application_id: str | None
79
79
  """Id of application."""
80
80
 
81
- configuration_page: str
81
+ configuration_page: str | None
82
82
  """Relative URL to application configuration page."""
83
83
 
84
84
  license_name: str
@@ -130,8 +130,8 @@ class Application(ApiItem):
130
130
  """Decode dict to class object."""
131
131
  return cls(
132
132
  id=data["Name"],
133
- application_id=data["ApplicationID"],
134
- configuration_page=data["ConfigurationPage"],
133
+ application_id=data.get("ApplicationID"),
134
+ configuration_page=data.get("ConfigurationPage"),
135
135
  license_name=data.get("LicenseName", ""),
136
136
  license_status=ApplicationLicense(data["License"]),
137
137
  license_expiration_date=data.get("LicenseExpirationDate", ""),
@@ -23,14 +23,14 @@ class PtzLimitParamT(TypedDict):
23
23
  MaxIris: NotRequired[int]
24
24
  MaxPan: NotRequired[int]
25
25
  MaxTilt: NotRequired[int]
26
- MaxZoom: int
26
+ MaxZoom: NotRequired[int]
27
27
  MinBrightness: NotRequired[int]
28
- MinFieldAngle: int
28
+ MinFieldAngle: NotRequired[int]
29
29
  MinFocus: NotRequired[int]
30
30
  MinIris: NotRequired[int]
31
31
  MinPan: NotRequired[int]
32
32
  MinTilt: NotRequired[int]
33
- MinZoom: int
33
+ MinZoom: NotRequired[int]
34
34
 
35
35
 
36
36
  class PresetPositionT(TypedDict):
@@ -119,7 +119,7 @@ class PtzVariousParamT(TypedDict):
119
119
  ReturnToOverview: int
120
120
  SpeedCtlEnabled: NotRequired[bool]
121
121
  TiltEnabled: NotRequired[bool]
122
- ZoomEnabled: bool
122
+ ZoomEnabled: NotRequired[bool]
123
123
 
124
124
 
125
125
  class PtzParamT(TypedDict):
@@ -170,8 +170,6 @@ class PtzLimit:
170
170
  The purpose of those two parameters is to calibrate image centering.
171
171
  """
172
172
 
173
- max_zoom: int
174
- min_zoom: int
175
173
  max_brightness: int | None
176
174
  min_brightness: int | None
177
175
  max_field_angle: int | None
@@ -184,13 +182,15 @@ class PtzLimit:
184
182
  min_pan: int | None
185
183
  max_tilt: int | None
186
184
  min_tilt: int | None
185
+ max_zoom: int | None
186
+ min_zoom: int | None
187
187
 
188
188
  @classmethod
189
189
  def decode(cls, data: PtzLimitParamT) -> Self:
190
190
  """Decode dictionary to class object."""
191
191
  return cls(
192
- max_zoom=data["MaxZoom"],
193
- min_zoom=data["MinZoom"],
192
+ max_zoom=data.get("MaxZoom"),
193
+ min_zoom=data.get("MinZoom"),
194
194
  max_brightness=data.get("MaxBrightness"),
195
195
  min_brightness=data.get("MinBrightness"),
196
196
  max_field_angle=data.get("MaxFieldAngle"),
@@ -328,7 +328,7 @@ class PtzVarious:
328
328
  return_to_overview: int
329
329
  speed_control_enabled: bool | None
330
330
  tilt_enabled: bool | None
331
- zoom_enabled: bool
331
+ zoom_enabled: bool | None
332
332
 
333
333
  @classmethod
334
334
  def decode(cls, data: PtzVariousParamT) -> Self:
@@ -345,7 +345,7 @@ class PtzVarious:
345
345
  return_to_overview=data["ReturnToOverview"],
346
346
  speed_control_enabled=data.get("SpeedCtlEnabled"),
347
347
  tilt_enabled=data.get("TiltEnabled"),
348
- zoom_enabled=data["ZoomEnabled"],
348
+ zoom_enabled=data.get("ZoomEnabled"),
349
349
  )
350
350
 
351
351
  @classmethod
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: axis
3
- Version: 53
3
+ Version: 55
4
4
  Summary: A Python library for communicating with devices from Axis Communications
5
5
  Home-page: https://github.com/Kane610/axis
6
- Download-URL: https://github.com/Kane610/axis/archive/v53.tar.gz
6
+ Download-URL: https://github.com/Kane610/axis/archive/v55.tar.gz
7
7
  Author: Robert Svensson
8
8
  Author-email: Robert Svensson <Kane610@users.noreply.github.com>
9
9
  License: MIT
@@ -27,16 +27,16 @@ Requires-Dist: xmltodict>=0.13.0
27
27
  Provides-Extra: requirements
28
28
  Requires-Dist: httpx==0.27.0; extra == "requirements"
29
29
  Requires-Dist: orjson==3.9.15; extra == "requirements"
30
- Requires-Dist: packaging==23.2; extra == "requirements"
30
+ Requires-Dist: packaging==24.0; extra == "requirements"
31
31
  Requires-Dist: xmltodict==0.13.0; extra == "requirements"
32
32
  Provides-Extra: requirements-test
33
- Requires-Dist: mypy==1.8.0; extra == "requirements-test"
34
- Requires-Dist: pytest==8.1.0; extra == "requirements-test"
33
+ Requires-Dist: mypy==1.9.0; extra == "requirements-test"
34
+ Requires-Dist: pytest==8.1.1; extra == "requirements-test"
35
35
  Requires-Dist: pytest-aiohttp==1.0.5; extra == "requirements-test"
36
- Requires-Dist: pytest-asyncio==0.23.5; extra == "requirements-test"
36
+ Requires-Dist: pytest-asyncio==0.23.5.post1; extra == "requirements-test"
37
37
  Requires-Dist: pytest-cov==4.1.0; extra == "requirements-test"
38
38
  Requires-Dist: respx==0.20.2; extra == "requirements-test"
39
- Requires-Dist: ruff==0.3.1; extra == "requirements-test"
39
+ Requires-Dist: ruff==0.3.2; extra == "requirements-test"
40
40
  Requires-Dist: types-orjson==3.6.2; extra == "requirements-test"
41
41
  Requires-Dist: types-xmltodict==v0.13.0.3; extra == "requirements-test"
42
42
  Provides-Extra: requirements-dev
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ axis = axis.__main__:main
@@ -6,19 +6,19 @@ xmltodict>=0.13.0
6
6
  [requirements]
7
7
  httpx==0.27.0
8
8
  orjson==3.9.15
9
- packaging==23.2
9
+ packaging==24.0
10
10
  xmltodict==0.13.0
11
11
 
12
12
  [requirements_dev]
13
13
  pre-commit==3.6.2
14
14
 
15
15
  [requirements_test]
16
- mypy==1.8.0
17
- pytest==8.1.0
16
+ mypy==1.9.0
17
+ pytest==8.1.1
18
18
  pytest-aiohttp==1.0.5
19
- pytest-asyncio==0.23.5
19
+ pytest-asyncio==0.23.5.post1
20
20
  pytest-cov==4.1.0
21
21
  respx==0.20.2
22
- ruff==0.3.1
22
+ ruff==0.3.2
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 = "53"
7
+ version = "55"
8
8
  license = {text = "MIT"}
9
9
  description = "A Python library for communicating with devices from Axis Communications"
10
10
  readme = "README.md"
@@ -30,17 +30,17 @@ dependencies = [
30
30
  requirements = [
31
31
  "httpx==0.27.0",
32
32
  "orjson==3.9.15",
33
- "packaging==23.2",
33
+ "packaging==24.0",
34
34
  "xmltodict==0.13.0",
35
35
  ]
36
36
  requirements_test = [
37
- "mypy==1.8.0",
38
- "pytest==8.1.0",
37
+ "mypy==1.9.0",
38
+ "pytest==8.1.1",
39
39
  "pytest-aiohttp==1.0.5",
40
- "pytest-asyncio==0.23.5",
40
+ "pytest-asyncio==0.23.5.post1",
41
41
  "pytest-cov==4.1.0",
42
42
  "respx==0.20.2",
43
- "ruff==0.3.1",
43
+ "ruff==0.3.2",
44
44
  "types-orjson==3.6.2",
45
45
  "types-xmltodict==v0.13.0.3",
46
46
  ]
@@ -54,7 +54,7 @@ requirements_dev = [
54
54
  "Forum" = "https://community.home-assistant.io/t/axis-camera-component/"
55
55
 
56
56
  [project.scripts]
57
- aiounifi = "axis.__main__:main"
57
+ axis = "axis.__main__:main"
58
58
 
59
59
  [tool.coverage.report]
60
60
  fail_under = 95
@@ -113,6 +113,7 @@ lint.select = [
113
113
  "N804", # First argument of a class method should be named cls
114
114
  "N805", # First argument of a method should be named self
115
115
  # "N815", # Variable {name} in class scope should not be mixedCase
116
+ "PERF", # A Linter for performance anti-patterns
116
117
  "PGH004", # Use specific rule codes when using noqa
117
118
  "PLC0414", # Useless import alias. Import alias does not rename original package.
118
119
  "PLC", # pylint
@@ -4,7 +4,7 @@ from setuptools import find_packages, setup
4
4
 
5
5
  MIN_PY_VERSION = "3.11"
6
6
  PACKAGES = find_packages(exclude=["tests", "tests.*"])
7
- VERSION = "53"
7
+ VERSION = "55"
8
8
 
9
9
  setup(
10
10
  name="axis",
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- aiounifi = axis.__main__:main
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