holado 0.2.7__tar.gz → 0.2.8__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.

Potentially problematic release.


This version of holado might be problematic. Click here for more details.

Files changed (656) hide show
  1. {holado-0.2.7 → holado-0.2.8}/PKG-INFO +4 -1
  2. holado-0.2.8/packaging/VERSION +1 -0
  3. {holado-0.2.7 → holado-0.2.8}/pyproject.toml +1 -0
  4. {holado-0.2.7 → holado-0.2.8}/requirements_docker.txt +3 -2
  5. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table.py +2 -2
  6. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/string_tools.py +9 -0
  7. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/tables_steps.py +9 -2
  8. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/action.py +16 -7
  9. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/blocking_socket.py +86 -29
  10. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/echo_server.py +4 -3
  11. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/message_socket.py +59 -20
  12. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/non_blocking_socket.py +58 -60
  13. holado-0.2.8/src/holado_python/standard_library/socket/socket.py +275 -0
  14. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/socket_steps.py +15 -3
  15. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/ssl_steps.py +1 -1
  16. holado-0.2.8/src/holado_scripting/text/interpreter/functions/function_apply_function.py +60 -0
  17. holado-0.2.8/src/holado_scripting/text/interpreter/functions/function_to_string.py +50 -0
  18. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/text_interpreter.py +4 -0
  19. {holado-0.2.7 → holado-0.2.8}/src/holado_test/scenario/step_tools.py +4 -3
  20. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_cell.py +5 -0
  21. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_row.py +0 -1
  22. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tools/value.py +5 -1
  23. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/standard_library/socket.feature +62 -0
  24. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/standard_library/socket_with_ssl.feature +77 -1
  25. holado-0.2.7/packaging/VERSION +0 -1
  26. holado-0.2.7/src/holado_python/standard_library/socket/socket.py +0 -148
  27. {holado-0.2.7 → holado-0.2.8}/.gitignore +0 -0
  28. {holado-0.2.7 → holado-0.2.8}/.gitlab-ci.yml +0 -0
  29. {holado-0.2.7 → holado-0.2.8}/Dockerfile +0 -0
  30. {holado-0.2.7 → holado-0.2.8}/INSTALL +0 -0
  31. {holado-0.2.7 → holado-0.2.8}/LICENSE +0 -0
  32. {holado-0.2.7 → holado-0.2.8}/NOTES.md +0 -0
  33. {holado-0.2.7 → holado-0.2.8}/README.md +0 -0
  34. {holado-0.2.7 → holado-0.2.8}/README.rst +0 -0
  35. {holado-0.2.7 → holado-0.2.8}/TODO +0 -0
  36. {holado-0.2.7 → holado-0.2.8}/dependencies/protoc/README.txt +0 -0
  37. {holado-0.2.7 → holado-0.2.8}/packaging/generate_distribution_archive.sh +0 -0
  38. {holado-0.2.7 → holado-0.2.8}/packaging/publish_distribution_archive.sh +0 -0
  39. {holado-0.2.7 → holado-0.2.8}/packaging/publish_distribution_archive_on_testpypi.sh +0 -0
  40. {holado-0.2.7 → holado-0.2.8}/requirements.txt +0 -0
  41. {holado-0.2.7 → holado-0.2.8}/resources/scripts/generate_scenario_duration_limits.py +0 -0
  42. {holado-0.2.7 → holado-0.2.8}/resources/scripts/generate_scenario_duration_tags.py +0 -0
  43. {holado-0.2.7 → holado-0.2.8}/resources/scripts/print_execution_historic.py +0 -0
  44. {holado-0.2.7 → holado-0.2.8}/resources/scripts/update_scenario_duration_tags.py +0 -0
  45. {holado-0.2.7 → holado-0.2.8}/resources/ssh/id_rsa +0 -0
  46. {holado-0.2.7 → holado-0.2.8}/resources/ssh/id_rsa.pub +0 -0
  47. {holado-0.2.7 → holado-0.2.8}/run_test.sh +0 -0
  48. {holado-0.2.7 → holado-0.2.8}/run_test_draft.sh +0 -0
  49. {holado-0.2.7 → holado-0.2.8}/run_test_needupdate.sh +0 -0
  50. {holado-0.2.7 → holado-0.2.8}/run_test_nonreg.sh +0 -0
  51. {holado-0.2.7 → holado-0.2.8}/src/holado/__init__.py +0 -0
  52. {holado-0.2.7 → holado-0.2.8}/src/holado/common/__init__.py +0 -0
  53. {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/__init__.py +0 -0
  54. {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/context.py +0 -0
  55. {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/service_manager.py +0 -0
  56. {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/session_context.py +0 -0
  57. {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/__init__.py +0 -0
  58. {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/enums.py +0 -0
  59. {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/object.py +0 -0
  60. {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/undefined.py +0 -0
  61. {holado-0.2.7 → holado-0.2.8}/src/holado/common/tools/__init__.py +0 -0
  62. {holado-0.2.7 → holado-0.2.8}/src/holado/common/tools/gc_manager.py +0 -0
  63. {holado-0.2.7 → holado-0.2.8}/src/holado/holado_config.py +0 -0
  64. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/__init__.py +0 -0
  65. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/MaritimeIdentificationDigits.csv +0 -0
  66. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/ais_manager.py +0 -0
  67. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/ais_messages.py +0 -0
  68. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/ais_payload.py +0 -0
  69. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/enums.py +0 -0
  70. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/patch_pyais.py +0 -0
  71. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/__init__.py +0 -0
  72. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/ais/__init__.py +0 -0
  73. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/ais/ais_manager_steps.py +0 -0
  74. {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/ais/ais_messages_steps.py +0 -0
  75. {holado-0.2.7 → holado-0.2.8}/src/holado_binary/__init__.py +0 -0
  76. {holado-0.2.7 → holado-0.2.8}/src/holado_binary/ipc/binary.py +0 -0
  77. {holado-0.2.7 → holado-0.2.8}/src/holado_binary/ipc/bit_series.py +0 -0
  78. {holado-0.2.7 → holado-0.2.8}/src/holado_binary/tests/behave/steps/__init__.py +0 -0
  79. {holado-0.2.7 → holado-0.2.8}/src/holado_binary/tests/behave/steps/ipc/binary_steps.py +0 -0
  80. {holado-0.2.7 → holado-0.2.8}/src/holado_binary/tests/behave/steps/ipc/bit_series_steps.py +0 -0
  81. {holado-0.2.7 → holado-0.2.8}/src/holado_context/__init__.py +0 -0
  82. {holado-0.2.7 → holado-0.2.8}/src/holado_context/tests/behave/steps/__init__.py +0 -0
  83. {holado-0.2.7 → holado-0.2.8}/src/holado_context/tests/behave/steps/private/__init__.py +0 -0
  84. {holado-0.2.7 → holado-0.2.8}/src/holado_context/tests/behave/steps/private/common/context_steps.py +0 -0
  85. {holado-0.2.7 → holado-0.2.8}/src/holado_core/__init__.py +0 -0
  86. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/__init__.py +0 -0
  87. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/actions.py +0 -0
  88. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/actor.py +0 -0
  89. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/element_actor.py +0 -0
  90. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/find_actor.py +0 -0
  91. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/tree_actor.py +0 -0
  92. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/verify_actions.py +0 -0
  93. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/base.py +0 -0
  94. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/block_manager.py +0 -0
  95. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/block_method.py +0 -0
  96. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/block_steps.py +0 -0
  97. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/function.py +0 -0
  98. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/scope_function.py +0 -0
  99. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/scope_manager.py +0 -0
  100. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/scope_steps.py +0 -0
  101. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/and_criteria.py +0 -0
  102. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/criteria.py +0 -0
  103. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/or_criteria.py +0 -0
  104. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/tools/criteria_context.py +0 -0
  105. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/tools/criteria_parameters.py +0 -0
  106. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/driver.py +0 -0
  107. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/element_driver.py +0 -0
  108. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/element_internal_api.py +0 -0
  109. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/internal_api.py +0 -0
  110. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/tree_driver.py +0 -0
  111. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/tree_internal_api.py +0 -0
  112. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/__init__.py +0 -0
  113. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/element_exception.py +0 -0
  114. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/exceptions.py +0 -0
  115. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/functional_exception.py +0 -0
  116. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/holado_exception.py +0 -0
  117. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/technical_exception.py +0 -0
  118. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/timeout_exception.py +0 -0
  119. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/verify_exception.py +0 -0
  120. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/after_in_tree_finder.py +0 -0
  121. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/element_finder.py +0 -0
  122. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/else_finder.py +0 -0
  123. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/finder.py +0 -0
  124. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/or_finder.py +0 -0
  125. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/then_finder.py +0 -0
  126. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/enums.py +0 -0
  127. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_builder.py +0 -0
  128. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_context.py +0 -0
  129. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_info.py +0 -0
  130. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_parameters.py +0 -0
  131. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_updater.py +0 -0
  132. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/finder_info.py +0 -0
  133. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tree_finder.py +0 -0
  134. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/__init__.py +0 -0
  135. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/abstracts/base_redo.py +0 -0
  136. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/abstracts/get_or_create.py +0 -0
  137. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/element_holder.py +0 -0
  138. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/enums.py +0 -0
  139. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/exceptions/redo_exceptions.py +0 -0
  140. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/features/resource_by_name.py +0 -0
  141. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/features/resource_by_type.py +0 -0
  142. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/redo.py +0 -0
  143. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/wait.py +0 -0
  144. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/element_inspector.py +0 -0
  145. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/inspector.py +0 -0
  146. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tools/inspect_builder.py +0 -0
  147. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tools/inspect_context.py +0 -0
  148. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tools/inspect_parameters.py +0 -0
  149. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tree_inspector.py +0 -0
  150. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/resource/persisted_data_manager.py +0 -0
  151. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/resource/persisted_method_to_call_manager.py +0 -0
  152. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/resource/resource_manager.py +0 -0
  153. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/__init__.py +0 -0
  154. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/__init__.py +0 -0
  155. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/boolean_table_cell_comparator.py +0 -0
  156. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/bytes_table_cell_comparator.py +0 -0
  157. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/datetime_table_cell_comparator.py +0 -0
  158. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/float_table_cell_comparator.py +0 -0
  159. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/integer_table_cell_comparator.py +0 -0
  160. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/internal_table_cell_comparator.py +0 -0
  161. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/string_table_cell_comparator.py +0 -0
  162. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/string_table_comparator.py +0 -0
  163. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/string_table_row_comparator.py +0 -0
  164. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_cell_comparator.py +0 -0
  165. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_comparator.py +0 -0
  166. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_comparator_manager.py +0 -0
  167. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_row_comparator.py +0 -0
  168. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_with_header_comparator.py +0 -0
  169. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/converters/__init__.py +0 -0
  170. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/converters/table_converter.py +0 -0
  171. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/enums.py +0 -0
  172. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_cell.py +0 -0
  173. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_manager.py +0 -0
  174. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_row.py +0 -0
  175. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_with_header.py +0 -0
  176. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/__init__.py +0 -0
  177. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/comparators/comparator.py +0 -0
  178. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/comparators/object_comparator.py +0 -0
  179. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/converters/converter.py +0 -0
  180. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/path_manager.py +0 -0
  181. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/tools.py +0 -0
  182. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/transport/__init__.py +0 -0
  183. {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/transport/crc.py +0 -0
  184. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/__init__.py +0 -0
  185. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/__init__.py +0 -0
  186. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/common_steps.py +0 -0
  187. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/config_steps.py +0 -0
  188. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/resource_steps.py +0 -0
  189. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/__init__.py +0 -0
  190. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/abstracts/__init__.py +0 -0
  191. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/abstracts/blocking_command_service.py +0 -0
  192. {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/abstracts/service.py +0 -0
  193. {holado-0.2.7 → holado-0.2.8}/src/holado_data/__init__.py +0 -0
  194. {holado-0.2.7 → holado-0.2.8}/src/holado_data/data/generator/base.py +0 -0
  195. {holado-0.2.7 → holado-0.2.8}/src/holado_data/data/generator/python_generator.py +0 -0
  196. {holado-0.2.7 → holado-0.2.8}/src/holado_data/tests/behave/steps/__init__.py +0 -0
  197. {holado-0.2.7 → holado-0.2.8}/src/holado_data/tests/behave/steps/data/generator_steps.py +0 -0
  198. {holado-0.2.7 → holado-0.2.8}/src/holado_data/tests/behave/steps/tools/utils_steps.py +0 -0
  199. {holado-0.2.7 → holado-0.2.8}/src/holado_db/__init__.py +0 -0
  200. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/__init__.py +0 -0
  201. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/tools/db/db_client_steps.py +0 -0
  202. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/tools/db/postgresql_client_steps.py +0 -0
  203. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/tools/db/sqlite_client_steps.py +0 -0
  204. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/clients/base/db_client.py +0 -0
  205. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/clients/postgresql/postgresql_client.py +0 -0
  206. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/clients/sqlite/sqlite_client.py +0 -0
  207. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/db_manager.py +0 -0
  208. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/query/base/query_builder.py +0 -0
  209. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/query/pypika/pypika_query_builder.py +0 -0
  210. {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/query/query_manager.py +0 -0
  211. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/__init__.py +0 -0
  212. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/sdk/docker/docker_client.py +0 -0
  213. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/sdk/docker/docker_service.py +0 -0
  214. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tests/behave/steps/__init__.py +0 -0
  215. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tests/behave/steps/tools/docker_steps.py +0 -0
  216. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/__init__.py +0 -0
  217. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/docker_controler_client.py +0 -0
  218. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/docker_controler_server.py +0 -0
  219. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/compile_proto.py +0 -0
  220. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/definitions/docker_controler.proto +0 -0
  221. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2.py +0 -0
  222. {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2_grpc.py +0 -0
  223. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/scripts/script_custom_initialization.py +0 -0
  224. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/scripts/script_minimal_initialization.py +0 -0
  225. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/__main__.py +0 -0
  226. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/behave_environment.py +0 -0
  227. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/environment.py +0 -0
  228. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/features/Configuration/Actions/configure_system.feature +0 -0
  229. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/features/NonReg/example.feature +0 -0
  230. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/initialize_holado.py +0 -0
  231. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/logging.conf +0 -0
  232. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/requirements.txt +0 -0
  233. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/run_test.sh +0 -0
  234. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/run_test_nonreg.sh +0 -0
  235. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/src/common/tools/path_manager.py +0 -0
  236. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/src/config/config_manager.py +0 -0
  237. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/src/context/session_context.py +0 -0
  238. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/steps/config_steps.py +0 -0
  239. {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/steps/public_steps.py +0 -0
  240. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/__init__.py +0 -0
  241. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/api/rpc/TODO.txt +0 -0
  242. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/api/rpc/grpc_client.py +0 -0
  243. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/api/rpc/grpc_manager.py +0 -0
  244. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/ipc/rpc/__init__.py +0 -0
  245. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/ipc/rpc/grpc_compiler.py +0 -0
  246. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/ipc/rpc/grpc_services.py +0 -0
  247. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/__init__.py +0 -0
  248. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/api/grpc_client_steps.py +0 -0
  249. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/private/__init__.py +0 -0
  250. {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/private/api/grpc_steps.py +0 -0
  251. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/__init__.py +0 -0
  252. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/debug/README.txt +0 -0
  253. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/debug/memory/memory_profiler.py +0 -0
  254. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/init_user.sh +0 -0
  255. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/logging.conf +0 -0
  256. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/run_holado_test_nonreg_in_docker.sh +0 -0
  257. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/run_terminal_in_docker-with_docker_control.sh +0 -0
  258. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/run_terminal_in_docker.sh +0 -0
  259. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/holado_module_template/__init__.py +0 -0
  260. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/holado_module_template/test/behave/steps/__init__.py +0 -0
  261. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/holado_module_template/test/behave/steps/private/__init__.py +0 -0
  262. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/initialize_holado.py +0 -0
  263. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/action_script.py +0 -0
  264. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/any_action_script.py +0 -0
  265. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/behave_action_script.py +0 -0
  266. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/csv_action_script.py +0 -0
  267. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/initialize_script.py +0 -0
  268. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/input_output_script.py +0 -0
  269. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/job.py +0 -0
  270. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/json_action_script.py +0 -0
  271. {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/script.py +0 -0
  272. {holado-0.2.7 → holado-0.2.8}/src/holado_json/__init__.py +0 -0
  273. {holado-0.2.7 → holado-0.2.8}/src/holado_json/ipc/json.py +0 -0
  274. {holado-0.2.7 → holado-0.2.8}/src/holado_json/ipc/json_converter.py +0 -0
  275. {holado-0.2.7 → holado-0.2.8}/src/holado_json/ipc/json_types.py +0 -0
  276. {holado-0.2.7 → holado-0.2.8}/src/holado_json/tests/behave/steps/__init__.py +0 -0
  277. {holado-0.2.7 → holado-0.2.8}/src/holado_json/tests/behave/steps/ipc/__init__.py +0 -0
  278. {holado-0.2.7 → holado-0.2.8}/src/holado_json/tests/behave/steps/ipc/json_steps.py +0 -0
  279. {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/__init__.py +0 -0
  280. {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tests/behave/steps/__init__.py +0 -0
  281. {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py +0 -0
  282. {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tools/keycloak/__init__.py +0 -0
  283. {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tools/keycloak/keycloak_client.py +0 -0
  284. {holado-0.2.7 → holado-0.2.8}/src/holado_logging/__init__.py +0 -0
  285. {holado-0.2.7 → holado-0.2.8}/src/holado_logging/common/logging/holado_logger.py +0 -0
  286. {holado-0.2.7 → holado-0.2.8}/src/holado_logging/common/logging/log_config.py +0 -0
  287. {holado-0.2.7 → holado-0.2.8}/src/holado_logging/common/logging/log_manager.py +0 -0
  288. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/__init__.py +0 -0
  289. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/context/process_context.py +0 -0
  290. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/function_process.py +0 -0
  291. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/periodic_function_process.py +0 -0
  292. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/process.py +0 -0
  293. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/processesmanager.py +0 -0
  294. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multitasking/multitask_manager.py +0 -0
  295. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/__init__.py +0 -0
  296. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/context/thread_context.py +0 -0
  297. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/functionthreaded.py +0 -0
  298. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/loopfunctionthreaded.py +0 -0
  299. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/loopthread.py +0 -0
  300. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/periodicfunctionthreaded.py +0 -0
  301. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/reflection/inspect.py +0 -0
  302. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/reflection/sys.py +0 -0
  303. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/reflection/traceback.py +0 -0
  304. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/thread.py +0 -0
  305. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/threadsmanager.py +0 -0
  306. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/timer.py +0 -0
  307. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/tests/behave/steps/__init__.py +0 -0
  308. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/tests/behave/steps/multiprocessing_steps.py +0 -0
  309. {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/tests/behave/steps/multithreading_steps.py +0 -0
  310. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/__init__.py +0 -0
  311. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/__init__.py +0 -0
  312. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/abstracts/type.py +0 -0
  313. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_compiler.py +0 -0
  314. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_converter.py +0 -0
  315. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_messages.py +0 -0
  316. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_modifier.py +0 -0
  317. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/types/__init__.py +0 -0
  318. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/types/google/__init__.py +0 -0
  319. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/types/google/protobuf.py +0 -0
  320. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/tests/behave/steps/__init__.py +0 -0
  321. {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/tests/behave/steps/ipc/protobuf_steps.py +0 -0
  322. {holado-0.2.7 → holado-0.2.8}/src/holado_python/__init__.py +0 -0
  323. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/enums.py +0 -0
  324. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/iterables.py +0 -0
  325. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/boolean_comparator.py +0 -0
  326. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/bytes_comparator.py +0 -0
  327. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/datetime_comparator.py +0 -0
  328. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/float_comparator.py +0 -0
  329. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/integer_comparator.py +0 -0
  330. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/string_comparator.py +0 -0
  331. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/type_comparator.py +0 -0
  332. {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/datetime.py +0 -0
  333. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/csv.py +0 -0
  334. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/hashlib.py +0 -0
  335. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/multiprocessing.py +0 -0
  336. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/queue.py +0 -0
  337. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/resources/certificates/NOTES.txt +0 -0
  338. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/resources/certificates/localhost.crt +0 -0
  339. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/resources/certificates/localhost.key +0 -0
  340. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/ssl.py +0 -0
  341. {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/typing.py +0 -0
  342. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/__init__.py +0 -0
  343. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/builtins/str_steps.py +0 -0
  344. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/convert_steps.py +0 -0
  345. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/iterable_steps.py +0 -0
  346. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/csv_steps.py +0 -0
  347. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/datetime_steps.py +0 -0
  348. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/hashlib_steps.py +0 -0
  349. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/multiprocessing_steps.py +0 -0
  350. {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/queue_steps.py +0 -0
  351. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/__init__.py +0 -0
  352. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tests/behave/steps/__init__.py +0 -0
  353. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tests/behave/steps/tools/rabbitmq_client_steps.py +0 -0
  354. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +0 -0
  355. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +0 -0
  356. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +0 -0
  357. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +0 -0
  358. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_select_client.py +0 -0
  359. {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_server.py +0 -0
  360. {holado-0.2.7 → holado-0.2.8}/src/holado_redis/__init__.py +0 -0
  361. {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tests/behave/steps/__init__.py +0 -0
  362. {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tests/behave/steps/tools/redis_client_steps.py +0 -0
  363. {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tools/redis/TODO.txt +0 -0
  364. {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tools/redis/redis_client.py +0 -0
  365. {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tools/redis/redis_manager.py +0 -0
  366. {holado-0.2.7 → holado-0.2.8}/src/holado_report/__init__.py +0 -0
  367. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/analyze/execution_historic_manager.py +0 -0
  368. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/analyze/scenario_duration_manager.py +0 -0
  369. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/detailed_scenario_failed_report_builder.py +0 -0
  370. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/json_execution_historic_report_builder.py +0 -0
  371. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/report_builder.py +0 -0
  372. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/short_scenario_failed_report_builder.py +0 -0
  373. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/summary_report_builder.py +0 -0
  374. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/summary_scenario_failed_report_builder.py +0 -0
  375. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/summary_scenario_report_builder.py +0 -0
  376. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/execution_historic.py +0 -0
  377. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/report_manager.py +0 -0
  378. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/reports/base_report.py +0 -0
  379. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/reports/feature_report.py +0 -0
  380. {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/reports/scenario_report.py +0 -0
  381. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/__init__.py +0 -0
  382. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/api/rest/TODO.txt +0 -0
  383. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/api/rest/rest_client.py +0 -0
  384. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/api/rest/rest_manager.py +0 -0
  385. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/__init__.py +0 -0
  386. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/api/__init__.py +0 -0
  387. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/api/rest_client_steps.py +0 -0
  388. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/private/__init__.py +0 -0
  389. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/private/api/__init__.py +0 -0
  390. {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/private/api/rest_steps.py +0 -0
  391. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/__init__.py +0 -0
  392. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/__init__.py +0 -0
  393. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/private/__init__.py +0 -0
  394. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/private/tools/s3_steps.py +0 -0
  395. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/tools/s3_client_steps.py +0 -0
  396. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/tools/s3_server_steps.py +0 -0
  397. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/__init__.py +0 -0
  398. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/boto3_s3_client.py +0 -0
  399. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/minio_client.py +0 -0
  400. {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/moto_server.py +0 -0
  401. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/__init__.py +0 -0
  402. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/dynamic_text_manager.py +0 -0
  403. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/evaluate_parameters.py +0 -0
  404. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/expression_evaluator.py +0 -0
  405. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/variable_manager.py +0 -0
  406. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/__init__.py +0 -0
  407. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +0 -0
  408. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_new_steps.py +0 -0
  409. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_steps.py +0 -0
  410. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_verify_steps.py +0 -0
  411. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/scenario/function_steps.py +0 -0
  412. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/scenario/if_steps.py +0 -0
  413. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/scenario/loop_steps.py +0 -0
  414. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/base/base_function.py +0 -0
  415. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/base/base_verify_function.py +0 -0
  416. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/base/text_inspecter.py +0 -0
  417. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/exceptions/interpreter_exception.py +0 -0
  418. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_cast.py +0 -0
  419. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_convert.py +0 -0
  420. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_dynamic_value.py +0 -0
  421. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_escape_all_bytes.py +0 -0
  422. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_exists_variable.py +0 -0
  423. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_hex_to_bytes.py +0 -0
  424. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_hex_to_int.py +0 -0
  425. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_to_base_64.py +0 -0
  426. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_to_bytes.py +0 -0
  427. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_to_hex.py +0 -0
  428. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/exceptions/verifier_exception.py +0 -0
  429. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/functions/verify_function_extract_in.py +0 -0
  430. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/functions/verify_function_match_pattern.py +0 -0
  431. {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/text_verifier.py +0 -0
  432. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/__init__.py +0 -0
  433. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/__init__.py +0 -0
  434. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/private/__init__.py +0 -0
  435. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/private/tools/sftp_steps.py +0 -0
  436. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/tools/sftp_client_steps.py +0 -0
  437. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/tools/sftp_server_steps.py +0 -0
  438. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tools/sftp/__init__.py +0 -0
  439. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tools/sftp/sftp_client.py +0 -0
  440. {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tools/sftp/sftp_server.py +0 -0
  441. {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/__init__.py +0 -0
  442. {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/swagger_hub/mockserver/mockserver_client.py +0 -0
  443. {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/swagger_hub/mockserver/mockserver_manager.py +0 -0
  444. {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/tests/behave/steps/__init__.py +0 -0
  445. {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/tests/behave/steps/swagger_hub/mockserver_steps.py +0 -0
  446. {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/command.py +0 -0
  447. {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/command_result.py +0 -0
  448. {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/curl_command.py +0 -0
  449. {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/exceptions.py +0 -0
  450. {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/filesystem/file.py +0 -0
  451. {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/global_system.py +0 -0
  452. {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/__init__.py +0 -0
  453. {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/system/commands_steps.py +0 -0
  454. {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/system/file_steps.py +0 -0
  455. {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/system/system_steps.py +0 -0
  456. {holado-0.2.7 → holado-0.2.8}/src/holado_test/__init__.py +0 -0
  457. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/__init__.py +0 -0
  458. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave.py +0 -0
  459. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave_environment.py +0 -0
  460. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave_function.py +0 -0
  461. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave_manager.py +0 -0
  462. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/independant_runner.py +0 -0
  463. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/scenario/__init__.py +0 -0
  464. {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/scenario/behave_step_tools.py +0 -0
  465. {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/context/feature_context.py +0 -0
  466. {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/context/scenario_context.py +0 -0
  467. {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/context/step_context.py +0 -0
  468. {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/exceptions/undefined_step_exception.py +0 -0
  469. {holado-0.2.7 → holado-0.2.8}/src/holado_test/scenario/tester_tools.py +0 -0
  470. {holado-0.2.7 → holado-0.2.8}/src/holado_test/test_config.py +0 -0
  471. {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/__init__.py +0 -0
  472. {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/scenario/exception_steps.py +0 -0
  473. {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/scenario/scenario_steps.py +0 -0
  474. {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/scenario/tester_steps.py +0 -0
  475. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/__init__.py +0 -0
  476. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/tests/behave/steps/__init__.py +0 -0
  477. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/tests/behave/steps/private/__init__.py +0 -0
  478. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/actors/actions.py +0 -0
  479. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/actors/ui_actor.py +0 -0
  480. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/drivers/ui_driver.py +0 -0
  481. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/drivers/ui_driver_info.py +0 -0
  482. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/drivers/ui_internal_api.py +0 -0
  483. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/exceptions/focus_driver_exception.py +0 -0
  484. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/finders/ui_finder.py +0 -0
  485. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/actors/gui_actor.py +0 -0
  486. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/criterias/enums.py +0 -0
  487. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/criterias/gui_criteria.py +0 -0
  488. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/drivers/gui_driver.py +0 -0
  489. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/drivers/gui_internal_api.py +0 -0
  490. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/finders/gui_finder.py +0 -0
  491. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/handlers/label_gui_context.py +0 -0
  492. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/handlers/zone_gui_context.py +0 -0
  493. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/inspectors/gui_inspector.py +0 -0
  494. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/windows/gui_window.py +0 -0
  495. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/windows/gui_window_info.py +0 -0
  496. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/handlers/ui_context.py +0 -0
  497. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/handlers/ui_manager.py +0 -0
  498. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/inspectors/tools/ui_inspect_builder.py +0 -0
  499. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/inspectors/tools/ui_inspect_context.py +0 -0
  500. {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/inspectors/ui_inspector.py +0 -0
  501. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_mss/ui/mss/mss_manager.py +0 -0
  502. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/actors/actions.py +0 -0
  503. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/actors/default_selenium_actor.py +0 -0
  504. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/actors/selenium_actor.py +0 -0
  505. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/criterias/selenium_criteria.py +0 -0
  506. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/criterias/selenium_criteria_and_verifier.py +0 -0
  507. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/drivers/selenium_driver.py +0 -0
  508. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/drivers/selenium_internal_api.py +0 -0
  509. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/drivers/web_driver_manager.py +0 -0
  510. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/by_selenium_finder.py +0 -0
  511. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/children_selenium_finder.py +0 -0
  512. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/parent_selenium_finder.py +0 -0
  513. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/selenium_finder.py +0 -0
  514. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/enums.py +0 -0
  515. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_by.py +0 -0
  516. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_holder.py +0 -0
  517. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_redo.py +0 -0
  518. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_ui_manager.py +0 -0
  519. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/inspectors/default_selenium_inspector.py +0 -0
  520. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/inspectors/selenium_inspector.py +0 -0
  521. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/comparators/selenium_2_value_table_cell_comparator.py +0 -0
  522. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/comparators/selenium_2_value_table_comparator.py +0 -0
  523. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/comparators/selenium_2_value_table_row_comparator.py +0 -0
  524. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/comparators/selenium_2_value_table_with_header_comparator.py +0 -0
  525. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/converters/selenium_table_converter.py +0 -0
  526. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table.py +0 -0
  527. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table_cell.py +0 -0
  528. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table_row.py +0 -0
  529. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table_with_header.py +0 -0
  530. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tools/selenium_path_manager.py +0 -0
  531. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/windows/default_selenium_window.py +0 -0
  532. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/windows/selenium_window.py +0 -0
  533. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_angular/__init__.py +0 -0
  534. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_angular/ui/gui/selenium/actors/angular_selenium_actor.py +0 -0
  535. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_angular/ui/gui/selenium/inspectors/angular_selenium_inspector.py +0 -0
  536. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_html/__init__.py +0 -0
  537. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_html/ui/gui/selenium/actors/html_selenium_actor.py +0 -0
  538. {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_html/ui/gui/selenium/inspectors/html_selenium_inspector.py +0 -0
  539. {holado-0.2.7 → holado-0.2.8}/src/holado_value/__init__.py +0 -0
  540. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +0 -0
  541. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_comparator.py +0 -0
  542. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_row_comparator.py +0 -0
  543. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_with_header_comparator.py +0 -0
  544. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/converters/value_table_converter.py +0 -0
  545. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table.py +0 -0
  546. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_manager.py +0 -0
  547. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_with_header.py +0 -0
  548. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tools/unique_value_manager.py +0 -0
  549. {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tools/value_types.py +0 -0
  550. {holado-0.2.7 → holado-0.2.8}/src/holado_value/tests/behave/steps/__init__.py +0 -0
  551. {holado-0.2.7 → holado-0.2.8}/src/holado_value/tests/behave/steps/private/__init__.py +0 -0
  552. {holado-0.2.7 → holado-0.2.8}/src/holado_ws/__init__.py +0 -0
  553. {holado-0.2.7 → holado-0.2.8}/src/holado_ws/api/ws/TODO.txt +0 -0
  554. {holado-0.2.7 → holado-0.2.8}/src/holado_ws/tests/behave/steps/__init__.py +0 -0
  555. {holado-0.2.7 → holado-0.2.8}/src/holado_ws/tests/behave/steps/api/web_service_steps.py +0 -0
  556. {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/__init__.py +0 -0
  557. {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/tests/behave/steps/__init__.py +0 -0
  558. {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/tests/behave/steps/yaml_steps.py +0 -0
  559. {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/yaml/yaml_manager.py +0 -0
  560. {holado-0.2.7 → holado-0.2.8}/steps_catalog.sh +0 -0
  561. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/Dockerfile_test_holado +0 -0
  562. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/__init__.py +0 -0
  563. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/__main__.py +0 -0
  564. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/build_docker_image_to_test_holado_in_docker.sh +0 -0
  565. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/environment.py +0 -0
  566. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/api/REST.feature +0 -0
  567. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/api/gRPC.feature +0 -0
  568. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/multiprocessing/simple.feature +0 -0
  569. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/system/commands.feature +0 -0
  570. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/system/system.feature +0 -0
  571. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tables/table.feature +0 -0
  572. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tables/value_table_conversion.feature +0 -0
  573. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tools/DateTime.feature +0 -0
  574. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tools/UniqueValueManager.feature +0 -0
  575. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_ais/ais_message-bitarray_to_nmea.feature +0 -0
  576. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_binary/bit_series.error.feature +0 -0
  577. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_binary/bit_series.feature +0 -0
  578. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_protobuf/protobuf.feature +0 -0
  579. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/convert.feature +0 -0
  580. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/iterable.feature +0 -0
  581. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/common/tools/dynamic_text_manager.feature +0 -0
  582. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/common/tools/expression_evaluator.feature +0 -0
  583. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/common/tools/variable_manager.feature +0 -0
  584. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.error.feature +0 -0
  585. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.feature +0 -0
  586. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_yaml/yaml.feature +0 -0
  587. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/ipc/json.feature +0 -0
  588. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/scenario/scenario.feature +0 -0
  589. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/test_steps/behave.feature +0 -0
  590. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/test_steps/common.feature +0 -0
  591. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/RabbitMQ.feature +0 -0
  592. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/RabbitMQ_steps.feature +0 -0
  593. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/S3/boto3_client.feature +0 -0
  594. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/S3/minio_client.feature +0 -0
  595. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/db_sqlite3.feature +0 -0
  596. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/sFTP.feature +0 -0
  597. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/Test/logger.feature +0 -0
  598. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/__init__.py +0 -0
  599. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/logging.conf +0 -0
  600. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto +0 -0
  601. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto +0 -0
  602. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/generated/protobuf/custom_types/field_types_pb2.py +0 -0
  603. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/generated/protobuf/protobuf/dev/tutorial/addressbook_pb2.py +0 -0
  604. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/scripts/list_tags.sh +0 -0
  605. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/scripts/update_resources_proto_generated.py +0 -0
  606. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/steps/__init__.py +0 -0
  607. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/steps/private_steps.py +0 -0
  608. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/steps/public_steps.py +0 -0
  609. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/test_holado_session_context.py +0 -0
  610. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/README.txt +0 -0
  611. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/__init__.py +0 -0
  612. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/__init__.py +0 -0
  613. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/admin.py +0 -0
  614. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/apps.py +0 -0
  615. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/migrations/__init__.py +0 -0
  616. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/models.py +0 -0
  617. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/proto/__init__.py +0 -0
  618. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/proto/account.proto +0 -0
  619. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2.py +0 -0
  620. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2_grpc.py +0 -0
  621. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/serializers.py +0 -0
  622. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/services.py +0 -0
  623. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/tests.py +0 -0
  624. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/views.py +0 -0
  625. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/asgi.py +0 -0
  626. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/settings.py +0 -0
  627. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/urls.py +0 -0
  628. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/wsgi.py +0 -0
  629. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/db.sqlite3 +0 -0
  630. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/manage.py +0 -0
  631. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/manual_test_commands.txt +0 -0
  632. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/__init__.py +0 -0
  633. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/__init__.py +0 -0
  634. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/admin.py +0 -0
  635. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/apps.py +0 -0
  636. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py +0 -0
  637. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/models.py +0 -0
  638. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/serializers.py +0 -0
  639. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/tests.py +0 -0
  640. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/views.py +0 -0
  641. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/asgi.py +0 -0
  642. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/settings.py +0 -0
  643. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/urls.py +0 -0
  644. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/wsgi.py +0 -0
  645. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/db.sqlite3 +0 -0
  646. {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/manage.py +0 -0
  647. {holado-0.2.7 → holado-0.2.8}/tests/scripts/dgot/classement/classement.py +0 -0
  648. {holado-0.2.7 → holado-0.2.8}/tests/scripts/dgot/classement/classement.sh +0 -0
  649. {holado-0.2.7 → holado-0.2.8}/tests/scripts/dgot/classement/commands.txt +0 -0
  650. {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/environment.py +0 -0
  651. {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/features/fake.feature +0 -0
  652. {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/logging.conf +0 -0
  653. {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/steps/public_steps.py +0 -0
  654. {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/test.py +0 -0
  655. {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/test.sh +0 -0
  656. {holado-0.2.7 → holado-0.2.8}/tests/scripts/script_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: holado
3
- Version: 0.2.7
3
+ Version: 0.2.8
4
4
  Summary: HolAdo framework
5
5
  Project-URL: Homepage, https://gitlab.com/holado_framework/python
6
6
  Project-URL: Issues, https://gitlab.com/holado_framework/python/-/issues
@@ -53,6 +53,9 @@ Requires-Dist: moto; extra == 's3'
53
53
  Provides-Extra: sftp
54
54
  Requires-Dist: pysftp; extra == 'sftp'
55
55
  Requires-Dist: sftpserver; extra == 'sftp'
56
+ Provides-Extra: ssl
57
+ Requires-Dist: certifi; extra == 'ssl'
58
+ Requires-Dist: pip-system-certs; extra == 'ssl'
56
59
  Provides-Extra: ws-suds
57
60
  Requires-Dist: suds; extra == 'ws-suds'
58
61
  Provides-Extra: ws-zeep
@@ -0,0 +1 @@
1
+ 0.2.8
@@ -43,6 +43,7 @@ rabbitmq = ["pika"]
43
43
  redis = ["redis", "redis-om"]
44
44
  s3 = ["minio", "boto3", "moto", "flask", "flask_cors"]
45
45
  sftp = ["pysftp", "sftpserver"]
46
+ ssl = ["pip-system-certs", "certifi"]
46
47
  ws-suds = ["suds"]
47
48
  ws-zeep = ["zeep"]
48
49
  yaml = ["pyyaml"]
@@ -59,8 +59,9 @@ pyais
59
59
  # For .xslt files support
60
60
  openpyxl
61
61
 
62
- # For memory profiling
63
- pympler
62
+ # For debug
63
+ pympler # memory profiling
64
+ #py-spy # deadlock
64
65
 
65
66
  # For yaml module
66
67
  pyyaml
@@ -66,10 +66,10 @@ class Table(object):
66
66
  return result
67
67
 
68
68
  def __repr__(self)->str:
69
- if self.nb_rows * self.nb_columns < 100:
69
+ if self.nb_rows < 10 or self.nb_rows * self.nb_columns < 100:
70
70
  return f"<{self.__class__.__name__}>({self.nb_rows}x{self.nb_columns})\n{self.represent()}"
71
71
  else:
72
- return f"<{self.__class__.__name__}>({self.nb_rows}x{self.nb_columns})"
72
+ return f"<{self.__class__.__name__}>({self.nb_rows}x{self.nb_columns})\n{self.represent(limit_rows=10)}[...]"
73
73
 
74
74
  @property
75
75
  def content(self):
@@ -131,5 +131,14 @@ class StrTools(object):
131
131
  res = res.upper()
132
132
 
133
133
  return res
134
+
135
+ @classmethod
136
+ def to_string(cls, src):
137
+ if isinstance(src, bytes):
138
+ return src.decode('utf-8')
139
+ elif isinstance(src, str):
140
+ return src
141
+ else:
142
+ return str(src)
134
143
 
135
144
 
@@ -37,6 +37,7 @@ from holado_core.common.tools.converters.converter import Converter
37
37
  from holado_test.behave.scenario.behave_step_tools import BehaveStepTools
38
38
  from holado_value.common.tables.converters.value_table_converter import ValueTableConverter
39
39
  from holado_python.standard_library.typing import Typing
40
+ from holado_value.common.tables.value_table_manager import ValueTableManager
40
41
 
41
42
  logger = logging.getLogger(__name__)
42
43
 
@@ -317,6 +318,7 @@ def step_impl(context, var_name, table_varname, col_name):
317
318
  col_name = StepTools.evaluate_scenario_parameter(col_name)
318
319
 
319
320
  res_table = copy.copy(table)
321
+ is_value_table = ValueTableManager.is_value_table(res_table)
320
322
  col = res_table.get_column(name=col_name)
321
323
 
322
324
  tr_indexes = table_replace.get_column_indexes_by_string_content()
@@ -328,8 +330,10 @@ def step_impl(context, var_name, table_varname, col_name):
328
330
  cell_rep_value = row_replace[tr_indexes["Replace Value"]] if "Replace Value" in tr_indexes else None
329
331
 
330
332
  if cell_cond_value is not None:
333
+ # If condition value is 'DEFAULT' or cell value is equal to condition value
331
334
  cond = (cell_cond_value.content_type == ValueTypes.Symbol and cell_cond_value.content == 'DEFAULT'
332
- or cell_cond_value.value_type != ValueTypes.NotApplicable and cell.content == cell_cond_value.value)
335
+ or cell_cond_value.value_type != ValueTypes.NotApplicable
336
+ and (is_value_table and cell.value == cell_cond_value.value or not is_value_table and cell.content == cell_cond_value.value) )
333
337
  elif cell_cond_expr is not None:
334
338
  cond = tcell_comparator.equals(cell, cell_cond_expr, raise_exception = False)
335
339
  else:
@@ -339,7 +343,10 @@ def step_impl(context, var_name, table_varname, col_name):
339
343
  if cell_rep_value.value_type != ValueTypes.NotApplicable:
340
344
  # Note: As 'col' is created with a copy of 'res_table' cells, 'cell' is also a 'res_table' cell.
341
345
  # Thus, modifying 'cell' is modifying the cell in 'res_table'
342
- cell.content = cell_rep_value.value
346
+ if is_value_table:
347
+ cell.value = cell_rep_value.value
348
+ else:
349
+ cell.content = cell_rep_value.value
343
350
  break
344
351
  else:
345
352
  continue
@@ -89,13 +89,22 @@ class BehaveActionRunner():
89
89
 
90
90
  def __add_variable_values(self, res, params):
91
91
  if params:
92
- for key, value in params.items():
93
- if key == 'STATUS':
94
- continue
95
- if value is not_applicable:
96
- res[key] = 'N/A'
97
- else:
98
- res[key] = value
92
+ if isinstance(params, dict):
93
+ for key, value in params.items():
94
+ self.__add_variable_value(res, key, value)
95
+ elif isinstance(params, list):
96
+ for key, value in params:
97
+ self.__add_variable_value(res, key, value)
98
+ else:
99
+ raise TechnicalException(f"Unexpected params type '{type(params)}'")
100
+
101
+ def __add_variable_value(self, res, var_name, value):
102
+ if var_name == 'STATUS':
103
+ return
104
+ if value is not_applicable:
105
+ res[var_name] = 'N/A'
106
+ else:
107
+ res[var_name] = value
99
108
 
100
109
  def run(self):
101
110
  logger.info(f"Processing action '{self.__action_info.action}' of index {self.__action_info.index}: {self.__action_info.params}")
@@ -16,6 +16,8 @@ import socket
16
16
  from holado_python.standard_library.socket.socket import SocketClient, SocketServer
17
17
  import abc
18
18
  from holado_multitask.multithreading.loopfunctionthreaded import LoopFunctionThreaded
19
+ import time
20
+ from holado.common.handlers.undefined import undefined_argument
19
21
 
20
22
  logger = logging.getLogger(__name__)
21
23
 
@@ -31,17 +33,79 @@ class BlockingSocketClient(SocketClient):
31
33
  """
32
34
  __metaclass__ = abc.ABCMeta
33
35
 
34
- def __init__(self, *, name=None, create_ipv4_socket_kwargs=None):
35
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
36
+ def __init__(self, *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument, do_run_with_recv=True, do_run_with_send=True):
37
+ super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay, do_run_with_recv=do_run_with_recv, do_run_with_send=do_run_with_send)
36
38
 
39
+ def start(self, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
40
+ """Start client event loop.
41
+ """
42
+ if self.is_with_ssl:
43
+ # Set a small timeout, so that recv has a behaviour similar flag MSG_DONTWAIT
44
+ # See _process_recv_send implementation, recv flags are needed to be forced to 0
45
+ if self._idle_sleep_delay is not None:
46
+ self.internal_socket.settimeout(self._idle_sleep_delay)
47
+ else:
48
+ self.internal_socket.settimeout(0.01)
49
+
50
+ kwargs = {'read_bufsize':read_bufsize, 'read_kwargs':read_kwargs, 'write_kwargs':write_kwargs}
51
+ thread = LoopFunctionThreaded(self._process_recv_send, kwargs=kwargs, register_thread=True, delay_before_run_sec=None)
52
+ self._start_thread(thread)
53
+
54
+ def _process_recv_send(self, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
55
+ has_activity = False
56
+ read_kwargs = read_kwargs if read_kwargs is not None else {}
57
+ write_kwargs = write_kwargs if write_kwargs is not None else {}
58
+
59
+ recv_data = None
60
+ if self.is_run_with_recv:
61
+ if self.is_with_ssl:
62
+ # ssl doesn't suppôrt flags != 0
63
+ flags = 0
64
+ else:
65
+ # Add flag to not wait data
66
+ flags = read_kwargs.get('flags', 0)
67
+ flags |= socket.MSG_DONTWAIT
68
+
69
+ try:
70
+ recv_data = self.internal_socket.recv(read_bufsize, flags)
71
+ except (BlockingIOError, TimeoutError):
72
+ # No data to read
73
+ pass
74
+ else:
75
+ if recv_data:
76
+ has_activity = True
77
+ with self._data_lock:
78
+ self._data.in_bytes += recv_data
79
+ if logger.isEnabledFor(logging.DEBUG):
80
+ logger.debug(f"[{self.name}] Received [{recv_data}] (type: {type(recv_data)} ; total: {len(self._data.in_bytes)})")
81
+
82
+ sent = None
83
+ if self.is_run_with_send:
84
+ with self._data_lock:
85
+ if self._data.out_bytes:
86
+ has_activity = True
87
+ sent = self.internal_socket.send(self._data.out_bytes)
88
+ if sent > 0:
89
+ self._data.out_bytes = self._data.out_bytes[sent:]
90
+ if logger.isEnabledFor(logging.DEBUG):
91
+ logger.debug(f"[{self.name}] Sent {sent} data (remaining to send: {len(self._data.out_bytes)})")
92
+
93
+ # Wait before next loop if no data was exchanged
94
+ if not has_activity and self._idle_sleep_delay is not None:
95
+ time.sleep(self._idle_sleep_delay)
96
+
97
+ def do_ssl_handshake(self):
98
+ if self.is_with_ssl:
99
+ self.internal_socket.do_handshake()
100
+
37
101
 
38
102
  class TCPBlockingSocketClient(BlockingSocketClient):
39
103
  """
40
104
  TCP socket client.
41
105
  """
42
106
 
43
- def __init__(self, *, name=None, create_ipv4_socket_kwargs=None):
44
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
107
+ def __init__(self, *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument, do_run_with_recv=True, do_run_with_send=True):
108
+ super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay, do_run_with_recv=do_run_with_recv, do_run_with_send=do_run_with_send)
45
109
 
46
110
  def create_ipv4_socket(self, host, port, **kwargs):
47
111
  ssl_context, kwargs = self._new_ssl_context_if_required(**kwargs)
@@ -49,9 +113,12 @@ class TCPBlockingSocketClient(BlockingSocketClient):
49
113
  sock = socket.create_connection((host, port), **kwargs)
50
114
 
51
115
  if ssl_context:
52
- sock = ssl_context.wrap_socket(sock, server_hostname=host, do_handshake_on_connect=False)
53
- # sock = ssl_context.wrap_socket(sock, server_hostname=host)
54
- self._set_internal_socket(sock)
116
+ # do_handshake_on_connect = True
117
+ do_handshake_on_connect = False
118
+ sock = ssl_context.wrap_socket(sock, server_hostname=host, do_handshake_on_connect=do_handshake_on_connect)
119
+ self._set_internal_socket(sock, is_with_ssl=True, is_ssl_handshake_done_on_connect=do_handshake_on_connect)
120
+ else:
121
+ self._set_internal_socket(sock)
55
122
 
56
123
 
57
124
 
@@ -67,24 +134,16 @@ class BlockingSocketServer(SocketServer):
67
134
  """
68
135
  __metaclass__ = abc.ABCMeta
69
136
 
70
- def __init__(self, *, name=None, create_ipv4_socket_kwargs=None):
71
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
72
-
73
- self.__start_thread = None
137
+ def __init__(self, *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument):
138
+ super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay)
74
139
 
75
140
  def start(self, read_bufsize=1024, *, read_kwargs=None, write_kwargs=None):
76
141
  """Start server to wait a connection, and then listen data, process data, and send result.
77
142
  Note: current implementation is simple and supports only one connection at a time.
78
143
  """
79
144
  kwargs = {'read_bufsize':read_bufsize, 'read_kwargs':read_kwargs, 'write_kwargs':write_kwargs}
80
- self.__start_thread = LoopFunctionThreaded(self.wait_and_process_connection, kwargs=kwargs, register_thread=True, delay_before_run_sec=None)
81
- self.__start_thread.start()
82
-
83
- def stop(self):
84
- if self.__start_thread is not None:
85
- self.__start_thread.interrupt()
86
- self.__start_thread.join()
87
- self.__start_thread = None
145
+ thread = LoopFunctionThreaded(self.wait_and_process_connection, kwargs=kwargs, register_thread=True, delay_before_run_sec=None)
146
+ self._start_thread(thread)
88
147
 
89
148
  def wait_and_process_connection(self, read_bufsize=1024, *, read_kwargs=None, write_kwargs=None):
90
149
  """Wait a connection, and then listen data, process data, and send result.
@@ -104,15 +163,11 @@ class BlockingSocketServer(SocketServer):
104
163
 
105
164
  if not data:
106
165
  break
107
- result = self._process_data(data)
166
+ result = self._process_received_data(data)
108
167
 
109
168
  if logger.isEnabledFor(logging.DEBUG):
110
169
  logger.debug(f"[{self.name}] Sending: {result}")
111
170
  conn.write(result, **write_kwargs)
112
-
113
- @abc.abstractmethod
114
- def _process_data(self, data):
115
- raise NotImplementedError()
116
171
 
117
172
 
118
173
 
@@ -121,8 +176,8 @@ class TCPBlockingSocketServer(BlockingSocketServer):
121
176
  TCP socket server
122
177
  """
123
178
 
124
- def __init__(self, *, name=None, create_ipv4_socket_kwargs=None):
125
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
179
+ def __init__(self, *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument):
180
+ super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay)
126
181
 
127
182
  def create_ipv4_socket(self, host, port, **kwargs):
128
183
  ssl_context, kwargs = self._new_ssl_context_if_required(server_side=True, **kwargs)
@@ -130,7 +185,9 @@ class TCPBlockingSocketServer(BlockingSocketServer):
130
185
  sock = socket.create_server((host, port), **kwargs)
131
186
 
132
187
  if ssl_context:
133
- # sock = ssl_context.wrap_socket(sock, do_handshake_on_connect=False, server_side=True)
134
- sock = ssl_context.wrap_socket(sock, server_side=True)
135
- self._set_internal_socket(sock)
188
+ do_handshake_on_connect = True
189
+ sock = ssl_context.wrap_socket(sock, server_side=True, do_handshake_on_connect=do_handshake_on_connect)
190
+ self._set_internal_socket(sock, is_with_ssl=True, is_ssl_handshake_done_on_connect=do_handshake_on_connect)
191
+ else:
192
+ self._set_internal_socket(sock)
136
193
 
@@ -13,16 +13,17 @@
13
13
 
14
14
  import logging
15
15
  from holado_python.standard_library.socket.blocking_socket import TCPBlockingSocketServer
16
+ from holado.common.handlers.undefined import undefined_argument
16
17
 
17
18
  logger = logging.getLogger(__name__)
18
19
 
19
20
 
20
21
 
21
22
  class EchoTCPBlockingSocketServer(TCPBlockingSocketServer):
22
- def __init__(self, *, name=None, create_ipv4_socket_kwargs=None):
23
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
23
+ def __init__(self, *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument):
24
+ super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay)
24
25
 
25
- def _process_data(self, data):
26
+ def _process_received_data(self, data):
26
27
  return data
27
28
 
28
29
 
@@ -17,6 +17,9 @@ import selectors
17
17
  from holado_python.standard_library.socket.non_blocking_socket import TCPNonBlockingSocketClient
18
18
  import copy
19
19
  import threading
20
+ from holado_python.standard_library.socket.blocking_socket import TCPBlockingSocketClient
21
+ from holado_core.common.tools.tools import Tools
22
+ from holado.common.handlers.undefined import undefined_argument
20
23
 
21
24
  logger = logging.getLogger(__name__)
22
25
 
@@ -26,14 +29,14 @@ logger = logging.getLogger(__name__)
26
29
  ##########################################################################
27
30
 
28
31
 
29
- class MessageTCPSocketClient(TCPNonBlockingSocketClient):
32
+ class MessageSocketClient(object):
30
33
  """
31
- Base class for blocking socket client.
34
+ Base class for message socket client.
32
35
  """
33
36
  __metaclass__ = abc.ABCMeta
34
37
 
35
- def __init__(self, separator=b'\n', *, name=None, create_ipv4_socket_kwargs=None):
36
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
38
+ def __init__(self, separator=b'\n'):
39
+ super().__init__()
37
40
 
38
41
  self.__separator = separator
39
42
  self.__messages_lock = threading.Lock()
@@ -47,23 +50,21 @@ class MessageTCPSocketClient(TCPNonBlockingSocketClient):
47
50
  def nb_messages(self):
48
51
  return len(self.__messages)
49
52
 
50
- def _service_connection(self, key, mask, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
51
- # Read from socket & write in socket
52
- super()._service_connection(key, mask, read_bufsize=read_bufsize, read_kwargs=read_kwargs, write_kwargs=write_kwargs)
53
+ def _extract_messages_from_data(self, data):
54
+ while True:
55
+ ind = data.in_bytes.find(self.__separator)
56
+ if ind >=0:
57
+ msg = data.in_bytes[:ind]
58
+ self._add_message(msg)
59
+ data.in_bytes = data.in_bytes[ind+len(self.__separator):]
60
+ if Tools.do_log(logger, logging.TRACE): # @UndefinedVariable
61
+ logger.trace(f"[{self.name}] New message (total: {self.nb_messages}): {msg}")
62
+ elif Tools.do_log(logger, logging.DEBUG):
63
+ logger.debug(f"[{self.name}] New message (total: {self.nb_messages})")
64
+ else:
65
+ break
53
66
 
54
- # Extract messages from received data
55
- if mask & selectors.EVENT_READ:
56
- with self._data_lock:
57
- while True:
58
- ind = self._data.in_bytes.find(self.__separator)
59
- if ind >=0:
60
- msg = self._data.in_bytes[:ind]
61
- self.__add_message(msg)
62
- self._data.in_bytes = self._data.in_bytes[ind+len(self.__separator):]
63
- else:
64
- break
65
-
66
- def __add_message(self, msg):
67
+ def _add_message(self, msg):
67
68
  with self.__messages_lock:
68
69
  self.__messages.append(msg)
69
70
 
@@ -85,6 +86,44 @@ class MessageTCPSocketClient(TCPNonBlockingSocketClient):
85
86
 
86
87
 
87
88
 
89
+ class MessageTCPBlockingSocketClient(TCPBlockingSocketClient, MessageSocketClient):
90
+ """
91
+ Message socket client with TCP blocking socket.
92
+ """
93
+ def __init__(self, separator=b'\n', *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument):
94
+ MessageSocketClient.__init__(self, separator)
95
+ TCPBlockingSocketClient.__init__(self, name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay)
96
+
97
+ def _process_recv_send(self, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
98
+ # Read from socket & write in socket
99
+ super()._process_recv_send(read_bufsize=read_bufsize, read_kwargs=read_kwargs, write_kwargs=write_kwargs)
100
+
101
+ # Extract messages from received data
102
+ if self.is_run_with_recv:
103
+ with self._data_lock:
104
+ self._extract_messages_from_data(self._data)
105
+
106
+
107
+
108
+ class MessageTCPNonBlockingSocketClient(TCPNonBlockingSocketClient, MessageSocketClient):
109
+ """
110
+ Message socket client with TCP non-blocking socket.
111
+ """
112
+ def __init__(self, separator=b'\n', *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument):
113
+ MessageSocketClient.__init__(self, separator)
114
+ TCPNonBlockingSocketClient.__init__(self, name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay)
115
+
116
+ def _service_connection(self, key, mask, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
117
+ # Read from socket & write in socket
118
+ super()._service_connection(key, mask, read_bufsize=read_bufsize, read_kwargs=read_kwargs, write_kwargs=write_kwargs)
119
+
120
+ # Extract messages from received data
121
+ if mask & selectors.EVENT_READ:
122
+ with self._data_lock:
123
+ self._extract_messages_from_data(self._data)
124
+
125
+
126
+
88
127
 
89
128
 
90
129
 
@@ -17,8 +17,10 @@ from holado_python.standard_library.socket.socket import SocketClient
17
17
  import abc
18
18
  from holado_multitask.multithreading.loopfunctionthreaded import LoopFunctionThreaded
19
19
  import selectors
20
- import types
21
- import threading
20
+ import ssl
21
+ import select
22
+ from holado.common.handlers.undefined import undefined_argument
23
+ import time
22
24
 
23
25
  logger = logging.getLogger(__name__)
24
26
 
@@ -34,92 +36,85 @@ class NonBlockingSocketClient(SocketClient):
34
36
  """
35
37
  __metaclass__ = abc.ABCMeta
36
38
 
37
- def __init__(self, *, name=None, create_ipv4_socket_kwargs=None):
39
+ def __init__(self, *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument, do_run_with_recv=True, do_run_with_send=True):
38
40
  self.__selector = selectors.DefaultSelector()
39
41
 
40
- self.__data_lock = threading.Lock()
41
- self.__data = types.SimpleNamespace(
42
- in_bytes=b"",
43
- out_bytes=b"",
44
- )
45
-
46
- # Note: __selector and __data must be defined before, since Socket.__init__ can execute create_ipv4_socket
47
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
48
-
49
- self.__start_thread = None
42
+ # Note: __selector must be defined before, since Socket.__init__ can execute create_ipv4_socket
43
+ super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay, do_run_with_recv=do_run_with_recv, do_run_with_send=do_run_with_send)
50
44
 
51
45
  def _delete_object(self):
52
- self.stop()
53
46
  if self.internal_socket:
47
+ # Note: stop must be done before unregistering selector
48
+ self.stop()
54
49
  self.__selector.unregister(self.internal_socket)
55
50
 
56
51
  super()._delete_object()
57
52
 
58
53
  def _register_socket(self, sock):
59
54
  events = selectors.EVENT_READ | selectors.EVENT_WRITE
60
- self.__selector.register(sock, events, data=self.__data)
61
-
62
- @property
63
- def _data_lock(self):
64
- return self.__data_lock
65
-
66
- @property
67
- def _data(self):
68
- return self.__data
55
+ self.__selector.register(sock, events, data=self._data)
69
56
 
70
57
  def start(self, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
71
58
  """Start client event loop.
72
59
  """
73
60
  kwargs = {'read_bufsize':read_bufsize, 'read_kwargs':read_kwargs, 'write_kwargs':write_kwargs}
74
- self.__start_thread = LoopFunctionThreaded(self._wait_and_process_events, kwargs=kwargs, register_thread=True, delay_before_run_sec=None)
75
- self.__start_thread.start()
76
-
77
- def stop(self):
78
- if self.__start_thread is not None:
79
- self.__start_thread.interrupt()
80
- self.__start_thread.join()
81
- self.__start_thread = None
61
+ thread = LoopFunctionThreaded(self._wait_and_process_events, kwargs=kwargs, register_thread=True, delay_before_run_sec=None)
62
+ self._start_thread(thread)
82
63
 
83
64
  def _wait_and_process_events(self, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
65
+ has_activity = False
84
66
  events = self.__selector.select(timeout=None)
85
67
  for key, mask in events:
86
- self._service_connection(key, mask, read_bufsize=read_bufsize, read_kwargs=read_kwargs, write_kwargs=write_kwargs)
68
+ has_activity |= self._service_connection(key, mask, read_bufsize=read_bufsize, read_kwargs=read_kwargs, write_kwargs=write_kwargs)
69
+
70
+ # Wait before next loop if no data was exchanged
71
+ if not has_activity and self._idle_sleep_delay is not None:
72
+ time.sleep(self._idle_sleep_delay)
87
73
 
88
74
  def _service_connection(self, key, mask, *, read_bufsize=1024, read_kwargs=None, write_kwargs=None):
75
+ has_activity = False
89
76
  read_kwargs = read_kwargs if read_kwargs is not None else {}
90
77
  write_kwargs = write_kwargs if write_kwargs is not None else {}
91
78
 
92
79
  sock = key.fileobj
93
80
  data = key.data
94
- if mask & selectors.EVENT_READ:
95
- recv_data = sock.recv(read_bufsize, **read_kwargs)
81
+ if self.is_run_with_recv and mask & selectors.EVENT_READ:
82
+ if self.is_with_ssl:
83
+ # ssl doesn't suppôrt flags != 0
84
+ flags = 0
85
+ else:
86
+ flags = read_kwargs.get('flags', 0)
87
+
88
+ recv_data = sock.recv(read_bufsize, flags)
96
89
  if recv_data:
97
- with self.__data_lock: # data is self.__data
90
+ has_activity = True
91
+ with self._data_lock: # data is self._data
98
92
  data.in_bytes += recv_data
99
- if mask & selectors.EVENT_WRITE:
100
- with self.__data_lock: # data is self.__data
93
+ if logger.isEnabledFor(logging.DEBUG):
94
+ logger.debug(f"[{self.name}] Received [{recv_data}] (type: {type(recv_data)} ; total: {len(data.in_bytes)})")
95
+
96
+ if self.is_run_with_send and mask & selectors.EVENT_WRITE:
97
+ with self._data_lock: # data is self._data
101
98
  if data.out_bytes:
99
+ has_activity = True
102
100
  sent = sock.send(data.out_bytes)
103
- data.out_bytes = data.out_bytes[sent:]
104
-
105
- @property
106
- def received_data_size(self):
107
- with self.__data_lock:
108
- res = len(self.__data.in_bytes)
109
- return res
110
-
111
- def read(self, bufsize=1024):
112
- with self.__data_lock:
113
- if self.__data.in_bytes:
114
- res = self.__data.in_bytes[:bufsize]
115
- self.__data.in_bytes = self.__data.in_bytes[bufsize:]
116
- else:
117
- res = b''
118
- return res
101
+ if sent > 0:
102
+ data.out_bytes = data.out_bytes[sent:]
103
+ if logger.isEnabledFor(logging.DEBUG):
104
+ logger.debug(f"[{self.name}] Sent {sent} data (remaining to send: {len(data.out_bytes)})")
105
+
106
+ return has_activity
119
107
 
120
- def write(self, data_bytes):
121
- with self.__data_lock:
122
- self.__data.out_bytes += data_bytes
108
+ def do_ssl_handshake(self):
109
+ if self.is_with_ssl:
110
+ while True:
111
+ try:
112
+ self.internal_socket.do_handshake()
113
+ break
114
+ except ssl.SSLWantReadError:
115
+ select.select([self.internal_socket], [], [])
116
+ except ssl.SSLWantWriteError:
117
+ select.select([], [self.internal_socket], [])
123
118
 
124
119
 
125
120
  class TCPNonBlockingSocketClient(NonBlockingSocketClient):
@@ -127,8 +122,8 @@ class TCPNonBlockingSocketClient(NonBlockingSocketClient):
127
122
  TCP socket client.
128
123
  """
129
124
 
130
- def __init__(self, *, name=None, create_ipv4_socket_kwargs=None):
131
- super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs)
125
+ def __init__(self, *, name=None, create_ipv4_socket_kwargs=None, idle_sleep_delay=undefined_argument, do_run_with_recv=True, do_run_with_send=True):
126
+ super().__init__(name=name, create_ipv4_socket_kwargs=create_ipv4_socket_kwargs, idle_sleep_delay=idle_sleep_delay, do_run_with_recv=do_run_with_recv, do_run_with_send=do_run_with_send)
132
127
 
133
128
  def create_ipv4_socket(self, host, port, **kwargs):
134
129
  ssl_context, kwargs = self._new_ssl_context_if_required(**kwargs)
@@ -137,8 +132,11 @@ class TCPNonBlockingSocketClient(NonBlockingSocketClient):
137
132
  sock.setblocking(False)
138
133
 
139
134
  if ssl_context:
140
- sock = ssl_context.wrap_socket(sock, server_hostname=host, do_handshake_on_connect=False)
141
- self._set_internal_socket(sock)
135
+ do_handshake_on_connect = False
136
+ sock = ssl_context.wrap_socket(sock, server_hostname=host, do_handshake_on_connect=do_handshake_on_connect)
137
+ self._set_internal_socket(sock, is_with_ssl=True, is_ssl_handshake_done_on_connect=do_handshake_on_connect)
138
+ else:
139
+ self._set_internal_socket(sock)
142
140
 
143
141
  # Register socket
144
142
  self._register_socket(sock)