viso-sdk-python 1.1.23__tar.gz → 1.1.25__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.
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/CHANGELOG.md +10 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/PKG-INFO +4 -6
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/setup.py +3 -5
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_redis_wrapper.py +48 -51
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/_version.c +11 -11
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/_version.py +1 -1
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/__init__.c +65 -38
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/__init__.py +1 -0
- viso_sdk_python-1.1.25/viso_sdk/redis/frame_reader.c +11602 -0
- viso_sdk_python-1.1.25/viso_sdk/redis/frame_reader.py +132 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/redis_wrapper.c +1329 -1131
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/redis_wrapper.py +15 -25
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/viso_data.c +151 -163
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/viso_data.py +2 -2
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk_python.egg-info/PKG-INFO +4 -6
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk_python.egg-info/SOURCES.txt +2 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/AUTHORS +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/COPYING +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/MANIFEST.in +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/README.md +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/Makefile +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/conf.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/ext/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/ext/docstrings.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/ext/manager_tmpl.j2 +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/index.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/make.bat +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/modules.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk._version.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.constants.constants.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.constants.modules.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.constants.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.constants.variables.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.edge.common.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.edge.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.logging.logger.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.logging.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.model.download.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.model.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.mqtt.mqtt_wrapper.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.mqtt.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.mqtt.utils.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.nodered.flow.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.nodered.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.redis.redis_wrapper.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.redis.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.status.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/docs/source/viso_sdk.status.status_logger.rst +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/pyproject.toml +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/requirements-dev.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/requirements-docker.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/requirements-docs.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/requirements-lint.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/requirements-test.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/requirements.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/setup.cfg +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/conftest.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/fixtures/flow.json +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/integration/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/integration/test_status.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/meta/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/meta/test_ensure_type_hints.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/smoke/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/smoke/test_dists.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_flow.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_log_id.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_logger.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_model_fetch.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_nms.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_object.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_polygon_roi_manager.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_redis_utils.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_rollingq.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_stream_cleanup.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_trace_malloc.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tests/unit/test_viso_data.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/tox.ini +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/constants.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/constants.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/modules.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/modules.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/variables.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/constants/variables.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/debug/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/debug/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/debug/trace_malloc.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/debug/trace_malloc.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/model_utils.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/model_utils.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/nms.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/nms.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/object.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/detection/object.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/edge/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/edge/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/edge/common.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/edge/common.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/logging/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/logging/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/logging/log_id.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/logging/log_id.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/logging/logger.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/logging/logger.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/model/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/model/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/model/fetch.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/model/fetch.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/mqtt/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/mqtt/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/mqtt/mqtt_wrapper.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/mqtt/mqtt_wrapper.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/mqtt/utils.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/mqtt/utils.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/nodered/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/nodered/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/nodered/flow.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/nodered/flow.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/py.typed +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/stream_cleanup.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/stream_cleanup.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/utils.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/redis/utils.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/roi/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/roi/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/roi/polygon_roi_manager.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/roi/polygon_roi_manager.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/status/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/status/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/status/status_logger.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/status/status_logger.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/structures/__init__.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/structures/__init__.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/structures/rollingq.c +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk/structures/rollingq.py +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk_python.egg-info/dependency_links.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk_python.egg-info/requires.txt +0 -0
- {viso_sdk_python-1.1.23 → viso_sdk_python-1.1.25}/viso_sdk_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
|
+
## v1.1.25
|
|
5
|
+
### Performance
|
|
6
|
+
- replace stdlib `json` with `orjson` in `parse_viso_data`
|
|
7
|
+
- replace Redis polling with pub/sub blocking in `FrameReader`
|
|
8
|
+
- pipeline SET + PUBLISH into a single round-trip in `redis_wrapper`
|
|
9
|
+
|
|
10
|
+
## v1.1.24
|
|
11
|
+
### Features
|
|
12
|
+
- add `FrameReader` to centralise Redis frame consumption — moves the read→dedup→decode pipeline into a single SDK class; dedup is now checked on the raw dict before base64 decode and JPEG decompress, so duplicate polls at high poll rates are effectively free
|
|
13
|
+
|
|
4
14
|
## v1.1.23
|
|
5
15
|
### Fix
|
|
6
16
|
- to debug, set log level via environment variable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: viso-sdk-python
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.25
|
|
4
4
|
Summary: VisoSDK: A Python SDK for use in Viso containers
|
|
5
5
|
Home-page: https://gitlab.com/TopKamera/03_edge/Base/viso-sdk-python-public.git
|
|
6
6
|
Author: support@viso.ai
|
|
@@ -14,12 +14,10 @@ Classifier: Natural Language :: English
|
|
|
14
14
|
Classifier: Operating System :: POSIX
|
|
15
15
|
Classifier: Programming Language :: Python
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.6
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
21
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
-
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Requires-Python: >=3.10
|
|
23
21
|
Description-Content-Type: text/markdown
|
|
24
22
|
License-File: COPYING
|
|
25
23
|
License-File: AUTHORS
|
|
@@ -63,7 +63,7 @@ setup(
|
|
|
63
63
|
"orjson>=3.9.0"
|
|
64
64
|
],
|
|
65
65
|
package_data={"viso_sdk": ["assets/*", "assets/*/*"]},
|
|
66
|
-
python_requires=">=3.
|
|
66
|
+
python_requires=">=3.10",
|
|
67
67
|
entry_points={},
|
|
68
68
|
# dependency_links=["https://www.piwheels.org/simple"],
|
|
69
69
|
classifiers=[
|
|
@@ -75,11 +75,9 @@ setup(
|
|
|
75
75
|
"Operating System :: POSIX",
|
|
76
76
|
"Programming Language :: Python",
|
|
77
77
|
"Programming Language :: Python :: 3",
|
|
78
|
-
"Programming Language :: Python :: 3.6",
|
|
79
|
-
"Programming Language :: Python :: 3.7",
|
|
80
|
-
"Programming Language :: Python :: 3.8",
|
|
81
|
-
"Programming Language :: Python :: 3.9",
|
|
82
78
|
"Programming Language :: Python :: 3.10",
|
|
79
|
+
"Programming Language :: Python :: 3.11",
|
|
80
|
+
"Programming Language :: Python :: 3.12",
|
|
83
81
|
],
|
|
84
82
|
ext_modules=cythonize("viso_sdk/**/*.py", compiler_directives={"language_level": "3"}) if USE_CYTHON else [],
|
|
85
83
|
# options={"bdist_wheel": {"universal": True}},
|
|
@@ -9,82 +9,83 @@ from viso_sdk.redis.redis_wrapper import RedisWrapper
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
@pytest.fixture
|
|
12
|
-
def
|
|
13
|
-
|
|
12
|
+
def mock_pipe():
|
|
13
|
+
pipe = MagicMock()
|
|
14
|
+
pipe.execute.return_value = [True, 1]
|
|
15
|
+
return pipe
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
@pytest.fixture
|
|
17
|
-
def wrapper(
|
|
18
|
-
|
|
19
|
+
def wrapper(mock_pipe):
|
|
20
|
+
client = MagicMock()
|
|
21
|
+
client.pipeline.return_value.__enter__.return_value = mock_pipe
|
|
22
|
+
client.pipeline.return_value.__exit__.return_value = False
|
|
23
|
+
with patch("viso_sdk.redis.redis_wrapper.redis.StrictRedis", return_value=client):
|
|
19
24
|
rw = RedisWrapper(thread=False)
|
|
20
|
-
return rw,
|
|
25
|
+
return rw, client, mock_pipe
|
|
21
26
|
|
|
22
27
|
|
|
23
28
|
class TestWriteData:
|
|
24
29
|
def test_write_string(self, wrapper):
|
|
25
|
-
rw, client = wrapper
|
|
26
|
-
client.set.return_value = True
|
|
30
|
+
rw, client, pipe = wrapper
|
|
27
31
|
result = rw.write_data("my_key", "hello")
|
|
28
32
|
assert result is True
|
|
29
|
-
|
|
33
|
+
pipe.set.assert_called_once_with("my_key", "hello", ex=None)
|
|
30
34
|
|
|
31
35
|
def test_write_dict_serialised_as_json(self, wrapper):
|
|
32
|
-
rw, client = wrapper
|
|
33
|
-
client.set.return_value = True
|
|
36
|
+
rw, client, pipe = wrapper
|
|
34
37
|
rw.write_data("my_key", {"a": 1, "b": 2})
|
|
35
|
-
call_args =
|
|
38
|
+
call_args = pipe.set.call_args[0]
|
|
36
39
|
assert json.loads(call_args[1]) == {"a": 1, "b": 2}
|
|
37
40
|
|
|
38
41
|
def test_write_with_ttl(self, wrapper):
|
|
39
|
-
rw, client = wrapper
|
|
40
|
-
client.set.return_value = True
|
|
42
|
+
rw, client, pipe = wrapper
|
|
41
43
|
rw.write_data("my_key", "val", ttl=60)
|
|
42
|
-
|
|
44
|
+
pipe.set.assert_called_once_with("my_key", "val", ex=60)
|
|
43
45
|
|
|
44
46
|
def test_publishes_notification_on_successful_write(self, wrapper):
|
|
45
|
-
rw, client = wrapper
|
|
46
|
-
client.set.return_value = True
|
|
47
|
+
rw, client, pipe = wrapper
|
|
47
48
|
rw.write_data("my_key", "hello")
|
|
48
|
-
|
|
49
|
+
pipe.publish.assert_called_once_with("my_key_notify", "1")
|
|
49
50
|
|
|
50
|
-
def
|
|
51
|
-
rw, client = wrapper
|
|
52
|
-
|
|
53
|
-
rw.write_data("my_key", "hello")
|
|
54
|
-
|
|
51
|
+
def test_returns_false_when_set_fails(self, wrapper):
|
|
52
|
+
rw, client, pipe = wrapper
|
|
53
|
+
pipe.execute.return_value = [False, 0]
|
|
54
|
+
result = rw.write_data("my_key", "hello")
|
|
55
|
+
assert result is False
|
|
55
56
|
|
|
56
57
|
def test_handles_publish_error_gracefully(self, wrapper):
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
client
|
|
58
|
+
# A publish server-side error appears as an exception in the execute()
|
|
59
|
+
# result list — it does not abort the pipeline or change the set result.
|
|
60
|
+
rw, client, pipe = wrapper
|
|
61
|
+
pipe.execute.return_value = [True, Exception("publish failed")]
|
|
60
62
|
result = rw.write_data("my_key", "hello")
|
|
61
|
-
# Should still return True even if publish fails
|
|
62
63
|
assert result is True
|
|
63
|
-
|
|
64
|
+
pipe.publish.assert_called_once_with("my_key_notify", "1")
|
|
64
65
|
|
|
65
66
|
|
|
66
67
|
class TestReadData:
|
|
67
68
|
def test_returns_raw_bytes(self, wrapper):
|
|
68
|
-
rw, client = wrapper
|
|
69
|
+
rw, client, pipe = wrapper
|
|
69
70
|
client.get.return_value = b"raw"
|
|
70
71
|
assert rw.read_data("key") == b"raw"
|
|
71
72
|
client.get.assert_called_once_with("key")
|
|
72
73
|
|
|
73
74
|
def test_returns_none_when_key_missing(self, wrapper):
|
|
74
|
-
rw, client = wrapper
|
|
75
|
+
rw, client, pipe = wrapper
|
|
75
76
|
client.get.return_value = None
|
|
76
77
|
assert rw.read_data("missing") is None
|
|
77
78
|
|
|
78
79
|
|
|
79
80
|
class TestReadVisoData:
|
|
80
81
|
def test_decodes_json_bytes(self, wrapper):
|
|
81
|
-
rw, client = wrapper
|
|
82
|
+
rw, client, pipe = wrapper
|
|
82
83
|
client.get.return_value = b'{"result": [1, 2]}'
|
|
83
84
|
result = rw.read_viso_data("key")
|
|
84
85
|
assert result == {"result": [1, 2]}
|
|
85
86
|
|
|
86
87
|
def test_returns_none_on_redis_error(self, wrapper):
|
|
87
|
-
rw, client = wrapper
|
|
88
|
+
rw, client, pipe = wrapper
|
|
88
89
|
client.get.side_effect = Exception("connection refused")
|
|
89
90
|
result = rw.read_viso_data("key")
|
|
90
91
|
assert result is None
|
|
@@ -92,54 +93,50 @@ class TestReadVisoData:
|
|
|
92
93
|
|
|
93
94
|
class TestDeleteData:
|
|
94
95
|
def test_delete_returns_true_on_success(self, wrapper):
|
|
95
|
-
rw, client = wrapper
|
|
96
|
+
rw, client, pipe = wrapper
|
|
96
97
|
client.delete.return_value = 1
|
|
97
98
|
assert rw.delete_data("key") is True
|
|
98
99
|
client.delete.assert_called_once_with("key")
|
|
99
100
|
|
|
100
101
|
def test_delete_returns_false_when_key_not_found(self, wrapper):
|
|
101
|
-
rw, client = wrapper
|
|
102
|
+
rw, client, pipe = wrapper
|
|
102
103
|
client.delete.return_value = 0
|
|
103
104
|
assert rw.delete_data("missing") is False
|
|
104
105
|
|
|
105
106
|
|
|
106
107
|
class TestWriteVisoData:
|
|
107
108
|
def test_sync_write_when_thread_disabled(self, wrapper):
|
|
108
|
-
rw, client = wrapper
|
|
109
|
-
client.set.return_value = True
|
|
109
|
+
rw, client, pipe = wrapper
|
|
110
110
|
result = rw.write_viso_data({"frame": None}, "key")
|
|
111
111
|
assert result is True
|
|
112
112
|
|
|
113
113
|
def test_write_none_deletes_key(self, wrapper):
|
|
114
|
-
rw, client = wrapper
|
|
114
|
+
rw, client, pipe = wrapper
|
|
115
115
|
client.delete.return_value = 1
|
|
116
116
|
rw.write_viso_data(None, "key")
|
|
117
117
|
client.delete.assert_called_once_with("key")
|
|
118
118
|
|
|
119
119
|
def test_publishes_notification_on_successful_write(self, wrapper):
|
|
120
|
-
rw, client = wrapper
|
|
121
|
-
client.set.return_value = True
|
|
120
|
+
rw, client, pipe = wrapper
|
|
122
121
|
rw.write_viso_data({"frame": None, "result": []}, "viso_key")
|
|
123
|
-
|
|
122
|
+
pipe.publish.assert_called_once_with("viso_key_notify", "1")
|
|
124
123
|
|
|
125
|
-
def
|
|
126
|
-
rw, client = wrapper
|
|
127
|
-
|
|
128
|
-
rw.write_viso_data({"frame": None}, "viso_key")
|
|
129
|
-
|
|
124
|
+
def test_returns_false_when_set_fails(self, wrapper):
|
|
125
|
+
rw, client, pipe = wrapper
|
|
126
|
+
pipe.execute.return_value = [False, 0]
|
|
127
|
+
result = rw.write_viso_data({"frame": None}, "viso_key")
|
|
128
|
+
assert result is False
|
|
130
129
|
|
|
131
130
|
def test_handles_publish_error_gracefully(self, wrapper):
|
|
132
|
-
rw, client = wrapper
|
|
133
|
-
|
|
134
|
-
client.publish.side_effect = Exception("publish failed")
|
|
131
|
+
rw, client, pipe = wrapper
|
|
132
|
+
pipe.execute.return_value = [True, Exception("publish failed")]
|
|
135
133
|
result = rw.write_viso_data({"frame": None}, "viso_key")
|
|
136
|
-
# Should still return True even if publish fails
|
|
137
134
|
assert result is True
|
|
138
|
-
|
|
135
|
+
pipe.publish.assert_called_once_with("viso_key_notify", "1")
|
|
139
136
|
|
|
140
137
|
def test_no_publish_when_deleting_with_none(self, wrapper):
|
|
141
|
-
rw, client = wrapper
|
|
138
|
+
rw, client, pipe = wrapper
|
|
142
139
|
client.delete.return_value = 1
|
|
143
140
|
rw.write_viso_data(None, "key")
|
|
144
|
-
# Should not publish when deleting
|
|
145
141
|
client.publish.assert_not_called()
|
|
142
|
+
pipe.publish.assert_not_called()
|
|
@@ -1994,7 +1994,7 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati
|
|
|
1994
1994
|
#endif
|
|
1995
1995
|
/* #### Code section: constant_name_defines ### */
|
|
1996
1996
|
#define __pyx_kp_u_ __pyx_string_tab[0]
|
|
1997
|
-
#define
|
|
1997
|
+
#define __pyx_kp_u_1_1_25 __pyx_string_tab[1]
|
|
1998
1998
|
#define __pyx_kp_u_Copyright_2020 __pyx_string_tab[2]
|
|
1999
1999
|
#define __pyx_kp_u_Viso_ai_team __pyx_string_tab[3]
|
|
2000
2000
|
#define __pyx_kp_u__2 __pyx_string_tab[4]
|
|
@@ -2605,16 +2605,16 @@ __Pyx_RefNannySetupContext("PyInit__version", 0);
|
|
|
2605
2605
|
* __license__ = "LGPL3"
|
|
2606
2606
|
* __title__ = "viso-sdk-python" # <<<<<<<<<<<<<<
|
|
2607
2607
|
*
|
|
2608
|
-
* __version__ = "1.1.
|
|
2608
|
+
* __version__ = "1.1.25"
|
|
2609
2609
|
*/
|
|
2610
2610
|
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_title, __pyx_mstate_global->__pyx_kp_u_viso_sdk_python) < (0)) __PYX_ERR(0, 15, __pyx_L1_error)
|
|
2611
2611
|
|
|
2612
2612
|
/* "viso_sdk/_version.py":17
|
|
2613
2613
|
* __title__ = "viso-sdk-python"
|
|
2614
2614
|
*
|
|
2615
|
-
* __version__ = "1.1.
|
|
2615
|
+
* __version__ = "1.1.25" # <<<<<<<<<<<<<<
|
|
2616
2616
|
*/
|
|
2617
|
-
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_version, __pyx_mstate_global->
|
|
2617
|
+
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_version, __pyx_mstate_global->__pyx_kp_u_1_1_25) < (0)) __PYX_ERR(0, 17, __pyx_L1_error)
|
|
2618
2618
|
|
|
2619
2619
|
/* "viso_sdk/_version.py":1
|
|
2620
2620
|
* """ # <<<<<<<<<<<<<<
|
|
@@ -2688,24 +2688,24 @@ static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
|
|
|
2688
2688
|
CYTHON_UNUSED_VAR(__pyx_mstate);
|
|
2689
2689
|
{
|
|
2690
2690
|
const struct { const unsigned int length: 5; } index[] = {{1},{6},{15},{12},{1},{18},{26},{15},{5},{7},{10},{18},{13},{8},{8},{7},{9},{8},{11},{8},{10},{8},{3},{2},{4},{12},{10},{8},{9},{11},{4}};
|
|
2691
|
-
#if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (
|
|
2692
|
-
const char* const cstring = "BZh91AY&SY
|
|
2693
|
-
PyObject *data = __Pyx_DecompressString(cstring,
|
|
2691
|
+
#if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (242 bytes) */
|
|
2692
|
+
const char* const cstring = "BZh91AY&SY\375\235,\225\000\000\007\337\200@\000@\003z\005\350\204A\000\277\357\377\2400\000\315[\r&\246#(\360S\312\000\320z\023\001\0214\332\023\023L\200\000\000\003S\324\332\246\232\206\231\244=L\2324\r4hL\213\374\257+\275\327. \300\370\360\361k\217\252lmpbg\332\357\013\215&@\206\037\202\221\314\234\247\306\232\0024A\001\002\210\014o]\346\006\361\3621u\357\3131\235K\320\300\260\330\207@\327\237\232\032\004J\026\355\232b\3335[\021\302\255\312D\240(9\001\t\021\315F\365b\351\013\006\204E\255\332.V\252\221\334\236\350=\363bd\253ae5\270K\206\020\322\266?\256HJ\0312c>\014\205\241\021\336\245\310\201 `\2049\245\234\334)\304k\217K\007\352\323AG\325\354\"\317\245\270\273\222)\302\204\207\354\351d\250";
|
|
2693
|
+
PyObject *data = __Pyx_DecompressString(cstring, 242, 2);
|
|
2694
2694
|
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
|
|
2695
2695
|
const char* const bytes = __Pyx_PyBytes_AsString(data);
|
|
2696
2696
|
#if !CYTHON_ASSUME_SAFE_MACROS
|
|
2697
2697
|
if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
|
|
2698
2698
|
#endif
|
|
2699
|
-
#elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (
|
|
2700
|
-
const char* const cstring = "x\3325\216\
|
|
2701
|
-
PyObject *data = __Pyx_DecompressString(cstring,
|
|
2699
|
+
#elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (196 bytes) */
|
|
2700
|
+
const char* const cstring = "x\3325\216\275n\3030\014\204_\305/`!q\321-\350\017:d\311\320)+\301HtLD\026\035\211J\341\267/\035\307\323\035\356\303\361\350\366n\357\272\367\037\231\346\314\327A\233n\327\355\3323\027q\310\215\022\216\237W\347%\033\304\364\365x\345\233~\037\233\003\247^6\360\261h[\302\255\235f\035$\235\216\277\2477\274\224\tu\000\300jY\006\360\221\023\001'\320\214\236.\350o\226m\017\200\371\232!p\016\250\244<\222\331\204#\001\320\210\034\215C\317\221\026\215\354)\225\2475\224\236*\241\256p\355$\371\223\327\374\275b\\\303B\032\250\307\032mM\251,\233\240\254k\357A\271\260\330\261\2310\377\0038(m\354";
|
|
2701
|
+
PyObject *data = __Pyx_DecompressString(cstring, 196, 1);
|
|
2702
2702
|
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
|
|
2703
2703
|
const char* const bytes = __Pyx_PyBytes_AsString(data);
|
|
2704
2704
|
#if !CYTHON_ASSUME_SAFE_MACROS
|
|
2705
2705
|
if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
|
|
2706
2706
|
#endif
|
|
2707
2707
|
#else /* compression: none (287 bytes) */
|
|
2708
|
-
const char* const bytes = ".1.1.
|
|
2708
|
+
const char* const bytes = ".1.1.25Copyright 2020-Viso.ai team?g.corrigan@viso.ai viso.ai AG <info@viso.ai>viso-sdk-pythonLGPL3abspath__author__cline_in_traceback__copyright___cur_dirdatetimedirname__email____file____license____main____module____name__nowospath__qualname__setdefault__test____title____version__year";
|
|
2709
2709
|
PyObject *data = NULL;
|
|
2710
2710
|
CYTHON_UNUSED_VAR(__Pyx_DecompressString);
|
|
2711
2711
|
#endif
|
|
@@ -1917,7 +1917,7 @@ typedef struct {
|
|
|
1917
1917
|
PyObject *__pyx_empty_tuple;
|
|
1918
1918
|
PyObject *__pyx_empty_bytes;
|
|
1919
1919
|
PyObject *__pyx_empty_unicode;
|
|
1920
|
-
PyObject *__pyx_string_tab[
|
|
1920
|
+
PyObject *__pyx_string_tab[28];
|
|
1921
1921
|
/* #### Code section: module_state_contents ### */
|
|
1922
1922
|
/* CodeObjectCache.module_state_decls */
|
|
1923
1923
|
struct __Pyx_CodeObjectCache __pyx_code_cache;
|
|
@@ -1949,29 +1949,32 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati
|
|
|
1949
1949
|
/* #### Code section: constant_name_defines ### */
|
|
1950
1950
|
#define __pyx_kp_u_ __pyx_string_tab[0]
|
|
1951
1951
|
#define __pyx_kp_u__2 __pyx_string_tab[1]
|
|
1952
|
-
#define
|
|
1953
|
-
#define
|
|
1954
|
-
#define
|
|
1955
|
-
#define
|
|
1956
|
-
#define
|
|
1957
|
-
#define
|
|
1958
|
-
#define
|
|
1959
|
-
#define
|
|
1960
|
-
#define
|
|
1961
|
-
#define
|
|
1962
|
-
#define
|
|
1963
|
-
#define
|
|
1964
|
-
#define
|
|
1965
|
-
#define
|
|
1966
|
-
#define
|
|
1967
|
-
#define
|
|
1968
|
-
#define
|
|
1969
|
-
#define
|
|
1970
|
-
#define
|
|
1971
|
-
#define
|
|
1972
|
-
#define
|
|
1973
|
-
#define
|
|
1974
|
-
#define
|
|
1952
|
+
#define __pyx_kp_u_viso_sdk_frame_reader __pyx_string_tab[2]
|
|
1953
|
+
#define __pyx_kp_u_viso_sdk_redis___init __pyx_string_tab[3]
|
|
1954
|
+
#define __pyx_kp_u_viso_sdk_redis_wrapper __pyx_string_tab[4]
|
|
1955
|
+
#define __pyx_kp_u_viso_sdk_stream_cleanup __pyx_string_tab[5]
|
|
1956
|
+
#define __pyx_kp_u_viso_sdk_utils __pyx_string_tab[6]
|
|
1957
|
+
#define __pyx_kp_u_viso_sdk_viso_data __pyx_string_tab[7]
|
|
1958
|
+
#define __pyx_n_u_FrameReader __pyx_string_tab[8]
|
|
1959
|
+
#define __pyx_n_u_RedisWrapper __pyx_string_tab[9]
|
|
1960
|
+
#define __pyx_n_u_StreamCleanupManager __pyx_string_tab[10]
|
|
1961
|
+
#define __pyx_n_u_VisoData __pyx_string_tab[11]
|
|
1962
|
+
#define __pyx_n_u_VisoRedis __pyx_string_tab[12]
|
|
1963
|
+
#define __pyx_n_u_clear_stream_redis_keys __pyx_string_tab[13]
|
|
1964
|
+
#define __pyx_n_u_cline_in_traceback __pyx_string_tab[14]
|
|
1965
|
+
#define __pyx_n_u_frame_reader __pyx_string_tab[15]
|
|
1966
|
+
#define __pyx_n_u_gen_redis_key_local __pyx_string_tab[16]
|
|
1967
|
+
#define __pyx_n_u_gen_redis_key_status __pyx_string_tab[17]
|
|
1968
|
+
#define __pyx_n_u_main __pyx_string_tab[18]
|
|
1969
|
+
#define __pyx_n_u_module __pyx_string_tab[19]
|
|
1970
|
+
#define __pyx_n_u_name __pyx_string_tab[20]
|
|
1971
|
+
#define __pyx_n_u_qualname __pyx_string_tab[21]
|
|
1972
|
+
#define __pyx_n_u_redis_wrapper __pyx_string_tab[22]
|
|
1973
|
+
#define __pyx_n_u_setdefault __pyx_string_tab[23]
|
|
1974
|
+
#define __pyx_n_u_stream_cleanup __pyx_string_tab[24]
|
|
1975
|
+
#define __pyx_n_u_test __pyx_string_tab[25]
|
|
1976
|
+
#define __pyx_n_u_utils __pyx_string_tab[26]
|
|
1977
|
+
#define __pyx_n_u_viso_data __pyx_string_tab[27]
|
|
1975
1978
|
/* #### Code section: module_state_clear ### */
|
|
1976
1979
|
#if CYTHON_USE_MODULE_STATE
|
|
1977
1980
|
static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
|
|
@@ -1986,7 +1989,7 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
|
|
|
1986
1989
|
#if CYTHON_PEP489_MULTI_PHASE_INIT
|
|
1987
1990
|
__Pyx_State_RemoveModule(NULL);
|
|
1988
1991
|
#endif
|
|
1989
|
-
for (int i=0; i<
|
|
1992
|
+
for (int i=0; i<28; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
|
|
1990
1993
|
/* #### Code section: module_state_clear_contents ### */
|
|
1991
1994
|
/* #### Code section: module_state_clear_end ### */
|
|
1992
1995
|
return 0;
|
|
@@ -2003,7 +2006,7 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void
|
|
|
2003
2006
|
__Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple);
|
|
2004
2007
|
__Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes);
|
|
2005
2008
|
__Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode);
|
|
2006
|
-
for (int i=0; i<
|
|
2009
|
+
for (int i=0; i<28; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
|
|
2007
2010
|
/* #### Code section: module_state_traverse_contents ### */
|
|
2008
2011
|
/* #### Code section: module_state_traverse_end ### */
|
|
2009
2012
|
return 0;
|
|
@@ -2422,6 +2425,7 @@ __Pyx_RefNannySetupContext("PyInit_redis", 0);
|
|
|
2422
2425
|
* from .utils import gen_redis_key_local, gen_redis_key_status
|
|
2423
2426
|
* from .viso_data import VisoData # <<<<<<<<<<<<<<
|
|
2424
2427
|
* from .stream_cleanup import StreamCleanupManager, clear_stream_redis_keys
|
|
2428
|
+
* from .frame_reader import FrameReader
|
|
2425
2429
|
*/
|
|
2426
2430
|
{
|
|
2427
2431
|
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_VisoData};
|
|
@@ -2444,6 +2448,7 @@ __Pyx_RefNannySetupContext("PyInit_redis", 0);
|
|
|
2444
2448
|
* from .utils import gen_redis_key_local, gen_redis_key_status
|
|
2445
2449
|
* from .viso_data import VisoData
|
|
2446
2450
|
* from .stream_cleanup import StreamCleanupManager, clear_stream_redis_keys # <<<<<<<<<<<<<<
|
|
2451
|
+
* from .frame_reader import FrameReader
|
|
2447
2452
|
*/
|
|
2448
2453
|
{
|
|
2449
2454
|
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_StreamCleanupManager,__pyx_mstate_global->__pyx_n_u_clear_stream_redis_keys};
|
|
@@ -2462,6 +2467,28 @@ __Pyx_RefNannySetupContext("PyInit_redis", 0);
|
|
|
2462
2467
|
}
|
|
2463
2468
|
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
|
|
2464
2469
|
|
|
2470
|
+
/* "viso_sdk/redis/__init__.py":5
|
|
2471
|
+
* from .viso_data import VisoData
|
|
2472
|
+
* from .stream_cleanup import StreamCleanupManager, clear_stream_redis_keys
|
|
2473
|
+
* from .frame_reader import FrameReader # <<<<<<<<<<<<<<
|
|
2474
|
+
*/
|
|
2475
|
+
{
|
|
2476
|
+
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_FrameReader};
|
|
2477
|
+
__pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_frame_reader, __pyx_imported_names, 1, __pyx_mstate_global->__pyx_kp_u_viso_sdk_frame_reader, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
|
|
2478
|
+
}
|
|
2479
|
+
__pyx_t_2 = __pyx_t_1;
|
|
2480
|
+
__Pyx_GOTREF(__pyx_t_2);
|
|
2481
|
+
{
|
|
2482
|
+
PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_FrameReader};
|
|
2483
|
+
__pyx_t_3 = 0; {
|
|
2484
|
+
__pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5, __pyx_L1_error)
|
|
2485
|
+
__Pyx_GOTREF(__pyx_t_4);
|
|
2486
|
+
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 5, __pyx_L1_error)
|
|
2487
|
+
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
|
|
2488
|
+
}
|
|
2489
|
+
}
|
|
2490
|
+
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
|
|
2491
|
+
|
|
2465
2492
|
/* "viso_sdk/redis/__init__.py":1
|
|
2466
2493
|
* from .redis_wrapper import RedisWrapper as VisoRedis # <<<<<<<<<<<<<<
|
|
2467
2494
|
* from .utils import gen_redis_key_local, gen_redis_key_status
|
|
@@ -2525,34 +2552,34 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
|
|
|
2525
2552
|
static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
|
|
2526
2553
|
CYTHON_UNUSED_VAR(__pyx_mstate);
|
|
2527
2554
|
{
|
|
2528
|
-
const struct { const unsigned int length: 5; } index[] = {{1},{1},{23},{22},{23},{14},{18},{12},{20},{8},{9},{23},{18},{19},{20},{8},{10},{8},{12},{13},{10},{14},{8},{5},{9}};
|
|
2529
|
-
#if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (
|
|
2530
|
-
const char* const cstring = "BZh91AY&SY\
|
|
2531
|
-
PyObject *data = __Pyx_DecompressString(cstring,
|
|
2555
|
+
const struct { const unsigned int length: 5; } index[] = {{1},{1},{21},{23},{22},{23},{14},{18},{11},{12},{20},{8},{9},{23},{18},{12},{19},{20},{8},{10},{8},{12},{13},{10},{14},{8},{5},{9}};
|
|
2556
|
+
#if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (235 bytes) */
|
|
2557
|
+
const char* const cstring = "BZh91AY&SY\371\253\337'\000\000\001\337\200@\000\000\001\000\000\215\002\031\200\277\257\377\2400\000\3140\322\231\246\247\222\0004\006\200 &\232CM\000h\001\240\221M\020MO2\2232\r\rF\250\253\234\201C]\341\304\246t\003V 9@\306\345\350DD\032\241|\347\206\010\364\n\231E\031y\202\237lU\330\367\342au\006k\nI\3715\345\274\353\372T\250\313\241P\t\212\232|fl\361\230\246\026\2244==\217\254\245&\363\313e\233\333\034\253x\355\017\220\036\217\3409\300\246\255\266\362X\267>\n@CF\363\260\342? \205\314Dk\201\321QJ\374\024[\337s\217\363B\201\264\201\340\0252b\371AM\000AQ\230\357\014\037!6Z\300\276p\263\351\251\314c\010\300\251'\026\212\201!\374]\311\024\341BC\346\257|\234";
|
|
2558
|
+
PyObject *data = __Pyx_DecompressString(cstring, 235, 2);
|
|
2532
2559
|
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
|
|
2533
2560
|
const char* const bytes = __Pyx_PyBytes_AsString(data);
|
|
2534
2561
|
#if !CYTHON_ASSUME_SAFE_MACROS
|
|
2535
2562
|
if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
|
|
2536
2563
|
#endif
|
|
2537
|
-
#elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (
|
|
2538
|
-
const char* const cstring = "x\
|
|
2539
|
-
PyObject *data = __Pyx_DecompressString(cstring,
|
|
2564
|
+
#elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (189 bytes) */
|
|
2565
|
+
const char* const cstring = "x\332UPA\016\3020\014\373\321\276\300\001\304\215\013Hp\214\302\232M\325\332n4)\210\337\223\266h[sij9v\342\356\360\266<\003\233\251\033\"z\202Hh(\256`$c\271\003\260\301\n@\013\303'\342\262\354\310,:\355\241w\204!-+\234\304:^\177\2451(x\316~\327bw\315r\217\252v+\"\307\252q\301\200#\305\273\316\234t$\277\205\233-\"\374\375\3522\023}\025\266\201tW\220\210==\261\237\366G\215\0246.\270\271G\327B,(\211\001<\252\204\226\237Mr\224\273\220U\264^\t]\355\233\004\230\304\320\200\311I\033\001\200\020kn[\002\371\360\037\306\377\226|";
|
|
2566
|
+
PyObject *data = __Pyx_DecompressString(cstring, 189, 1);
|
|
2540
2567
|
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
|
|
2541
2568
|
const char* const bytes = __Pyx_PyBytes_AsString(data);
|
|
2542
2569
|
#if !CYTHON_ASSUME_SAFE_MACROS
|
|
2543
2570
|
if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
|
|
2544
2571
|
#endif
|
|
2545
|
-
#else /* compression: none (
|
|
2546
|
-
const char* const bytes = ".?viso_sdk.redis.__init__viso_sdk.redis_wrapperviso_sdk.stream_cleanupviso_sdk.utilsviso_sdk.
|
|
2572
|
+
#else /* compression: none (372 bytes) */
|
|
2573
|
+
const char* const bytes = ".?viso_sdk.frame_readerviso_sdk.redis.__init__viso_sdk.redis_wrapperviso_sdk.stream_cleanupviso_sdk.utilsviso_sdk.viso_dataFrameReaderRedisWrapperStreamCleanupManagerVisoDataVisoRedisclear_stream_redis_keyscline_in_tracebackframe_readergen_redis_key_localgen_redis_key_status__main____module____name____qualname__redis_wrappersetdefaultstream_cleanup__test__utilsviso_data";
|
|
2547
2574
|
PyObject *data = NULL;
|
|
2548
2575
|
CYTHON_UNUSED_VAR(__Pyx_DecompressString);
|
|
2549
2576
|
#endif
|
|
2550
2577
|
PyObject **stringtab = __pyx_mstate->__pyx_string_tab;
|
|
2551
2578
|
Py_ssize_t pos = 0;
|
|
2552
|
-
for (int i = 0; i <
|
|
2579
|
+
for (int i = 0; i < 28; i++) {
|
|
2553
2580
|
Py_ssize_t bytes_length = index[i].length;
|
|
2554
2581
|
PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL);
|
|
2555
|
-
if (likely(string) && i >=
|
|
2582
|
+
if (likely(string) && i >= 8) PyUnicode_InternInPlace(&string);
|
|
2556
2583
|
if (unlikely(!string)) {
|
|
2557
2584
|
Py_XDECREF(data);
|
|
2558
2585
|
__PYX_ERR(0, 1, __pyx_L1_error)
|
|
@@ -2561,7 +2588,7 @@ const char* const bytes = ".?viso_sdk.redis.__init__viso_sdk.redis_wrapperviso_s
|
|
|
2561
2588
|
pos += bytes_length;
|
|
2562
2589
|
}
|
|
2563
2590
|
Py_XDECREF(data);
|
|
2564
|
-
for (Py_ssize_t i = 0; i <
|
|
2591
|
+
for (Py_ssize_t i = 0; i < 28; i++) {
|
|
2565
2592
|
if (unlikely(PyObject_Hash(stringtab[i]) == -1)) {
|
|
2566
2593
|
__PYX_ERR(0, 1, __pyx_L1_error)
|
|
2567
2594
|
}
|