axis 58__tar.gz → 59__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 (111) hide show
  1. axis-59/PKG-INFO +24 -0
  2. {axis-58 → axis-59}/axis/__main__.py +1 -1
  3. {axis-58 → axis-59}/axis/device.py +4 -4
  4. {axis-58/axis/vapix → axis-59/axis}/interfaces/api_handler.py +2 -2
  5. axis-58/axis/event_stream.py → axis-59/axis/interfaces/event_manager.py +3 -8
  6. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/param_cgi.py +1 -1
  7. {axis-58/axis/vapix → axis-59/axis/interfaces}/vapix.py +24 -24
  8. {axis-58/axis/vapix → axis-59/axis}/models/event_instance.py +1 -1
  9. axis-59/axis.egg-info/PKG-INFO +24 -0
  10. axis-59/axis.egg-info/SOURCES.txt +103 -0
  11. {axis-58 → axis-59}/axis.egg-info/requires.txt +2 -2
  12. {axis-58 → axis-59}/pyproject.toml +3 -3
  13. {axis-58 → axis-59}/tests/test_api_discovery.py +2 -2
  14. {axis-58 → axis-59}/tests/test_api_handler.py +1 -1
  15. {axis-58 → axis-59}/tests/test_basic_device_info.py +1 -1
  16. {axis-58 → axis-59}/tests/test_configuration.py +1 -1
  17. {axis-58 → axis-59}/tests/test_event_instances.py +2 -2
  18. {axis-58 → axis-59}/tests/test_event_stream.py +1 -1
  19. {axis-58 → axis-59}/tests/test_light_control.py +2 -2
  20. {axis-58 → axis-59}/tests/test_mqtt.py +2 -2
  21. {axis-58 → axis-59}/tests/test_pir_sensor_configuration.py +2 -2
  22. {axis-58 → axis-59}/tests/test_port_cgi.py +2 -2
  23. {axis-58 → axis-59}/tests/test_port_management.py +2 -2
  24. {axis-58 → axis-59}/tests/test_ptz.py +2 -2
  25. {axis-58 → axis-59}/tests/test_pwdgrp_cgi.py +2 -2
  26. {axis-58 → axis-59}/tests/test_stream_profiles.py +1 -1
  27. {axis-58 → axis-59}/tests/test_user_groups.py +2 -2
  28. {axis-58 → axis-59}/tests/test_vapix.py +4 -4
  29. {axis-58 → axis-59}/tests/test_view_areas.py +1 -1
  30. axis-58/PKG-INFO +0 -45
  31. axis-58/axis/vapix/__init__.py +0 -1
  32. axis-58/axis/vapix/models/__init__.py +0 -1
  33. axis-58/axis.egg-info/PKG-INFO +0 -45
  34. axis-58/axis.egg-info/SOURCES.txt +0 -106
  35. axis-58/setup.py +0 -25
  36. {axis-58 → axis-59}/LICENSE +0 -0
  37. {axis-58 → axis-59}/README.md +0 -0
  38. {axis-58 → axis-59}/axis/__init__.py +0 -0
  39. {axis-58 → axis-59}/axis/errors.py +0 -0
  40. {axis-58/axis/vapix → axis-59/axis}/interfaces/__init__.py +0 -0
  41. {axis-58/axis/vapix → axis-59/axis}/interfaces/api_discovery.py +0 -0
  42. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/__init__.py +0 -0
  43. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/application_handler.py +0 -0
  44. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/applications.py +0 -0
  45. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/fence_guard.py +0 -0
  46. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/loitering_guard.py +0 -0
  47. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/motion_guard.py +0 -0
  48. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/object_analytics.py +0 -0
  49. {axis-58/axis/vapix → axis-59/axis}/interfaces/applications/vmd4.py +0 -0
  50. {axis-58/axis/vapix → axis-59/axis}/interfaces/basic_device_info.py +0 -0
  51. {axis-58/axis/vapix → axis-59/axis}/interfaces/event_instances.py +0 -0
  52. {axis-58/axis/vapix → axis-59/axis}/interfaces/light_control.py +0 -0
  53. {axis-58/axis/vapix → axis-59/axis}/interfaces/mqtt.py +0 -0
  54. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/__init__.py +0 -0
  55. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/brand.py +0 -0
  56. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/image.py +0 -0
  57. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/io_port.py +0 -0
  58. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/param_handler.py +0 -0
  59. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/properties.py +0 -0
  60. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/ptz.py +0 -0
  61. {axis-58/axis/vapix → axis-59/axis}/interfaces/parameters/stream_profile.py +0 -0
  62. {axis-58/axis/vapix → axis-59/axis}/interfaces/pir_sensor_configuration.py +0 -0
  63. {axis-58/axis/vapix → axis-59/axis}/interfaces/port_cgi.py +0 -0
  64. {axis-58/axis/vapix → axis-59/axis}/interfaces/port_management.py +0 -0
  65. {axis-58/axis/vapix → axis-59/axis}/interfaces/ptz.py +0 -0
  66. {axis-58/axis/vapix → axis-59/axis}/interfaces/pwdgrp_cgi.py +0 -0
  67. {axis-58/axis/vapix → axis-59/axis}/interfaces/stream_profiles.py +0 -0
  68. {axis-58/axis/vapix → axis-59/axis}/interfaces/user_groups.py +0 -0
  69. {axis-58/axis/vapix → axis-59/axis}/interfaces/view_areas.py +0 -0
  70. {axis-58 → axis-59}/axis/models/__init__.py +0 -0
  71. {axis-58/axis/vapix → axis-59/axis}/models/api.py +0 -0
  72. {axis-58/axis/vapix → axis-59/axis}/models/api_discovery.py +0 -0
  73. {axis-58/axis/vapix → axis-59/axis}/models/applications/__init__.py +0 -0
  74. {axis-58/axis/vapix → axis-59/axis}/models/applications/application.py +0 -0
  75. {axis-58/axis/vapix → axis-59/axis}/models/applications/fence_guard.py +0 -0
  76. {axis-58/axis/vapix → axis-59/axis}/models/applications/loitering_guard.py +0 -0
  77. {axis-58/axis/vapix → axis-59/axis}/models/applications/motion_guard.py +0 -0
  78. {axis-58/axis/vapix → axis-59/axis}/models/applications/object_analytics.py +0 -0
  79. {axis-58/axis/vapix → axis-59/axis}/models/applications/vmd4.py +0 -0
  80. {axis-58/axis/vapix → axis-59/axis}/models/basic_device_info.py +0 -0
  81. {axis-58/axis → axis-59/axis/models}/configuration.py +0 -0
  82. {axis-58 → axis-59}/axis/models/event.py +0 -0
  83. {axis-58/axis/vapix → axis-59/axis}/models/light_control.py +0 -0
  84. {axis-58/axis/vapix → axis-59/axis}/models/mqtt.py +0 -0
  85. {axis-58/axis/vapix → axis-59/axis}/models/parameters/__init__.py +0 -0
  86. {axis-58/axis/vapix → axis-59/axis}/models/parameters/brand.py +0 -0
  87. {axis-58/axis/vapix → axis-59/axis}/models/parameters/image.py +0 -0
  88. {axis-58/axis/vapix → axis-59/axis}/models/parameters/io_port.py +0 -0
  89. {axis-58/axis/vapix → axis-59/axis}/models/parameters/param_cgi.py +0 -0
  90. {axis-58/axis/vapix → axis-59/axis}/models/parameters/properties.py +0 -0
  91. {axis-58/axis/vapix → axis-59/axis}/models/parameters/ptz.py +0 -0
  92. {axis-58/axis/vapix → axis-59/axis}/models/parameters/stream_profile.py +0 -0
  93. {axis-58/axis/vapix → axis-59/axis}/models/pir_sensor_configuration.py +0 -0
  94. {axis-58/axis/vapix → axis-59/axis}/models/port_cgi.py +0 -0
  95. {axis-58/axis/vapix → axis-59/axis}/models/port_management.py +0 -0
  96. {axis-58/axis/vapix → axis-59/axis}/models/ptz_cgi.py +0 -0
  97. {axis-58/axis/vapix → axis-59/axis}/models/pwdgrp_cgi.py +0 -0
  98. {axis-58/axis/vapix → axis-59/axis}/models/stream_profile.py +0 -0
  99. {axis-58/axis/vapix → axis-59/axis}/models/user_group.py +0 -0
  100. {axis-58/axis/vapix → axis-59/axis}/models/view_area.py +0 -0
  101. {axis-58 → axis-59}/axis/py.typed +0 -0
  102. {axis-58 → axis-59}/axis/rtsp.py +0 -0
  103. {axis-58 → axis-59}/axis/stream_manager.py +0 -0
  104. {axis-58 → axis-59}/axis.egg-info/dependency_links.txt +0 -0
  105. {axis-58 → axis-59}/axis.egg-info/entry_points.txt +0 -0
  106. {axis-58 → axis-59}/axis.egg-info/top_level.txt +0 -0
  107. {axis-58 → axis-59}/setup.cfg +0 -0
  108. {axis-58 → axis-59}/tests/test_device.py +0 -0
  109. {axis-58 → axis-59}/tests/test_event.py +0 -0
  110. {axis-58 → axis-59}/tests/test_rtsp.py +0 -0
  111. {axis-58 → axis-59}/tests/test_stream_manager.py +0 -0
axis-59/PKG-INFO ADDED
@@ -0,0 +1,24 @@
1
+ Metadata-Version: 2.1
2
+ Name: axis
3
+ Version: 59
4
+ Summary: A Python library for communicating with devices from Axis Communications
5
+ Author-email: Robert Svensson <Kane610@users.noreply.github.com>
6
+ License: MIT
7
+ Project-URL: Source Code, https://github.com/Kane610/axis
8
+ Project-URL: Bug Reports, https://github.com/Kane610/axis/issues
9
+ Project-URL: Forum, https://community.home-assistant.io/t/axis-camera-component/
10
+ Keywords: axis,vapix,homeassistant
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Topic :: Home Automation
17
+ Requires-Python: >=3.11.0
18
+ Description-Content-Type: text/markdown
19
+ Provides-Extra: requirements
20
+ Provides-Extra: requirements_test
21
+ Provides-Extra: requirements_dev
22
+ License-File: LICENSE
23
+
24
+ Python project to set up a connection towards Axis Communications devices and to subscribe to specific events on the metadatastream.
@@ -22,7 +22,7 @@ async def axis_device(
22
22
  """Create a Axis device."""
23
23
  session = AsyncClient(verify=False)
24
24
  device = axis.device.AxisDevice(
25
- axis.configuration.Configuration(
25
+ axis.models.configuration.Configuration(
26
26
  session, host, port=port, username=username, password=password
27
27
  )
28
28
  )
@@ -1,9 +1,9 @@
1
1
  """Python library to enable Axis devices to integrate with Home Assistant."""
2
2
 
3
- from .configuration import Configuration
4
- from .event_stream import EventManager
3
+ from .interfaces.event_manager import EventManager
4
+ from .interfaces.vapix import Vapix
5
+ from .models.configuration import Configuration
5
6
  from .stream_manager import StreamManager
6
- from .vapix.vapix import Vapix
7
7
 
8
8
 
9
9
  class AxisDevice:
@@ -14,7 +14,7 @@ class AxisDevice:
14
14
  self.config = configuration
15
15
  self.vapix = Vapix(self)
16
16
  self.stream = StreamManager(self)
17
- self.event = EventManager(self)
17
+ self.event = EventManager()
18
18
 
19
19
  def enable_events(self) -> None:
20
20
  """Enable events for stream."""
@@ -11,11 +11,11 @@ from collections.abc import (
11
11
  )
12
12
  from typing import TYPE_CHECKING, Generic, final
13
13
 
14
- from ...errors import Forbidden, PathNotFound, Unauthorized
14
+ from ..errors import Forbidden, PathNotFound, Unauthorized
15
15
 
16
16
  if TYPE_CHECKING:
17
17
  from ..models.api_discovery import ApiId
18
- from ..vapix import Vapix
18
+ from .vapix import Vapix
19
19
 
20
20
  from ..models.api import ApiItemT
21
21
 
@@ -2,13 +2,9 @@
2
2
 
3
3
  from collections.abc import Callable
4
4
  import logging
5
- from typing import TYPE_CHECKING, Any
6
-
7
- from .models.event import Event, EventOperation, EventTopic
8
-
9
- if TYPE_CHECKING:
10
- from .device import AxisDevice
5
+ from typing import Any
11
6
 
7
+ from ..models.event import Event, EventOperation, EventTopic
12
8
 
13
9
  SubscriptionCallback = Callable[[Event], None]
14
10
  SubscriptionType = tuple[
@@ -30,9 +26,8 @@ LOGGER = logging.getLogger(__name__)
30
26
  class EventManager:
31
27
  """Initialize new events and update states of existing events."""
32
28
 
33
- def __init__(self, device: "AxisDevice") -> None:
29
+ def __init__(self) -> None:
34
30
  """Ready information about events."""
35
- self.device = device
36
31
  self._known_topics: set[str] = set()
37
32
  self._subscribers: dict[str, list[SubscriptionType]] = {ID_FILTER_ALL: []}
38
33
 
@@ -14,7 +14,7 @@ from .ptz import PtzParameterHandler
14
14
  from .stream_profile import StreamProfileParameterHandler
15
15
 
16
16
  if TYPE_CHECKING:
17
- from ...vapix import Vapix
17
+ from ..vapix import Vapix
18
18
 
19
19
 
20
20
  class Params(ApiHandler[Any]):
@@ -7,36 +7,36 @@ from typing import TYPE_CHECKING, Any
7
7
  import httpx
8
8
 
9
9
  from ..errors import RequestError, raise_error
10
- from .interfaces.api_discovery import ApiDiscoveryHandler
11
- from .interfaces.api_handler import ApiHandler
12
- from .interfaces.applications import (
10
+ from ..models.api import ApiRequest
11
+ from ..models.pwdgrp_cgi import SecondaryGroup
12
+ from ..models.stream_profile import StreamProfile
13
+ from .api_discovery import ApiDiscoveryHandler
14
+ from .api_handler import ApiHandler
15
+ from .applications import (
13
16
  ApplicationsHandler,
14
17
  )
15
- from .interfaces.applications.fence_guard import FenceGuardHandler
16
- from .interfaces.applications.loitering_guard import (
18
+ from .applications.fence_guard import FenceGuardHandler
19
+ from .applications.loitering_guard import (
17
20
  LoiteringGuardHandler,
18
21
  )
19
- from .interfaces.applications.motion_guard import MotionGuardHandler
20
- from .interfaces.applications.object_analytics import (
22
+ from .applications.motion_guard import MotionGuardHandler
23
+ from .applications.object_analytics import (
21
24
  ObjectAnalyticsHandler,
22
25
  )
23
- from .interfaces.applications.vmd4 import Vmd4Handler
24
- from .interfaces.basic_device_info import BasicDeviceInfoHandler
25
- from .interfaces.event_instances import EventInstanceHandler
26
- from .interfaces.light_control import LightHandler
27
- from .interfaces.mqtt import MqttClientHandler
28
- from .interfaces.parameters.param_cgi import Params
29
- from .interfaces.pir_sensor_configuration import PirSensorConfigurationHandler
30
- from .interfaces.port_cgi import Ports
31
- from .interfaces.port_management import IoPortManagement
32
- from .interfaces.ptz import PtzControl
33
- from .interfaces.pwdgrp_cgi import Users
34
- from .interfaces.stream_profiles import StreamProfilesHandler
35
- from .interfaces.user_groups import UserGroups
36
- from .interfaces.view_areas import ViewAreaHandler
37
- from .models.api import ApiRequest
38
- from .models.pwdgrp_cgi import SecondaryGroup
39
- from .models.stream_profile import StreamProfile
26
+ from .applications.vmd4 import Vmd4Handler
27
+ from .basic_device_info import BasicDeviceInfoHandler
28
+ from .event_instances import EventInstanceHandler
29
+ from .light_control import LightHandler
30
+ from .mqtt import MqttClientHandler
31
+ from .parameters.param_cgi import Params
32
+ from .pir_sensor_configuration import PirSensorConfigurationHandler
33
+ from .port_cgi import Ports
34
+ from .port_management import IoPortManagement
35
+ from .ptz import PtzControl
36
+ from .pwdgrp_cgi import Users
37
+ from .stream_profiles import StreamProfilesHandler
38
+ from .user_groups import UserGroups
39
+ from .view_areas import ViewAreaHandler
40
40
 
41
41
  if TYPE_CHECKING:
42
42
  from ..device import AxisDevice
@@ -5,8 +5,8 @@ from typing import Any, Self
5
5
 
6
6
  import xmltodict
7
7
 
8
- from ...models.event import traverse
9
8
  from .api import ApiItem, ApiRequest, ApiResponse
9
+ from .event import traverse
10
10
 
11
11
  EVENT_INSTANCE = (
12
12
  "http://www.w3.org/2003/05/soap-envelope:Envelope",
@@ -0,0 +1,24 @@
1
+ Metadata-Version: 2.1
2
+ Name: axis
3
+ Version: 59
4
+ Summary: A Python library for communicating with devices from Axis Communications
5
+ Author-email: Robert Svensson <Kane610@users.noreply.github.com>
6
+ License: MIT
7
+ Project-URL: Source Code, https://github.com/Kane610/axis
8
+ Project-URL: Bug Reports, https://github.com/Kane610/axis/issues
9
+ Project-URL: Forum, https://community.home-assistant.io/t/axis-camera-component/
10
+ Keywords: axis,vapix,homeassistant
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Topic :: Home Automation
17
+ Requires-Python: >=3.11.0
18
+ Description-Content-Type: text/markdown
19
+ Provides-Extra: requirements
20
+ Provides-Extra: requirements_test
21
+ Provides-Extra: requirements_dev
22
+ License-File: LICENSE
23
+
24
+ Python project to set up a connection towards Axis Communications devices and to subscribe to specific events on the metadatastream.
@@ -0,0 +1,103 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ axis/__init__.py
5
+ axis/__main__.py
6
+ axis/device.py
7
+ axis/errors.py
8
+ axis/py.typed
9
+ axis/rtsp.py
10
+ axis/stream_manager.py
11
+ axis.egg-info/PKG-INFO
12
+ axis.egg-info/SOURCES.txt
13
+ axis.egg-info/dependency_links.txt
14
+ axis.egg-info/entry_points.txt
15
+ axis.egg-info/requires.txt
16
+ axis.egg-info/top_level.txt
17
+ axis/interfaces/__init__.py
18
+ axis/interfaces/api_discovery.py
19
+ axis/interfaces/api_handler.py
20
+ axis/interfaces/basic_device_info.py
21
+ axis/interfaces/event_instances.py
22
+ axis/interfaces/event_manager.py
23
+ axis/interfaces/light_control.py
24
+ axis/interfaces/mqtt.py
25
+ axis/interfaces/pir_sensor_configuration.py
26
+ axis/interfaces/port_cgi.py
27
+ axis/interfaces/port_management.py
28
+ axis/interfaces/ptz.py
29
+ axis/interfaces/pwdgrp_cgi.py
30
+ axis/interfaces/stream_profiles.py
31
+ axis/interfaces/user_groups.py
32
+ axis/interfaces/vapix.py
33
+ axis/interfaces/view_areas.py
34
+ axis/interfaces/applications/__init__.py
35
+ axis/interfaces/applications/application_handler.py
36
+ axis/interfaces/applications/applications.py
37
+ axis/interfaces/applications/fence_guard.py
38
+ axis/interfaces/applications/loitering_guard.py
39
+ axis/interfaces/applications/motion_guard.py
40
+ axis/interfaces/applications/object_analytics.py
41
+ axis/interfaces/applications/vmd4.py
42
+ axis/interfaces/parameters/__init__.py
43
+ axis/interfaces/parameters/brand.py
44
+ axis/interfaces/parameters/image.py
45
+ axis/interfaces/parameters/io_port.py
46
+ axis/interfaces/parameters/param_cgi.py
47
+ axis/interfaces/parameters/param_handler.py
48
+ axis/interfaces/parameters/properties.py
49
+ axis/interfaces/parameters/ptz.py
50
+ axis/interfaces/parameters/stream_profile.py
51
+ axis/models/__init__.py
52
+ axis/models/api.py
53
+ axis/models/api_discovery.py
54
+ axis/models/basic_device_info.py
55
+ axis/models/configuration.py
56
+ axis/models/event.py
57
+ axis/models/event_instance.py
58
+ axis/models/light_control.py
59
+ axis/models/mqtt.py
60
+ axis/models/pir_sensor_configuration.py
61
+ axis/models/port_cgi.py
62
+ axis/models/port_management.py
63
+ axis/models/ptz_cgi.py
64
+ axis/models/pwdgrp_cgi.py
65
+ axis/models/stream_profile.py
66
+ axis/models/user_group.py
67
+ axis/models/view_area.py
68
+ axis/models/applications/__init__.py
69
+ axis/models/applications/application.py
70
+ axis/models/applications/fence_guard.py
71
+ axis/models/applications/loitering_guard.py
72
+ axis/models/applications/motion_guard.py
73
+ axis/models/applications/object_analytics.py
74
+ axis/models/applications/vmd4.py
75
+ axis/models/parameters/__init__.py
76
+ axis/models/parameters/brand.py
77
+ axis/models/parameters/image.py
78
+ axis/models/parameters/io_port.py
79
+ axis/models/parameters/param_cgi.py
80
+ axis/models/parameters/properties.py
81
+ axis/models/parameters/ptz.py
82
+ axis/models/parameters/stream_profile.py
83
+ tests/test_api_discovery.py
84
+ tests/test_api_handler.py
85
+ tests/test_basic_device_info.py
86
+ tests/test_configuration.py
87
+ tests/test_device.py
88
+ tests/test_event.py
89
+ tests/test_event_instances.py
90
+ tests/test_event_stream.py
91
+ tests/test_light_control.py
92
+ tests/test_mqtt.py
93
+ tests/test_pir_sensor_configuration.py
94
+ tests/test_port_cgi.py
95
+ tests/test_port_management.py
96
+ tests/test_ptz.py
97
+ tests/test_pwdgrp_cgi.py
98
+ tests/test_rtsp.py
99
+ tests/test_stream_manager.py
100
+ tests/test_stream_profiles.py
101
+ tests/test_user_groups.py
102
+ tests/test_vapix.py
103
+ tests/test_view_areas.py
@@ -10,14 +10,14 @@ packaging==24.0
10
10
  xmltodict==0.13.0
11
11
 
12
12
  [requirements_dev]
13
- pre-commit==3.6.2
13
+ pre-commit==3.7.0
14
14
 
15
15
  [requirements_test]
16
16
  mypy==1.9.0
17
17
  pytest==8.1.1
18
18
  pytest-aiohttp==1.0.5
19
19
  pytest-asyncio==0.23.6
20
- pytest-cov==4.1.0
20
+ pytest-cov==5.0.0
21
21
  respx==0.21.0
22
22
  ruff==0.3.4
23
23
  types-orjson==3.6.2
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "axis"
7
- version = "58"
7
+ version = "59"
8
8
  license = {text = "MIT"}
9
9
  description = "A Python library for communicating with devices from Axis Communications"
10
10
  readme = "README.md"
@@ -38,14 +38,14 @@ requirements_test = [
38
38
  "pytest==8.1.1",
39
39
  "pytest-aiohttp==1.0.5",
40
40
  "pytest-asyncio==0.23.6",
41
- "pytest-cov==4.1.0",
41
+ "pytest-cov==5.0.0",
42
42
  "respx==0.21.0",
43
43
  "ruff==0.3.4",
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.6.2"
48
+ "pre-commit==3.7.0"
49
49
  ]
50
50
 
51
51
  [project.urls]
@@ -8,8 +8,8 @@ import json
8
8
  import pytest
9
9
 
10
10
  from axis.device import AxisDevice
11
- from axis.vapix.interfaces.api_discovery import ApiDiscoveryHandler
12
- from axis.vapix.models.api_discovery import ApiId, ApiStatus
11
+ from axis.interfaces.api_discovery import ApiDiscoveryHandler
12
+ from axis.models.api_discovery import ApiId, ApiStatus
13
13
 
14
14
 
15
15
  @pytest.fixture
@@ -4,7 +4,7 @@ from unittest.mock import Mock
4
4
 
5
5
  import pytest
6
6
 
7
- from axis.vapix.interfaces.api_handler import SubscriptionHandler
7
+ from axis.interfaces.api_handler import SubscriptionHandler
8
8
 
9
9
 
10
10
  @pytest.fixture
@@ -9,7 +9,7 @@ from unittest.mock import MagicMock
9
9
  import pytest
10
10
 
11
11
  from axis.device import AxisDevice
12
- from axis.vapix.interfaces.basic_device_info import BasicDeviceInfoHandler
12
+ from axis.interfaces.basic_device_info import BasicDeviceInfoHandler
13
13
 
14
14
 
15
15
  @pytest.fixture
@@ -5,7 +5,7 @@ pytest --cov-report term-missing --cov=axis.configuration tests/test_configurati
5
5
 
6
6
  from httpx import AsyncClient
7
7
 
8
- from axis.configuration import Configuration
8
+ from axis.models.configuration import Configuration
9
9
 
10
10
 
11
11
  def test_configuration():
@@ -5,8 +5,8 @@ pytest --cov-report term-missing --cov=axis.event_instances tests/test_event_ins
5
5
 
6
6
  import pytest
7
7
 
8
- from axis.vapix.interfaces.event_instances import EventInstanceHandler
9
- from axis.vapix.models.event_instance import get_events
8
+ from axis.interfaces.event_instances import EventInstanceHandler
9
+ from axis.models.event_instance import get_events
10
10
 
11
11
  from .event_fixtures import (
12
12
  EVENT_INSTANCE_PIR_SENSOR,
@@ -8,7 +8,7 @@ from unittest.mock import Mock
8
8
  import pytest
9
9
 
10
10
  from axis.device import AxisDevice
11
- from axis.event_stream import EventManager
11
+ from axis.interfaces.event_manager import EventManager
12
12
  from axis.models.event import Event, EventGroup, EventOperation, EventTopic
13
13
 
14
14
  from .event_fixtures import (
@@ -8,8 +8,8 @@ import json
8
8
  import pytest
9
9
 
10
10
  from axis.device import AxisDevice
11
- from axis.vapix.interfaces.light_control import LightHandler
12
- from axis.vapix.models.api_discovery import Api
11
+ from axis.interfaces.light_control import LightHandler
12
+ from axis.models.api_discovery import Api
13
13
 
14
14
 
15
15
  @pytest.fixture
@@ -9,8 +9,8 @@ from unittest.mock import MagicMock
9
9
  import pytest
10
10
 
11
11
  from axis.device import AxisDevice
12
- from axis.vapix.interfaces.mqtt import MqttClientHandler, mqtt_json_to_event
13
- from axis.vapix.models.mqtt import ClientConfig, Message, Server, ServerProtocol, Ssl
12
+ from axis.interfaces.mqtt import MqttClientHandler, mqtt_json_to_event
13
+ from axis.models.mqtt import ClientConfig, Message, Server, ServerProtocol, Ssl
14
14
 
15
15
 
16
16
  @pytest.fixture
@@ -1,6 +1,6 @@
1
1
  """Test Axis PIR sensor configuration API.
2
2
 
3
- pytest --cov-report term-missing --cov=axis.vapix.interfaces.pir_sensor_configuration tests/test_pir_sensor_configuration.py
3
+ pytest --cov-report term-missing --cov=axis.interfaces.pir_sensor_configuration tests/test_pir_sensor_configuration.py
4
4
  """
5
5
 
6
6
  import json
@@ -9,7 +9,7 @@ from unittest.mock import MagicMock
9
9
  import pytest
10
10
 
11
11
  from axis.device import AxisDevice
12
- from axis.vapix.interfaces.pir_sensor_configuration import PirSensorConfigurationHandler
12
+ from axis.interfaces.pir_sensor_configuration import PirSensorConfigurationHandler
13
13
 
14
14
 
15
15
  @pytest.fixture
@@ -5,8 +5,8 @@ pytest --cov-report term-missing --cov=axis.port_cgi tests/test_port_cgi.py
5
5
 
6
6
  import pytest
7
7
 
8
- from axis.vapix.interfaces.port_cgi import Ports
9
- from axis.vapix.models.parameters.io_port import PortAction, PortDirection
8
+ from axis.interfaces.port_cgi import Ports
9
+ from axis.models.parameters.io_port import PortAction, PortDirection
10
10
 
11
11
  from .conftest import HOST
12
12
 
@@ -7,8 +7,8 @@ import json
7
7
 
8
8
  import pytest
9
9
 
10
- from axis.vapix.interfaces.port_management import IoPortManagement
11
- from axis.vapix.models.port_management import PortConfiguration, Sequence
10
+ from axis.interfaces.port_management import IoPortManagement
11
+ from axis.models.port_management import PortConfiguration, Sequence
12
12
 
13
13
 
14
14
  @pytest.fixture
@@ -5,8 +5,8 @@ from urllib.parse import urlencode
5
5
  import pytest
6
6
 
7
7
  from axis.device import AxisDevice
8
- from axis.vapix.interfaces.ptz import PtzControl
9
- from axis.vapix.models.ptz_cgi import PtzMove, PtzQuery, PtzRotation, PtzState
8
+ from axis.interfaces.ptz import PtzControl
9
+ from axis.models.ptz_cgi import PtzMove, PtzQuery, PtzRotation, PtzState
10
10
 
11
11
  from .parameters.test_ptz import PTZ_RESPONSE
12
12
 
@@ -4,8 +4,8 @@ import urllib
4
4
 
5
5
  import pytest
6
6
 
7
- from axis.vapix.interfaces.pwdgrp_cgi import Users
8
- from axis.vapix.models.pwdgrp_cgi import SecondaryGroup, User
7
+ from axis.interfaces.pwdgrp_cgi import Users
8
+ from axis.models.pwdgrp_cgi import SecondaryGroup, User
9
9
 
10
10
 
11
11
  @pytest.fixture
@@ -6,7 +6,7 @@ from unittest.mock import MagicMock
6
6
  import pytest
7
7
 
8
8
  from axis.device import AxisDevice
9
- from axis.vapix.interfaces.stream_profiles import StreamProfilesHandler
9
+ from axis.interfaces.stream_profiles import StreamProfilesHandler
10
10
 
11
11
 
12
12
  @pytest.fixture
@@ -5,8 +5,8 @@ pytest --cov-report term-missing --cov=axis.user_groups tests/test_user_groups.p
5
5
 
6
6
  import pytest
7
7
 
8
- from axis.vapix.interfaces.user_groups import UserGroups
9
- from axis.vapix.models.pwdgrp_cgi import SecondaryGroup
8
+ from axis.interfaces.user_groups import UserGroups
9
+ from axis.models.pwdgrp_cgi import SecondaryGroup
10
10
 
11
11
 
12
12
  @pytest.fixture
@@ -14,10 +14,10 @@ from axis.errors import (
14
14
  RequestError,
15
15
  Unauthorized,
16
16
  )
17
- from axis.vapix.models.applications.application import ApplicationStatus
18
- from axis.vapix.models.pwdgrp_cgi import SecondaryGroup
19
- from axis.vapix.models.stream_profile import StreamProfile
20
- from axis.vapix.vapix import Vapix
17
+ from axis.interfaces.vapix import Vapix
18
+ from axis.models.applications.application import ApplicationStatus
19
+ from axis.models.pwdgrp_cgi import SecondaryGroup
20
+ from axis.models.stream_profile import StreamProfile
21
21
 
22
22
  from .applications.test_applications import (
23
23
  LIST_APPLICATIONS_RESPONSE as APPLICATIONS_RESPONSE,
@@ -9,7 +9,7 @@ from unittest.mock import MagicMock
9
9
  import pytest
10
10
 
11
11
  from axis.device import AxisDevice
12
- from axis.vapix.interfaces.view_areas import Geometry, ViewAreaHandler
12
+ from axis.interfaces.view_areas import Geometry, ViewAreaHandler
13
13
 
14
14
 
15
15
  @pytest.fixture
axis-58/PKG-INFO DELETED
@@ -1,45 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: axis
3
- Version: 58
4
- Summary: A Python library for communicating with devices from Axis Communications
5
- Home-page: https://github.com/Kane610/axis
6
- Download-URL: https://github.com/Kane610/axis/archive/v58.tar.gz
7
- Author: Robert Svensson
8
- Author-email: Robert Svensson <Kane610@users.noreply.github.com>
9
- License: MIT
10
- Project-URL: Source Code, https://github.com/Kane610/axis
11
- Project-URL: Bug Reports, https://github.com/Kane610/axis/issues
12
- Project-URL: Forum, https://community.home-assistant.io/t/axis-camera-component/
13
- Keywords: axis,vapix,homeassistant
14
- Classifier: Development Status :: 5 - Production/Stable
15
- Classifier: Intended Audience :: Developers
16
- Classifier: License :: OSI Approved :: MIT License
17
- Classifier: Operating System :: OS Independent
18
- Classifier: Programming Language :: Python :: 3.11
19
- Classifier: Topic :: Home Automation
20
- Requires-Python: >=3.11
21
- Description-Content-Type: text/markdown
22
- License-File: LICENSE
23
- Requires-Dist: httpx>=0.26
24
- Requires-Dist: orjson>3.9
25
- Requires-Dist: packaging>23
26
- Requires-Dist: xmltodict>=0.13.0
27
- Provides-Extra: requirements
28
- Requires-Dist: httpx==0.27.0; extra == "requirements"
29
- Requires-Dist: orjson==3.9.15; extra == "requirements"
30
- Requires-Dist: packaging==24.0; extra == "requirements"
31
- Requires-Dist: xmltodict==0.13.0; extra == "requirements"
32
- Provides-Extra: requirements-test
33
- Requires-Dist: mypy==1.9.0; extra == "requirements-test"
34
- Requires-Dist: pytest==8.1.1; extra == "requirements-test"
35
- Requires-Dist: pytest-aiohttp==1.0.5; extra == "requirements-test"
36
- Requires-Dist: pytest-asyncio==0.23.6; extra == "requirements-test"
37
- Requires-Dist: pytest-cov==4.1.0; extra == "requirements-test"
38
- Requires-Dist: respx==0.21.0; extra == "requirements-test"
39
- Requires-Dist: ruff==0.3.4; extra == "requirements-test"
40
- Requires-Dist: types-orjson==3.6.2; extra == "requirements-test"
41
- Requires-Dist: types-xmltodict==v0.13.0.3; extra == "requirements-test"
42
- Provides-Extra: requirements-dev
43
- Requires-Dist: pre-commit==3.6.2; extra == "requirements-dev"
44
-
45
- Python project to set up a connection towards Axis Communications devices and to subscribe to specific events on the metadatastream.
@@ -1 +0,0 @@
1
- """Vapix module."""
@@ -1 +0,0 @@
1
- """Data models."""
@@ -1,45 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: axis
3
- Version: 58
4
- Summary: A Python library for communicating with devices from Axis Communications
5
- Home-page: https://github.com/Kane610/axis
6
- Download-URL: https://github.com/Kane610/axis/archive/v58.tar.gz
7
- Author: Robert Svensson
8
- Author-email: Robert Svensson <Kane610@users.noreply.github.com>
9
- License: MIT
10
- Project-URL: Source Code, https://github.com/Kane610/axis
11
- Project-URL: Bug Reports, https://github.com/Kane610/axis/issues
12
- Project-URL: Forum, https://community.home-assistant.io/t/axis-camera-component/
13
- Keywords: axis,vapix,homeassistant
14
- Classifier: Development Status :: 5 - Production/Stable
15
- Classifier: Intended Audience :: Developers
16
- Classifier: License :: OSI Approved :: MIT License
17
- Classifier: Operating System :: OS Independent
18
- Classifier: Programming Language :: Python :: 3.11
19
- Classifier: Topic :: Home Automation
20
- Requires-Python: >=3.11
21
- Description-Content-Type: text/markdown
22
- License-File: LICENSE
23
- Requires-Dist: httpx>=0.26
24
- Requires-Dist: orjson>3.9
25
- Requires-Dist: packaging>23
26
- Requires-Dist: xmltodict>=0.13.0
27
- Provides-Extra: requirements
28
- Requires-Dist: httpx==0.27.0; extra == "requirements"
29
- Requires-Dist: orjson==3.9.15; extra == "requirements"
30
- Requires-Dist: packaging==24.0; extra == "requirements"
31
- Requires-Dist: xmltodict==0.13.0; extra == "requirements"
32
- Provides-Extra: requirements-test
33
- Requires-Dist: mypy==1.9.0; extra == "requirements-test"
34
- Requires-Dist: pytest==8.1.1; extra == "requirements-test"
35
- Requires-Dist: pytest-aiohttp==1.0.5; extra == "requirements-test"
36
- Requires-Dist: pytest-asyncio==0.23.6; extra == "requirements-test"
37
- Requires-Dist: pytest-cov==4.1.0; extra == "requirements-test"
38
- Requires-Dist: respx==0.21.0; extra == "requirements-test"
39
- Requires-Dist: ruff==0.3.4; extra == "requirements-test"
40
- Requires-Dist: types-orjson==3.6.2; extra == "requirements-test"
41
- Requires-Dist: types-xmltodict==v0.13.0.3; extra == "requirements-test"
42
- Provides-Extra: requirements-dev
43
- Requires-Dist: pre-commit==3.6.2; extra == "requirements-dev"
44
-
45
- Python project to set up a connection towards Axis Communications devices and to subscribe to specific events on the metadatastream.
@@ -1,106 +0,0 @@
1
- LICENSE
2
- README.md
3
- pyproject.toml
4
- setup.py
5
- axis/__init__.py
6
- axis/__main__.py
7
- axis/configuration.py
8
- axis/device.py
9
- axis/errors.py
10
- axis/event_stream.py
11
- axis/py.typed
12
- axis/rtsp.py
13
- axis/stream_manager.py
14
- axis.egg-info/PKG-INFO
15
- axis.egg-info/SOURCES.txt
16
- axis.egg-info/dependency_links.txt
17
- axis.egg-info/entry_points.txt
18
- axis.egg-info/requires.txt
19
- axis.egg-info/top_level.txt
20
- axis/models/__init__.py
21
- axis/models/event.py
22
- axis/vapix/__init__.py
23
- axis/vapix/vapix.py
24
- axis/vapix/interfaces/__init__.py
25
- axis/vapix/interfaces/api_discovery.py
26
- axis/vapix/interfaces/api_handler.py
27
- axis/vapix/interfaces/basic_device_info.py
28
- axis/vapix/interfaces/event_instances.py
29
- axis/vapix/interfaces/light_control.py
30
- axis/vapix/interfaces/mqtt.py
31
- axis/vapix/interfaces/pir_sensor_configuration.py
32
- axis/vapix/interfaces/port_cgi.py
33
- axis/vapix/interfaces/port_management.py
34
- axis/vapix/interfaces/ptz.py
35
- axis/vapix/interfaces/pwdgrp_cgi.py
36
- axis/vapix/interfaces/stream_profiles.py
37
- axis/vapix/interfaces/user_groups.py
38
- axis/vapix/interfaces/view_areas.py
39
- axis/vapix/interfaces/applications/__init__.py
40
- axis/vapix/interfaces/applications/application_handler.py
41
- axis/vapix/interfaces/applications/applications.py
42
- axis/vapix/interfaces/applications/fence_guard.py
43
- axis/vapix/interfaces/applications/loitering_guard.py
44
- axis/vapix/interfaces/applications/motion_guard.py
45
- axis/vapix/interfaces/applications/object_analytics.py
46
- axis/vapix/interfaces/applications/vmd4.py
47
- axis/vapix/interfaces/parameters/__init__.py
48
- axis/vapix/interfaces/parameters/brand.py
49
- axis/vapix/interfaces/parameters/image.py
50
- axis/vapix/interfaces/parameters/io_port.py
51
- axis/vapix/interfaces/parameters/param_cgi.py
52
- axis/vapix/interfaces/parameters/param_handler.py
53
- axis/vapix/interfaces/parameters/properties.py
54
- axis/vapix/interfaces/parameters/ptz.py
55
- axis/vapix/interfaces/parameters/stream_profile.py
56
- axis/vapix/models/__init__.py
57
- axis/vapix/models/api.py
58
- axis/vapix/models/api_discovery.py
59
- axis/vapix/models/basic_device_info.py
60
- axis/vapix/models/event_instance.py
61
- axis/vapix/models/light_control.py
62
- axis/vapix/models/mqtt.py
63
- axis/vapix/models/pir_sensor_configuration.py
64
- axis/vapix/models/port_cgi.py
65
- axis/vapix/models/port_management.py
66
- axis/vapix/models/ptz_cgi.py
67
- axis/vapix/models/pwdgrp_cgi.py
68
- axis/vapix/models/stream_profile.py
69
- axis/vapix/models/user_group.py
70
- axis/vapix/models/view_area.py
71
- axis/vapix/models/applications/__init__.py
72
- axis/vapix/models/applications/application.py
73
- axis/vapix/models/applications/fence_guard.py
74
- axis/vapix/models/applications/loitering_guard.py
75
- axis/vapix/models/applications/motion_guard.py
76
- axis/vapix/models/applications/object_analytics.py
77
- axis/vapix/models/applications/vmd4.py
78
- axis/vapix/models/parameters/__init__.py
79
- axis/vapix/models/parameters/brand.py
80
- axis/vapix/models/parameters/image.py
81
- axis/vapix/models/parameters/io_port.py
82
- axis/vapix/models/parameters/param_cgi.py
83
- axis/vapix/models/parameters/properties.py
84
- axis/vapix/models/parameters/ptz.py
85
- axis/vapix/models/parameters/stream_profile.py
86
- tests/test_api_discovery.py
87
- tests/test_api_handler.py
88
- tests/test_basic_device_info.py
89
- tests/test_configuration.py
90
- tests/test_device.py
91
- tests/test_event.py
92
- tests/test_event_instances.py
93
- tests/test_event_stream.py
94
- tests/test_light_control.py
95
- tests/test_mqtt.py
96
- tests/test_pir_sensor_configuration.py
97
- tests/test_port_cgi.py
98
- tests/test_port_management.py
99
- tests/test_ptz.py
100
- tests/test_pwdgrp_cgi.py
101
- tests/test_rtsp.py
102
- tests/test_stream_manager.py
103
- tests/test_stream_profiles.py
104
- tests/test_user_groups.py
105
- tests/test_vapix.py
106
- tests/test_view_areas.py
axis-58/setup.py DELETED
@@ -1,25 +0,0 @@
1
- """Setup for Axis."""
2
-
3
- from setuptools import find_packages, setup
4
-
5
- MIN_PY_VERSION = "3.11"
6
- PACKAGES = find_packages(exclude=["tests", "tests.*"])
7
- VERSION = "58"
8
-
9
- setup(
10
- name="axis",
11
- packages=PACKAGES,
12
- package_data={"axis": ["py.typed"]},
13
- version=VERSION,
14
- description="A Python library for communicating with devices from Axis Communications",
15
- author="Robert Svensson",
16
- author_email="Kane610@users.noreply.github.com",
17
- license="MIT",
18
- url="https://github.com/Kane610/axis",
19
- download_url=f"https://github.com/Kane610/axis/archive/v{VERSION}.tar.gz",
20
- install_requires=["async_timeout", "attrs", "httpx", "packaging", "xmltodict"],
21
- tests_require=["pytest", "pytest-asyncio", "respx"],
22
- keywords=["axis", "vapix", "onvif", "event stream", "homeassistant"],
23
- classifiers=["Natural Language :: English", "Programming Language :: Python :: 3"],
24
- python_requires=f">={MIN_PY_VERSION}",
25
- )
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