viso-sdk-python 1.1.15__tar.gz → 1.1.17__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.15 → viso_sdk_python-1.1.17}/CHANGELOG.md +172 -3
- viso_sdk_python-1.1.17/PKG-INFO +144 -0
- viso_sdk_python-1.1.17/README.md +94 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/requirements-test.txt +1 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/requirements.txt +2 -0
- viso_sdk_python-1.1.17/setup.cfg +16 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/setup.py +12 -5
- viso_sdk_python-1.1.17/tests/conftest.py +43 -0
- viso_sdk_python-1.1.17/tests/integration/test_status.py +77 -0
- {viso_sdk_python-1.1.15/tests → viso_sdk_python-1.1.17/tests/unit}/test_flow.py +3 -3
- viso_sdk_python-1.1.17/tests/unit/test_logger.py +79 -0
- viso_sdk_python-1.1.17/tests/unit/test_model_fetch.py +146 -0
- viso_sdk_python-1.1.17/tests/unit/test_redis_utils.py +127 -0
- viso_sdk_python-1.1.17/tests/unit/test_redis_wrapper.py +96 -0
- viso_sdk_python-1.1.17/tests/unit/test_stream_cleanup.py +183 -0
- viso_sdk_python-1.1.17/tests/unit/test_trace_malloc.py +157 -0
- viso_sdk_python-1.1.17/tests/unit/test_viso_data.py +106 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/__init__.c +55 -53
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/__init__.py +2 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/_version.c +9 -9
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/_version.py +1 -1
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/__init__.c +355 -41
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/__init__.py +4 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/variables.c +135 -98
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/variables.py +1 -1
- viso_sdk_python-1.1.17/viso_sdk/debug/__init__.c +4890 -0
- viso_sdk_python-1.1.17/viso_sdk/debug/__init__.py +2 -0
- viso_sdk_python-1.1.17/viso_sdk/debug/trace_malloc.c +14951 -0
- viso_sdk_python-1.1.17/viso_sdk/debug/trace_malloc.py +155 -0
- viso_sdk_python-1.1.17/viso_sdk/detection/__init__.c +4956 -0
- viso_sdk_python-1.1.17/viso_sdk/detection/__init__.py +10 -0
- viso_sdk_python-1.1.17/viso_sdk/detection/model_utils.c +10782 -0
- viso_sdk_python-1.1.17/viso_sdk/detection/model_utils.py +179 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/detection/object.c +2274 -1241
- viso_sdk_python-1.1.17/viso_sdk/detection/object.py +139 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/logging/__init__.c +64 -30
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/logging/__init__.py +1 -0
- viso_sdk_python-1.1.17/viso_sdk/logging/log_id.c +11869 -0
- viso_sdk_python-1.1.17/viso_sdk/logging/log_id.py +146 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/logging/logger.c +434 -412
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/logging/logger.py +3 -2
- {viso_sdk_python-1.1.15/viso_sdk/detection → viso_sdk_python-1.1.17/viso_sdk/model}/__init__.c +35 -35
- viso_sdk_python-1.1.17/viso_sdk/model/__init__.py +0 -0
- viso_sdk_python-1.1.17/viso_sdk/model/fetch.c +18970 -0
- viso_sdk_python-1.1.17/viso_sdk/model/fetch.py +329 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/mqtt/mqtt_wrapper.c +534 -462
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/mqtt/mqtt_wrapper.py +7 -4
- viso_sdk_python-1.1.17/viso_sdk/py.typed +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/__init__.c +60 -32
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/__init__.py +1 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/redis_wrapper.c +1965 -1163
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/redis_wrapper.py +45 -12
- viso_sdk_python-1.1.17/viso_sdk/redis/stream_cleanup.c +12251 -0
- viso_sdk_python-1.1.17/viso_sdk/redis/stream_cleanup.py +200 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/utils.c +1147 -840
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/utils.py +39 -34
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/viso_data.c +315 -349
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/redis/viso_data.py +5 -3
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/status/status_logger.c +916 -895
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/status/status_logger.py +14 -7
- viso_sdk_python-1.1.17/viso_sdk_python.egg-info/PKG-INFO +144 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk_python.egg-info/SOURCES.txt +25 -4
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk_python.egg-info/requires.txt +2 -0
- viso_sdk_python-1.1.15/PKG-INFO +0 -95
- viso_sdk_python-1.1.15/README.md +0 -47
- viso_sdk_python-1.1.15/setup.cfg +0 -8
- viso_sdk_python-1.1.15/tests/conftest.py +0 -11
- viso_sdk_python-1.1.15/tests/sample.png +0 -0
- viso_sdk_python-1.1.15/tests/test_status.py +0 -64
- viso_sdk_python-1.1.15/tests/test_status_logger.py +0 -29
- viso_sdk_python-1.1.15/viso_sdk/detection/object.py +0 -82
- viso_sdk_python-1.1.15/viso_sdk_python.egg-info/PKG-INFO +0 -95
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/AUTHORS +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/COPYING +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/MANIFEST.in +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/Makefile +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/conf.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/ext/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/ext/docstrings.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/ext/manager_tmpl.j2 +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/index.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/make.bat +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/modules.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk._version.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.constants.constants.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.constants.modules.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.constants.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.constants.variables.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.edge.common.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.edge.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.logging.logger.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.logging.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.model.download.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.model.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.mqtt.mqtt_wrapper.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.mqtt.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.mqtt.utils.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.nodered.flow.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.nodered.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.redis.redis_wrapper.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.redis.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.status.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/docs/source/viso_sdk.status.status_logger.rst +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/pyproject.toml +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/requirements-dev.txt +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/requirements-docker.txt +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/requirements-docs.txt +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/requirements-lint.txt +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/tests/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/tests/fixtures/flow.json +0 -0
- {viso_sdk_python-1.1.15/tests/meta → viso_sdk_python-1.1.17/tests/integration}/__init__.py +0 -0
- {viso_sdk_python-1.1.15/tests/smoke → viso_sdk_python-1.1.17/tests/meta}/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/tests/meta/test_ensure_type_hints.py +0 -0
- {viso_sdk_python-1.1.15/viso_sdk/detection → viso_sdk_python-1.1.17/tests/smoke}/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/tests/smoke/test_dists.py +0 -0
- {viso_sdk_python-1.1.15/viso_sdk/detection/utils → viso_sdk_python-1.1.17/tests/unit}/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/tox.ini +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/constants.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/constants.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/modules.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/constants/modules.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/detection/utils/__init__.c +0 -0
- {viso_sdk_python-1.1.15/viso_sdk/edge → viso_sdk_python-1.1.17/viso_sdk/detection/utils}/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/detection/utils/nms.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/detection/utils/nms.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/edge/__init__.c +0 -0
- /viso_sdk_python-1.1.15/viso_sdk/py.typed → /viso_sdk_python-1.1.17/viso_sdk/edge/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/edge/common.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/edge/common.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/mqtt/__init__.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/mqtt/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/mqtt/utils.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/mqtt/utils.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/nodered/__init__.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/nodered/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/nodered/flow.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/nodered/flow.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/roi/__init__.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/roi/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/roi/polygon_roi_manager.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/roi/polygon_roi_manager.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/status/__init__.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/status/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/structures/__init__.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/structures/__init__.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/structures/rollingq.c +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk/structures/rollingq.py +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk_python.egg-info/dependency_links.txt +0 -0
- {viso_sdk_python-1.1.15 → viso_sdk_python-1.1.17}/viso_sdk_python.egg-info/top_level.txt +0 -0
|
@@ -2,16 +2,89 @@
|
|
|
2
2
|
|
|
3
3
|
<!--next-version-placeholder-->
|
|
4
4
|
|
|
5
|
+
## v1.1.17
|
|
6
|
+
|
|
7
|
+
### Performance Optimizations
|
|
8
|
+
|
|
9
|
+
- **`requirements.txt` / `setup.py`**: Add `orjson>=3.9.0` dependency for 30-50% faster JSON serialization
|
|
10
|
+
- **`status/status_logger.py`**: Replace `json` with `orjson` and eliminate duplicate serialization (serialize once per loop iteration, reuse for MQTT/Redis/logging) — reduces CPU usage by 40-60%
|
|
11
|
+
- **`redis/redis_wrapper.py`**: Implement Redis connection pooling with `max_connections` based on worker count for 20-40% better throughput
|
|
12
|
+
- **`redis/redis_wrapper.py`**: Replace `json` with `orjson` for 30-50% faster serialization/deserialization
|
|
13
|
+
- **`redis/utils.py`**: Optimize `img_to_str()` to return bytes directly instead of unnecessary latin-1 encode/decode cycles
|
|
14
|
+
- **`redis/utils.py`**: Refactor `resize()` to calculate target dimensions once and perform single resize operation (avoid double resize)
|
|
15
|
+
|
|
16
|
+
### Enhancements
|
|
17
|
+
|
|
18
|
+
- **`CONTRIBUTING.md`** (new): Add comprehensive developer documentation including setup, testing workflows (unit/integration/all), CI pipeline details, build instructions, code quality guidelines, and release checklist
|
|
19
|
+
- **`README.md`**: Simplify for public/production use - moved developer-specific content to CONTRIBUTING.md, added usage examples, kept only essential project information
|
|
20
|
+
- **`mqtt/mqtt_wrapper.py`**: Update to MQTT callback API VERSION2 (paho-mqtt 2.x) to fix deprecation warning
|
|
21
|
+
- **`mqtt/mqtt_wrapper.py`**: Update callback signatures for `_on_connect()` and `_on_publish()` to handle `reason_code` and `properties` parameters
|
|
22
|
+
- **`model/fetch.py`**: Add `filter='data'` parameter to `tar.extractall()` for Python 3.12+ compatibility with fallback for older versions
|
|
23
|
+
- **`tests/unit/test_trace_malloc.py`** (new): Add comprehensive unit tests for `TraceMallocManager` (13 tests covering debug on/off, snapshot management, comparison logic, custom logger support)
|
|
24
|
+
- **`scripts/test_tracemalloc.py`** (new): Add standalone test script for validating memory profiling functionality with 4 test scenarios
|
|
25
|
+
|
|
26
|
+
### Fix
|
|
27
|
+
|
|
28
|
+
- `logging/logger.py`: Fix ANSI escape code typo in `bold_red` (`\x1b[31a;1m` → `\x1b[31;1m`) that caused CRITICAL log
|
|
29
|
+
lines to render incorrectly
|
|
30
|
+
- `logging/logger.py`: Fix `get_logger()` clearing and re-adding handlers on every call for the same name; now returns
|
|
31
|
+
the existing logger immediately if handlers are already attached
|
|
32
|
+
- `redis/utils.py`: Fix `resize()` always resizing even when target size matched — tuple vs list comparison (
|
|
33
|
+
`== [h, w]` → `== (h, w)`)
|
|
34
|
+
- `redis/utils.py`: Fix `img_to_str(encoder=None)` raising `UnicodeDecodeError` on arbitrary image bytes; raw bytes are
|
|
35
|
+
now encoded/decoded with `latin-1` for a lossless round-trip
|
|
36
|
+
- `redis/utils.py`: Replace deprecated `np.fromstring` with `np.frombuffer` in `str_to_img`
|
|
37
|
+
- `redis/viso_data.py`: Fix `Meta.to_dict()` generating a fresh `time.time()` timestamp instead of returning the stored
|
|
38
|
+
`self.ts`
|
|
39
|
+
- `redis/stream_cleanup.py`: Replace direct `_redis_client.delete()` access with the public
|
|
40
|
+
`redis_wrapper.delete_data()` API
|
|
41
|
+
|
|
42
|
+
### Enhancements
|
|
43
|
+
|
|
44
|
+
- `redis/redis_wrapper.py`: Remove orphaned local variable `_img_arr = None` in `RedisWrapper.__init__`
|
|
45
|
+
- `setup.py` / `requirements.txt`: Add missing `python-magic` dependency to `install_requires`
|
|
46
|
+
- `constants/variables.py`: Centralise `TOKEN_FILE` path constant (moved from `model/fetch.py`)
|
|
47
|
+
- `model/fetch.py`: Add full type annotations (`Optional[str]`, `bool`, `None`) and Google-style docstrings to all
|
|
48
|
+
public functions; add module-level docstring documenting consumed environment variables
|
|
49
|
+
- `debug/trace_malloc.py` (new): Add `viso_sdk.debug` package with `TraceMallocManager` — a `threading.Thread` subclass
|
|
50
|
+
wrapping `tracemalloc` and `gc` for memory-leak diagnostics in long-running containers; fixes mutable default logger
|
|
51
|
+
argument and uninitialised snapshot attributes when `debug=False`
|
|
52
|
+
- `logging/log_id.py` (new): Add `LogIDGenerator`, `ErrorType`, and `EventType` to `viso_sdk.logging` for structured,
|
|
53
|
+
thread-safe correlation IDs across events, errors, and sessions; exported via `viso_sdk.logging` public API
|
|
54
|
+
|
|
55
|
+
## v1.1.16
|
|
56
|
+
|
|
57
|
+
### Features
|
|
58
|
+
|
|
59
|
+
- Add `StreamCleanupManager` class and `clear_stream_redis_keys()` helper to `viso_sdk.redis` for discovering and
|
|
60
|
+
clearing Redis KV stores across Node-RED flow graphs
|
|
61
|
+
- Add `model_utils` module to `viso_sdk.detection` with `ModelArchitecture`, `YoloModelFilesInfo`, `FasterRcnnBackbone`,
|
|
62
|
+
`detect_model_architecture()`, and `check_model_architecture()` utilities
|
|
63
|
+
|
|
64
|
+
### Enhancements
|
|
65
|
+
|
|
66
|
+
- `Detection.__init__`: support list-typed `roi_id`/`roi_name`, auto-normalize pixel-space bounding boxes using
|
|
67
|
+
`frame_sz` parameter
|
|
68
|
+
- `Detection`: add `to_tlbr()` and `to_xyah()` bounding box conversion methods
|
|
69
|
+
- Export `StreamCleanupManager` and `clear_stream_redis_keys` in `viso_sdk.redis` public API
|
|
70
|
+
- Export detection utilities (`BaseDetect`, `Detection`, `filter_iou_threshold`, `filter_labels`, `ModelArchitecture`,
|
|
71
|
+
etc.) in `viso_sdk.detection` public API
|
|
72
|
+
|
|
5
73
|
## v1.1.15
|
|
74
|
+
|
|
6
75
|
### fix
|
|
76
|
+
|
|
7
77
|
- Add ROI overlap detection feature to identify objects present in multiple ROIs simultaneously
|
|
8
78
|
|
|
9
79
|
## v1.1.14
|
|
80
|
+
|
|
10
81
|
### Fix
|
|
82
|
+
|
|
11
83
|
- Fix ROI assignment bug where objects retained first ROI info when moving between ROIs
|
|
12
84
|
- Fix staticmethod decorator conflict in `_assign_roi_info` helper method
|
|
13
85
|
|
|
14
86
|
### Enhancements
|
|
87
|
+
|
|
15
88
|
- Refactor duplicated ROI assignment code into `_assign_roi_info` static method
|
|
16
89
|
- Remove console handler to prevent duplicate logging to syslog/journal
|
|
17
90
|
- Add dynamic log level control with `set_log_level()` function
|
|
@@ -21,190 +94,286 @@
|
|
|
21
94
|
- Add comprehensive docstring to `exception_traceback` function
|
|
22
95
|
|
|
23
96
|
### Breaking Changes
|
|
97
|
+
|
|
24
98
|
- Default log level changed to WARNING (minimal logs) - use `set_minimal_logging(False)` for INFO logs
|
|
25
99
|
- Console/stdout logging disabled by default - only enabled when log level is INFO or DEBUG
|
|
26
100
|
- Logs now only written to disk files by default (not visible in `podman logs` unless verbose mode enabled)
|
|
27
101
|
|
|
28
102
|
## v1.1.13
|
|
103
|
+
|
|
29
104
|
### Enhancements
|
|
105
|
+
|
|
30
106
|
- `FlowAPIWrapper`: read `NODE_RED_HOST` env var for k8s compatibility; falls back to `127.0.0.1` when not set
|
|
31
107
|
- `RedisWrapper`: read `REDIS_HOST` env var for k8s compatibility; falls back to `localhost` when not set
|
|
32
108
|
- `MqttWrapper`: read `MQTT_HOST` env var for k8s compatibility; falls back to `127.0.0.1` when not set
|
|
33
109
|
|
|
34
110
|
## v1.1.12
|
|
111
|
+
|
|
35
112
|
### Fix
|
|
36
|
-
|
|
113
|
+
|
|
114
|
+
- Fix metadata update methods to handle falsy values (0, False) correctly in MetaSource, MetaModule, and MetaFrameFormat
|
|
115
|
+
classes. Previously, output_port_idx=0 was being filtered out during metadata propagation.
|
|
37
116
|
|
|
38
117
|
## v1.1.11
|
|
118
|
+
|
|
39
119
|
### Enhancements
|
|
120
|
+
|
|
40
121
|
- Increase log file size to 50MB
|
|
41
122
|
|
|
42
123
|
## v1.1.10
|
|
124
|
+
|
|
43
125
|
### Enhancements
|
|
126
|
+
|
|
44
127
|
- remove visualization scripts and font
|
|
45
128
|
- remove pillow package
|
|
46
129
|
|
|
47
130
|
## v1.1.8
|
|
131
|
+
|
|
48
132
|
### Enhancements
|
|
133
|
+
|
|
49
134
|
- Add thread pool executors to handle redis requests
|
|
50
135
|
- Add redis frame TTL
|
|
51
136
|
|
|
52
137
|
## v1.1.7
|
|
138
|
+
|
|
53
139
|
### Fix
|
|
140
|
+
|
|
54
141
|
- Revert deletion of redis frames which caused issue with multiple consumers
|
|
55
142
|
|
|
56
143
|
## v1.1.6
|
|
144
|
+
|
|
57
145
|
### Fix
|
|
146
|
+
|
|
58
147
|
- Fix bug with importing nonexisted data structures
|
|
59
148
|
|
|
60
149
|
## v1.1.5
|
|
150
|
+
|
|
61
151
|
### Enhancements
|
|
152
|
+
|
|
62
153
|
- Redis frames are deleted once pulled to avoid processing twice
|
|
63
154
|
- New data structures have been added (RQueue) to improve performance
|
|
64
155
|
- Add new constant variables
|
|
65
156
|
|
|
66
157
|
## v1.1.4
|
|
158
|
+
|
|
67
159
|
### Enhancements
|
|
160
|
+
|
|
68
161
|
- add available devices in the AARCH64 architecture
|
|
69
162
|
|
|
70
163
|
## v1.1.3
|
|
164
|
+
|
|
71
165
|
### Enhancements
|
|
166
|
+
|
|
72
167
|
- remove opencv-contrib-python and update opencv-python-headless to 4.10.0
|
|
73
168
|
|
|
74
169
|
## v1.1.2
|
|
170
|
+
|
|
75
171
|
### Enhancements
|
|
172
|
+
|
|
76
173
|
- upgrade opencv version to 4.10.0
|
|
174
|
+
|
|
77
175
|
### Features
|
|
176
|
+
|
|
78
177
|
- add new modules in constants.modules
|
|
79
178
|
- add publish key values in the constants.constants
|
|
80
179
|
|
|
81
180
|
## v1.0.8
|
|
181
|
+
|
|
82
182
|
### Fix
|
|
183
|
+
|
|
83
184
|
- fix issue - cannot find video-feed when using video-feed-ip(usb, videofile) source
|
|
185
|
+
|
|
84
186
|
### Enhancements
|
|
187
|
+
|
|
85
188
|
- updated documents
|
|
189
|
+
|
|
86
190
|
### Features
|
|
191
|
+
|
|
87
192
|
- add new modules in constants.modules
|
|
88
193
|
|
|
89
194
|
## v1.0.7
|
|
195
|
+
|
|
90
196
|
### Fix
|
|
197
|
+
|
|
91
198
|
- inherit viso_data.meta object
|
|
92
199
|
|
|
93
200
|
## v1.0.6
|
|
201
|
+
|
|
94
202
|
### Fix
|
|
203
|
+
|
|
95
204
|
- standard TensorRT spell as lowercase() -> tensorrt
|
|
96
205
|
|
|
97
206
|
## v1.0.5
|
|
207
|
+
|
|
98
208
|
### Fix
|
|
209
|
+
|
|
99
210
|
- indicate numpy version for fixing - ImportError: numpy.core.multiarray failed to import
|
|
100
211
|
|
|
101
212
|
## v1.0.4
|
|
213
|
+
|
|
102
214
|
### Fix
|
|
215
|
+
|
|
103
216
|
- viso_data.meta.source.update() - Fix attribute error when new attribute comes
|
|
104
217
|
|
|
105
218
|
## v1.0.2
|
|
219
|
+
|
|
106
220
|
### Enhancements
|
|
221
|
+
|
|
107
222
|
- viso_data() - split into sub dataclasses MetaSource(), MetaModule(), MetaFrameFormat()
|
|
108
223
|
|
|
109
224
|
## v1.0.1
|
|
225
|
+
|
|
110
226
|
### Enhancements
|
|
227
|
+
|
|
111
228
|
- viso_data(), default version is set 1
|
|
229
|
+
|
|
112
230
|
### Features
|
|
231
|
+
|
|
113
232
|
- integrate viso_data into redis_utils
|
|
233
|
+
|
|
114
234
|
### Fix
|
|
235
|
+
|
|
115
236
|
- status_logger using new redis_utils
|
|
116
237
|
- redis_wrapper decoding bytes to str
|
|
117
238
|
|
|
118
239
|
## v1.0.0 = v0.2.15
|
|
119
240
|
|
|
120
241
|
## v0.2.15
|
|
242
|
+
|
|
121
243
|
### Features
|
|
244
|
+
|
|
122
245
|
- soft merge redis_meta with redis_encoding
|
|
123
246
|
|
|
124
247
|
## v0.2.14
|
|
248
|
+
|
|
125
249
|
### Enhancements
|
|
250
|
+
|
|
126
251
|
- add instance object for detection result
|
|
252
|
+
|
|
127
253
|
### Fix
|
|
254
|
+
|
|
128
255
|
- indicate proper paho-mqtt version
|
|
129
256
|
|
|
130
257
|
## v0.2.12/v0.2.13
|
|
258
|
+
|
|
131
259
|
### Enhancements
|
|
260
|
+
|
|
132
261
|
- add member functions into __init__.py (redis and mqtt)
|
|
262
|
+
|
|
133
263
|
### Fix
|
|
264
|
+
|
|
134
265
|
- remove func redis_wrapper.gen_redis_key_status()
|
|
135
266
|
|
|
136
267
|
## v0.2.11
|
|
268
|
+
|
|
137
269
|
### Enhancements
|
|
270
|
+
|
|
138
271
|
- remove pillow version
|
|
139
272
|
|
|
140
273
|
## v0.2.10
|
|
274
|
+
|
|
141
275
|
### Enhancements
|
|
276
|
+
|
|
142
277
|
- update to python3.10
|
|
143
278
|
|
|
144
279
|
## v0.2.9
|
|
280
|
+
|
|
145
281
|
### Enhancements
|
|
282
|
+
|
|
146
283
|
- more detailed visualization parameters
|
|
147
284
|
|
|
148
285
|
## v0.2.7(v0.2.8)
|
|
286
|
+
|
|
149
287
|
### Enhancements
|
|
288
|
+
|
|
150
289
|
- constants - add common keys for object tracking/recognition
|
|
151
290
|
- visualization:
|
|
152
|
-
|
|
153
|
-
|
|
291
|
+
- add draw_tracking_objects
|
|
292
|
+
- ignore empty object lists on visualization function
|
|
154
293
|
|
|
155
294
|
## v0.2.6
|
|
295
|
+
|
|
156
296
|
### Fix
|
|
297
|
+
|
|
157
298
|
- update other viz functions (vis_obj, vis_roi) using updated utils.put_text()
|
|
158
299
|
|
|
159
300
|
## v0.2.5
|
|
301
|
+
|
|
160
302
|
### Fix
|
|
303
|
+
|
|
161
304
|
- update function to calculate padding in the case of multi-line text
|
|
162
305
|
- add new framework TensorRT
|
|
163
306
|
- update utils.put_text() parameter names
|
|
164
307
|
|
|
165
308
|
## v0.2.4
|
|
309
|
+
|
|
166
310
|
### Features
|
|
311
|
+
|
|
167
312
|
- sphinx autodoc
|
|
168
313
|
|
|
169
314
|
## v0.2.3
|
|
315
|
+
|
|
170
316
|
### Features
|
|
317
|
+
|
|
171
318
|
- added drawer function for (line-type) roi objects
|
|
319
|
+
|
|
172
320
|
### Fix
|
|
321
|
+
|
|
173
322
|
- visualize.utils.put_text() - correct padding calculation
|
|
174
323
|
- visualize.utils.put_text() - treat multi-line text too
|
|
175
324
|
- visualize.utils.put_text() - added option for center align
|
|
176
325
|
|
|
177
326
|
## v0.2.2
|
|
327
|
+
|
|
178
328
|
### Features
|
|
329
|
+
|
|
179
330
|
- new declaration of modules
|
|
331
|
+
|
|
180
332
|
### Fix
|
|
333
|
+
|
|
181
334
|
- VizObj, VizRoi - missed arguments (text_color)
|
|
182
335
|
- update default shadow_color with pillow RGBA format(255, 0, 0, 255) = RED
|
|
183
336
|
|
|
184
337
|
## v0.2.1
|
|
338
|
+
|
|
185
339
|
### Fix
|
|
340
|
+
|
|
186
341
|
- update default shadow_color with pillow RGBA format(255, 0, 0, 255) = RED
|
|
187
342
|
|
|
188
343
|
## v0.2.0
|
|
344
|
+
|
|
189
345
|
### Features
|
|
346
|
+
|
|
190
347
|
- new declaration of modules
|
|
191
348
|
- added CHANGELOG.md
|
|
349
|
+
|
|
192
350
|
### Fix
|
|
351
|
+
|
|
193
352
|
- VizObj, VizRoi - missed arguments (text_color)
|
|
194
353
|
- alpha channel value type, float to integer
|
|
195
354
|
|
|
196
355
|
## v0.1.3
|
|
356
|
+
|
|
197
357
|
### Enhancements
|
|
358
|
+
|
|
198
359
|
- Update visualization for dynamic fonts
|
|
360
|
+
|
|
199
361
|
### Fix
|
|
362
|
+
|
|
200
363
|
- init_font() - the case of not existing font_name
|
|
201
364
|
|
|
202
365
|
## v0.1.2
|
|
366
|
+
|
|
203
367
|
### Enhancements
|
|
368
|
+
|
|
204
369
|
- upgrade opencv version to 4.6.0
|
|
370
|
+
|
|
205
371
|
### Fix
|
|
372
|
+
|
|
206
373
|
- fix font_path
|
|
207
374
|
|
|
208
375
|
## v0.1.0
|
|
376
|
+
|
|
209
377
|
### Fix
|
|
378
|
+
|
|
210
379
|
- fix color order from BGR to RGB
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: viso-sdk-python
|
|
3
|
+
Version: 1.1.17
|
|
4
|
+
Summary: VisoSDK: A Python SDK for use in Viso containers
|
|
5
|
+
Home-page: https://gitlab.com/TopKamera/03_edge/Base/viso-sdk-python-public.git
|
|
6
|
+
Author: support@viso.ai
|
|
7
|
+
Author-email: support@viso.ai
|
|
8
|
+
License: LGPLv3
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: System Administrators
|
|
12
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
|
|
13
|
+
Classifier: Natural Language :: English
|
|
14
|
+
Classifier: Operating System :: POSIX
|
|
15
|
+
Classifier: Programming Language :: Python
|
|
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
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Requires-Python: >=3.6.0
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: COPYING
|
|
25
|
+
License-File: AUTHORS
|
|
26
|
+
Requires-Dist: requests
|
|
27
|
+
Requires-Dist: requests-toolbelt
|
|
28
|
+
Requires-Dist: setuptools
|
|
29
|
+
Requires-Dist: paho-mqtt
|
|
30
|
+
Requires-Dist: redis
|
|
31
|
+
Requires-Dist: opencv-contrib-python-headless~=4.10.0
|
|
32
|
+
Requires-Dist: cython~=3.0.2
|
|
33
|
+
Requires-Dist: numpy~=1.26.2
|
|
34
|
+
Requires-Dist: six~=1.16.0
|
|
35
|
+
Requires-Dist: traceback2~=1.4.0
|
|
36
|
+
Requires-Dist: shapely~=2.0.7
|
|
37
|
+
Requires-Dist: python-magic
|
|
38
|
+
Requires-Dist: orjson>=3.9.0
|
|
39
|
+
Dynamic: author
|
|
40
|
+
Dynamic: author-email
|
|
41
|
+
Dynamic: classifier
|
|
42
|
+
Dynamic: description
|
|
43
|
+
Dynamic: description-content-type
|
|
44
|
+
Dynamic: home-page
|
|
45
|
+
Dynamic: license
|
|
46
|
+
Dynamic: license-file
|
|
47
|
+
Dynamic: requires-dist
|
|
48
|
+
Dynamic: requires-python
|
|
49
|
+
Dynamic: summary
|
|
50
|
+
|
|
51
|
+
# viso-sdk-python
|
|
52
|
+
|
|
53
|
+
**viso-sdk-python** is a Python SDK providing shared utilities for [viso.ai](https://viso.ai) edge containers. It covers logging, Redis/MQTT communication, model fetching, ROI handling, detection structures, and more.
|
|
54
|
+
|
|
55
|
+
Licensed under [LGPLv3](https://www.gnu.org/licenses/lgpl-3.0.html).
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Requirements
|
|
60
|
+
|
|
61
|
+
- **Python** >= 3.6
|
|
62
|
+
- **System library**: `libmagic1` (required by the `model` module)
|
|
63
|
+
|
|
64
|
+
```shell
|
|
65
|
+
apt-get install libmagic1
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Installation
|
|
71
|
+
|
|
72
|
+
```shell
|
|
73
|
+
pip install viso-sdk-python
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Modules
|
|
79
|
+
|
|
80
|
+
| Module | Description |
|
|
81
|
+
|---|---|
|
|
82
|
+
| `viso_sdk.constants` | Shared constants and environment-driven configuration |
|
|
83
|
+
| `viso_sdk.model` | Model fetching, extraction, and type detection |
|
|
84
|
+
| `viso_sdk.logging` | Centralised logger factory |
|
|
85
|
+
| `viso_sdk.redis` | Redis stream wrapper and cleanup utilities |
|
|
86
|
+
| `viso_sdk.mqtt` | MQTT client wrapper |
|
|
87
|
+
| `viso_sdk.roi` | Region-of-interest helpers |
|
|
88
|
+
| `viso_sdk.detection` | Detection result structures |
|
|
89
|
+
| `viso_sdk.edge` | Edge device utilities |
|
|
90
|
+
| `viso_sdk.status` | Container status reporting |
|
|
91
|
+
| `viso_sdk.nodered` | Node-RED integration helpers |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Usage Examples
|
|
96
|
+
|
|
97
|
+
### Redis Communication
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
from viso_sdk.redis import RedisWrapper, VisoData
|
|
101
|
+
|
|
102
|
+
# Initialize Redis wrapper
|
|
103
|
+
redis = RedisWrapper(host="localhost", port=6379)
|
|
104
|
+
|
|
105
|
+
# Write data
|
|
106
|
+
redis.write_data("my_key", {"status": "active"})
|
|
107
|
+
|
|
108
|
+
# Read data
|
|
109
|
+
data = redis.read_viso_data("my_key")
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### MQTT Messaging
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
from viso_sdk.mqtt import MqttWrapper
|
|
116
|
+
|
|
117
|
+
# Initialize MQTT client
|
|
118
|
+
mqtt = MqttWrapper()
|
|
119
|
+
|
|
120
|
+
# Publish message
|
|
121
|
+
mqtt.publish(topic="device/status", message='{"state": "online"}')
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Logging
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
from viso_sdk.logging import get_logger
|
|
128
|
+
|
|
129
|
+
logger = get_logger("MyModule")
|
|
130
|
+
logger.info("Application started")
|
|
131
|
+
logger.error("An error occurred")
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Contributing
|
|
137
|
+
|
|
138
|
+
Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing guidelines, and CI pipeline information.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
Licensed under [LGPLv3](https://www.gnu.org/licenses/lgpl-3.0.html).
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# viso-sdk-python
|
|
2
|
+
|
|
3
|
+
**viso-sdk-python** is a Python SDK providing shared utilities for [viso.ai](https://viso.ai) edge containers. It covers logging, Redis/MQTT communication, model fetching, ROI handling, detection structures, and more.
|
|
4
|
+
|
|
5
|
+
Licensed under [LGPLv3](https://www.gnu.org/licenses/lgpl-3.0.html).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
|
|
11
|
+
- **Python** >= 3.6
|
|
12
|
+
- **System library**: `libmagic1` (required by the `model` module)
|
|
13
|
+
|
|
14
|
+
```shell
|
|
15
|
+
apt-get install libmagic1
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```shell
|
|
23
|
+
pip install viso-sdk-python
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Modules
|
|
29
|
+
|
|
30
|
+
| Module | Description |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `viso_sdk.constants` | Shared constants and environment-driven configuration |
|
|
33
|
+
| `viso_sdk.model` | Model fetching, extraction, and type detection |
|
|
34
|
+
| `viso_sdk.logging` | Centralised logger factory |
|
|
35
|
+
| `viso_sdk.redis` | Redis stream wrapper and cleanup utilities |
|
|
36
|
+
| `viso_sdk.mqtt` | MQTT client wrapper |
|
|
37
|
+
| `viso_sdk.roi` | Region-of-interest helpers |
|
|
38
|
+
| `viso_sdk.detection` | Detection result structures |
|
|
39
|
+
| `viso_sdk.edge` | Edge device utilities |
|
|
40
|
+
| `viso_sdk.status` | Container status reporting |
|
|
41
|
+
| `viso_sdk.nodered` | Node-RED integration helpers |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Usage Examples
|
|
46
|
+
|
|
47
|
+
### Redis Communication
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from viso_sdk.redis import RedisWrapper, VisoData
|
|
51
|
+
|
|
52
|
+
# Initialize Redis wrapper
|
|
53
|
+
redis = RedisWrapper(host="localhost", port=6379)
|
|
54
|
+
|
|
55
|
+
# Write data
|
|
56
|
+
redis.write_data("my_key", {"status": "active"})
|
|
57
|
+
|
|
58
|
+
# Read data
|
|
59
|
+
data = redis.read_viso_data("my_key")
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### MQTT Messaging
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from viso_sdk.mqtt import MqttWrapper
|
|
66
|
+
|
|
67
|
+
# Initialize MQTT client
|
|
68
|
+
mqtt = MqttWrapper()
|
|
69
|
+
|
|
70
|
+
# Publish message
|
|
71
|
+
mqtt.publish(topic="device/status", message='{"state": "online"}')
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Logging
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
from viso_sdk.logging import get_logger
|
|
78
|
+
|
|
79
|
+
logger = get_logger("MyModule")
|
|
80
|
+
logger.info("Application started")
|
|
81
|
+
logger.error("An error occurred")
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Contributing
|
|
87
|
+
|
|
88
|
+
Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing guidelines, and CI pipeline information.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## License
|
|
93
|
+
|
|
94
|
+
Licensed under [LGPLv3](https://www.gnu.org/licenses/lgpl-3.0.html).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[build_sphinx]
|
|
2
|
+
warning-is-error = 1
|
|
3
|
+
keep-going = 1
|
|
4
|
+
|
|
5
|
+
[tool:pytest]
|
|
6
|
+
markers =
|
|
7
|
+
integration: marks tests that require external services (Redis, MQTT) -- run with docker-compose
|
|
8
|
+
testpaths = tests
|
|
9
|
+
python_files = test_*.py
|
|
10
|
+
python_classes = Test*
|
|
11
|
+
python_functions = test_*
|
|
12
|
+
|
|
13
|
+
[egg_info]
|
|
14
|
+
tag_build =
|
|
15
|
+
tag_date = 0
|
|
16
|
+
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/python
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
+
import os
|
|
3
4
|
from setuptools import find_packages, setup
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
USE_CYTHON = os.environ.get("USE_CYTHON", "1") != "0"
|
|
7
|
+
|
|
8
|
+
if USE_CYTHON:
|
|
9
|
+
from Cython.Build import cythonize
|
|
10
|
+
from setuptools_cythonize import get_cmdclass
|
|
6
11
|
|
|
7
12
|
from codecs import open
|
|
8
13
|
from os import path
|
|
@@ -30,7 +35,7 @@ with open("requirements.txt") as f:
|
|
|
30
35
|
|
|
31
36
|
setup(
|
|
32
37
|
name="viso-sdk-python",
|
|
33
|
-
cmdclass=get_cmdclass(),
|
|
38
|
+
cmdclass=get_cmdclass() if USE_CYTHON else {},
|
|
34
39
|
version=__version__,
|
|
35
40
|
description="VisoSDK: A Python SDK for use in Viso containers",
|
|
36
41
|
long_description=readme,
|
|
@@ -53,7 +58,9 @@ setup(
|
|
|
53
58
|
"numpy~=1.26.2",
|
|
54
59
|
"six~=1.16.0",
|
|
55
60
|
"traceback2~=1.4.0",
|
|
56
|
-
"shapely~=2.0.7"
|
|
61
|
+
"shapely~=2.0.7",
|
|
62
|
+
"python-magic",
|
|
63
|
+
"orjson>=3.9.0"
|
|
57
64
|
],
|
|
58
65
|
package_data={"viso_sdk": ["assets/*", "assets/*/*"]},
|
|
59
66
|
python_requires=">=3.6.0",
|
|
@@ -74,7 +81,7 @@ setup(
|
|
|
74
81
|
"Programming Language :: Python :: 3.9",
|
|
75
82
|
"Programming Language :: Python :: 3.10",
|
|
76
83
|
],
|
|
77
|
-
ext_modules=cythonize("viso_sdk/**/*.py", compiler_directives={"language_level": "3"}),
|
|
84
|
+
ext_modules=cythonize("viso_sdk/**/*.py", compiler_directives={"language_level": "3"}) if USE_CYTHON else [],
|
|
78
85
|
# options={"bdist_wheel": {"universal": True}},
|
|
79
86
|
# extras_require={
|
|
80
87
|
# "autocompletion": ["argcomplete>=1.10.0,<3"],
|