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.
- {holado-0.2.7 → holado-0.2.8}/PKG-INFO +4 -1
- holado-0.2.8/packaging/VERSION +1 -0
- {holado-0.2.7 → holado-0.2.8}/pyproject.toml +1 -0
- {holado-0.2.7 → holado-0.2.8}/requirements_docker.txt +3 -2
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table.py +2 -2
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/string_tools.py +9 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/tables_steps.py +9 -2
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/action.py +16 -7
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/blocking_socket.py +86 -29
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/echo_server.py +4 -3
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/message_socket.py +59 -20
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/non_blocking_socket.py +58 -60
- holado-0.2.8/src/holado_python/standard_library/socket/socket.py +275 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/socket_steps.py +15 -3
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/ssl_steps.py +1 -1
- holado-0.2.8/src/holado_scripting/text/interpreter/functions/function_apply_function.py +60 -0
- holado-0.2.8/src/holado_scripting/text/interpreter/functions/function_to_string.py +50 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/text_interpreter.py +4 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/scenario/step_tools.py +4 -3
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_cell.py +5 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_row.py +0 -1
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tools/value.py +5 -1
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/standard_library/socket.feature +62 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/standard_library/socket_with_ssl.feature +77 -1
- holado-0.2.7/packaging/VERSION +0 -1
- holado-0.2.7/src/holado_python/standard_library/socket/socket.py +0 -148
- {holado-0.2.7 → holado-0.2.8}/.gitignore +0 -0
- {holado-0.2.7 → holado-0.2.8}/.gitlab-ci.yml +0 -0
- {holado-0.2.7 → holado-0.2.8}/Dockerfile +0 -0
- {holado-0.2.7 → holado-0.2.8}/INSTALL +0 -0
- {holado-0.2.7 → holado-0.2.8}/LICENSE +0 -0
- {holado-0.2.7 → holado-0.2.8}/NOTES.md +0 -0
- {holado-0.2.7 → holado-0.2.8}/README.md +0 -0
- {holado-0.2.7 → holado-0.2.8}/README.rst +0 -0
- {holado-0.2.7 → holado-0.2.8}/TODO +0 -0
- {holado-0.2.7 → holado-0.2.8}/dependencies/protoc/README.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/packaging/generate_distribution_archive.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/packaging/publish_distribution_archive.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/packaging/publish_distribution_archive_on_testpypi.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/requirements.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/resources/scripts/generate_scenario_duration_limits.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/resources/scripts/generate_scenario_duration_tags.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/resources/scripts/print_execution_historic.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/resources/scripts/update_scenario_duration_tags.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/resources/ssh/id_rsa +0 -0
- {holado-0.2.7 → holado-0.2.8}/resources/ssh/id_rsa.pub +0 -0
- {holado-0.2.7 → holado-0.2.8}/run_test.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/run_test_draft.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/run_test_needupdate.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/run_test_nonreg.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/service_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/context/session_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/object.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/handlers/undefined.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/tools/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/common/tools/gc_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado/holado_config.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/MaritimeIdentificationDigits.csv +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/ais_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/ais_messages.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/ais_payload.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/ais/patch_pyais.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/ais/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/ais/ais_manager_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ais/tests/behave/steps/ais/ais_messages_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_binary/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_binary/ipc/binary.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_binary/ipc/bit_series.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_binary/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_binary/tests/behave/steps/ipc/binary_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_binary/tests/behave/steps/ipc/bit_series_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_context/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_context/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_context/tests/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_context/tests/behave/steps/private/common/context_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/actions.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/element_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/find_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/tree_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/actors/verify_actions.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/base.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/block_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/block_method.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/block_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/function.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/scope_function.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/scope_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/block/scope_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/and_criteria.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/criteria.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/or_criteria.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/tools/criteria_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/criterias/tools/criteria_parameters.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/driver.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/element_driver.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/element_internal_api.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/internal_api.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/tree_driver.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/drivers/tree_internal_api.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/element_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/exceptions.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/functional_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/holado_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/technical_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/timeout_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/exceptions/verify_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/after_in_tree_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/element_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/else_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/or_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/then_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_info.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_parameters.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/find_updater.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tools/finder_info.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/finders/tree_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/abstracts/base_redo.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/abstracts/get_or_create.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/element_holder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/exceptions/redo_exceptions.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/features/resource_by_name.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/features/resource_by_type.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/redo.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/handlers/wait.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/element_inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tools/inspect_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tools/inspect_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tools/inspect_parameters.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/inspectors/tree_inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/resource/persisted_data_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/resource/persisted_method_to_call_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/resource/resource_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/boolean_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/bytes_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/datetime_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/float_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/integer_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/internal_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/string_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/string_table_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/string_table_row_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_comparator_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_row_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/comparators/table_with_header_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/converters/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/converters/table_converter.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_cell.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_row.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tables/table_with_header.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/comparators/comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/comparators/object_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/converters/converter.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/path_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/tools/tools.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/transport/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/common/transport/crc.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/common_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/config_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tests/behave/steps/common/resource_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/abstracts/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/abstracts/blocking_command_service.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_core/tools/abstracts/service.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_data/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_data/data/generator/base.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_data/data/generator/python_generator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_data/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_data/tests/behave/steps/data/generator_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_data/tests/behave/steps/tools/utils_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/tools/db/db_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/tools/db/postgresql_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tests/behave/steps/tools/db/sqlite_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/clients/base/db_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/clients/postgresql/postgresql_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/clients/sqlite/sqlite_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/db_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/query/base/query_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/query/pypika/pypika_query_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_db/tools/db/query/query_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/sdk/docker/docker_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/sdk/docker/docker_service.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tests/behave/steps/tools/docker_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/docker_controler_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/docker_controler_server.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/compile_proto.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/definitions/docker_controler.proto +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2_grpc.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/scripts/script_custom_initialization.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/scripts/script_minimal_initialization.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/__main__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/behave_environment.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/environment.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/features/Configuration/Actions/configure_system.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/features/NonReg/example.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/initialize_holado.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/logging.conf +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/requirements.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/run_test.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/run_test_nonreg.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/src/common/tools/path_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/src/config/config_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/src/context/session_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/steps/config_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_examples/tests/behave/testing_solution/steps/public_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/api/rpc/TODO.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/api/rpc/grpc_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/api/rpc/grpc_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/ipc/rpc/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/ipc/rpc/grpc_compiler.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/ipc/rpc/grpc_services.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/api/grpc_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_grpc/tests/behave/steps/private/api/grpc_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/debug/README.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/debug/memory/memory_profiler.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/init_user.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/logging.conf +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/run_holado_test_nonreg_in_docker.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/run_terminal_in_docker-with_docker_control.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/docker/run_terminal_in_docker.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/holado_module_template/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/holado_module_template/test/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/holado_module_template/test/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/initialize_holado.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/action_script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/any_action_script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/behave_action_script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/csv_action_script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/initialize_script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/input_output_script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/job.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/json_action_script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_helper/script/script.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_json/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_json/ipc/json.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_json/ipc/json_converter.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_json/ipc/json_types.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_json/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_json/tests/behave/steps/ipc/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_json/tests/behave/steps/ipc/json_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tools/keycloak/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_keycloak/tools/keycloak/keycloak_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_logging/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_logging/common/logging/holado_logger.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_logging/common/logging/log_config.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_logging/common/logging/log_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/context/process_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/function_process.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/periodic_function_process.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/process.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multiprocessing/processesmanager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multitasking/multitask_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/context/thread_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/functionthreaded.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/loopfunctionthreaded.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/loopthread.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/periodicfunctionthreaded.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/reflection/inspect.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/reflection/sys.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/reflection/traceback.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/thread.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/threadsmanager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/multithreading/timer.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/tests/behave/steps/multiprocessing_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_multitask/tests/behave/steps/multithreading_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/abstracts/type.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_compiler.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_converter.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_messages.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/protobuf_modifier.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/types/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/types/google/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/ipc/protobuf/types/google/protobuf.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_protobuf/tests/behave/steps/ipc/protobuf_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/iterables.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/boolean_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/bytes_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/datetime_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/float_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/integer_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/string_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/comparators/type_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/common/tools/datetime.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/csv.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/hashlib.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/multiprocessing.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/queue.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/resources/certificates/NOTES.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/resources/certificates/localhost.crt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/resources/certificates/localhost.key +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/ssl/ssl.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/typing.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/builtins/str_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/convert_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/iterable_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/csv_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/datetime_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/hashlib_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/multiprocessing_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_python/tests/behave/steps/standard_library/queue_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tests/behave/steps/tools/rabbitmq_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_select_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rabbitmq/tools/rabbitmq/rabbitmq_server.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_redis/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tests/behave/steps/tools/redis_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tools/redis/TODO.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tools/redis/redis_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_redis/tools/redis/redis_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/analyze/execution_historic_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/analyze/scenario_duration_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/detailed_scenario_failed_report_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/json_execution_historic_report_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/report_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/short_scenario_failed_report_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/summary_report_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/summary_scenario_failed_report_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/builders/summary_scenario_report_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/execution_historic.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/report_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/reports/base_report.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/reports/feature_report.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_report/report/reports/scenario_report.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/api/rest/TODO.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/api/rest/rest_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/api/rest/rest_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/api/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/api/rest_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/private/api/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_rest/tests/behave/steps/private/api/rest_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/private/tools/s3_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/tools/s3_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tests/behave/steps/tools/s3_server_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/boto3_s3_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/minio_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_s3/tools/s3/moto_server.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/dynamic_text_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/evaluate_parameters.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/expression_evaluator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/common/tools/variable_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_new_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/common/tools/variable_verify_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/scenario/function_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/scenario/if_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/tests/behave/steps/scenario/loop_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/base/base_function.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/base/base_verify_function.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/base/text_inspecter.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/exceptions/interpreter_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_cast.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_convert.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_dynamic_value.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_escape_all_bytes.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_exists_variable.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_hex_to_bytes.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_hex_to_int.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_to_base_64.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_to_bytes.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/interpreter/functions/function_to_hex.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/exceptions/verifier_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/functions/verify_function_extract_in.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/functions/verify_function_match_pattern.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_scripting/text/verifier/text_verifier.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/private/tools/sftp_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/tools/sftp_client_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tests/behave/steps/tools/sftp_server_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tools/sftp/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tools/sftp/sftp_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_sftp/tools/sftp/sftp_server.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/swagger_hub/mockserver/mockserver_client.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/swagger_hub/mockserver/mockserver_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_swagger/tests/behave/steps/swagger_hub/mockserver_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/command.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/command_result.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/curl_command.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/command/exceptions.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/filesystem/file.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/system/global_system.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/system/commands_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/system/file_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_system/tests/behave/steps/system/system_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave_environment.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave_function.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/behave_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/independant_runner.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/scenario/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/behave/scenario/behave_step_tools.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/context/feature_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/context/scenario_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/context/step_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/common/exceptions/undefined_step_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/scenario/tester_tools.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/test_config.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/scenario/exception_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/scenario/scenario_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_test/tests/behave/steps/scenario/tester_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/tests/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/actors/actions.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/actors/ui_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/drivers/ui_driver.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/drivers/ui_driver_info.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/drivers/ui_internal_api.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/exceptions/focus_driver_exception.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/finders/ui_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/actors/gui_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/criterias/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/criterias/gui_criteria.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/drivers/gui_driver.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/drivers/gui_internal_api.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/finders/gui_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/handlers/label_gui_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/handlers/zone_gui_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/inspectors/gui_inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/windows/gui_window.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/gui/windows/gui_window_info.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/handlers/ui_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/handlers/ui_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/inspectors/tools/ui_inspect_builder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/inspectors/tools/ui_inspect_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui/ui/inspectors/ui_inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_mss/ui/mss/mss_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/actors/actions.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/actors/default_selenium_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/actors/selenium_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/criterias/selenium_criteria.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/criterias/selenium_criteria_and_verifier.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/drivers/selenium_driver.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/drivers/selenium_internal_api.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/drivers/web_driver_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/by_selenium_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/children_selenium_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/parent_selenium_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/finders/selenium_finder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/enums.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_by.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_holder.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_redo.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/handlers/selenium_ui_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/inspectors/default_selenium_inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/inspectors/selenium_inspector.py +0 -0
- {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
- {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
- {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
- {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
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/converters/selenium_table_converter.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table_cell.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table_row.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tables/selenium_table_with_header.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/tools/selenium_path_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/windows/default_selenium_window.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium/ui/gui/selenium/windows/selenium_window.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_angular/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_angular/ui/gui/selenium/actors/angular_selenium_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_angular/ui/gui/selenium/inspectors/angular_selenium_inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_html/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_html/ui/gui/selenium/actors/html_selenium_actor.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ui_selenium_html/ui/gui/selenium/inspectors/html_selenium_inspector.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_row_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/comparators/table_2_value_table_with_header_comparator.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/converters/value_table_converter.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tables/value_table_with_header.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tools/unique_value_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/common/tools/value_types.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_value/tests/behave/steps/private/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ws/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ws/api/ws/TODO.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ws/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_ws/tests/behave/steps/api/web_service_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/tests/behave/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/tests/behave/steps/yaml_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/src/holado_yaml/yaml/yaml_manager.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/steps_catalog.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/Dockerfile_test_holado +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/__main__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/build_docker_image_to_test_holado_in_docker.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/environment.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/api/REST.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/api/gRPC.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/multiprocessing/simple.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/system/commands.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/system/system.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tables/table.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tables/value_table_conversion.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tools/DateTime.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/common/tools/UniqueValueManager.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_ais/ais_message-bitarray_to_nmea.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_binary/bit_series.error.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_binary/bit_series.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_protobuf/protobuf.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/convert.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_python/iterable.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/common/tools/dynamic_text_manager.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/common/tools/expression_evaluator.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/common/tools/variable_manager.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.error.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/holado_yaml/yaml.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/ipc/json.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/scenario/scenario.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/test_steps/behave.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/test_steps/common.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/RabbitMQ.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/RabbitMQ_steps.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/S3/boto3_client.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/S3/minio_client.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/db_sqlite3.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/NonReg/tools/sFTP.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/Test/logger.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/features/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/logging.conf +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/generated/protobuf/custom_types/field_types_pb2.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/proto/generated/protobuf/protobuf/dev/tutorial/addressbook_pb2.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/scripts/list_tags.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/resources/scripts/update_resources_proto_generated.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/steps/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/steps/private_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/steps/public_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/test_holado_session_context.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/README.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/admin.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/apps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/migrations/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/models.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/proto/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/proto/account.proto +0 -0
- {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
- {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
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/serializers.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/services.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/tests.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/api1/views.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/asgi.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/settings.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/urls.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/api_grpc/wsgi.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/db.sqlite3 +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/manage.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_grpc/manual_test_commands.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/admin.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/apps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/models.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/serializers.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/tests.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/api1/views.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/asgi.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/settings.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/urls.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/api_rest/wsgi.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/db.sqlite3 +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/behave/test_holado/tools/django/api_rest/manage.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/dgot/classement/classement.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/dgot/classement/classement.sh +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/dgot/classement/commands.txt +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/environment.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/features/fake.feature +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/logging.conf +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/steps/public_steps.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/test.py +0 -0
- {holado-0.2.7 → holado-0.2.8}/tests/scripts/independant_runner/test.sh +0 -0
- {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.
|
|
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
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
81
|
-
self.
|
|
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.
|
|
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
|
-
|
|
134
|
-
sock = ssl_context.wrap_socket(sock, server_side=True)
|
|
135
|
-
|
|
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
|
|
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
|
|
32
|
+
class MessageSocketClient(object):
|
|
30
33
|
"""
|
|
31
|
-
Base class for
|
|
34
|
+
Base class for message socket client.
|
|
32
35
|
"""
|
|
33
36
|
__metaclass__ = abc.ABCMeta
|
|
34
37
|
|
|
35
|
-
def __init__(self, separator=b'\n'
|
|
36
|
-
super().__init__(
|
|
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
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
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
|
|
{holado-0.2.7 → holado-0.2.8}/src/holado_python/standard_library/socket/non_blocking_socket.py
RENAMED
|
@@ -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
|
|
21
|
-
import
|
|
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
|
-
|
|
41
|
-
|
|
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.
|
|
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
|
-
|
|
75
|
-
self.
|
|
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
|
-
|
|
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
|
-
|
|
90
|
+
has_activity = True
|
|
91
|
+
with self._data_lock: # data is self._data
|
|
98
92
|
data.in_bytes += recv_data
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
141
|
-
|
|
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)
|