holado 0.13.22__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.
- holado/__init__.py +358 -0
- holado/common/__init__.py +25 -0
- holado/common/context/__init__.py +25 -0
- holado/common/context/context.py +248 -0
- holado/common/context/service_manager.py +262 -0
- holado/common/context/session_context.py +516 -0
- holado/common/handlers/__init__.py +19 -0
- holado/common/handlers/enums.py +41 -0
- holado/common/handlers/object.py +175 -0
- holado/common/handlers/undefined.py +55 -0
- holado/common/tools/__init__.py +19 -0
- holado/common/tools/gc_manager.py +155 -0
- holado/holado_config.py +45 -0
- holado-0.13.22.dist-info/METADATA +194 -0
- holado-0.13.22.dist-info/RECORD +698 -0
- holado-0.13.22.dist-info/WHEEL +4 -0
- holado-0.13.22.dist-info/licenses/LICENSE +21 -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 +356 -0
- holado_ais/ais/ais_payload.py +35 -0
- holado_ais/ais/enums.py +37 -0
- holado_ais/ais/patch_pyais.py +1174 -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 +237 -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 +132 -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 +68 -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 +702 -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 +263 -0
- holado_core/common/resource/resource_manager.py +126 -0
- holado_core/common/resource/table_data_manager.py +110 -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 +233 -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 +365 -0
- holado_core/common/tables/table_row.py +169 -0
- holado_core/common/tables/table_with_header.py +242 -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 +118 -0
- holado_core/common/tools/path_manager.py +238 -0
- holado_core/common/tools/string_tools.py +144 -0
- holado_core/common/tools/tools.py +197 -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 +137 -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 +560 -0
- holado_core/tools/__init__.py +0 -0
- holado_core/tools/abstracts/__init__.py +0 -0
- holado_core/tools/abstracts/blocking_command_service.py +64 -0
- holado_core/tools/abstracts/service.py +48 -0
- holado_crypto/__init__.py +31 -0
- holado_crypto/crypto/crypto.py +108 -0
- holado_crypto/crypto/key.py +92 -0
- holado_crypto/crypto/tcpbin.py +105 -0
- holado_crypto/crypto/transport/__init__.py +0 -0
- holado_crypto/crypto/transport/crc.py +40 -0
- holado_crypto/tests/behave/steps/__init__.py +18 -0
- holado_crypto/tests/behave/steps/crypto_steps.py +112 -0
- holado_crypto/tests/behave/steps/key_steps.py +82 -0
- holado_crypto/tests/behave/steps/tcpbin_steps.py +79 -0
- holado_data/__init__.py +31 -0
- holado_data/data/generator/base.py +93 -0
- holado_data/data/generator/generator_manager.py +27 -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 +59 -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_audit.py +94 -0
- holado_db/tools/db/clients/base/db_client.py +344 -0
- holado_db/tools/db/clients/postgresql/postgresql_audit.py +75 -0
- holado_db/tools/db/clients/postgresql/postgresql_client.py +84 -0
- holado_db/tools/db/clients/sqlite/sqlite_audit.py +70 -0
- holado_db/tools/db/clients/sqlite/sqlite_client.py +60 -0
- holado_db/tools/db/db_manager.py +109 -0
- holado_db/tools/db/query/base/query_builder.py +138 -0
- holado_db/tools/db/query/pypika/pypika_query_builder.py +244 -0
- holado_db/tools/db/query/query_manager.py +77 -0
- holado_django/__init__.py +31 -0
- holado_django/server/HOWTO.txt +27 -0
- holado_django/server/django_projects/rest_api/db.sqlite3 +0 -0
- holado_django/server/django_projects/rest_api/manage.py +22 -0
- holado_django/server/django_projects/rest_api/rest_api/__init__.py +0 -0
- holado_django/server/django_projects/rest_api/rest_api/application/__init__.py +0 -0
- holado_django/server/django_projects/rest_api/rest_api/application/admin.py +3 -0
- holado_django/server/django_projects/rest_api/rest_api/application/apps.py +9 -0
- holado_django/server/django_projects/rest_api/rest_api/application/migrations/__init__.py +0 -0
- holado_django/server/django_projects/rest_api/rest_api/application/models.py +3 -0
- holado_django/server/django_projects/rest_api/rest_api/application/tests.py +3 -0
- holado_django/server/django_projects/rest_api/rest_api/application/views.py +6 -0
- holado_django/server/django_projects/rest_api/rest_api/asgi.py +16 -0
- holado_django/server/django_projects/rest_api/rest_api/settings.py +130 -0
- holado_django/server/django_projects/rest_api/rest_api/urls.py +35 -0
- holado_django/server/django_projects/rest_api/rest_api/wsgi.py +16 -0
- holado_django/server/django_server.py +110 -0
- holado_django/server/grpc_django_server.py +57 -0
- holado_django/server/patch_djangogrpcframework.py +46 -0
- holado_django/tests/behave/steps/__init__.py +16 -0
- holado_django/tests/behave/steps/django_server_steps.py +83 -0
- holado_docker/__init__.py +25 -0
- holado_docker/sdk/docker/container_logs.py +447 -0
- holado_docker/sdk/docker/docker_client.py +537 -0
- holado_docker/sdk/docker/docker_service.py +71 -0
- holado_docker/tests/behave/steps/__init__.py +16 -0
- holado_docker/tests/behave/steps/sdk/docker/container_logs_steps.py +47 -0
- holado_examples/projects/server_rest/server_rest_example/initialize_holado.py +72 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/db.sqlite3 +0 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/manage.py +22 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/__init__.py +0 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/__init__.py +0 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/admin.py +3 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/apps.py +7 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/migrations/__init__.py +0 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/models.py +3 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/serializers.py +15 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/tests.py +3 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/application/views.py +24 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/asgi.py +16 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/settings.py +130 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/urls.py +31 -0
- holado_examples/projects/server_rest/server_rest_example/rest_api/rest_api/wsgi.py +16 -0
- holado_examples/projects/server_rest/server_rest_example/rest_server.py +37 -0
- holado_examples/scripts/script_custom_initialization.py +16 -0
- holado_examples/scripts/script_minimal_initialization.py +23 -0
- holado_examples/tests/behave/testing_solution/__main__.py +13 -0
- holado_examples/tests/behave/testing_solution/behave_environment.py +35 -0
- holado_examples/tests/behave/testing_solution/environment.py +36 -0
- holado_examples/tests/behave/testing_solution/features/Configuration/Actions/configure_system.feature +10 -0
- holado_examples/tests/behave/testing_solution/features/NonReg/example.feature +26 -0
- holado_examples/tests/behave/testing_solution/initialize_holado.py +62 -0
- holado_examples/tests/behave/testing_solution/logging.conf +102 -0
- holado_examples/tests/behave/testing_solution/requirements.txt +5 -0
- holado_examples/tests/behave/testing_solution/run_test.sh +7 -0
- holado_examples/tests/behave/testing_solution/run_test_nonreg.sh +6 -0
- holado_examples/tests/behave/testing_solution/src/common/tools/path_manager.py +40 -0
- holado_examples/tests/behave/testing_solution/src/config/config_manager.py +30 -0
- holado_examples/tests/behave/testing_solution/src/context/session_context.py +45 -0
- holado_examples/tests/behave/testing_solution/steps/config_steps.py +21 -0
- holado_examples/tests/behave/testing_solution/steps/public_steps.py +10 -0
- holado_grpc/TODO +8 -0
- holado_grpc/__init__.py +40 -0
- holado_grpc/api/rpc/TODO.txt +4 -0
- holado_grpc/api/rpc/grpc_client.py +210 -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 +44 -0
- holado_helper/docker/run_holado_test_nonreg_in_docker.sh +120 -0
- holado_helper/docker/run_terminal_in_docker.sh +101 -0
- holado_helper/holado_module_template/__init__.py +38 -0
- holado_helper/holado_module_template/tests/behave/steps/__init__.py +16 -0
- holado_helper/holado_module_template/tests/behave/steps/private/__init__.py +16 -0
- holado_helper/initialize_holado.py +72 -0
- holado_helper/script/action.py +130 -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 +95 -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/filesystem/json_file.py +94 -0
- holado_json/filesystem/stream_json_file.py +117 -0
- holado_json/ipc/json.py +146 -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 +131 -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 +73 -0
- holado_keycloak/tools/keycloak/__init__.py +0 -0
- holado_keycloak/tools/keycloak/keycloak_client.py +90 -0
- holado_logging/__init__.py +38 -0
- holado_logging/common/logging/holado_logger.py +71 -0
- holado_logging/common/logging/log_config.py +163 -0
- holado_logging/common/logging/log_manager.py +335 -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 +137 -0
- holado_multitask/multiprocessing/process.py +213 -0
- holado_multitask/multiprocessing/processesmanager.py +137 -0
- holado_multitask/multitasking/multitask_manager.py +464 -0
- holado_multitask/multithreading/__init__.py +0 -0
- holado_multitask/multithreading/context/thread_context.py +86 -0
- holado_multitask/multithreading/functionthreaded.py +129 -0
- holado_multitask/multithreading/loopfunctionthreaded.py +45 -0
- holado_multitask/multithreading/loopthread.py +110 -0
- holado_multitask/multithreading/periodicfunctionthreaded.py +135 -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 +203 -0
- holado_multitask/multithreading/threadsmanager.py +167 -0
- holado_multitask/multithreading/timer.py +51 -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 +968 -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 +36 -0
- holado_python/common/enums.py +34 -0
- holado_python/common/iterables.py +38 -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 +341 -0
- holado_python/standard_library/csv.py +207 -0
- holado_python/standard_library/hashlib.py +110 -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 +219 -0
- holado_python/standard_library/socket/echo_server.py +29 -0
- holado_python/standard_library/socket/message_socket.py +152 -0
- holado_python/standard_library/socket/non_blocking_socket.py +172 -0
- holado_python/standard_library/socket/socket.py +411 -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 +131 -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 +384 -0
- holado_python/tests/behave/steps/standard_library/ssl_steps.py +71 -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 +565 -0
- holado_rabbitmq/tests/behave/steps/tools/rabbitmq_server_steps.py +64 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_blocking_client.py +333 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_client.py +678 -0
- holado_rabbitmq/tools/rabbitmq/rabbitmq_manager.py +146 -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 +36 -0
- holado_report/campaign/campaign_manager.py +348 -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_report_builder.py +172 -0
- holado_report/report/builders/execution_historic_report_builder.py +132 -0
- holado_report/report/builders/failure_report_builder.py +150 -0
- holado_report/report/builders/report_builder.py +64 -0
- holado_report/report/builders/short_scenario_report_builder.py +94 -0
- holado_report/report/builders/summary_by_category_report_builder.py +103 -0
- holado_report/report/builders/summary_report_builder.py +110 -0
- holado_report/report/builders/summary_scenario_by_category_report_builder.py +109 -0
- holado_report/report/builders/summary_scenario_report_builder.py +81 -0
- holado_report/report/execution_historic.py +144 -0
- holado_report/report/report_manager.py +424 -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 +32 -0
- holado_rest/api/rest/TODO.txt +2 -0
- holado_rest/api/rest/rest_client.py +200 -0
- holado_rest/api/rest/rest_manager.py +72 -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 +181 -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 +75 -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 +54 -0
- holado_scripting/common/tools/dynamic_text_manager.py +73 -0
- holado_scripting/common/tools/evaluate_parameters.py +228 -0
- holado_scripting/common/tools/expression_evaluator.py +389 -0
- holado_scripting/common/tools/variable_manager.py +354 -0
- holado_scripting/tests/behave/steps/__init__.py +22 -0
- holado_scripting/tests/behave/steps/common/tools/variable_convert_steps.py +159 -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_apply_function.py +60 -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/functions/function_to_string.py +50 -0
- holado_scripting/text/interpreter/text_interpreter.py +219 -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 +33 -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 +247 -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 +150 -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 +231 -0
- holado_system/tests/behave/steps/system/system_steps.py +84 -0
- holado_test/__init__.py +30 -0
- holado_test/behave/__init__.py +0 -0
- holado_test/behave/behave.py +400 -0
- holado_test/behave/behave_environment.py +169 -0
- holado_test/behave/behave_function.py +33 -0
- holado_test/behave/behave_manager.py +558 -0
- holado_test/behave/independant_runner.py +66 -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 +81 -0
- holado_test/common/context/scenario_context.py +169 -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 +547 -0
- holado_test/scenario/tester_tools.py +57 -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 +100 -0
- holado_test/tests/behave/steps/scenario/tester_steps.py +65 -0
- holado_test/tools/test_server/client/rest/test_server_client.py +150 -0
- holado_test/tools/test_server/server/Dockerfile +60 -0
- holado_test/tools/test_server/server/core/server_context.py +42 -0
- holado_test/tools/test_server/server/core/server_manager.py +41 -0
- holado_test/tools/test_server/server/requirements.txt +2 -0
- holado_test/tools/test_server/server/rest/README +2 -0
- holado_test/tools/test_server/server/rest/api/__init__.py +24 -0
- holado_test/tools/test_server/server/rest/api/campaign/__init__.py +32 -0
- holado_test/tools/test_server/server/rest/api/campaign/scenario.py +40 -0
- holado_test/tools/test_server/server/rest/initialize_holado.py +72 -0
- holado_test/tools/test_server/server/rest/logging.conf +51 -0
- holado_test/tools/test_server/server/rest/openapi.yaml +57 -0
- holado_test/tools/test_server/server/rest/run.py +41 -0
- holado_test/tools/test_server/server/run.sh +6 -0
- holado_test/tools/test_server/server/run_test_server_in_docker.sh +104 -0
- holado_tools/__init__.py +38 -0
- holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.py +36 -0
- holado_tools/scripts/execute_persisted_post_processes/execute_persisted_post_processes.sh +6 -0
- holado_tools/scripts/execute_persisted_post_processes/initialize_holado.py +62 -0
- holado_tools/tests/behave/steps/__init__.py +16 -0
- holado_tools/tests/behave/steps/tools/host_controller/client_steps.py +97 -0
- holado_tools/tools/host_controller/client/rest/host_controller_client.py +275 -0
- holado_tools/tools/host_controller/server/Dockerfile +60 -0
- holado_tools/tools/host_controller/server/requirements.txt +2 -0
- holado_tools/tools/host_controller/server/rest/README +2 -0
- holado_tools/tools/host_controller/server/rest/api/__init__.py +24 -0
- holado_tools/tools/host_controller/server/rest/api/config.py +88 -0
- holado_tools/tools/host_controller/server/rest/api/docker/__init__.py +66 -0
- holado_tools/tools/host_controller/server/rest/api/docker/container.py +144 -0
- holado_tools/tools/host_controller/server/rest/api/docker/logs.py +66 -0
- holado_tools/tools/host_controller/server/rest/api/os.py +58 -0
- holado_tools/tools/host_controller/server/rest/initialize_holado.py +72 -0
- holado_tools/tools/host_controller/server/rest/openapi.yaml +561 -0
- holado_tools/tools/host_controller/server/rest/run.py +31 -0
- holado_tools/tools/host_controller/server/run_host_controller_in_docker.sh +107 -0
- holado_tools/tools/host_viewer/client/rest/host_viewer_client.py +190 -0
- holado_tools/tools/host_viewer/server/Dockerfile +60 -0
- holado_tools/tools/host_viewer/server/requirements.txt +2 -0
- holado_tools/tools/host_viewer/server/rest/README +2 -0
- holado_tools/tools/host_viewer/server/rest/api/__init__.py +24 -0
- holado_tools/tools/host_viewer/server/rest/api/docker/__init__.py +65 -0
- holado_tools/tools/host_viewer/server/rest/api/docker/container.py +87 -0
- holado_tools/tools/host_viewer/server/rest/api/os.py +58 -0
- holado_tools/tools/host_viewer/server/rest/initialize_holado.py +72 -0
- holado_tools/tools/host_viewer/server/rest/openapi.yaml +301 -0
- holado_tools/tools/host_viewer/server/rest/run.py +31 -0
- holado_tools/tools/host_viewer/server/run_host_viewer_in_docker.sh +107 -0
- holado_value/__init__.py +24 -0
- holado_value/common/tables/comparators/table_2_value_table_cell_comparator.py +196 -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 +267 -0
- holado_value/common/tables/value_table.py +29 -0
- holado_value/common/tables/value_table_cell.py +76 -0
- holado_value/common/tables/value_table_manager.py +48 -0
- holado_value/common/tables/value_table_row.py +43 -0
- holado_value/common/tables/value_table_with_header.py +28 -0
- holado_value/common/tools/unique_value_manager.py +109 -0
- holado_value/common/tools/value.py +191 -0
- holado_value/common/tools/value_types.py +41 -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_xml/__init__.py +38 -0
- holado_xml/tests/behave/steps/__init__.py +16 -0
- holado_xml/tests/behave/steps/private/__init__.py +16 -0
- holado_xml/xml/stream_xml_file.py +181 -0
- holado_xml/xml/xml_file.py +97 -0
- holado_xml/xml/xml_manager.py +35 -0
- holado_yaml/__init__.py +31 -0
- holado_yaml/tests/behave/steps/__init__.py +16 -0
- holado_yaml/tests/behave/steps/yaml_steps.py +161 -0
- holado_yaml/yaml/enums.py +28 -0
- holado_yaml/yaml/pyyaml/pyyaml_client.py +72 -0
- holado_yaml/yaml/ruamel/ruamel_yaml_client.py +80 -0
- holado_yaml/yaml/yaml_client.py +203 -0
- holado_yaml/yaml/yaml_manager.py +94 -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 +60 -0
- test_holado/features/Configuration/Actions/execute_persisted_post_processes.feature +13 -0
- test_holado/features/NonReg/api/REST.feature +26 -0
- test_holado/features/NonReg/api/gRPC.feature +116 -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 +245 -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_ais/ais_message-nmea_raw_to_dict.feature +93 -0
- test_holado/features/NonReg/holado_ais/message_types/type-10.feature +38 -0
- test_holado/features/NonReg/holado_ais/message_types/type-12.feature +37 -0
- test_holado/features/NonReg/holado_ais/message_types/type-14.feature +36 -0
- test_holado/features/NonReg/holado_ais/message_types/type-15.feature +36 -0
- test_holado/features/NonReg/holado_ais/message_types/type-16.feature +38 -0
- test_holado/features/NonReg/holado_ais/message_types/type-17.feature +46 -0
- test_holado/features/NonReg/holado_ais/message_types/type-18.feature +37 -0
- test_holado/features/NonReg/holado_ais/message_types/type-19.feature +38 -0
- test_holado/features/NonReg/holado_ais/message_types/type-1_2_3.feature +42 -0
- test_holado/features/NonReg/holado_ais/message_types/type-20.feature +38 -0
- test_holado/features/NonReg/holado_ais/message_types/type-21.feature +37 -0
- test_holado/features/NonReg/holado_ais/message_types/type-22.feature +84 -0
- test_holado/features/NonReg/holado_ais/message_types/type-23.feature +49 -0
- test_holado/features/NonReg/holado_ais/message_types/type-24.feature +72 -0
- test_holado/features/NonReg/holado_ais/message_types/type-25.feature +143 -0
- test_holado/features/NonReg/holado_ais/message_types/type-26.feature +144 -0
- test_holado/features/NonReg/holado_ais/message_types/type-27.feature +36 -0
- test_holado/features/NonReg/holado_ais/message_types/type-4_11.feature +39 -0
- test_holado/features/NonReg/holado_ais/message_types/type-5.feature +33 -0
- test_holado/features/NonReg/holado_ais/message_types/type-6.feature +37 -0
- test_holado/features/NonReg/holado_ais/message_types/type-7_13.feature +43 -0
- test_holado/features/NonReg/holado_ais/message_types/type-8.feature +37 -0
- test_holado/features/NonReg/holado_ais/message_types/type-9.feature +37 -0
- test_holado/features/NonReg/holado_binary/bit_series.error.feature +33 -0
- test_holado/features/NonReg/holado_binary/bit_series.feature +144 -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/local_echo_server/socket_reset.feature +191 -0
- test_holado/features/NonReg/holado_python/standard_library/socket/local_echo_server/socket_with_tls_and_verify.feature +279 -0
- test_holado/features/NonReg/holado_python/standard_library/socket/local_echo_server/socket_with_tls_without_verify.feature +299 -0
- test_holado/features/NonReg/holado_python/standard_library/socket/local_echo_server/socket_without_tls.feature +163 -0
- test_holado/features/NonReg/holado_python/standard_library/socket/tcpbin.com/socket_with_mtls.feature +214 -0
- test_holado/features/NonReg/holado_python/standard_library/socket/tcpbin.com/socket_with_tls.feature +184 -0
- test_holado/features/NonReg/holado_python/standard_library/socket/tcpbin.com/socket_without_tls.feature +169 -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 +514 -0
- test_holado/features/NonReg/ipc/json.feature +20 -0
- test_holado/features/NonReg/scenario/scenario.feature +183 -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/Test/test_host_controller.feature +13 -0
- test_holado/features/Test/test_parameter.feature +15 -0
- test_holado/features/__init__.py +0 -0
- test_holado/initialize_holado.py +62 -0
- test_holado/logging.conf +53 -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/connexion/api_rest/openapi.yaml +16 -0
- test_holado/tools/connexion/api_rest/run.py +19 -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 +29 -0
- test_holado/tools/django/api_grpc/manual_test_commands.txt +25 -0
- test_holado/tools/django/api_grpc/patch_djangogrpcframework.py +42 -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
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 by Eric Klumpp
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
holado_ais/__init__.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
#################################################
|
|
4
|
+
# HolAdo (Holistic Automation do)
|
|
5
|
+
#
|
|
6
|
+
# (C) Copyright 2021-2025 by Eric Klumpp
|
|
7
|
+
#
|
|
8
|
+
# 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:
|
|
9
|
+
#
|
|
10
|
+
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
11
|
+
|
|
12
|
+
# 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.
|
|
13
|
+
#################################################
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def dependencies():
|
|
17
|
+
return None
|
|
18
|
+
|
|
19
|
+
def register():
|
|
20
|
+
from holado.common.context.session_context import SessionContext
|
|
21
|
+
|
|
22
|
+
from holado_ais.ais.ais_messages import AISMessages
|
|
23
|
+
if AISMessages.is_available():
|
|
24
|
+
SessionContext.instance().services.register_service_type("ais_messages", AISMessages)
|
|
25
|
+
|
|
26
|
+
from holado_ais.ais.ais_manager import AISManager
|
|
27
|
+
SessionContext.instance().services.register_service_type("ais_manager", AISManager,
|
|
28
|
+
lambda m: m.initialize(SessionContext.instance().resource_manager) )
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
Digit,Allocated to
|
|
2
|
+
201,Albania (Republic of)
|
|
3
|
+
202,Andorra (Principality of)
|
|
4
|
+
203,Austria
|
|
5
|
+
204,Portugal - Azores
|
|
6
|
+
205,Belgium
|
|
7
|
+
206,Belarus (Republic of)
|
|
8
|
+
207,Bulgaria (Republic of)
|
|
9
|
+
208,Vatican City State
|
|
10
|
+
209,Cyprus (Republic of)
|
|
11
|
+
210,Cyprus (Republic of)
|
|
12
|
+
211,Germany (Federal Republic of)
|
|
13
|
+
212,Cyprus (Republic of)
|
|
14
|
+
213,Georgia
|
|
15
|
+
214,Moldova (Republic of)
|
|
16
|
+
215,Malta
|
|
17
|
+
216,Armenia (Republic of)
|
|
18
|
+
218,Germany (Federal Republic of)
|
|
19
|
+
219,Denmark
|
|
20
|
+
220,Denmark
|
|
21
|
+
224,Spain
|
|
22
|
+
225,Spain
|
|
23
|
+
226,France
|
|
24
|
+
227,France
|
|
25
|
+
228,France
|
|
26
|
+
229,Malta
|
|
27
|
+
230,Finland
|
|
28
|
+
231,Denmark - Faroe Islands
|
|
29
|
+
232,United Kingdom of Great Britain and Northern Ireland
|
|
30
|
+
233,United Kingdom of Great Britain and Northern Ireland
|
|
31
|
+
234,United Kingdom of Great Britain and Northern Ireland
|
|
32
|
+
235,United Kingdom of Great Britain and Northern Ireland
|
|
33
|
+
236,United Kingdom of Great Britain and Northern Ireland - Gibraltar
|
|
34
|
+
237,Greece
|
|
35
|
+
238,Croatia (Republic of)
|
|
36
|
+
239,Greece
|
|
37
|
+
240,Greece
|
|
38
|
+
241,Greece
|
|
39
|
+
242,Morocco (Kingdom of)
|
|
40
|
+
243,Hungary
|
|
41
|
+
244,Netherlands (Kingdom of the)
|
|
42
|
+
245,Netherlands (Kingdom of the)
|
|
43
|
+
246,Netherlands (Kingdom of the)
|
|
44
|
+
247,Italy
|
|
45
|
+
248,Malta
|
|
46
|
+
249,Malta
|
|
47
|
+
250,Ireland
|
|
48
|
+
251,Iceland
|
|
49
|
+
252,Liechtenstein (Principality of)
|
|
50
|
+
253,Luxembourg
|
|
51
|
+
254,Monaco (Principality of)
|
|
52
|
+
255,Portugal - Madeira
|
|
53
|
+
256,Malta
|
|
54
|
+
257,Norway
|
|
55
|
+
258,Norway
|
|
56
|
+
259,Norway
|
|
57
|
+
261,Poland (Republic of)
|
|
58
|
+
262,Montenegro
|
|
59
|
+
263,Portugal
|
|
60
|
+
264,Romania
|
|
61
|
+
265,Sweden
|
|
62
|
+
266,Sweden
|
|
63
|
+
267,Slovak Republic
|
|
64
|
+
268,San Marino (Republic of)
|
|
65
|
+
269,Switzerland (Confederation of)
|
|
66
|
+
270,Czech Republic
|
|
67
|
+
271,Republic of Türkiye
|
|
68
|
+
272,Ukraine
|
|
69
|
+
273,Russian Federation
|
|
70
|
+
274,North Macedonia (Republic of)
|
|
71
|
+
275,Latvia (Republic of)
|
|
72
|
+
276,Estonia (Republic of)
|
|
73
|
+
277,Lithuania (Republic of)
|
|
74
|
+
278,Slovenia (Republic of)
|
|
75
|
+
279,Serbia (Republic of)
|
|
76
|
+
301,United Kingdom of Great Britain and Northern Ireland - Anguilla
|
|
77
|
+
303,United States of America - Alaska (State of)
|
|
78
|
+
304,Antigua and Barbuda
|
|
79
|
+
305,Antigua and Barbuda
|
|
80
|
+
306,"Netherlands (Kingdom of the) - Bonaire, Sint Eustatius and Saba"
|
|
81
|
+
306,Netherlands (Kingdom of the) - Curaçao
|
|
82
|
+
306,Netherlands (Kingdom of the) - Sint Maarten (Dutch part)
|
|
83
|
+
307,Netherlands (Kingdom of the) - Aruba
|
|
84
|
+
308,Bahamas (Commonwealth of the)
|
|
85
|
+
309,Bahamas (Commonwealth of the)
|
|
86
|
+
310,United Kingdom of Great Britain and Northern Ireland - Bermuda
|
|
87
|
+
311,Bahamas (Commonwealth of the)
|
|
88
|
+
312,Belize
|
|
89
|
+
314,Barbados
|
|
90
|
+
316,Canada
|
|
91
|
+
319,United Kingdom of Great Britain and Northern Ireland - Cayman Islands
|
|
92
|
+
321,Costa Rica
|
|
93
|
+
323,Cuba
|
|
94
|
+
325,Dominica (Commonwealth of)
|
|
95
|
+
327,Dominican Republic
|
|
96
|
+
329,France - Guadeloupe (French Department of)
|
|
97
|
+
330,Grenada
|
|
98
|
+
331,Denmark - Greenland
|
|
99
|
+
332,Guatemala (Republic of)
|
|
100
|
+
334,Honduras (Republic of)
|
|
101
|
+
336,Haiti (Republic of)
|
|
102
|
+
338,United States of America
|
|
103
|
+
339,Jamaica
|
|
104
|
+
341,Saint Kitts and Nevis (Federation of)
|
|
105
|
+
343,Saint Lucia
|
|
106
|
+
345,Mexico
|
|
107
|
+
347,France - Martinique (French Department of)
|
|
108
|
+
348,United Kingdom of Great Britain and Northern Ireland - Montserrat
|
|
109
|
+
350,Nicaragua
|
|
110
|
+
351,Panama (Republic of)
|
|
111
|
+
352,Panama (Republic of)
|
|
112
|
+
353,Panama (Republic of)
|
|
113
|
+
354,Panama (Republic of)
|
|
114
|
+
355,Panama (Republic of)
|
|
115
|
+
356,Panama (Republic of)
|
|
116
|
+
357,Panama (Republic of)
|
|
117
|
+
358,United States of America - Puerto Rico
|
|
118
|
+
359,El Salvador (Republic of)
|
|
119
|
+
361,France - Saint Pierre and Miquelon (Territorial Collectivity of)
|
|
120
|
+
362,Trinidad and Tobago
|
|
121
|
+
364,United Kingdom of Great Britain and Northern Ireland - Turks and Caicos Islands
|
|
122
|
+
366,United States of America
|
|
123
|
+
367,United States of America
|
|
124
|
+
368,United States of America
|
|
125
|
+
369,United States of America
|
|
126
|
+
370,Panama (Republic of)
|
|
127
|
+
371,Panama (Republic of)
|
|
128
|
+
372,Panama (Republic of)
|
|
129
|
+
373,Panama (Republic of)
|
|
130
|
+
374,Panama (Republic of)
|
|
131
|
+
375,Saint Vincent and the Grenadines
|
|
132
|
+
376,Saint Vincent and the Grenadines
|
|
133
|
+
377,Saint Vincent and the Grenadines
|
|
134
|
+
378,United Kingdom of Great Britain and Northern Ireland - British Virgin Islands
|
|
135
|
+
379,United States of America - United States Virgin Islands
|
|
136
|
+
401,Afghanistan
|
|
137
|
+
403,Saudi Arabia (Kingdom of)
|
|
138
|
+
405,Bangladesh (People's Republic of)
|
|
139
|
+
408,Bahrain (Kingdom of)
|
|
140
|
+
410,Bhutan (Kingdom of)
|
|
141
|
+
412,China (People's Republic of)
|
|
142
|
+
413,China (People's Republic of)
|
|
143
|
+
414,China (People's Republic of)
|
|
144
|
+
416,China (People's Republic of) - Taiwan (Province of China)
|
|
145
|
+
417,Sri Lanka (Democratic Socialist Republic of)
|
|
146
|
+
419,India (Republic of)
|
|
147
|
+
422,Iran (Islamic Republic of)
|
|
148
|
+
423,Azerbaijan (Republic of)
|
|
149
|
+
425,Iraq (Republic of)
|
|
150
|
+
428,Israel (State of)
|
|
151
|
+
431,Japan
|
|
152
|
+
432,Japan
|
|
153
|
+
434,Turkmenistan
|
|
154
|
+
436,Kazakhstan (Republic of)
|
|
155
|
+
437,Uzbekistan (Republic of)
|
|
156
|
+
438,Jordan (Hashemite Kingdom of)
|
|
157
|
+
440,Korea (Republic of)
|
|
158
|
+
441,Korea (Republic of)
|
|
159
|
+
443,"State of Palestine (In accordance with Resolution 99 Rev. Dubai, 2018)"
|
|
160
|
+
445,Democratic People's Republic of Korea
|
|
161
|
+
447,Kuwait (State of)
|
|
162
|
+
450,Lebanon
|
|
163
|
+
451,Kyrgyz Republic
|
|
164
|
+
453,China (People's Republic of) - Macao (Special Administrative Region of China)
|
|
165
|
+
455,Maldives (Republic of)
|
|
166
|
+
457,Mongolia
|
|
167
|
+
459,Nepal (Federal Democratic Republic of)
|
|
168
|
+
461,Oman (Sultanate of)
|
|
169
|
+
463,Pakistan (Islamic Republic of)
|
|
170
|
+
466,Qatar (State of)
|
|
171
|
+
468,Syrian Arab Republic
|
|
172
|
+
470,United Arab Emirates
|
|
173
|
+
471,United Arab Emirates
|
|
174
|
+
472,Tajikistan (Republic of)
|
|
175
|
+
473,Yemen (Republic of)
|
|
176
|
+
475,Yemen (Republic of)
|
|
177
|
+
477,China (People's Republic of) - Hong Kong (Special Administrative Region of China)
|
|
178
|
+
478,Bosnia and Herzegovina
|
|
179
|
+
501,France - Adelie Land
|
|
180
|
+
503,Australia
|
|
181
|
+
506,Myanmar (Union of)
|
|
182
|
+
508,Brunei Darussalam
|
|
183
|
+
510,Micronesia (Federated States of)
|
|
184
|
+
511,Palau (Republic of)
|
|
185
|
+
512,New Zealand
|
|
186
|
+
514,Cambodia (Kingdom of)
|
|
187
|
+
515,Cambodia (Kingdom of)
|
|
188
|
+
516,Australia - Christmas Island (Indian Ocean)
|
|
189
|
+
518,New Zealand - Cook Islands
|
|
190
|
+
520,Fiji (Republic of)
|
|
191
|
+
523,Australia - Cocos (Keeling) Islands
|
|
192
|
+
525,Indonesia (Republic of)
|
|
193
|
+
529,Kiribati (Republic of)
|
|
194
|
+
531,Lao People's Democratic Republic
|
|
195
|
+
533,Malaysia
|
|
196
|
+
536,United States of America - Northern Mariana Islands (Commonwealth of the)
|
|
197
|
+
538,Marshall Islands (Republic of the)
|
|
198
|
+
540,France - New Caledonia
|
|
199
|
+
542,New Zealand - Niue
|
|
200
|
+
544,Nauru (Republic of)
|
|
201
|
+
546,France - French Polynesia
|
|
202
|
+
548,Philippines (Republic of the)
|
|
203
|
+
550,Timor-Leste (Democratic Republic of)
|
|
204
|
+
553,Papua New Guinea
|
|
205
|
+
555,United Kingdom of Great Britain and Northern Ireland - Pitcairn Island
|
|
206
|
+
557,Solomon Islands
|
|
207
|
+
559,United States of America - American Samoa
|
|
208
|
+
561,Samoa (Independent State of)
|
|
209
|
+
563,Singapore (Republic of)
|
|
210
|
+
564,Singapore (Republic of)
|
|
211
|
+
565,Singapore (Republic of)
|
|
212
|
+
566,Singapore (Republic of)
|
|
213
|
+
567,Thailand
|
|
214
|
+
570,Tonga (Kingdom of)
|
|
215
|
+
572,Tuvalu
|
|
216
|
+
574,Viet Nam (Socialist Republic of)
|
|
217
|
+
576,Vanuatu (Republic of)
|
|
218
|
+
577,Vanuatu (Republic of)
|
|
219
|
+
578,France - Wallis and Futuna Islands
|
|
220
|
+
601,South Africa (Republic of)
|
|
221
|
+
603,Angola (Republic of)
|
|
222
|
+
605,Algeria (People's Democratic Republic of)
|
|
223
|
+
607,France - Saint Paul and Amsterdam Islands
|
|
224
|
+
608,United Kingdom of Great Britain and Northern Ireland - Ascension Island
|
|
225
|
+
609,Burundi (Republic of)
|
|
226
|
+
610,Benin (Republic of)
|
|
227
|
+
611,Botswana (Republic of)
|
|
228
|
+
612,Central African Republic
|
|
229
|
+
613,Cameroon (Republic of)
|
|
230
|
+
615,Congo (Republic of the)
|
|
231
|
+
616,Comoros (Union of the)
|
|
232
|
+
617,Cabo Verde (Republic of)
|
|
233
|
+
618,France - Crozet Archipelago
|
|
234
|
+
619,Côte d'Ivoire (Republic of)
|
|
235
|
+
620,Comoros (Union of the)
|
|
236
|
+
621,Djibouti (Republic of)
|
|
237
|
+
622,Egypt (Arab Republic of)
|
|
238
|
+
624,Ethiopia (Federal Democratic Republic of)
|
|
239
|
+
625,Eritrea
|
|
240
|
+
626,Gabonese Republic
|
|
241
|
+
627,Ghana
|
|
242
|
+
629,Gambia (Republic of the)
|
|
243
|
+
630,Guinea-Bissau (Republic of)
|
|
244
|
+
631,Equatorial Guinea (Republic of)
|
|
245
|
+
632,Guinea (Republic of)
|
|
246
|
+
633,Burkina Faso
|
|
247
|
+
634,Kenya (Republic of)
|
|
248
|
+
635,France - Kerguelen Islands
|
|
249
|
+
636,Liberia (Republic of)
|
|
250
|
+
637,Liberia (Republic of)
|
|
251
|
+
638,South Sudan (Republic of)
|
|
252
|
+
642,Libya (State of)
|
|
253
|
+
644,Lesotho (Kingdom of)
|
|
254
|
+
645,Mauritius (Republic of)
|
|
255
|
+
647,Madagascar (Republic of)
|
|
256
|
+
649,Mali (Republic of)
|
|
257
|
+
650,Mozambique (Republic of)
|
|
258
|
+
654,Mauritania (Islamic Republic of)
|
|
259
|
+
655,Malawi
|
|
260
|
+
656,Niger (Republic of the)
|
|
261
|
+
657,Nigeria (Federal Republic of)
|
|
262
|
+
659,Namibia (Republic of)
|
|
263
|
+
660,France - Reunion (French Department of)
|
|
264
|
+
661,Rwanda (Republic of)
|
|
265
|
+
662,Sudan (Republic of the)
|
|
266
|
+
663,Senegal (Republic of)
|
|
267
|
+
664,Seychelles (Republic of)
|
|
268
|
+
665,United Kingdom of Great Britain and Northern Ireland - Saint Helena
|
|
269
|
+
666,Somalia (Federal Republic of)
|
|
270
|
+
667,Sierra Leone
|
|
271
|
+
668,Sao Tome and Principe (Democratic Republic of)
|
|
272
|
+
669,Eswatini (Kingdom of)
|
|
273
|
+
670,Chad (Republic of)
|
|
274
|
+
671,Togolese Republic
|
|
275
|
+
672,Tunisia
|
|
276
|
+
674,Tanzania (United Republic of)
|
|
277
|
+
675,Uganda (Republic of)
|
|
278
|
+
676,Democratic Republic of the Congo
|
|
279
|
+
677,Tanzania (United Republic of)
|
|
280
|
+
678,Zambia (Republic of)
|
|
281
|
+
679,Zimbabwe (Republic of)
|
|
282
|
+
701,Argentine Republic
|
|
283
|
+
710,Brazil (Federative Republic of)
|
|
284
|
+
720,Bolivia (Plurinational State of)
|
|
285
|
+
725,Chile
|
|
286
|
+
730,Colombia (Republic of)
|
|
287
|
+
735,Ecuador
|
|
288
|
+
740,United Kingdom of Great Britain and Northern Ireland - Falkland Islands (Malvinas)
|
|
289
|
+
745,France - Guiana (French Department of)
|
|
290
|
+
750,Guyana
|
|
291
|
+
755,Paraguay (Republic of)
|
|
292
|
+
760,Peru
|
|
293
|
+
765,Suriname (Republic of)
|
|
294
|
+
770,Uruguay (Eastern Republic of)
|
|
295
|
+
775,Venezuela (Bolivarian Republic of)
|
|
@@ -0,0 +1,151 @@
|
|
|
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
|
+
import logging
|
|
15
|
+
from holado_core.common.resource.persisted_data_manager import PersistedDataManager
|
|
16
|
+
import os
|
|
17
|
+
from holado_python.standard_library.csv import CsvManager
|
|
18
|
+
from holado_core.common.exceptions.technical_exception import TechnicalException
|
|
19
|
+
|
|
20
|
+
logger = logging.getLogger(__name__)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class AISManager(object):
|
|
24
|
+
|
|
25
|
+
def __init__(self):
|
|
26
|
+
self.__persisted_data_manager = PersistedDataManager(data_name="AIS data",
|
|
27
|
+
table_name=self.__get_persisted_data_table_name(),
|
|
28
|
+
table_sql_create=self.__get_persisted_data_table_sql_create(),
|
|
29
|
+
db_name="ais")
|
|
30
|
+
self.__possible_mids = []
|
|
31
|
+
|
|
32
|
+
def initialize(self, resource_manager):
|
|
33
|
+
self.__persisted_data_manager.initialize(resource_manager)
|
|
34
|
+
|
|
35
|
+
self.__possible_mids = self.__load_mids()
|
|
36
|
+
|
|
37
|
+
def __load_mids(self):
|
|
38
|
+
"""Return possible MID (Maritime Identification Digits) values.
|
|
39
|
+
Resource file MaritimeIdentificationDigits.csv is an export from https://www.itu.int/en/ITU-R/terrestrial/fmd/Pages/mid.aspx
|
|
40
|
+
"""
|
|
41
|
+
here = os.path.abspath(os.path.dirname(__file__))
|
|
42
|
+
path = os.path.normpath(os.path.join(here, "MaritimeIdentificationDigits.csv"))
|
|
43
|
+
|
|
44
|
+
table = CsvManager.table_with_content_of_CSV_file(path, delimiter=',')
|
|
45
|
+
return table.get_column(name='Digit').cells_content
|
|
46
|
+
|
|
47
|
+
def new_unique_mmsi_number(self):
|
|
48
|
+
# Ensure persistent DB exists
|
|
49
|
+
self.__persisted_data_manager.ensure_persistent_db_exists()
|
|
50
|
+
|
|
51
|
+
last_mmsi = self.__get_persisted_data_value("unique_mmsi")
|
|
52
|
+
res = self.next_valid_mmsi(last_mmsi)
|
|
53
|
+
if res is None:
|
|
54
|
+
# This case appears when last unique MMSI was last valid MMSI. Get first possible MMSI.
|
|
55
|
+
res = self.next_valid_mmsi(None)
|
|
56
|
+
|
|
57
|
+
self.__update_or_add_persisted_data("unique_mmsi", res)
|
|
58
|
+
|
|
59
|
+
return res
|
|
60
|
+
|
|
61
|
+
def format_mmsi_number_as_string(self, mmsi):
|
|
62
|
+
if not isinstance(mmsi, int):
|
|
63
|
+
raise TechnicalException(f"MMSI is not an integer (obtained type: {type(mmsi)})")
|
|
64
|
+
return f"{mmsi:09d}"
|
|
65
|
+
|
|
66
|
+
def first_valid_mmsi(self):
|
|
67
|
+
return int(self.__possible_mids[0]) * 10000
|
|
68
|
+
|
|
69
|
+
def next_valid_mmsi(self, previous_mmsi=None):
|
|
70
|
+
"""Return next valid MMSI.
|
|
71
|
+
|
|
72
|
+
Notes:
|
|
73
|
+
If previous_mmsi is None, return first valid MMSI number.
|
|
74
|
+
If previous_mmsi is last valid MMSI, return None.
|
|
75
|
+
"""
|
|
76
|
+
if previous_mmsi is None:
|
|
77
|
+
# Return smallest possible MMSI
|
|
78
|
+
return self.first_valid_mmsi()
|
|
79
|
+
else:
|
|
80
|
+
for mmsi in range(previous_mmsi+1, int(1e9)):
|
|
81
|
+
if self.is_valid_mmsi(mmsi):
|
|
82
|
+
return mmsi
|
|
83
|
+
return None
|
|
84
|
+
|
|
85
|
+
def is_valid_mmsi(self, mmsi):
|
|
86
|
+
"""Return if MMSI is valid
|
|
87
|
+
The MMSI uniquely identifies a ship (or a group of ships), or a coast radio station.
|
|
88
|
+
MMSI stands for Maritime Mobile Service Identity.
|
|
89
|
+
Possible values:
|
|
90
|
+
* 97<nnnnnnn>: valid
|
|
91
|
+
* [00|98|99]<MID><nnnn> : valid if MID is valid
|
|
92
|
+
* [0|8]<MID><nnnnn> : valid if MID is valid
|
|
93
|
+
* <MID><nnnnnn> : valid if MID is valid
|
|
94
|
+
* <any other value (incl. > 999999999) : invalid
|
|
95
|
+
@param mmsi: MMSI to validate (type: int, str)
|
|
96
|
+
"""
|
|
97
|
+
if mmsi is None:
|
|
98
|
+
return False
|
|
99
|
+
|
|
100
|
+
if isinstance(mmsi, int):
|
|
101
|
+
mmsi = self.format_mmsi_number_as_string(mmsi)
|
|
102
|
+
if mmsi[0:2] in ['97', '99']:
|
|
103
|
+
return True
|
|
104
|
+
else:
|
|
105
|
+
if mmsi[0:2] in ['00', '98', '99']:
|
|
106
|
+
mid = mmsi[2:5]
|
|
107
|
+
elif mmsi[0:1] in ['0', '8']:
|
|
108
|
+
mid = mmsi[1:4]
|
|
109
|
+
else:
|
|
110
|
+
mid = mmsi[0:3]
|
|
111
|
+
return self.is_valid_mid(mid)
|
|
112
|
+
|
|
113
|
+
def is_valid_mid(self, mid):
|
|
114
|
+
return mid in self.__possible_mids
|
|
115
|
+
|
|
116
|
+
def __next_mid(self, previous_mid):
|
|
117
|
+
"""Return next MID in possible MID values"""
|
|
118
|
+
if previous_mid is None:
|
|
119
|
+
return self.__possible_mids[0]
|
|
120
|
+
elif previous_mid in self.__possible_mids:
|
|
121
|
+
index = self.__possible_mids.index(previous_mid)
|
|
122
|
+
if index + 1 < len(self.__possible_mids):
|
|
123
|
+
return self.__possible_mids[index+1]
|
|
124
|
+
else:
|
|
125
|
+
return None
|
|
126
|
+
else:
|
|
127
|
+
raise TechnicalException(f"MID {previous_mid} is not valid")
|
|
128
|
+
|
|
129
|
+
# Manage persistent data
|
|
130
|
+
|
|
131
|
+
def __get_persisted_data_table_name(self):
|
|
132
|
+
return "ais_data"
|
|
133
|
+
|
|
134
|
+
def __get_persisted_data_table_sql_create(self):
|
|
135
|
+
return """CREATE TABLE ais_data (
|
|
136
|
+
key text NOT NULL,
|
|
137
|
+
value text
|
|
138
|
+
)"""
|
|
139
|
+
|
|
140
|
+
def __update_or_add_persisted_data(self, key, value):
|
|
141
|
+
self.__persisted_data_manager.update_or_add_persisted_data(persisted_filter_data={'key':key}, data={'value':value})
|
|
142
|
+
|
|
143
|
+
def __get_persisted_data_value(self, key):
|
|
144
|
+
persisted_data = self.__persisted_data_manager.get_persisted_data(filter_data={'key':key})
|
|
145
|
+
if persisted_data is not None:
|
|
146
|
+
return int(persisted_data['value'])
|
|
147
|
+
else:
|
|
148
|
+
return None
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|