holado 0.2.1__py3-none-any.whl → 0.2.3__py3-none-any.whl
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/__init__.py +8 -4
- {holado-0.2.1.dist-info → holado-0.2.3.dist-info}/METADATA +13 -9
- holado-0.2.3.dist-info/RECORD +535 -0
- holado_ais/__init__.py +33 -0
- holado_ais/ais/MaritimeIdentificationDigits.csv +295 -0
- holado_ais/ais/ais_manager.py +151 -0
- holado_ais/ais/ais_messages.py +203 -0
- holado_ais/ais/ais_payload.py +35 -0
- holado_ais/ais/enums.py +37 -0
- holado_ais/ais/patch_pyais.py +1303 -0
- holado_ais/tests/behave/steps/__init__.py +17 -0
- holado_ais/tests/behave/steps/ais/__init__.py +0 -0
- holado_ais/tests/behave/steps/ais/ais_manager_steps.py +50 -0
- holado_ais/tests/behave/steps/ais/ais_messages_steps.py +182 -0
- holado_binary/__init__.py +17 -0
- holado_binary/ipc/binary.py +125 -0
- holado_binary/ipc/bit_series.py +307 -0
- holado_binary/tests/behave/steps/__init__.py +17 -0
- holado_binary/tests/behave/steps/ipc/binary_steps.py +57 -0
- holado_binary/tests/behave/steps/ipc/bit_series_steps.py +131 -0
- holado_context/__init__.py +16 -0
- holado_context/tests/behave/steps/__init__.py +16 -0
- holado_context/tests/behave/steps/private/__init__.py +16 -0
- holado_context/tests/behave/steps/private/common/context_steps.py +36 -0
- holado_core/__init__.py +32 -0
- holado_core/common/__init__.py +0 -0
- holado_core/common/actors/actions.py +97 -0
- holado_core/common/actors/actor.py +226 -0
- holado_core/common/actors/element_actor.py +32 -0
- holado_core/common/actors/find_actor.py +106 -0
- holado_core/common/actors/tree_actor.py +32 -0
- holado_core/common/actors/verify_actions.py +69 -0
- holado_core/common/block/base.py +122 -0
- holado_core/common/block/block_manager.py +173 -0
- holado_core/common/block/block_method.py +46 -0
- holado_core/common/block/block_steps.py +37 -0
- holado_core/common/block/function.py +42 -0
- holado_core/common/block/scope_function.py +28 -0
- holado_core/common/block/scope_manager.py +238 -0
- holado_core/common/block/scope_steps.py +141 -0
- holado_core/common/criterias/and_criteria.py +61 -0
- holado_core/common/criterias/criteria.py +78 -0
- holado_core/common/criterias/or_criteria.py +64 -0
- holado_core/common/criterias/tools/criteria_context.py +20 -0
- holado_core/common/criterias/tools/criteria_parameters.py +18 -0
- holado_core/common/drivers/driver.py +153 -0
- holado_core/common/drivers/element_driver.py +30 -0
- holado_core/common/drivers/element_internal_api.py +239 -0
- holado_core/common/drivers/internal_api.py +40 -0
- holado_core/common/drivers/tree_driver.py +30 -0
- holado_core/common/drivers/tree_internal_api.py +176 -0
- holado_core/common/exceptions/__init__.py +0 -0
- holado_core/common/exceptions/element_exception.py +28 -0
- holado_core/common/exceptions/exceptions.py +24 -0
- holado_core/common/exceptions/functional_exception.py +21 -0
- holado_core/common/exceptions/holado_exception.py +25 -0
- holado_core/common/exceptions/technical_exception.py +27 -0
- holado_core/common/exceptions/timeout_exception.py +20 -0
- holado_core/common/exceptions/verify_exception.py +20 -0
- holado_core/common/finders/after_in_tree_finder.py +87 -0
- holado_core/common/finders/element_finder.py +60 -0
- holado_core/common/finders/else_finder.py +105 -0
- holado_core/common/finders/finder.py +478 -0
- holado_core/common/finders/or_finder.py +98 -0
- holado_core/common/finders/then_finder.py +157 -0
- holado_core/common/finders/tools/enums.py +30 -0
- holado_core/common/finders/tools/find_builder.py +118 -0
- holado_core/common/finders/tools/find_context.py +405 -0
- holado_core/common/finders/tools/find_info.py +27 -0
- holado_core/common/finders/tools/find_parameters.py +240 -0
- holado_core/common/finders/tools/find_updater.py +95 -0
- holado_core/common/finders/tools/finder_info.py +26 -0
- holado_core/common/finders/tree_finder.py +146 -0
- holado_core/common/handlers/__init__.py +0 -0
- holado_core/common/handlers/abstracts/base_redo.py +695 -0
- holado_core/common/handlers/abstracts/get_or_create.py +120 -0
- holado_core/common/handlers/element_holder.py +122 -0
- holado_core/common/handlers/enums.py +23 -0
- holado_core/common/handlers/exceptions/redo_exceptions.py +28 -0
- holado_core/common/handlers/features/resource_by_name.py +187 -0
- holado_core/common/handlers/features/resource_by_type.py +174 -0
- holado_core/common/handlers/redo.py +119 -0
- holado_core/common/handlers/wait.py +127 -0
- holado_core/common/inspectors/element_inspector.py +57 -0
- holado_core/common/inspectors/inspector.py +221 -0
- holado_core/common/inspectors/tools/inspect_builder.py +169 -0
- holado_core/common/inspectors/tools/inspect_context.py +69 -0
- holado_core/common/inspectors/tools/inspect_parameters.py +181 -0
- holado_core/common/inspectors/tree_inspector.py +73 -0
- holado_core/common/resource/persisted_data_manager.py +113 -0
- holado_core/common/resource/persisted_method_to_call_manager.py +133 -0
- holado_core/common/resource/resource_manager.py +143 -0
- holado_core/common/tables/__init__.py +1 -0
- holado_core/common/tables/comparators/__init__.py +0 -0
- holado_core/common/tables/comparators/boolean_table_cell_comparator.py +25 -0
- holado_core/common/tables/comparators/bytes_table_cell_comparator.py +25 -0
- holado_core/common/tables/comparators/datetime_table_cell_comparator.py +24 -0
- holado_core/common/tables/comparators/float_table_cell_comparator.py +31 -0
- holado_core/common/tables/comparators/integer_table_cell_comparator.py +25 -0
- holado_core/common/tables/comparators/internal_table_cell_comparator.py +30 -0
- holado_core/common/tables/comparators/string_table_cell_comparator.py +24 -0
- holado_core/common/tables/comparators/string_table_comparator.py +29 -0
- holado_core/common/tables/comparators/string_table_row_comparator.py +29 -0
- holado_core/common/tables/comparators/table_cell_comparator.py +40 -0
- holado_core/common/tables/comparators/table_comparator.py +209 -0
- holado_core/common/tables/comparators/table_comparator_manager.py +60 -0
- holado_core/common/tables/comparators/table_row_comparator.py +116 -0
- holado_core/common/tables/comparators/table_with_header_comparator.py +68 -0
- holado_core/common/tables/converters/__init__.py +0 -0
- holado_core/common/tables/converters/table_converter.py +194 -0
- holado_core/common/tables/enums.py +23 -0
- holado_core/common/tables/table.py +261 -0
- holado_core/common/tables/table_cell.py +126 -0
- holado_core/common/tables/table_manager.py +366 -0
- holado_core/common/tables/table_row.py +169 -0
- holado_core/common/tables/table_with_header.py +236 -0
- holado_core/common/tools/__init__.py +0 -0
- holado_core/common/tools/comparators/comparator.py +151 -0
- holado_core/common/tools/comparators/object_comparator.py +21 -0
- holado_core/common/tools/converters/converter.py +107 -0
- holado_core/common/tools/path_manager.py +185 -0
- holado_core/common/tools/string_tools.py +135 -0
- holado_core/common/tools/tools.py +172 -0
- holado_core/common/transport/__init__.py +0 -0
- holado_core/common/transport/crc.py +40 -0
- holado_core/tests/behave/steps/__init__.py +20 -0
- holado_core/tests/behave/steps/common/__init__.py +0 -0
- holado_core/tests/behave/steps/common/common_steps.py +136 -0
- holado_core/tests/behave/steps/common/config_steps.py +42 -0
- holado_core/tests/behave/steps/common/resource_steps.py +62 -0
- holado_core/tests/behave/steps/common/tables_steps.py +537 -0
- holado_core/tools/__init__.py +0 -0
- holado_core/tools/abstracts/__init__.py +0 -0
- holado_core/tools/abstracts/blocking_command_service.py +56 -0
- holado_core/tools/abstracts/service.py +48 -0
- holado_data/__init__.py +31 -0
- holado_data/data/generator/base.py +93 -0
- holado_data/data/generator/python_generator.py +30 -0
- holado_data/tests/behave/steps/__init__.py +17 -0
- holado_data/tests/behave/steps/data/generator_steps.py +91 -0
- holado_data/tests/behave/steps/tools/utils_steps.py +60 -0
- holado_db/__init__.py +32 -0
- holado_db/tests/behave/steps/__init__.py +18 -0
- holado_db/tests/behave/steps/tools/db/db_client_steps.py +134 -0
- holado_db/tests/behave/steps/tools/db/postgresql_client_steps.py +59 -0
- holado_db/tests/behave/steps/tools/db/sqlite_client_steps.py +57 -0
- holado_db/tools/db/clients/base/db_client.py +206 -0
- holado_db/tools/db/clients/postgresql/postgresql_client.py +65 -0
- holado_db/tools/db/clients/sqlite/sqlite_client.py +56 -0
- holado_db/tools/db/db_manager.py +109 -0
- holado_db/tools/db/query/base/query_builder.py +87 -0
- holado_db/tools/db/query/pypika/pypika_query_builder.py +193 -0
- holado_db/tools/db/query/query_manager.py +77 -0
- holado_docker/__init__.py +25 -0
- holado_docker/sdk/docker/docker_client.py +268 -0
- holado_docker/sdk/docker/docker_service.py +71 -0
- holado_docker/tests/behave/steps/__init__.py +16 -0
- holado_docker/tests/behave/steps/tools/docker_steps.py +33 -0
- holado_docker/tools/docker_controler/__init__.py +26 -0
- holado_docker/tools/docker_controler/docker_controler_client.py +36 -0
- holado_docker/tools/docker_controler/docker_controler_server.py +31 -0
- holado_docker/tools/docker_controler/proto/compile_proto.py +60 -0
- holado_docker/tools/docker_controler/proto/definitions/docker_controler.proto +63 -0
- holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2.py +52 -0
- holado_docker/tools/docker_controler/proto/generated/docker_controler_pb2_grpc.py +233 -0
- holado_grpc/__init__.py +32 -0
- holado_grpc/api/rpc/TODO.txt +4 -0
- holado_grpc/api/rpc/grpc_client.py +181 -0
- holado_grpc/api/rpc/grpc_manager.py +81 -0
- holado_grpc/ipc/rpc/__init__.py +0 -0
- holado_grpc/ipc/rpc/grpc_compiler.py +45 -0
- holado_grpc/ipc/rpc/grpc_services.py +165 -0
- holado_grpc/tests/behave/steps/__init__.py +16 -0
- holado_grpc/tests/behave/steps/api/grpc_client_steps.py +173 -0
- holado_grpc/tests/behave/steps/private/__init__.py +16 -0
- holado_grpc/tests/behave/steps/private/api/grpc_steps.py +77 -0
- holado_helper/__init__.py +35 -0
- holado_helper/debug/README.txt +32 -0
- holado_helper/debug/memory/memory_profiler.py +106 -0
- holado_helper/docker/init_user.sh +24 -0
- holado_helper/docker/logging.conf +42 -0
- holado_helper/docker/run_holado_test_nonreg_in_docker.sh +120 -0
- holado_helper/docker/run_terminal_in_docker-with_docker_control.sh +103 -0
- holado_helper/docker/run_terminal_in_docker.sh +101 -0
- holado_helper/holado_module_template/__init__.py +31 -0
- holado_helper/holado_module_template/test/behave/steps/__init__.py +16 -0
- holado_helper/holado_module_template/test/behave/steps/private/__init__.py +16 -0
- holado_helper/script/action.py +109 -0
- holado_helper/script/action_script.py +477 -0
- holado_helper/script/any_action_script.py +126 -0
- holado_helper/script/behave_action_script.py +99 -0
- holado_helper/script/csv_action_script.py +142 -0
- holado_helper/script/initialize_script.py +115 -0
- holado_helper/script/input_output_script.py +136 -0
- holado_helper/script/job.py +75 -0
- holado_helper/script/json_action_script.py +104 -0
- holado_helper/script/script.py +110 -0
- holado_json/__init__.py +16 -0
- holado_json/ipc/json.py +125 -0
- holado_json/ipc/json_converter.py +69 -0
- holado_json/ipc/json_types.py +183 -0
- holado_json/tests/behave/steps/__init__.py +16 -0
- holado_json/tests/behave/steps/ipc/__init__.py +0 -0
- holado_json/tests/behave/steps/ipc/json_steps.py +120 -0
- holado_keycloak/__init__.py +16 -0
- holado_keycloak/tests/behave/steps/__init__.py +16 -0
- holado_keycloak/tests/behave/steps/tools/keycloak_client_steps.py +59 -0
- holado_keycloak/tools/keycloak/__init__.py +0 -0
- holado_keycloak/tools/keycloak/keycloak_client.py +61 -0
- holado_logging/__init__.py +36 -0
- holado_logging/common/logging/holado_logger.py +75 -0
- holado_logging/common/logging/log_config.py +128 -0
- holado_logging/common/logging/log_manager.py +292 -0
- holado_multitask/__init__.py +33 -0
- holado_multitask/multiprocessing/context/process_context.py +35 -0
- holado_multitask/multiprocessing/function_process.py +102 -0
- holado_multitask/multiprocessing/periodic_function_process.py +135 -0
- holado_multitask/multiprocessing/process.py +196 -0
- holado_multitask/multiprocessing/processesmanager.py +133 -0
- holado_multitask/multitasking/multitask_manager.py +439 -0
- holado_multitask/multithreading/__init__.py +0 -0
- holado_multitask/multithreading/context/thread_context.py +84 -0
- holado_multitask/multithreading/functionthreaded.py +129 -0
- holado_multitask/multithreading/loopfunctionthreaded.py +45 -0
- holado_multitask/multithreading/loopthread.py +100 -0
- holado_multitask/multithreading/periodicfunctionthreaded.py +136 -0
- holado_multitask/multithreading/reflection/inspect.py +47 -0
- holado_multitask/multithreading/reflection/sys.py +29 -0
- holado_multitask/multithreading/reflection/traceback.py +35 -0
- holado_multitask/multithreading/thread.py +177 -0
- holado_multitask/multithreading/threadsmanager.py +162 -0
- holado_multitask/multithreading/timer.py +48 -0
- holado_multitask/tests/behave/steps/__init__.py +17 -0
- holado_multitask/tests/behave/steps/multiprocessing_steps.py +138 -0
- holado_multitask/tests/behave/steps/multithreading_steps.py +129 -0
- holado_protobuf/__init__.py +61 -0
- holado_protobuf/ipc/protobuf/__init__.py +0 -0
- holado_protobuf/ipc/protobuf/abstracts/type.py +45 -0
- holado_protobuf/ipc/protobuf/protobuf_compiler.py +118 -0
- holado_protobuf/ipc/protobuf/protobuf_converter.py +153 -0
- holado_protobuf/ipc/protobuf/protobuf_messages.py +965 -0
- holado_protobuf/ipc/protobuf/protobuf_modifier.py +65 -0
- holado_protobuf/ipc/protobuf/types/__init__.py +0 -0
- holado_protobuf/ipc/protobuf/types/google/__init__.py +0 -0
- holado_protobuf/ipc/protobuf/types/google/protobuf.py +124 -0
- holado_protobuf/tests/behave/steps/__init__.py +16 -0
- holado_protobuf/tests/behave/steps/ipc/protobuf_steps.py +297 -0
- holado_python/__init__.py +35 -0
- holado_python/common/enums.py +34 -0
- holado_python/common/iterables.py +30 -0
- holado_python/common/tools/comparators/boolean_comparator.py +37 -0
- holado_python/common/tools/comparators/bytes_comparator.py +48 -0
- holado_python/common/tools/comparators/datetime_comparator.py +74 -0
- holado_python/common/tools/comparators/float_comparator.py +97 -0
- holado_python/common/tools/comparators/integer_comparator.py +37 -0
- holado_python/common/tools/comparators/string_comparator.py +99 -0
- holado_python/common/tools/comparators/type_comparator.py +31 -0
- holado_python/common/tools/datetime.py +279 -0
- holado_python/standard_library/csv.py +207 -0
- holado_python/standard_library/hashlib.py +82 -0
- holado_python/standard_library/multiprocessing.py +62 -0
- holado_python/standard_library/queue.py +79 -0
- holado_python/standard_library/socket/blocking_socket.py +136 -0
- holado_python/standard_library/socket/echo_server.py +28 -0
- holado_python/standard_library/socket/message_socket.py +91 -0
- holado_python/standard_library/socket/non_blocking_socket.py +151 -0
- holado_python/standard_library/socket/socket.py +148 -0
- holado_python/standard_library/ssl/resources/certificates/NOTES.txt +5 -0
- holado_python/standard_library/ssl/resources/certificates/localhost.crt +19 -0
- holado_python/standard_library/ssl/resources/certificates/localhost.key +28 -0
- holado_python/standard_library/ssl/ssl.py +81 -0
- holado_python/standard_library/typing.py +192 -0
- holado_python/tests/behave/steps/__init__.py +27 -0
- holado_python/tests/behave/steps/builtins/str_steps.py +45 -0
- holado_python/tests/behave/steps/convert_steps.py +59 -0
- holado_python/tests/behave/steps/iterable_steps.py +87 -0
- holado_python/tests/behave/steps/standard_library/csv_steps.py +134 -0
- holado_python/tests/behave/steps/standard_library/datetime_steps.py +163 -0
- holado_python/tests/behave/steps/standard_library/hashlib_steps.py +57 -0
- holado_python/tests/behave/steps/standard_library/multiprocessing_steps.py +56 -0
- holado_python/tests/behave/steps/standard_library/queue_steps.py +358 -0
- holado_python/tests/behave/steps/standard_library/socket_steps.py +258 -0
- holado_python/tests/behave/steps/standard_library/ssl_steps.py +67 -0
- holado_rabbitmq/__init__.py +28 -0
- holado_rabbitmq/tests/behave/steps/__init__.py +17 -0
- holado_rabbitmq/tests/behave/steps/tools/rabbitmq_client_steps.py +537 -0
- holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +64 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +311 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +675 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +173 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_select_client.py +428 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_server.py +24 -0
- holado_redis/__init__.py +17 -0
- holado_redis/tests/behave/steps/__init__.py +16 -0
- holado_redis/tests/behave/steps/tools/redis_client_steps.py +101 -0
- holado_redis/tools/redis/TODO.txt +7 -0
- holado_redis/tools/redis/redis_client.py +190 -0
- holado_redis/tools/redis/redis_manager.py +38 -0
- holado_report/__init__.py +27 -0
- holado_report/report/analyze/execution_historic_manager.py +96 -0
- holado_report/report/analyze/scenario_duration_manager.py +245 -0
- holado_report/report/builders/detailed_scenario_failed_report_builder.py +146 -0
- holado_report/report/builders/json_execution_historic_report_builder.py +123 -0
- holado_report/report/builders/report_builder.py +64 -0
- holado_report/report/builders/short_scenario_failed_report_builder.py +76 -0
- holado_report/report/builders/summary_report_builder.py +89 -0
- holado_report/report/builders/summary_scenario_failed_report_builder.py +56 -0
- holado_report/report/builders/summary_scenario_report_builder.py +74 -0
- holado_report/report/execution_historic.py +141 -0
- holado_report/report/report_manager.py +256 -0
- holado_report/report/reports/base_report.py +163 -0
- holado_report/report/reports/feature_report.py +106 -0
- holado_report/report/reports/scenario_report.py +64 -0
- holado_rest/__init__.py +24 -0
- holado_rest/api/rest/TODO.txt +2 -0
- holado_rest/api/rest/rest_client.py +113 -0
- holado_rest/api/rest/rest_manager.py +62 -0
- holado_rest/tests/behave/steps/__init__.py +16 -0
- holado_rest/tests/behave/steps/api/__init__.py +0 -0
- holado_rest/tests/behave/steps/api/rest_client_steps.py +141 -0
- holado_rest/tests/behave/steps/private/__init__.py +16 -0
- holado_rest/tests/behave/steps/private/api/__init__.py +0 -0
- holado_rest/tests/behave/steps/private/api/rest_steps.py +70 -0
- holado_s3/__init__.py +17 -0
- holado_s3/tests/behave/steps/__init__.py +17 -0
- holado_s3/tests/behave/steps/private/__init__.py +16 -0
- holado_s3/tests/behave/steps/private/tools/s3_steps.py +89 -0
- holado_s3/tests/behave/steps/tools/s3_client_steps.py +403 -0
- holado_s3/tests/behave/steps/tools/s3_server_steps.py +57 -0
- holado_s3/tools/s3/__init__.py +0 -0
- holado_s3/tools/s3/boto3_s3_client.py +59 -0
- holado_s3/tools/s3/minio_client.py +75 -0
- holado_s3/tools/s3/moto_server.py +52 -0
- holado_scripting/__init__.py +53 -0
- holado_scripting/common/tools/dynamic_text_manager.py +73 -0
- holado_scripting/common/tools/evaluate_parameters.py +210 -0
- holado_scripting/common/tools/expression_evaluator.py +387 -0
- holado_scripting/common/tools/variable_manager.py +321 -0
- holado_scripting/tests/behave/steps/__init__.py +22 -0
- holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +158 -0
- holado_scripting/tests/behave/steps/common/tools/variable_new_steps.py +130 -0
- holado_scripting/tests/behave/steps/common/tools/variable_steps.py +108 -0
- holado_scripting/tests/behave/steps/common/tools/variable_verify_steps.py +160 -0
- holado_scripting/tests/behave/steps/scenario/function_steps.py +77 -0
- holado_scripting/tests/behave/steps/scenario/if_steps.py +87 -0
- holado_scripting/tests/behave/steps/scenario/loop_steps.py +119 -0
- holado_scripting/text/base/base_function.py +25 -0
- holado_scripting/text/base/base_verify_function.py +25 -0
- holado_scripting/text/base/text_inspecter.py +204 -0
- holado_scripting/text/interpreter/exceptions/interpreter_exception.py +25 -0
- holado_scripting/text/interpreter/functions/function_cast.py +60 -0
- holado_scripting/text/interpreter/functions/function_convert.py +57 -0
- holado_scripting/text/interpreter/functions/function_dynamic_value.py +40 -0
- holado_scripting/text/interpreter/functions/function_escape_all_bytes.py +35 -0
- holado_scripting/text/interpreter/functions/function_exists_variable.py +39 -0
- holado_scripting/text/interpreter/functions/function_hex_to_bytes.py +49 -0
- holado_scripting/text/interpreter/functions/function_hex_to_int.py +53 -0
- holado_scripting/text/interpreter/functions/function_to_base_64.py +41 -0
- holado_scripting/text/interpreter/functions/function_to_bytes.py +50 -0
- holado_scripting/text/interpreter/functions/function_to_hex.py +42 -0
- holado_scripting/text/interpreter/text_interpreter.py +216 -0
- holado_scripting/text/verifier/exceptions/verifier_exception.py +21 -0
- holado_scripting/text/verifier/functions/verify_function_extract_in.py +35 -0
- holado_scripting/text/verifier/functions/verify_function_match_pattern.py +63 -0
- holado_scripting/text/verifier/text_verifier.py +103 -0
- holado_sftp/__init__.py +16 -0
- holado_sftp/tests/behave/steps/__init__.py +17 -0
- holado_sftp/tests/behave/steps/private/__init__.py +16 -0
- holado_sftp/tests/behave/steps/private/tools/sftp_steps.py +78 -0
- holado_sftp/tests/behave/steps/tools/sftp_client_steps.py +94 -0
- holado_sftp/tests/behave/steps/tools/sftp_server_steps.py +82 -0
- holado_sftp/tools/sftp/__init__.py +0 -0
- holado_sftp/tools/sftp/sftp_client.py +103 -0
- holado_sftp/tools/sftp/sftp_server.py +39 -0
- holado_swagger/__init__.py +31 -0
- holado_swagger/swagger_hub/mockserver/mockserver_client.py +82 -0
- holado_swagger/swagger_hub/mockserver/mockserver_manager.py +32 -0
- holado_swagger/tests/behave/steps/__init__.py +16 -0
- holado_swagger/tests/behave/steps/swagger_hub/mockserver_steps.py +74 -0
- holado_system/system/command/command.py +216 -0
- holado_system/system/command/command_result.py +128 -0
- holado_system/system/command/curl_command.py +101 -0
- holado_system/system/command/exceptions.py +59 -0
- holado_system/system/filesystem/file.py +76 -0
- holado_system/system/global_system.py +187 -0
- holado_system/tests/behave/steps/__init__.py +18 -0
- holado_system/tests/behave/steps/system/commands_steps.py +92 -0
- holado_system/tests/behave/steps/system/file_steps.py +215 -0
- holado_system/tests/behave/steps/system/system_steps.py +84 -0
- holado_test/__init__.py +27 -0
- holado_test/behave/__init__.py +0 -0
- holado_test/behave/behave.py +397 -0
- holado_test/behave/behave_environment.py +143 -0
- holado_test/behave/behave_function.py +33 -0
- holado_test/behave/behave_manager.py +555 -0
- holado_test/behave/independant_runner.py +68 -0
- holado_test/behave/scenario/__init__.py +0 -0
- holado_test/behave/scenario/behave_step_tools.py +157 -0
- holado_test/common/context/feature_context.py +79 -0
- holado_test/common/context/scenario_context.py +217 -0
- holado_test/common/context/step_context.py +66 -0
- holado_test/common/exceptions/undefined_step_exception.py +21 -0
- holado_test/scenario/step_tools.py +523 -0
- holado_test/scenario/tester_tools.py +52 -0
- holado_test/test_config.py +26 -0
- holado_test/tests/behave/steps/__init__.py +18 -0
- holado_test/tests/behave/steps/scenario/exception_steps.py +87 -0
- holado_test/tests/behave/steps/scenario/scenario_steps.py +87 -0
- holado_test/tests/behave/steps/scenario/tester_steps.py +65 -0
- holado_value/__init__.py +24 -0
- holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +195 -0
- holado_value/common/tables/comparators/table_2_value_table_comparator.py +27 -0
- holado_value/common/tables/comparators/table_2_value_table_row_comparator.py +27 -0
- holado_value/common/tables/comparators/table_2_value_table_with_header_comparator.py +27 -0
- holado_value/common/tables/converters/value_table_converter.py +217 -0
- holado_value/common/tables/value_table.py +29 -0
- holado_value/common/tables/value_table_cell.py +67 -0
- holado_value/common/tables/value_table_manager.py +58 -0
- holado_value/common/tables/value_table_row.py +44 -0
- holado_value/common/tables/value_table_with_header.py +28 -0
- holado_value/common/tools/unique_value_manager.py +108 -0
- holado_value/common/tools/value.py +164 -0
- holado_value/common/tools/value_types.py +35 -0
- holado_value/tests/behave/steps/__init__.py +16 -0
- holado_value/tests/behave/steps/private/__init__.py +16 -0
- holado_ws/__init__.py +16 -0
- holado_ws/api/ws/TODO.txt +2 -0
- holado_ws/tests/behave/steps/__init__.py +16 -0
- holado_ws/tests/behave/steps/api/web_service_steps.py +189 -0
- holado_yaml/__init__.py +31 -0
- holado_yaml/tests/behave/steps/__init__.py +16 -0
- holado_yaml/tests/behave/steps/yaml_steps.py +64 -0
- holado_yaml/yaml/yaml_manager.py +86 -0
- test_holado/Dockerfile_test_holado +82 -0
- test_holado/__init__.py +4 -0
- test_holado/__main__.py +25 -0
- test_holado/build_docker_image_to_test_holado_in_docker.sh +7 -0
- test_holado/environment.py +42 -0
- test_holado/features/NonReg/api/REST.feature +21 -0
- test_holado/features/NonReg/api/gRPC.feature +122 -0
- test_holado/features/NonReg/common/multiprocessing/simple.feature +60 -0
- test_holado/features/NonReg/common/system/commands.feature +43 -0
- test_holado/features/NonReg/common/system/system.feature +20 -0
- test_holado/features/NonReg/common/tables/table.feature +239 -0
- test_holado/features/NonReg/common/tables/value_table_conversion.feature +29 -0
- test_holado/features/NonReg/common/tools/DateTime.feature +88 -0
- test_holado/features/NonReg/common/tools/UniqueValueManager.feature +43 -0
- test_holado/features/NonReg/holado_ais/ais_message-bitarray_to_nmea.feature +135 -0
- test_holado/features/NonReg/holado_protobuf/protobuf.feature +291 -0
- test_holado/features/NonReg/holado_python/convert.feature +20 -0
- test_holado/features/NonReg/holado_python/iterable.feature +61 -0
- test_holado/features/NonReg/holado_python/standard_library/socket.feature +101 -0
- test_holado/features/NonReg/holado_python/standard_library/socket_with_ssl.feature +180 -0
- test_holado/features/NonReg/holado_scripting/common/tools/dynamic_text_manager.feature +18 -0
- test_holado/features/NonReg/holado_scripting/common/tools/expression_evaluator.feature +185 -0
- test_holado/features/NonReg/holado_scripting/common/tools/variable_manager.feature +71 -0
- test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.error.feature +21 -0
- test_holado/features/NonReg/holado_scripting/text/interpreter/interpreter.feature +120 -0
- test_holado/features/NonReg/holado_yaml/yaml.feature +218 -0
- test_holado/features/NonReg/ipc/bit_series.error.feature +33 -0
- test_holado/features/NonReg/ipc/bit_series.feature +131 -0
- test_holado/features/NonReg/ipc/json.feature +20 -0
- test_holado/features/NonReg/scenario/scenario.feature +139 -0
- test_holado/features/NonReg/test_steps/behave.feature +275 -0
- test_holado/features/NonReg/test_steps/common.feature +100 -0
- test_holado/features/NonReg/tools/RabbitMQ.feature +445 -0
- test_holado/features/NonReg/tools/RabbitMQ_steps.feature +276 -0
- test_holado/features/NonReg/tools/S3/boto3_client.feature +73 -0
- test_holado/features/NonReg/tools/S3/minio_client.feature +75 -0
- test_holado/features/NonReg/tools/db_sqlite3.feature +41 -0
- test_holado/features/NonReg/tools/sFTP.feature +25 -0
- test_holado/features/Test/logger.feature +28 -0
- test_holado/features/__init__.py +0 -0
- test_holado/logging.conf +41 -0
- test_holado/resources/proto/definitions/protobuf/custom_types/field_types.proto +24 -0
- test_holado/resources/proto/definitions/protobuf/protobuf.dev/tutorial/addressbook.proto +56 -0
- test_holado/resources/proto/generated/protobuf/custom_types/field_types_pb2.py +34 -0
- test_holado/resources/proto/generated/protobuf/protobuf/dev/tutorial/addressbook_pb2.py +34 -0
- test_holado/resources/scripts/list_tags.sh +2 -0
- test_holado/resources/scripts/update_resources_proto_generated.py +70 -0
- test_holado/steps/__init__.py +0 -0
- test_holado/steps/private_steps.py +20 -0
- test_holado/steps/public_steps.py +23 -0
- test_holado/test_holado_session_context.py +43 -0
- test_holado/tools/django/README.txt +3 -0
- test_holado/tools/django/api_grpc/api_grpc/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/admin.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/apps.py +6 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/migrations/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/models.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/__init__.py +0 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/account.proto +27 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2.py +33 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/proto/account_pb2_grpc.py +199 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/serializers.py +12 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/services.py +11 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/tests.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/api1/views.py +3 -0
- test_holado/tools/django/api_grpc/api_grpc/asgi.py +16 -0
- test_holado/tools/django/api_grpc/api_grpc/settings.py +126 -0
- test_holado/tools/django/api_grpc/api_grpc/urls.py +27 -0
- test_holado/tools/django/api_grpc/api_grpc/wsgi.py +16 -0
- test_holado/tools/django/api_grpc/db.sqlite3 +0 -0
- test_holado/tools/django/api_grpc/manage.py +27 -0
- test_holado/tools/django/api_grpc/manual_test_commands.txt +25 -0
- test_holado/tools/django/api_rest/api_rest/__init__.py +0 -0
- test_holado/tools/django/api_rest/api_rest/api1/__init__.py +0 -0
- test_holado/tools/django/api_rest/api_rest/api1/admin.py +3 -0
- test_holado/tools/django/api_rest/api_rest/api1/apps.py +6 -0
- test_holado/tools/django/api_rest/api_rest/api1/migrations/__init__.py +0 -0
- test_holado/tools/django/api_rest/api_rest/api1/models.py +3 -0
- test_holado/tools/django/api_rest/api_rest/api1/serializers.py +15 -0
- test_holado/tools/django/api_rest/api_rest/api1/tests.py +3 -0
- test_holado/tools/django/api_rest/api_rest/api1/views.py +24 -0
- test_holado/tools/django/api_rest/api_rest/asgi.py +16 -0
- test_holado/tools/django/api_rest/api_rest/settings.py +133 -0
- test_holado/tools/django/api_rest/api_rest/urls.py +32 -0
- test_holado/tools/django/api_rest/api_rest/wsgi.py +16 -0
- test_holado/tools/django/api_rest/db.sqlite3 +0 -0
- test_holado/tools/django/api_rest/manage.py +22 -0
- holado-0.2.1.dist-info/RECORD +0 -17
- {holado-0.2.1.dist-info → holado-0.2.3.dist-info}/WHEEL +0 -0
- {holado-0.2.1.dist-info → holado-0.2.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
|
|
2
|
+
#################################################
|
|
3
|
+
# HolAdo (Holistic Automation do)
|
|
4
|
+
#
|
|
5
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
6
|
+
#
|
|
7
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
8
|
+
#
|
|
9
|
+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
10
|
+
|
|
11
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
12
|
+
#################################################
|
|
13
|
+
|
|
14
|
+
from builtins import super
|
|
15
|
+
import logging
|
|
16
|
+
from holado_core.common.block.base import BaseScope
|
|
17
|
+
from holado_core.common.block.block_steps import BlockSteps
|
|
18
|
+
from holado_test.behave.behave import execute_steps
|
|
19
|
+
from holado_core.common.tools.converters.converter import Converter
|
|
20
|
+
from holado_core.common.exceptions.functional_exception import FunctionalException
|
|
21
|
+
from holado_core.common.tools.tools import Tools
|
|
22
|
+
from holado_python.standard_library.typing import Typing
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ScopeSteps(BaseScope):
|
|
28
|
+
'''
|
|
29
|
+
Scope block that should only contains steps.
|
|
30
|
+
This scope block is used when a new scope (function, for,...) is defined in a scenario.
|
|
31
|
+
|
|
32
|
+
When processing this scope, a 'context' is supposed to be passed as parameter to 'process' method
|
|
33
|
+
Warning: it remains possible to add any block, not only steps. Be carefull that added blocks are compatible with parameter 'context' passed to 'process' method.
|
|
34
|
+
'''
|
|
35
|
+
|
|
36
|
+
def __init__(self, name, ID=None):
|
|
37
|
+
super().__init__(f"steps scope {name}", ID=ID)
|
|
38
|
+
|
|
39
|
+
def add_steps(self, steps_str):
|
|
40
|
+
if Tools.do_log(logger, logging.DEBUG):
|
|
41
|
+
logger.debug(f"In scope '{self.name}', add steps:\n{steps_str}")
|
|
42
|
+
self.add_block( BlockSteps(steps_str) )
|
|
43
|
+
|
|
44
|
+
class ScopeForSteps(ScopeSteps):
|
|
45
|
+
def __init__(self, name, iter_var_name, iterable, ID=None, variable_manager=None, scope_manager=None):
|
|
46
|
+
super().__init__(name, ID=ID)
|
|
47
|
+
|
|
48
|
+
self.__iter_var_name = iter_var_name
|
|
49
|
+
self.__iterable = iterable
|
|
50
|
+
|
|
51
|
+
self.__variable_manager = variable_manager
|
|
52
|
+
self.__scope_manager = scope_manager
|
|
53
|
+
|
|
54
|
+
def process(self, *args, **kwargs):
|
|
55
|
+
"""
|
|
56
|
+
Process the scope.
|
|
57
|
+
Returns last scope step result
|
|
58
|
+
"""
|
|
59
|
+
res = None
|
|
60
|
+
if Tools.do_log(logger, logging.DEBUG):
|
|
61
|
+
logger.debug(f"Processing scope [{self.name}]: begin")
|
|
62
|
+
|
|
63
|
+
self._process_start()
|
|
64
|
+
try:
|
|
65
|
+
for index, value in enumerate(self.__iterable):
|
|
66
|
+
execute_steps(u"""
|
|
67
|
+
Given FOR_INDEX_{iter_var_name} = {index}
|
|
68
|
+
""".format(iter_var_name=self.__iter_var_name, index=index))
|
|
69
|
+
self.__variable_manager.register_variable(self.__iter_var_name, value)
|
|
70
|
+
|
|
71
|
+
if self.__scope_manager:
|
|
72
|
+
level_already_exists = self.__scope_manager.has_scope_level("steps")
|
|
73
|
+
origin_level = self.__scope_manager.scope_level("steps")
|
|
74
|
+
if level_already_exists:
|
|
75
|
+
self.__scope_manager.increase_scope_level("steps")
|
|
76
|
+
|
|
77
|
+
try:
|
|
78
|
+
self._process_blocks(*args, **kwargs)
|
|
79
|
+
finally:
|
|
80
|
+
if self.__scope_manager:
|
|
81
|
+
self.__scope_manager.reset_scope_level("steps", origin_level)
|
|
82
|
+
finally:
|
|
83
|
+
self._process_end()
|
|
84
|
+
if Tools.do_log(logger, logging.DEBUG):
|
|
85
|
+
logger.debug(f"Processing scope [{self.name}]: end")
|
|
86
|
+
|
|
87
|
+
return res
|
|
88
|
+
|
|
89
|
+
class ScopeWhileSteps(ScopeSteps):
|
|
90
|
+
def __init__(self, name, condition_expression, ID=None, expression_evaluator=None, scope_manager=None):
|
|
91
|
+
super().__init__(name, ID=ID)
|
|
92
|
+
|
|
93
|
+
self.__condition_expression = condition_expression
|
|
94
|
+
|
|
95
|
+
self.__expression_evaluator = expression_evaluator
|
|
96
|
+
self.__scope_manager = scope_manager
|
|
97
|
+
|
|
98
|
+
def process(self, *args, **kwargs):
|
|
99
|
+
"""
|
|
100
|
+
Process the scope.
|
|
101
|
+
Returns last scope step result
|
|
102
|
+
"""
|
|
103
|
+
res = None
|
|
104
|
+
if Tools.do_log(logger, logging.DEBUG):
|
|
105
|
+
logger.debug(f"Processing scope [{self.name}]: begin")
|
|
106
|
+
|
|
107
|
+
self._process_start()
|
|
108
|
+
try:
|
|
109
|
+
n = 0
|
|
110
|
+
cond = self.__expression_evaluator.evaluate_python_expression(self.__condition_expression)
|
|
111
|
+
if not (isinstance(cond, bool) or Converter.is_boolean(cond)):
|
|
112
|
+
raise FunctionalException(f"Condition expression is not a boolean: [{self.__condition_expression}] => [{cond}] (type: {Typing.get_object_class_fullname(cond)})")
|
|
113
|
+
|
|
114
|
+
while isinstance(cond, bool) and cond or Converter.is_boolean(cond) and Converter.to_boolean(cond):
|
|
115
|
+
n += 1
|
|
116
|
+
execute_steps(u"""
|
|
117
|
+
Given WHILE_ITERATION = {n}
|
|
118
|
+
""".format(n=n))
|
|
119
|
+
|
|
120
|
+
if self.__scope_manager:
|
|
121
|
+
level_already_exists = self.__scope_manager.has_scope_level("steps")
|
|
122
|
+
origin_level = self.__scope_manager.scope_level("steps")
|
|
123
|
+
if level_already_exists:
|
|
124
|
+
self.__scope_manager.increase_scope_level("steps")
|
|
125
|
+
|
|
126
|
+
try:
|
|
127
|
+
self._process_blocks(*args, **kwargs)
|
|
128
|
+
finally:
|
|
129
|
+
if self.__scope_manager:
|
|
130
|
+
self.__scope_manager.reset_scope_level("steps", origin_level)
|
|
131
|
+
|
|
132
|
+
cond = self.__expression_evaluator.evaluate_python_expression(self.__condition_expression)
|
|
133
|
+
if not (isinstance(cond, bool) or Converter.is_boolean(cond)):
|
|
134
|
+
raise FunctionalException(f"Condition expression is not a boolean: [{self.__condition_expression}] => [{cond}] (type: {Typing.get_object_class_fullname(cond)})")
|
|
135
|
+
finally:
|
|
136
|
+
self._process_end()
|
|
137
|
+
if Tools.do_log(logger, logging.DEBUG):
|
|
138
|
+
logger.debug(f"Processing scope [{self.name}]: end")
|
|
139
|
+
|
|
140
|
+
return res
|
|
141
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#################################################
|
|
2
|
+
# HolAdo (Holistic Automation do)
|
|
3
|
+
#
|
|
4
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
7
|
+
#
|
|
8
|
+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
9
|
+
#
|
|
10
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
11
|
+
#################################################
|
|
12
|
+
|
|
13
|
+
from holado_core.common.criterias.tools.criteria_context import CriteriaContext
|
|
14
|
+
from holado_core.common.criterias.tools.criteria_parameters import CriteriaParameters
|
|
15
|
+
import logging
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class AndCriteria(object):
|
|
22
|
+
""" Criteria that makes a logical or between added criterias.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self):
|
|
26
|
+
self.__criterias = []
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def criterias(self):
|
|
30
|
+
return self.__criterias
|
|
31
|
+
|
|
32
|
+
def add_criteria(self, criteria):
|
|
33
|
+
"""
|
|
34
|
+
Add a criteria in and validation.
|
|
35
|
+
@param criteria Criteria
|
|
36
|
+
"""
|
|
37
|
+
self.__criterias.append(criteria)
|
|
38
|
+
|
|
39
|
+
def validate_element(self, element, criteria_context: CriteriaContext, criteria_parameters: CriteriaParameters):
|
|
40
|
+
return super().validate_element(element, criteria_context, criteria_parameters) \
|
|
41
|
+
and self.__validate_criterias(element, criteria_context, criteria_parameters)
|
|
42
|
+
|
|
43
|
+
def __validate_criterias(self, element, criteria_context, criteria_parameters):
|
|
44
|
+
res = True
|
|
45
|
+
sub_parameters = criteria_parameters.get_next_level()
|
|
46
|
+
|
|
47
|
+
for criteria in self.criterias:
|
|
48
|
+
if not criteria.validate(element, criteria_context, sub_parameters):
|
|
49
|
+
res = False
|
|
50
|
+
break
|
|
51
|
+
|
|
52
|
+
return res
|
|
53
|
+
|
|
54
|
+
def __str__(self):
|
|
55
|
+
res_criterias = []
|
|
56
|
+
for index, criteria in self.criterias:
|
|
57
|
+
res_criterias.append(f"{index}:{{{criteria}}}")
|
|
58
|
+
return super().__str__() + "&{" + "&".join(res_criterias) + "}"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#################################################
|
|
2
|
+
# HolAdo (Holistic Automation do)
|
|
3
|
+
#
|
|
4
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
7
|
+
#
|
|
8
|
+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
9
|
+
#
|
|
10
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
11
|
+
#################################################
|
|
12
|
+
|
|
13
|
+
from holado_core.common.exceptions.technical_exception import TechnicalException
|
|
14
|
+
from holado_core.common.tools.tools import Tools
|
|
15
|
+
from holado_core.common.criterias.tools.criteria_context import CriteriaContext,\
|
|
16
|
+
ContainerCriteriaContext
|
|
17
|
+
from holado_core.common.criterias.tools.criteria_parameters import CriteriaParameters
|
|
18
|
+
from holado.holado_config import Config
|
|
19
|
+
import logging
|
|
20
|
+
import abc
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class Criteria(object):
|
|
27
|
+
""" Base class of a family used to validate elements.
|
|
28
|
+
"""
|
|
29
|
+
__metaclass__ = abc.ABCMeta
|
|
30
|
+
|
|
31
|
+
def validate(self, element, criteria_context: CriteriaContext, criteria_parameters: CriteriaParameters):
|
|
32
|
+
""" Verify if element verifies expected criteria.
|
|
33
|
+
If element is None and criteria_context is a ContainerCriteriaContext, criteria_context.container is used as element
|
|
34
|
+
@param element Element to validate
|
|
35
|
+
@param criteria_context Criteria context
|
|
36
|
+
@param criteria_parameters Criteria parameters
|
|
37
|
+
@return True if given element verifies expected criteria
|
|
38
|
+
"""
|
|
39
|
+
if element is None:
|
|
40
|
+
if isinstance(criteria_context, ContainerCriteriaContext) and criteria_context.container is not None:
|
|
41
|
+
return self.validate(criteria_context.container, criteria_context, criteria_parameters)
|
|
42
|
+
else:
|
|
43
|
+
raise TechnicalException("Find context has no container")
|
|
44
|
+
|
|
45
|
+
# Prepare analyze time spent
|
|
46
|
+
if criteria_parameters.analyze_time_spent:
|
|
47
|
+
start = Tools.timer_s()
|
|
48
|
+
|
|
49
|
+
res = self.validate_element(element, criteria_context, criteria_parameters)
|
|
50
|
+
|
|
51
|
+
# Analyze time spent
|
|
52
|
+
if criteria_parameters.analyze_time_spent:
|
|
53
|
+
duration = Tools.timer_s() - start
|
|
54
|
+
if duration > Config.threshold_warn_time_spent_s:
|
|
55
|
+
logger.warning(f"{self._get_indent_string_level(criteria_parameters)}[{self}].validate({element}) -> {res} (took {duration} s)")
|
|
56
|
+
|
|
57
|
+
return res
|
|
58
|
+
|
|
59
|
+
def validate_element(self, element, criteria_context: CriteriaContext, criteria_parameters: CriteriaParameters):
|
|
60
|
+
return True
|
|
61
|
+
|
|
62
|
+
def __str__(self):
|
|
63
|
+
return self.__class__.__name__
|
|
64
|
+
|
|
65
|
+
def reset(self):
|
|
66
|
+
""" Reset the criteria."""
|
|
67
|
+
pass
|
|
68
|
+
|
|
69
|
+
def _get_indent_string_level(self, criteria_parameters: CriteriaParameters=None, level=None):
|
|
70
|
+
if level is not None:
|
|
71
|
+
return Tools.get_indent_string(level * 4)
|
|
72
|
+
elif criteria_parameters is not None:
|
|
73
|
+
return self._get_indent_string_level(level=criteria_parameters.find_level)
|
|
74
|
+
else:
|
|
75
|
+
raise TechnicalException("level or criteria_parameters must be defined")
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#################################################
|
|
2
|
+
# HolAdo (Holistic Automation do)
|
|
3
|
+
#
|
|
4
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
7
|
+
#
|
|
8
|
+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
9
|
+
#
|
|
10
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
11
|
+
#################################################
|
|
12
|
+
|
|
13
|
+
from holado_core.common.criterias.tools.criteria_context import CriteriaContext
|
|
14
|
+
from holado_core.common.criterias.tools.criteria_parameters import CriteriaParameters
|
|
15
|
+
import logging
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class OrCriteria(object):
|
|
22
|
+
""" Criteria that makes a logical or between added criterias.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self):
|
|
26
|
+
self.__criterias = []
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def criterias(self):
|
|
30
|
+
return self.__criterias
|
|
31
|
+
|
|
32
|
+
def add_criteria(self, criteria):
|
|
33
|
+
"""
|
|
34
|
+
Add a criteria in or validation.
|
|
35
|
+
@param criteria Criteria
|
|
36
|
+
"""
|
|
37
|
+
self.__criterias.append(criteria)
|
|
38
|
+
|
|
39
|
+
def validate_element(self, element, criteria_context: CriteriaContext, criteria_parameters: CriteriaParameters):
|
|
40
|
+
return super().validate_element(element, criteria_context, criteria_parameters) \
|
|
41
|
+
and self.__validate_criterias(element, criteria_context, criteria_parameters)
|
|
42
|
+
|
|
43
|
+
def __validate_criterias(self, element, criteria_context, criteria_parameters):
|
|
44
|
+
if len(self.criterias) == 0:
|
|
45
|
+
return True
|
|
46
|
+
|
|
47
|
+
res = False
|
|
48
|
+
sub_parameters = criteria_parameters.get_next_level()
|
|
49
|
+
|
|
50
|
+
for criteria in self.criterias:
|
|
51
|
+
if criteria.validate(element, criteria_context, sub_parameters):
|
|
52
|
+
res = True
|
|
53
|
+
break
|
|
54
|
+
|
|
55
|
+
return res
|
|
56
|
+
|
|
57
|
+
def __str__(self):
|
|
58
|
+
res_criterias = []
|
|
59
|
+
for index, criteria in self.criterias:
|
|
60
|
+
res_criterias.append(f"{index}:{{{criteria}}}")
|
|
61
|
+
return super().__str__() + "&{" + "|".join(res_criterias) + "}"
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#################################################
|
|
2
|
+
# HolAdo (Holistic Automation do)
|
|
3
|
+
#
|
|
4
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of self software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
7
|
+
#
|
|
8
|
+
# The above copyright notice and self permission notice shall be included in all copies or substantial portions of the Software.
|
|
9
|
+
#
|
|
10
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
11
|
+
#################################################
|
|
12
|
+
|
|
13
|
+
from holado_core.common.finders.tools.find_context import FindContext,\
|
|
14
|
+
WithRootContainerFindContext, ContainerFindContext
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
CriteriaContext = FindContext
|
|
18
|
+
WithRootContainerCriteriaContext = WithRootContainerFindContext
|
|
19
|
+
ContainerCriteriaContext = ContainerFindContext
|
|
20
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#################################################
|
|
2
|
+
# HolAdo (Holistic Automation do)
|
|
3
|
+
#
|
|
4
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of self software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
7
|
+
#
|
|
8
|
+
# The above copyright notice and self permission notice shall be included in all copies or substantial portions of the Software.
|
|
9
|
+
#
|
|
10
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
11
|
+
#################################################
|
|
12
|
+
|
|
13
|
+
from holado_core.common.finders.tools.find_parameters import FindParameters
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
CriteriaParameters = FindParameters
|
|
17
|
+
|
|
18
|
+
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#################################################
|
|
2
|
+
# HolAdo (Holistic Automation do)
|
|
3
|
+
#
|
|
4
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of self software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
7
|
+
#
|
|
8
|
+
# The above copyright notice and self permission notice shall be included in all copies or substantial portions of the Software.
|
|
9
|
+
#
|
|
10
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
11
|
+
#################################################
|
|
12
|
+
|
|
13
|
+
import logging
|
|
14
|
+
import abc
|
|
15
|
+
from holado_core.common.exceptions.technical_exception import TechnicalException
|
|
16
|
+
from holado.common.handlers.object import DeleteableObject
|
|
17
|
+
from holado_core.common.exceptions.functional_exception import FunctionalException
|
|
18
|
+
from holado_core.common.finders.tools.find_builder import FindBuilder
|
|
19
|
+
from holado.common.handlers.enums import ObjectStates
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Driver(DeleteableObject):
|
|
26
|
+
""" Base class for drivers.
|
|
27
|
+
"""
|
|
28
|
+
__metaclass__ = abc.ABCMeta
|
|
29
|
+
|
|
30
|
+
def __init__(self, name=None):
|
|
31
|
+
super().__init__(name or "Driver")
|
|
32
|
+
|
|
33
|
+
self.__internal_driver = None
|
|
34
|
+
self.__internal_api = None
|
|
35
|
+
|
|
36
|
+
# Tools
|
|
37
|
+
self.__text_verifier = None
|
|
38
|
+
self.__find_builder = None # Builder used to create default find context and parameters
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def _has_internal_driver(self):
|
|
42
|
+
"""
|
|
43
|
+
@return If internal driver is defined
|
|
44
|
+
"""
|
|
45
|
+
return self.__internal_driver is not None
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def internal_driver(self):
|
|
49
|
+
"""
|
|
50
|
+
@return Internal driver
|
|
51
|
+
"""
|
|
52
|
+
if not self._has_internal_driver():
|
|
53
|
+
raise TechnicalException("Internal driver is not defined.")
|
|
54
|
+
return self.__internal_driver
|
|
55
|
+
|
|
56
|
+
@internal_driver.setter
|
|
57
|
+
def internal_driver(self, internal_driver):
|
|
58
|
+
self.__internal_driver = internal_driver
|
|
59
|
+
|
|
60
|
+
@property
|
|
61
|
+
def internal_api(self):
|
|
62
|
+
"""
|
|
63
|
+
@return Internal API
|
|
64
|
+
"""
|
|
65
|
+
if self.__internal_api is None:
|
|
66
|
+
raise TechnicalException("Internal API is not defined.")
|
|
67
|
+
return self.__internal_api
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def text_verifier(self):
|
|
71
|
+
"""
|
|
72
|
+
@return Text verifier to use
|
|
73
|
+
"""
|
|
74
|
+
if self.__text_verifier is None:
|
|
75
|
+
raise TechnicalException("Text verifier is not defined")
|
|
76
|
+
return self.__text_verifier
|
|
77
|
+
|
|
78
|
+
@text_verifier.setter
|
|
79
|
+
def text_verifier(self, text_verifier):
|
|
80
|
+
"""
|
|
81
|
+
@param text_verifier Text verifier to use
|
|
82
|
+
"""
|
|
83
|
+
self.__text_verifier = text_verifier
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def find_builder(self):
|
|
87
|
+
"""
|
|
88
|
+
@return Find builder (if not set a default one is instantiated)
|
|
89
|
+
"""
|
|
90
|
+
if self.__find_builder is None:
|
|
91
|
+
self.__find_builder = FindBuilder()
|
|
92
|
+
return self.__find_builder
|
|
93
|
+
|
|
94
|
+
@find_builder.setter
|
|
95
|
+
def find_builder(self, find_builder):
|
|
96
|
+
"""
|
|
97
|
+
@param find_builder Find builder to use rather than default
|
|
98
|
+
"""
|
|
99
|
+
self.__find_builder = find_builder
|
|
100
|
+
|
|
101
|
+
def initialize(self):
|
|
102
|
+
"""
|
|
103
|
+
Initialize driver
|
|
104
|
+
"""
|
|
105
|
+
self.__internal_api = self._initialize_internal_api()
|
|
106
|
+
|
|
107
|
+
def _initialize_internal_api(self):
|
|
108
|
+
"""
|
|
109
|
+
Method used internally at driver initialization, in order to instantiate the appropriate internal API type.
|
|
110
|
+
@return a new internal API instance
|
|
111
|
+
"""
|
|
112
|
+
raise NotImplementedError
|
|
113
|
+
|
|
114
|
+
def is_open(self):
|
|
115
|
+
"""
|
|
116
|
+
@return True if driver is open
|
|
117
|
+
"""
|
|
118
|
+
return self._has_internal_driver()
|
|
119
|
+
|
|
120
|
+
def _verify_is_open(self):
|
|
121
|
+
if not self.is_open():
|
|
122
|
+
raise FunctionalException("Driver is not opened")
|
|
123
|
+
|
|
124
|
+
def open(self):
|
|
125
|
+
"""
|
|
126
|
+
Open driver
|
|
127
|
+
"""
|
|
128
|
+
self.object_state = ObjectStates.Opening
|
|
129
|
+
self._close_driver()
|
|
130
|
+
self.object_state = ObjectStates.Open
|
|
131
|
+
|
|
132
|
+
def _open_driver(self):
|
|
133
|
+
"""
|
|
134
|
+
Implement open process
|
|
135
|
+
"""
|
|
136
|
+
raise NotImplementedError
|
|
137
|
+
|
|
138
|
+
def close(self):
|
|
139
|
+
"""
|
|
140
|
+
Close driver
|
|
141
|
+
"""
|
|
142
|
+
self.object_state = ObjectStates.Closing
|
|
143
|
+
self._close_driver()
|
|
144
|
+
self.object_state = ObjectStates.Closed
|
|
145
|
+
|
|
146
|
+
def _close_driver(self):
|
|
147
|
+
"""
|
|
148
|
+
Implement close process
|
|
149
|
+
"""
|
|
150
|
+
raise NotImplementedError
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#################################################
|
|
2
|
+
# HolAdo (Holistic Automation do)
|
|
3
|
+
#
|
|
4
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
5
|
+
#
|
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of self software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
7
|
+
#
|
|
8
|
+
# The above copyright notice and self permission notice shall be included in all copies or substantial portions of the Software.
|
|
9
|
+
#
|
|
10
|
+
# The Software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the Software.
|
|
11
|
+
#################################################
|
|
12
|
+
|
|
13
|
+
import logging
|
|
14
|
+
import abc
|
|
15
|
+
from holado_core.common.drivers.driver import Driver
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ElementDriver(Driver):
|
|
22
|
+
""" Base class for element drivers.
|
|
23
|
+
"""
|
|
24
|
+
__metaclass__ = abc.ABCMeta
|
|
25
|
+
|
|
26
|
+
def __init__(self, name=None):
|
|
27
|
+
super().__init__(name or "ElementDriver")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|