onvif-python 0.4.1__tar.gz → 0.4.2__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.
- {onvif_python-0.4.1/onvif_python.egg-info → onvif_python-0.4.2}/PKG-INFO +5 -2
- {onvif_python-0.4.1 → onvif_python-0.4.2}/README.md +1 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/helpers/discovery.py +1 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/helpers/messages.py +1 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/helpers/products.py +1 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/interactive.py +33 -27
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/utils.py +1 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/db/products.db +1 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/meta.py +1 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/wsdl.py +4 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2/onvif_python.egg-info}/PKG-INFO +5 -2
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif_python.egg-info/SOURCES.txt +0 -1
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif_python.egg-info/requires.txt +3 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/pyproject.toml +4 -2
- {onvif_python-0.4.1 → onvif_python-0.4.2}/tests/test_core.py +2 -4
- onvif_python-0.4.1/setup.py +0 -5
- {onvif_python-0.4.1 → onvif_python-0.4.2}/LICENSE.md +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/MANIFEST.in +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/__main__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/helpers/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/helpers/execution.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/helpers/files.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/helpers/wsdl_parser.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/cli/main.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/client.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/db/companies.db +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/operator.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/accesscontrol.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/accessrules.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/actionengine.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/analytics/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/analytics/analytics.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/analytics/ruleengine.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/analyticsdevice.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/appmgmt.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/authenticationbehavior.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/credential.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/deviceio.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/devicemgmt.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/display.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/doorcontrol.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/events/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/events/events.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/events/notification.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/events/pausable_subscription.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/events/pullpoint.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/events/subscription.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/imaging.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/media.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/media2.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/provisioning.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/ptz.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/receiver.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/recording.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/replay.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/schedule.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/search.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/advancedsecurity.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/authorizationserver.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/dot1x.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/jwt.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/keystore.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/mediasigning.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/security/tlsserver.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/thermal.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/services/uplink.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/__init__.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/discovery.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/error_handlers.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/exceptions.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/plugins.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/service.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/utils/zeep.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/LICENSE.md +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/b-2.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/bf-2.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/bw-2.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/include +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/mpqf.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/r-2.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/rw-2.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/soap-envelope +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/t-1.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/ws-addr.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/xml.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/schema/common/xmlmime +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/accesscontrol/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/accessrules/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/actionengine.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/advancedsecurity/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/analyticsdevice.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/appmgmt/wsdl/appmgmt.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/appmgmt/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/authenticationbehavior/wsdl/authenticationbehavior.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/credential/wsdl/credential.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/credential/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/device/wsdl/devicemgmt.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/deviceio.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/display/display.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/display/wsdl/index.htm +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/display.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/doorcontrol/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/events/wsdl/bw-2-vs-mod.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/events/wsdl/event-vs.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/events/wsdl/event.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/events/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/federatedsearch.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/media/wsdl/media.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/pacs/accesscontrol.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/pacs/doorcontrol.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/pacs/types.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/receiver.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/recording.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/replay.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/schedule/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/schedule/wsdl/schedule.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/schema/common.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/schema/metadatastream.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/schema/onvif.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/search.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/thermal/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/thermal/wsdl/thermal.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/topics/topicns.xml +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/uplink/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/uplink/wsdl/uplink.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/analytics/humanbody.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/analytics/humanface.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/analytics/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/analytics/radiometry.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/analytics/rules.xsd +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/analytics/wsdl/analytics.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/analytics/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/imaging/wsdl/imaging.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/media/wsdl/index.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/media/wsdl/media.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/ptz/wsdl/ptz.wsdl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/util/federated_search_documentation.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/util/fedsearch-docu-viewer.xsl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/util/onvif-wsdl-viewer.xsl +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/util/operationIndex.html +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif_python.egg-info/dependency_links.txt +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif_python.egg-info/entry_points.txt +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/onvif_python.egg-info/top_level.txt +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/setup.cfg +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/tests/test_client.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/tests/test_error_handlers.py +0 -0
- {onvif_python-0.4.1 → onvif_python-0.4.2}/tests/test_exceptions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onvif-python
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A modern Python library for ONVIF-compliant devices
|
|
5
5
|
Author-email: Nirsimetri Technologies® <open@nirsimetri.com>
|
|
6
6
|
Maintainer: Kaburagi
|
|
@@ -42,6 +42,9 @@ Requires-Dist: mypy; extra == "dev"
|
|
|
42
42
|
Requires-Dist: isort; extra == "dev"
|
|
43
43
|
Requires-Dist: pylint; extra == "dev"
|
|
44
44
|
Requires-Dist: docformatter; extra == "dev"
|
|
45
|
+
Requires-Dist: lxml-stubs; extra == "dev"
|
|
46
|
+
Requires-Dist: types-setuptools; extra == "dev"
|
|
47
|
+
Requires-Dist: types-requests; extra == "dev"
|
|
45
48
|
Provides-Extra: docs
|
|
46
49
|
Requires-Dist: mkdocs-material; extra == "docs"
|
|
47
50
|
Requires-Dist: mkdocstrings[python]; extra == "docs"
|
|
@@ -52,7 +55,7 @@ Dynamic: license-file
|
|
|
52
55
|
|
|
53
56
|
<div align="center">
|
|
54
57
|
<a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img src="https://img.shields.io/codacy/grade/bff08a94e4d447b690cea49c6594826d?style=plastic&logo=codacy&label=Code%20Quality"/></a>
|
|
55
|
-
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/Version-0.4.
|
|
58
|
+
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/Version-0.4.2-orange?logo=python&logoColor=white&color=yellow&style=plastic"></a>
|
|
56
59
|
<a href="https://pepy.tech/projects/onvif-python"><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/onvif-python?logo=pypi&logoColor=white&label=Downloads&color=red&style=plastic"></a>
|
|
57
60
|
<br>
|
|
58
61
|
<a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml"><img alt="Build" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml/badge.svg?branch=main"></a>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
<a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img src="https://img.shields.io/codacy/grade/bff08a94e4d447b690cea49c6594826d?style=plastic&logo=codacy&label=Code%20Quality"/></a>
|
|
5
|
-
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/Version-0.4.
|
|
5
|
+
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/Version-0.4.2-orange?logo=python&logoColor=white&color=yellow&style=plastic"></a>
|
|
6
6
|
<a href="https://pepy.tech/projects/onvif-python"><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/onvif-python?logo=pypi&logoColor=white&label=Downloads&color=red&style=plastic"></a>
|
|
7
7
|
<br>
|
|
8
8
|
<a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml"><img alt="Build" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml/badge.svg?branch=main"></a>
|
|
@@ -63,7 +63,7 @@ def select_device_interactive(devices: list) -> tuple[str, int, bool] | None:
|
|
|
63
63
|
else colorize("HTTP", "white")
|
|
64
64
|
)
|
|
65
65
|
print(
|
|
66
|
-
f"\n{colorize(f
|
|
66
|
+
f"\n{colorize(f'[{idx}]', 'yellow')} {colorize(host_port, 'yellow')} ({protocol_indicator})"
|
|
67
67
|
)
|
|
68
68
|
|
|
69
69
|
# Remove uuid: or urn:uuid: prefix from EPR
|
|
@@ -70,7 +70,7 @@ def print_interactive_intro(args, device_info_text) -> str:
|
|
|
70
70
|
f"{repo_info}\n"
|
|
71
71
|
f"{terminal_header}\n"
|
|
72
72
|
f" Connected to : {colorize(f'{args.host}:{args.port}', 'yellow')}\n"
|
|
73
|
-
f" Auth Method : {colorize(
|
|
73
|
+
f" Auth Method : {colorize('HTTP Digest' if args.digest else 'WS-UsernameToken', 'yellow')}"
|
|
74
74
|
f"{options_display}{device_info_text}\n\n"
|
|
75
75
|
f"{colorize('[Quick Start]', 'green')}\n"
|
|
76
76
|
f" - Type {colorize('dev', 'yellow')} + {colorize('TAB', 'yellow')} to see `devicemgmt` suggestion\n"
|
|
@@ -81,7 +81,7 @@ def search_products(search_term: str, page: int = 1, per_page: int = 20) -> None
|
|
|
81
81
|
)
|
|
82
82
|
print(
|
|
83
83
|
f"Showing {colorize(f'{offset + 1}-{min(offset + per_page, total_count)}', 'cyan')} "
|
|
84
|
-
f"of {colorize(f
|
|
84
|
+
f"of {colorize(f'{total_count} results', 'cyan')}"
|
|
85
85
|
)
|
|
86
86
|
print()
|
|
87
87
|
|
|
@@ -90,7 +90,7 @@ class InteractiveShell(cmd.Cmd):
|
|
|
90
90
|
import readline
|
|
91
91
|
|
|
92
92
|
# Set completer to this instance
|
|
93
|
-
readline.set_completer(self.complete) # type: ignore[attr-defined]
|
|
93
|
+
readline.set_completer(self.complete) # type: ignore[attr-defined, arg-type]
|
|
94
94
|
readline.set_completer_delims(" \t\n`!@#$%^&*()=+[{]}\\|;:'\",<>?") # type: ignore[attr-defined]
|
|
95
95
|
|
|
96
96
|
# Enable tab completion, making it compatible with both GNU readline and libedit
|
|
@@ -124,30 +124,34 @@ class InteractiveShell(cmd.Cmd):
|
|
|
124
124
|
serial = getattr(self.device_data, "SerialNumber", "Unknown")
|
|
125
125
|
hardware_id = getattr(self.device_data, "HardwareId", "Unknown")
|
|
126
126
|
|
|
127
|
-
# Get ONVIF version
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
major = getattr(
|
|
141
|
-
minor = getattr(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
127
|
+
# Get latest supported ONVIF version
|
|
128
|
+
supported_versions = self.client.devicemgmt().GetCapabilities(
|
|
129
|
+
Category="All"
|
|
130
|
+
)["Device"]["System"]["SupportedVersions"]
|
|
131
|
+
if supported_versions:
|
|
132
|
+
latest_version = max(
|
|
133
|
+
supported_versions,
|
|
134
|
+
key=lambda version: (
|
|
135
|
+
getattr(version, "Major", 0),
|
|
136
|
+
getattr(version, "Minor", 0),
|
|
137
|
+
),
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
major = getattr(latest_version, "Major", "")
|
|
141
|
+
minor = getattr(latest_version, "Minor", "")
|
|
142
|
+
|
|
143
|
+
if major != "":
|
|
144
|
+
onvif_version = (
|
|
145
|
+
f"{major}.{minor} {colorize('[Latest]', 'green')}"
|
|
146
|
+
if minor != ""
|
|
147
|
+
else str(major)
|
|
148
|
+
)
|
|
149
|
+
except (ONVIFOperationException, KeyError, AttributeError) as e:
|
|
150
|
+
if isinstance(e, ONVIFOperationException):
|
|
151
|
+
if isinstance(e.original_exception, (RequestException, TransportError)):
|
|
152
|
+
self._handle_connection_error()
|
|
149
153
|
else:
|
|
150
|
-
# For other errors (e.g.,
|
|
154
|
+
# For other errors (e.g., GetCapabilities not supported), we can still proceed
|
|
151
155
|
# with basic device info if GetDeviceInformation succeeded.
|
|
152
156
|
pass
|
|
153
157
|
|
|
@@ -1164,8 +1168,10 @@ class InteractiveShell(cmd.Cmd):
|
|
|
1164
1168
|
|
|
1165
1169
|
def do_clear(self, _line):
|
|
1166
1170
|
"""Clear terminal screen."""
|
|
1167
|
-
|
|
1168
|
-
|
|
1171
|
+
if sys.platform == "win32":
|
|
1172
|
+
print("\033[2J\033[3J\033[H", end="")
|
|
1173
|
+
else:
|
|
1174
|
+
print("\033[2J\033[H", end="")
|
|
1169
1175
|
|
|
1170
1176
|
def do_cls(self, _line):
|
|
1171
1177
|
"""Clear stored data."""
|
|
@@ -1221,7 +1227,7 @@ class InteractiveShell(cmd.Cmd):
|
|
|
1221
1227
|
f"\n Connected to : "
|
|
1222
1228
|
f"{colorize(f'{self.args.host}:{self.args.port}', 'yellow')}"
|
|
1223
1229
|
f"\n Auth Method : "
|
|
1224
|
-
f"{colorize(
|
|
1230
|
+
f"{colorize('HTTP Digest' if self.args.digest else 'WS-UsernameToken', 'yellow')}"
|
|
1225
1231
|
f"{options_display}{self.device_info_text}"
|
|
1226
1232
|
)
|
|
1227
1233
|
print() # Extra newline for spacing
|
|
@@ -230,7 +230,7 @@ def _colors_enabled() -> bool:
|
|
|
230
230
|
|
|
231
231
|
try:
|
|
232
232
|
# Enable ANSI escape sequences
|
|
233
|
-
kernel32 = ctypes.windll.kernel32
|
|
233
|
+
kernel32 = ctypes.windll.kernel32 # type: ignore[attr-defined]
|
|
234
234
|
h_stdout = kernel32.GetStdHandle(-11)
|
|
235
235
|
|
|
236
236
|
# Get current console mode
|
|
@@ -717,7 +717,10 @@ class ONVIFWSDL:
|
|
|
717
717
|
def get_wsdl_map(cls) -> dict[str, dict[str, Any]]:
|
|
718
718
|
"""Get the complete WSDL map for all services."""
|
|
719
719
|
cls._ensure_wsdl_map_initialized()
|
|
720
|
-
|
|
720
|
+
|
|
721
|
+
if cls.WSDL_MAP is None:
|
|
722
|
+
raise RuntimeError("WSDL map was not initialized")
|
|
723
|
+
|
|
721
724
|
return cls.WSDL_MAP
|
|
722
725
|
|
|
723
726
|
@classmethod
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onvif-python
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A modern Python library for ONVIF-compliant devices
|
|
5
5
|
Author-email: Nirsimetri Technologies® <open@nirsimetri.com>
|
|
6
6
|
Maintainer: Kaburagi
|
|
@@ -42,6 +42,9 @@ Requires-Dist: mypy; extra == "dev"
|
|
|
42
42
|
Requires-Dist: isort; extra == "dev"
|
|
43
43
|
Requires-Dist: pylint; extra == "dev"
|
|
44
44
|
Requires-Dist: docformatter; extra == "dev"
|
|
45
|
+
Requires-Dist: lxml-stubs; extra == "dev"
|
|
46
|
+
Requires-Dist: types-setuptools; extra == "dev"
|
|
47
|
+
Requires-Dist: types-requests; extra == "dev"
|
|
45
48
|
Provides-Extra: docs
|
|
46
49
|
Requires-Dist: mkdocs-material; extra == "docs"
|
|
47
50
|
Requires-Dist: mkdocstrings[python]; extra == "docs"
|
|
@@ -52,7 +55,7 @@ Dynamic: license-file
|
|
|
52
55
|
|
|
53
56
|
<div align="center">
|
|
54
57
|
<a href="https://app.codacy.com/gh/nirsimetri/onvif-python/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade"><img src="https://img.shields.io/codacy/grade/bff08a94e4d447b690cea49c6594826d?style=plastic&logo=codacy&label=Code%20Quality"/></a>
|
|
55
|
-
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/Version-0.4.
|
|
58
|
+
<a href="https://pypi.org/project/onvif-python/"><img alt="PyPI Version" src="https://img.shields.io/badge/Version-0.4.2-orange?logo=python&logoColor=white&color=yellow&style=plastic"></a>
|
|
56
59
|
<a href="https://pepy.tech/projects/onvif-python"><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/onvif-python?logo=pypi&logoColor=white&label=Downloads&color=red&style=plastic"></a>
|
|
57
60
|
<br>
|
|
58
61
|
<a href="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml"><img alt="Build" src="https://github.com/nirsimetri/onvif-python/actions/workflows/python-app.yml/badge.svg?branch=main"></a>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "onvif-python"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.2"
|
|
4
4
|
description = "A modern Python library for ONVIF-compliant devices"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -56,6 +56,9 @@ dev = [
|
|
|
56
56
|
"isort",
|
|
57
57
|
"pylint",
|
|
58
58
|
"docformatter",
|
|
59
|
+
"lxml-stubs",
|
|
60
|
+
"types-setuptools",
|
|
61
|
+
"types-requests",
|
|
59
62
|
]
|
|
60
63
|
docs = [
|
|
61
64
|
"mkdocs-material",
|
|
@@ -97,7 +100,6 @@ extend-exclude = '''
|
|
|
97
100
|
[tool.isort]
|
|
98
101
|
profile = "black"
|
|
99
102
|
skip = [
|
|
100
|
-
"^examples/",
|
|
101
103
|
"^assets/",
|
|
102
104
|
"^temp/",
|
|
103
105
|
"^build/",
|
|
@@ -274,10 +274,8 @@ class TestCacheMode:
|
|
|
274
274
|
|
|
275
275
|
def test_cache_mode_comparison(self):
|
|
276
276
|
"""Test cache mode comparison."""
|
|
277
|
-
assert CacheMode.NONE
|
|
278
|
-
assert CacheMode.
|
|
279
|
-
assert CacheMode.DB == CacheMode.DB
|
|
280
|
-
|
|
277
|
+
assert CacheMode.NONE != CacheMode.MEM
|
|
278
|
+
assert CacheMode.NONE != CacheMode.DB
|
|
281
279
|
assert CacheMode.MEM != CacheMode.DB
|
|
282
280
|
|
|
283
281
|
|
onvif_python-0.4.1/setup.py
DELETED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/accessrules/wsdl/accessrules.wsdl
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
|
{onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/authenticationbehavior/wsdl/index.html
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
|
{onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver10/provisioning/wsdl/provisioning.wsdl
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
|
{onvif_python-0.4.1 → onvif_python-0.4.2}/onvif/wsdl/ver20/util/federated_search_documentation.html
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
|