viso-sdk-python 1.1.12__tar.gz → 1.1.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/CHANGELOG.md +25 -0
  2. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/PKG-INFO +1 -1
  3. viso_sdk_python-1.1.14/requirements-dev.txt +13 -0
  4. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/_version.c +9 -9
  5. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/_version.py +1 -1
  6. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/logging/__init__.c +32 -29
  7. viso_sdk_python-1.1.14/viso_sdk/logging/__init__.py +2 -0
  8. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/logging/logger.c +2202 -887
  9. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/logging/logger.py +112 -11
  10. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/mqtt/mqtt_wrapper.c +804 -765
  11. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/mqtt/mqtt_wrapper.py +2 -1
  12. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/nodered/flow.c +1289 -827
  13. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/nodered/flow.py +2 -1
  14. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/redis_wrapper.c +1474 -866
  15. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/redis_wrapper.py +2 -1
  16. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/roi/polygon_roi_manager.c +1119 -838
  17. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/roi/polygon_roi_manager.py +15 -9
  18. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk_python.egg-info/PKG-INFO +1 -1
  19. viso_sdk_python-1.1.12/requirements-dev.txt +0 -3
  20. viso_sdk_python-1.1.12/viso_sdk/logging/__init__.py +0 -2
  21. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/AUTHORS +0 -0
  22. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/COPYING +0 -0
  23. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/MANIFEST.in +0 -0
  24. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/README.md +0 -0
  25. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/Makefile +0 -0
  26. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/__init__.py +0 -0
  27. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/conf.py +0 -0
  28. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/ext/__init__.py +0 -0
  29. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/ext/docstrings.py +0 -0
  30. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/ext/manager_tmpl.j2 +0 -0
  31. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/index.rst +0 -0
  32. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/make.bat +0 -0
  33. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/modules.rst +0 -0
  34. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk._version.rst +0 -0
  35. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.constants.constants.rst +0 -0
  36. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.constants.modules.rst +0 -0
  37. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.constants.rst +0 -0
  38. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.constants.variables.rst +0 -0
  39. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.edge.common.rst +0 -0
  40. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.edge.rst +0 -0
  41. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.logging.logger.rst +0 -0
  42. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.logging.rst +0 -0
  43. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.model.download.rst +0 -0
  44. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.model.rst +0 -0
  45. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.mqtt.mqtt_wrapper.rst +0 -0
  46. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.mqtt.rst +0 -0
  47. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.mqtt.utils.rst +0 -0
  48. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.nodered.flow.rst +0 -0
  49. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.nodered.rst +0 -0
  50. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.redis.redis_wrapper.rst +0 -0
  51. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.redis.rst +0 -0
  52. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.rst +0 -0
  53. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.status.rst +0 -0
  54. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/docs/source/viso_sdk.status.status_logger.rst +0 -0
  55. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/pyproject.toml +0 -0
  56. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/requirements-docker.txt +0 -0
  57. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/requirements-docs.txt +0 -0
  58. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/requirements-lint.txt +0 -0
  59. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/requirements-test.txt +0 -0
  60. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/requirements.txt +0 -0
  61. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/setup.cfg +0 -0
  62. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/setup.py +0 -0
  63. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/__init__.py +0 -0
  64. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/conftest.py +0 -0
  65. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/fixtures/flow.json +0 -0
  66. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/meta/__init__.py +0 -0
  67. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/meta/test_ensure_type_hints.py +0 -0
  68. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/sample.png +0 -0
  69. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/smoke/__init__.py +0 -0
  70. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/smoke/test_dists.py +0 -0
  71. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/test_flow.py +0 -0
  72. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/test_status.py +0 -0
  73. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tests/test_status_logger.py +0 -0
  74. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/tox.ini +0 -0
  75. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/__init__.c +0 -0
  76. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/__init__.py +0 -0
  77. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/__init__.c +0 -0
  78. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/__init__.py +0 -0
  79. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/constants.c +0 -0
  80. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/constants.py +0 -0
  81. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/modules.c +0 -0
  82. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/modules.py +0 -0
  83. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/variables.c +0 -0
  84. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/constants/variables.py +0 -0
  85. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/__init__.c +0 -0
  86. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/__init__.py +0 -0
  87. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/object.c +0 -0
  88. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/object.py +0 -0
  89. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/utils/__init__.c +0 -0
  90. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/utils/__init__.py +0 -0
  91. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/utils/nms.c +0 -0
  92. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/detection/utils/nms.py +0 -0
  93. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/edge/__init__.c +0 -0
  94. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/edge/__init__.py +0 -0
  95. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/edge/common.c +0 -0
  96. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/edge/common.py +0 -0
  97. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/mqtt/__init__.c +0 -0
  98. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/mqtt/__init__.py +0 -0
  99. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/mqtt/utils.c +0 -0
  100. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/mqtt/utils.py +0 -0
  101. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/nodered/__init__.c +0 -0
  102. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/nodered/__init__.py +0 -0
  103. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/py.typed +0 -0
  104. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/__init__.c +0 -0
  105. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/__init__.py +0 -0
  106. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/utils.c +0 -0
  107. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/utils.py +0 -0
  108. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/viso_data.c +0 -0
  109. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/redis/viso_data.py +0 -0
  110. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/roi/__init__.c +0 -0
  111. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/roi/__init__.py +0 -0
  112. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/status/__init__.c +0 -0
  113. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/status/__init__.py +0 -0
  114. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/status/status_logger.c +0 -0
  115. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/status/status_logger.py +0 -0
  116. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/structures/__init__.c +0 -0
  117. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/structures/__init__.py +0 -0
  118. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/structures/rollingq.c +0 -0
  119. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk/structures/rollingq.py +0 -0
  120. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk_python.egg-info/SOURCES.txt +0 -0
  121. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk_python.egg-info/dependency_links.txt +0 -0
  122. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk_python.egg-info/requires.txt +0 -0
  123. {viso_sdk_python-1.1.12 → viso_sdk_python-1.1.14}/viso_sdk_python.egg-info/top_level.txt +0 -0
@@ -2,6 +2,31 @@
2
2
 
3
3
  <!--next-version-placeholder-->
4
4
 
5
+ ## v1.1.14
6
+ ### Fix
7
+ - Fix ROI assignment bug where objects retained first ROI info when moving between ROIs
8
+ - Fix staticmethod decorator conflict in `_assign_roi_info` helper method
9
+
10
+ ### Enhancements
11
+ - Refactor duplicated ROI assignment code into `_assign_roi_info` static method
12
+ - Remove console handler to prevent duplicate logging to syslog/journal
13
+ - Add dynamic log level control with `set_log_level()` function
14
+ - Add `set_minimal_logging()` convenience function for boolean-based log control
15
+ - Console output now dynamically enabled only in verbose mode (INFO/DEBUG levels)
16
+ - Export `LOG_LEVEL_MAP` and `set_minimal_logging` in logging module public API
17
+ - Add comprehensive docstring to `exception_traceback` function
18
+
19
+ ### Breaking Changes
20
+ - Default log level changed to WARNING (minimal logs) - use `set_minimal_logging(False)` for INFO logs
21
+ - Console/stdout logging disabled by default - only enabled when log level is INFO or DEBUG
22
+ - Logs now only written to disk files by default (not visible in `podman logs` unless verbose mode enabled)
23
+
24
+ ## v1.1.13
25
+ ### Enhancements
26
+ - `FlowAPIWrapper`: read `NODE_RED_HOST` env var for k8s compatibility; falls back to `127.0.0.1` when not set
27
+ - `RedisWrapper`: read `REDIS_HOST` env var for k8s compatibility; falls back to `localhost` when not set
28
+ - `MqttWrapper`: read `MQTT_HOST` env var for k8s compatibility; falls back to `127.0.0.1` when not set
29
+
5
30
  ## v1.1.12
6
31
  ### Fix
7
32
  - Fix metadata update methods to handle falsy values (0, False) correctly in MetaSource, MetaModule, and MetaFrameFormat classes. Previously, output_port_idx=0 was being filtered out during metadata propagation.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: viso-sdk-python
3
- Version: 1.1.12
3
+ Version: 1.1.14
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
@@ -0,0 +1,13 @@
1
+ -r requirements.txt
2
+
3
+ # Development tools
4
+ pre-commit
5
+ setuptools-cythonize
6
+
7
+ # Testing
8
+ pytest>=7.4.0
9
+ pytest-cov>=4.1.0
10
+ pytest-mock>=3.11.1
11
+
12
+ # Environment management (dev only)
13
+ python-dotenv>=1.0.0
@@ -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 __pyx_kp_u_1_1_12 __pyx_string_tab[1]
1997
+ #define __pyx_kp_u_1_1_14 __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.12"
2608
+ * __version__ = "1.1.14"
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.12" # <<<<<<<<<<<<<<
2615
+ * __version__ = "1.1.14" # <<<<<<<<<<<<<<
2616
2616
  */
2617
- if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_version, __pyx_mstate_global->__pyx_kp_u_1_1_12) < (0)) __PYX_ERR(0, 17, __pyx_L1_error)
2617
+ if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_version, __pyx_mstate_global->__pyx_kp_u_1_1_14) < (0)) __PYX_ERR(0, 17, __pyx_L1_error)
2618
2618
 
2619
2619
  /* "viso_sdk/_version.py":1
2620
2620
  * """ # <<<<<<<<<<<<<<
@@ -2689,23 +2689,23 @@ static int __Pyx_InitConstants(__pyx_mstatetype *__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
2691
  #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (242 bytes) */
2692
- const char* const cstring = "BZh91AY&SY\270\350\217\303\000\000\007\337\200@\000@\003x\005\350\204A\000\277\357\377\2400\000\315[\014\246\251\261O(\360\232j\000\321\264\232h\010\211\246\322i\211\246@\006\200\006\203S\324\332\246\232\214\236\204cQ\240\032h\320\241>\347\334\355\306\332o\010\007\210\210\226\301\234Q\366\315\367;\223z2XP\2023\310-UQ\316\374)\240#D\020\020(\200\306k\276 p\037#\027q~z\r+^\206E\205F\022Fk\332\250\2413&\376\326\351\277g\3269[\254\375/+\002\242\200J\362\230-\"\277P\230\260jDZ\355\302j\345Z;\323\335\007\277\006&\325&\026S'\013o\312\032\311\217\351\304(\r\027I\234\365\277\000\220\356J\247@\2203B\032\302\324n\222\3221\247\261c\033\246\254\243\362\242&\354\217\361w$S\205\t\013\216\210\3740";
2692
+ const char* const cstring = "BZh91AY&SY\031\26109\000\000\007\337\200@\000@\003|\005\350\204A\000\277\357\377\2400\000\315[\014\246\251\261\032\217\005<\240\r\007\244\323@DM6\223LM2\000\000\001\240\324\3656\251\246\241\232\020\304\310\3204\321\241B}\317\023\177kg\260 \035\340 Z\376\rG[']N7\363d\253B\010\313\310Z\267(\347m\323\314\021\232\010\010\024@c\311w\270\016\003\344b\354\037\236\203J\027\241\211a\270\276(\315:U\024$b\337\332]'j\372\314\025\256\316\316e`Tm\0023)E\244\027\351\362\025\rH\213YH\275X\250Gz{\240\367\332\304\326\244\302\251\344\341_\034a\254\230\376\276!0f\271\314\347\255\367\004GrU*\004\201\212\020\326\026\203r\226\221\215=K\030Y%%\037\225\001,<\037\342\356H\247\n\022\0036&\007 ";
2693
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 (194 bytes) */
2700
- const char* const cstring = "x\3325\216\275n\3030\014\204_\305/`#u\327\242?\350\220%C\246\256\004#\3211\021\231t%*\205\337\276t\034\203\303\035\356\003y\354^:\237\376[\347%\363u\264\246?\364\207\366\207\213v\310\215\021N\037\327.hv\210\362y\177\346\273~\035\2337\226Aw\360\276j[\342\255\235\027\033UN\307\363\351\025/eF\033\001\260z\226\001Bb!`\001\313\030\350\202\341\346\331\376\000\270\257\031\"\347\210F\306\023\271\025\234\010\200&\344\344\034\006N\264j\342@R\036\326\221<Tc\335\340\266#\372\247\317\372\337\212i\013\013Y\244\001k\3626\243\262v\202\261m{w\312\205\325\217-\204\371\0373\303m\350";
2701
- PyObject *data = __Pyx_DecompressString(cstring, 194, 1);
2699
+ #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (195 bytes) */
2700
+ const char* const cstring = "x\3325\216\275n\3030\014\204_\305/`#M;\006\375A\207,\031:u%\030\211\216\211\310\244+Q\t\374\366\245\343\030\034\356p\037\310c\367\322\371\274}\3534g\276\014\326\354w\373]\373\313E;\344\306\010\307\217K\0274;D\371\274=\363M\277\216\315\201\245\327\r\274/\332\226xm\247\331\006\225\323\361\347\364\212\3472\241\r\000X=\313\000!\261\020\260\200e\014t\306p\365l{\000\334\327\014\221sD#\343\221\334\n\216\004@#rr\016='Z4q )\017\353H\036\252\261\256p\335\021\275\353\263\376\257bZ\303B\026\251\307\232\274\315\250,\235`l\353\336\215ra\365c3a\376\0075\365m\352";
2701
+ PyObject *data = __Pyx_DecompressString(cstring, 195, 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.12Copyright 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";
2708
+ const char* const bytes = ".1.1.14Copyright 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
@@ -14,4 +14,4 @@ __email__ = "g.corrigan@viso.ai"
14
14
  __license__ = "LGPL3"
15
15
  __title__ = "viso-sdk-python"
16
16
 
17
- __version__ = "1.1.12"
17
+ __version__ = "1.1.14"
@@ -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[14];
1920
+ PyObject *__pyx_string_tab[17];
1921
1921
  /* #### Code section: module_state_contents ### */
1922
1922
  /* CodeObjectCache.module_state_decls */
1923
1923
  struct __Pyx_CodeObjectCache __pyx_code_cache;
@@ -1951,16 +1951,19 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati
1951
1951
  #define __pyx_kp_u__2 __pyx_string_tab[1]
1952
1952
  #define __pyx_kp_u_viso_sdk_logger __pyx_string_tab[2]
1953
1953
  #define __pyx_kp_u_viso_sdk_logging___init __pyx_string_tab[3]
1954
- #define __pyx_n_u_cline_in_traceback __pyx_string_tab[4]
1955
- #define __pyx_n_u_exception_traceback __pyx_string_tab[5]
1956
- #define __pyx_n_u_get_logger __pyx_string_tab[6]
1957
- #define __pyx_n_u_logger __pyx_string_tab[7]
1958
- #define __pyx_n_u_main __pyx_string_tab[8]
1959
- #define __pyx_n_u_module __pyx_string_tab[9]
1960
- #define __pyx_n_u_name __pyx_string_tab[10]
1961
- #define __pyx_n_u_qualname __pyx_string_tab[11]
1962
- #define __pyx_n_u_setdefault __pyx_string_tab[12]
1963
- #define __pyx_n_u_test __pyx_string_tab[13]
1954
+ #define __pyx_n_u_LOG_LEVEL_MAP __pyx_string_tab[4]
1955
+ #define __pyx_n_u_cline_in_traceback __pyx_string_tab[5]
1956
+ #define __pyx_n_u_exception_traceback __pyx_string_tab[6]
1957
+ #define __pyx_n_u_get_logger __pyx_string_tab[7]
1958
+ #define __pyx_n_u_logger __pyx_string_tab[8]
1959
+ #define __pyx_n_u_main __pyx_string_tab[9]
1960
+ #define __pyx_n_u_module __pyx_string_tab[10]
1961
+ #define __pyx_n_u_name __pyx_string_tab[11]
1962
+ #define __pyx_n_u_qualname __pyx_string_tab[12]
1963
+ #define __pyx_n_u_set_log_level __pyx_string_tab[13]
1964
+ #define __pyx_n_u_set_minimal_logging __pyx_string_tab[14]
1965
+ #define __pyx_n_u_setdefault __pyx_string_tab[15]
1966
+ #define __pyx_n_u_test __pyx_string_tab[16]
1964
1967
  /* #### Code section: module_state_clear ### */
1965
1968
  #if CYTHON_USE_MODULE_STATE
1966
1969
  static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
@@ -1975,7 +1978,7 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
1975
1978
  #if CYTHON_PEP489_MULTI_PHASE_INIT
1976
1979
  __Pyx_State_RemoveModule(NULL);
1977
1980
  #endif
1978
- for (int i=0; i<14; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
1981
+ for (int i=0; i<17; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
1979
1982
  /* #### Code section: module_state_clear_contents ### */
1980
1983
  /* #### Code section: module_state_clear_end ### */
1981
1984
  return 0;
@@ -1992,7 +1995,7 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void
1992
1995
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple);
1993
1996
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes);
1994
1997
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode);
1995
- for (int i=0; i<14; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
1998
+ for (int i=0; i<17; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
1996
1999
  /* #### Code section: module_state_traverse_contents ### */
1997
2000
  /* #### Code section: module_state_traverse_end ### */
1998
2001
  return 0;
@@ -2358,17 +2361,17 @@ __Pyx_RefNannySetupContext("PyInit_logging", 0);
2358
2361
 
2359
2362
  /* "viso_sdk/logging/__init__.py":2
2360
2363
  *
2361
- * from .logger import get_logger, exception_traceback # <<<<<<<<<<<<<<
2364
+ * from .logger import get_logger, exception_traceback, set_log_level, set_minimal_logging, LOG_LEVEL_MAP # <<<<<<<<<<<<<<
2362
2365
  */
2363
2366
  {
2364
- PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_get_logger,__pyx_mstate_global->__pyx_n_u_exception_traceback};
2365
- __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_logger, __pyx_imported_names, 2, __pyx_mstate_global->__pyx_kp_u_viso_sdk_logger, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
2367
+ PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_get_logger,__pyx_mstate_global->__pyx_n_u_exception_traceback,__pyx_mstate_global->__pyx_n_u_set_log_level,__pyx_mstate_global->__pyx_n_u_set_minimal_logging,__pyx_mstate_global->__pyx_n_u_LOG_LEVEL_MAP};
2368
+ __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_logger, __pyx_imported_names, 5, __pyx_mstate_global->__pyx_kp_u_viso_sdk_logger, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
2366
2369
  }
2367
2370
  __pyx_t_2 = __pyx_t_1;
2368
2371
  __Pyx_GOTREF(__pyx_t_2);
2369
2372
  {
2370
- PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_get_logger,__pyx_mstate_global->__pyx_n_u_exception_traceback};
2371
- for (__pyx_t_3=0; __pyx_t_3 < 2; __pyx_t_3++) {
2373
+ PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_get_logger,__pyx_mstate_global->__pyx_n_u_exception_traceback,__pyx_mstate_global->__pyx_n_u_set_log_level,__pyx_mstate_global->__pyx_n_u_set_minimal_logging,__pyx_mstate_global->__pyx_n_u_LOG_LEVEL_MAP};
2374
+ for (__pyx_t_3=0; __pyx_t_3 < 5; __pyx_t_3++) {
2372
2375
  __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2, __pyx_L1_error)
2373
2376
  __Pyx_GOTREF(__pyx_t_4);
2374
2377
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 2, __pyx_L1_error)
@@ -2434,31 +2437,31 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
2434
2437
  static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
2435
2438
  CYTHON_UNUSED_VAR(__pyx_mstate);
2436
2439
  {
2437
- const struct { const unsigned int length: 5; } index[] = {{1},{1},{15},{25},{18},{19},{10},{6},{8},{10},{8},{12},{10},{8}};
2438
- #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (138 bytes) */
2439
- const char* const cstring = "BZh91AY&SY\\\315\207\364\000\000\001\333\200@\000\000\001\000\000\200\000\277\257\377@ \000u\rL\210z'\352M\036\220\300\2244\221=G\242zh'\250\203\335\211L\335\273^\302\236\222\244<>\0074(X\307\222qS\351\227+\363\000\375\310\245\307\250\360dg\257\022\204h\002\222b\263\310b\010\355&\355q\262\310u\341\274n\233\203\010\026(\367\034\253I\032\306\210\237\316f\366\315\365\376.\344\212p\241 \271\233\017\350";
2440
- PyObject *data = __Pyx_DecompressString(cstring, 138, 2);
2440
+ const struct { const unsigned int length: 5; } index[] = {{1},{1},{15},{25},{13},{18},{19},{10},{6},{8},{10},{8},{12},{13},{19},{10},{8}};
2441
+ #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (168 bytes) */
2442
+ const char* const cstring = "BZh91AY&SY\367\304\356*\000\000\001\337\200@\000\000\001\000\000\242\206\301\000\277\257\377@ \000\225\004\250\324\320z\2324\0002\r\004\251\232\211\241\246\243hCA\243J\006\233\021\306\264\312e\031Q \311\242\320\340ho\261O\217&\227Dn\237\320\345\345f\304O\\E\347$\332uw\305\360yl\216\346\231\261U\032Y(+\352c\221\203\210\256\263\211U\216D\352T\302\323I\365m\206\353s\375\270~\021\233\346\240hf\210,$\331\214_\tZ\3427\274PK\363\034\332\262\346\317\374]\311\024\341BC\337\023\270\250";
2443
+ PyObject *data = __Pyx_DecompressString(cstring, 168, 2);
2441
2444
  if (unlikely(!data)) __PYX_ERR(0, 2, __pyx_L1_error)
2442
2445
  const char* const bytes = __Pyx_PyBytes_AsString(data);
2443
2446
  #if !CYTHON_ASSUME_SAFE_MACROS
2444
2447
  if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 2, __pyx_L1_error) }
2445
2448
  #endif
2446
- #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (103 bytes) */
2447
- const char* const cstring = "x\332U\215Q\016\202!\014\203o\304\025<J3\241\222\345\037\240?\303x|\247\274h\037\332oK\266\246\313S\347\300,G\262Q+\317\277Q{M\200vu \233v\006\303O\311\274J>\370\312\274\273\216\237U\245c\377\331\0164\211\223P\033e\031?\324\245}\363\261\3046Oz\341M\226E\215s\206\277\001\320\267<}";
2448
- PyObject *data = __Pyx_DecompressString(cstring, 103, 1);
2449
+ #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (133 bytes) */
2450
+ const char* const cstring = "x\332UNA\016\002!\014\374\021_0\0366^0z\362:\251P\t\331\002\272\300f\237oW<h\017\323\3164\323\2169\254\261\026T?\033)!\360\362Gc\016\006\21096\300^N\260\323m\2628\037\257Nbf]\240-\344\370Nn\346\315\361\263\305\362#\005n\030G\007\002\211\324\242\225\212\357\302\373\224)}\372\253\223\214\271\016\027\204W\226\235$\375\237H\360\r\244\222\347\007u\321L\215\253\342\033[BM\257";
2451
+ PyObject *data = __Pyx_DecompressString(cstring, 133, 1);
2449
2452
  if (unlikely(!data)) __PYX_ERR(0, 2, __pyx_L1_error)
2450
2453
  const char* const bytes = __Pyx_PyBytes_AsString(data);
2451
2454
  #if !CYTHON_ASSUME_SAFE_MACROS
2452
2455
  if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 2, __pyx_L1_error) }
2453
2456
  #endif
2454
- #else /* compression: none (151 bytes) */
2455
- const char* const bytes = ".?viso_sdk.loggerviso_sdk.logging.__init__cline_in_tracebackexception_tracebackget_loggerlogger__main____module____name____qualname__setdefault__test__";
2457
+ #else /* compression: none (196 bytes) */
2458
+ const char* const bytes = ".?viso_sdk.loggerviso_sdk.logging.__init__LOG_LEVEL_MAPcline_in_tracebackexception_tracebackget_loggerlogger__main____module____name____qualname__set_log_levelset_minimal_loggingsetdefault__test__";
2456
2459
  PyObject *data = NULL;
2457
2460
  CYTHON_UNUSED_VAR(__Pyx_DecompressString);
2458
2461
  #endif
2459
2462
  PyObject **stringtab = __pyx_mstate->__pyx_string_tab;
2460
2463
  Py_ssize_t pos = 0;
2461
- for (int i = 0; i < 14; i++) {
2464
+ for (int i = 0; i < 17; i++) {
2462
2465
  Py_ssize_t bytes_length = index[i].length;
2463
2466
  PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL);
2464
2467
  if (likely(string) && i >= 4) PyUnicode_InternInPlace(&string);
@@ -2470,7 +2473,7 @@ const char* const bytes = ".?viso_sdk.loggerviso_sdk.logging.__init__cline_in_tr
2470
2473
  pos += bytes_length;
2471
2474
  }
2472
2475
  Py_XDECREF(data);
2473
- for (Py_ssize_t i = 0; i < 14; i++) {
2476
+ for (Py_ssize_t i = 0; i < 17; i++) {
2474
2477
  if (unlikely(PyObject_Hash(stringtab[i]) == -1)) {
2475
2478
  __PYX_ERR(0, 2, __pyx_L1_error)
2476
2479
  }
@@ -0,0 +1,2 @@
1
+
2
+ from .logger import get_logger, exception_traceback, set_log_level, set_minimal_logging, LOG_LEVEL_MAP