testit-python-commons 5.1.0.post580__tar.gz → 5.1.1.post580__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/PKG-INFO +1 -1
  2. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/setup.py +1 -1
  3. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/api_client.py +58 -5
  4. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/converter.py +56 -8
  5. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/configurations/properties_names.py +6 -0
  6. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/adapter_manager.py +17 -14
  7. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/adapter_manager_configuration.py +17 -1
  8. testit_python_commons-5.1.1.post580/src/testit_python_commons/services/test_run_metadata.py +50 -0
  9. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/PKG-INFO +1 -1
  10. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/SOURCES.txt +1 -0
  11. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/README.md +0 -0
  12. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/setup.cfg +0 -0
  13. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/__init__.py +0 -0
  14. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/__init__.py +0 -0
  15. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/attachments_api.py +0 -0
  16. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/auto_tests_api.py +0 -0
  17. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/configurations_api.py +0 -0
  18. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/parameters_api.py +0 -0
  19. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/project_attributes_api.py +0 -0
  20. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/project_sections_api.py +0 -0
  21. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/project_work_items_api.py +0 -0
  22. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/projects_api.py +0 -0
  23. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/sections_api.py +0 -0
  24. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/test_results_api.py +0 -0
  25. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/test_runs_api.py +0 -0
  26. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/work_items_api.py +0 -0
  27. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api/workflows_api.py +0 -0
  28. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/api_client.py +0 -0
  29. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/apis/__init__.py +0 -0
  30. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/configuration.py +0 -0
  31. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/exceptions.py +0 -0
  32. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/__init__.py +0 -0
  33. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_id_work_items_post_request.py +0 -0
  34. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_post_request.py +0 -0
  35. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_put_request.py +0 -0
  36. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_auto_tests_search_post_request.py +0 -0
  37. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_configurations_search_post_request.py +0 -0
  38. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_parameters_post_request.py +0 -0
  39. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_parameters_search_post_request.py +0 -0
  40. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_post_request.py +0 -0
  41. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_project_id_attributes_put_request.py +0 -0
  42. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_project_id_attributes_search_post_request.py +0 -0
  43. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_project_id_work_items_search_post_request.py +0 -0
  44. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_projects_search_post_request.py +0 -0
  45. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_sections_post_request.py +0 -0
  46. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_results_id_put_request.py +0 -0
  47. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_results_search_post_request.py +0 -0
  48. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_runs_id_reruns_post_request.py +0 -0
  49. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_runs_post_request.py +0 -0
  50. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_test_runs_put_request.py +0 -0
  51. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/adapters_work_items_post_request.py +0 -0
  52. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/assign_attachment_api_model.py +0 -0
  53. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/assign_auto_test_case_id_api_model.py +0 -0
  54. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/assign_iteration_api_model.py +0 -0
  55. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_api_result.py +0 -0
  56. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_model.py +0 -0
  57. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_put_model.py +0 -0
  58. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_put_model_auto_test_step_results_model.py +0 -0
  59. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/attachment_update_request.py +0 -0
  60. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test.py +0 -0
  61. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_api_result.py +0 -0
  62. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_case_api_model.py +0 -0
  63. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_create_api_model.py +0 -0
  64. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_filter_api_model.py +0 -0
  65. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_id_model.py +0 -0
  66. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_model.py +0 -0
  67. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_model_last_test_result_configuration.py +0 -0
  68. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_model_last_test_result_status.py +0 -0
  69. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_result_reason_short.py +0 -0
  70. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_results_for_test_run_model.py +0 -0
  71. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_api_model.py +0 -0
  72. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_api_model_filter.py +0 -0
  73. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_api_model_includes.py +0 -0
  74. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_search_include_api_model.py +0 -0
  75. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step.py +0 -0
  76. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_api_model.py +0 -0
  77. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_api_result.py +0 -0
  78. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_model.py +0 -0
  79. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_result.py +0 -0
  80. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_step_result_update_request.py +0 -0
  81. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_update_api_model.py +0 -0
  82. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/auto_test_work_item_identifier_api_result.py +0 -0
  83. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/available_test_result_outcome.py +0 -0
  84. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/configuration_filter_model.py +0 -0
  85. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/configuration_model.py +0 -0
  86. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/configuration_short_model.py +0 -0
  87. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_empty_test_run_api_model.py +0 -0
  88. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_link_api_model.py +0 -0
  89. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_parameter_api_model.py +0 -0
  90. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_project_api_model.py +0 -0
  91. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_step_api_model.py +0 -0
  92. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/create_work_item_api_model.py +0 -0
  93. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_api_result.py +0 -0
  94. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_get_model.py +0 -0
  95. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_option_api_result.py +0 -0
  96. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_option_model.py +0 -0
  97. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_put_model.py +0 -0
  98. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_type.py +0 -0
  99. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/custom_attribute_types_enum.py +0 -0
  100. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/date_time_range_selector_model.py +0 -0
  101. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/deletion_state.py +0 -0
  102. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/detailed_project_api_result.py +0 -0
  103. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/detailed_project_api_result_workflow.py +0 -0
  104. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/failure_category_model.py +0 -0
  105. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/guid_extraction_model.py +0 -0
  106. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/image_resize_type.py +0 -0
  107. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/int32_range_selector_model.py +0 -0
  108. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/int64_range_selector_model.py +0 -0
  109. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/iteration_api_result.py +0 -0
  110. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/iteration_model.py +0 -0
  111. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/label_api_model.py +0 -0
  112. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/label_api_result.py +0 -0
  113. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/label_short_model.py +0 -0
  114. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_api_result.py +0 -0
  115. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_create_api_model.py +0 -0
  116. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_model.py +0 -0
  117. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_post_model.py +0 -0
  118. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_put_model.py +0 -0
  119. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_short_api_result.py +0 -0
  120. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_type.py +0 -0
  121. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/link_update_api_model.py +0 -0
  122. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_api_result.py +0 -0
  123. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model.py +0 -0
  124. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_extraction_model.py +0 -0
  125. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_filter.py +0 -0
  126. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_test_result_api_model.py +0 -0
  127. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/manual_rerun_test_result_api_model_test_result_ids.py +0 -0
  128. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/operation.py +0 -0
  129. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_api_result.py +0 -0
  130. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_iteration_model.py +0 -0
  131. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_short_api_result.py +0 -0
  132. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameter_short_model.py +0 -0
  133. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/parameters_filter_api_model.py +0 -0
  134. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/problem_details.py +0 -0
  135. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/project_api_result.py +0 -0
  136. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/project_attributes_filter_model.py +0 -0
  137. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/project_type_model.py +0 -0
  138. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model.py +0 -0
  139. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_autotests_count.py +0 -0
  140. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_checklists_count.py +0 -0
  141. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_created_date.py +0 -0
  142. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_shared_steps_count.py +0 -0
  143. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/projects_filter_model_test_cases_count.py +0 -0
  144. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_model.py +0 -0
  145. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_post_model.py +0 -0
  146. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_shared_step.py +0 -0
  147. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/section_with_steps_model.py +0 -0
  148. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/shared_step_model.py +0 -0
  149. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/shared_step_result_api_model.py +0 -0
  150. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_comment_api_model.py +0 -0
  151. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_model.py +0 -0
  152. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_post_model.py +0 -0
  153. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/step_result_api_model.py +0 -0
  154. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/tag_model.py +0 -0
  155. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_link_api_result.py +0 -0
  156. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_outcome.py +0 -0
  157. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_response.py +0 -0
  158. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_short_response.py +0 -0
  159. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_short_response_status.py +0 -0
  160. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_step_comment_update_request.py +0 -0
  161. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_result_update_request.py +0 -0
  162. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_results_filter_api_model.py +0 -0
  163. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_results_filter_api_model_duration.py +0 -0
  164. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_run_api_result.py +0 -0
  165. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_run_api_result_status.py +0 -0
  166. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_run_state.py +0 -0
  167. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_api_result.py +0 -0
  168. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_api_type.py +0 -0
  169. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_model.py +0 -0
  170. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/test_status_type.py +0 -0
  171. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/update_empty_test_run_api_model.py +0 -0
  172. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/update_link_api_model.py +0 -0
  173. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/validation_problem_details.py +0 -0
  174. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_api_result.py +0 -0
  175. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_entity_type_api_model.py +0 -0
  176. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_filter_api_model.py +0 -0
  177. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_filter_api_model_duration.py +0 -0
  178. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_id_api_model.py +0 -0
  179. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_parameter_key_api_model.py +0 -0
  180. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_parameter_key_api_result.py +0 -0
  181. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_priority_api_model.py +0 -0
  182. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_priority_model.py +0 -0
  183. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_select_api_model.py +0 -0
  184. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_select_api_model_filter.py +0 -0
  185. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_short_api_result.py +0 -0
  186. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_source_type_model.py +0 -0
  187. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_state_api_model.py +0 -0
  188. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_states.py +0 -0
  189. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/work_item_type_model.py +0 -0
  190. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/workflow_api_result.py +0 -0
  191. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model/workflow_status_api_result.py +0 -0
  192. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/model_utils.py +0 -0
  193. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/models/__init__.py +0 -0
  194. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_adapters/rest.py +0 -0
  195. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/__init__.py +0 -0
  196. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/__init__.py +0 -0
  197. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/completion_api.py +0 -0
  198. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/health_api.py +0 -0
  199. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/system_api.py +0 -0
  200. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/test_results_api.py +0 -0
  201. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api/workers_api.py +0 -0
  202. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/api_client.py +0 -0
  203. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/apis/__init__.py +0 -0
  204. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/configuration.py +0 -0
  205. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/exceptions.py +0 -0
  206. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/__init__.py +0 -0
  207. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/completion_response.py +0 -0
  208. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/health_status_response.py +0 -0
  209. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/register_request.py +0 -0
  210. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/register_response.py +0 -0
  211. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/set_worker_status_request.py +0 -0
  212. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/set_worker_status_response.py +0 -0
  213. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/shutdown_response.py +0 -0
  214. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/test_result_cut_api_model.py +0 -0
  215. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model/test_result_save_response.py +0 -0
  216. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/model_utils.py +0 -0
  217. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/models/__init__.py +0 -0
  218. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/api_client_syncstorage/rest.py +0 -0
  219. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit.py +0 -0
  220. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/__init__.py +0 -0
  221. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/app_properties.py +0 -0
  222. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/__init__.py +0 -0
  223. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/client_configuration.py +0 -0
  224. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/helpers/__init__.py +0 -0
  225. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/helpers/bulk_autotest_helper.py +0 -0
  226. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/helpers/threads_manager.py +0 -0
  227. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/models/__init__.py +0 -0
  228. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/models/threads_for_create_and_result.py +0 -0
  229. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/client/models/threads_for_update_and_result.py +0 -0
  230. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/configurations/__init__.py +0 -0
  231. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/decorators.py +0 -0
  232. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/dynamic_methods.py +0 -0
  233. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/__init__.py +0 -0
  234. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/adapter_mode.py +0 -0
  235. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/fixture.py +0 -0
  236. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/link.py +0 -0
  237. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/link_type.py +0 -0
  238. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/outcome_type.py +0 -0
  239. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/status_type.py +0 -0
  240. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/step_result.py +0 -0
  241. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/test_result.py +0 -0
  242. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/models/test_result_with_all_fixture_step_results_model.py +0 -0
  243. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/__init__.py +0 -0
  244. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/fixture_manager.py +0 -0
  245. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/fixture_storage.py +0 -0
  246. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/logger.py +0 -0
  247. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/plugin_manager.py +0 -0
  248. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/retry.py +0 -0
  249. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/step_manager.py +0 -0
  250. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/step_result_storage.py +0 -0
  251. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/sync_storage/__init__.py +0 -0
  252. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/sync_storage/sync_storage_runner.py +0 -0
  253. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/services/utils.py +0 -0
  254. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/step.py +0 -0
  255. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/utils/__init__.py +0 -0
  256. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons/utils/html_escape_utils.py +0 -0
  257. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/dependency_links.txt +0 -0
  258. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/requires.txt +0 -0
  259. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/src/testit_python_commons.egg-info/top_level.txt +0 -0
  260. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/tests/test_app_properties.py +0 -0
  261. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/tests/test_dynamic_methods.py +0 -0
  262. {testit_python_commons-5.1.0.post580 → testit_python_commons-5.1.1.post580}/tests/test_html_escape_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: testit-python-commons
3
- Version: 5.1.0.post580
3
+ Version: 5.1.1.post580
4
4
  Summary: Python commons for Test IT
5
5
  Home-page: https://github.com/testit-tms/adapters-python/
6
6
  Author: Integration team
@@ -1,6 +1,6 @@
1
1
  from setuptools import find_packages, setup
2
2
 
3
- VERSION = "5.1.0.post580"
3
+ VERSION = "5.1.1.post580"
4
4
 
5
5
  setup(
6
6
  name='testit-python-commons',
@@ -30,6 +30,9 @@ from api_client_adapters.models import (
30
30
  from testit_python_commons.client.client_configuration import ClientConfiguration
31
31
  from testit_python_commons.client.converter import Converter
32
32
  from testit_python_commons.client.helpers.bulk_autotest_helper import BulkAutotestHelper
33
+ from typing import List
34
+
35
+ from testit_python_commons.models.link import Link
33
36
  from testit_python_commons.models.test_result import TestResult
34
37
  from testit_python_commons.services.logger import adapter_logger
35
38
  from testit_python_commons.services.retry import (
@@ -38,7 +41,6 @@ from testit_python_commons.services.retry import (
38
41
  retry,
39
42
  retry_on_connection_error,
40
43
  )
41
- from typing import List
42
44
 
43
45
 
44
46
  class ApiClientWorker:
@@ -80,14 +82,25 @@ class ApiClientWorker:
80
82
 
81
83
  @adapter_logger
82
84
  @retry
83
- def create_test_run(self, test_run_name: str = None) -> str:
85
+ def create_test_run(
86
+ self,
87
+ test_run_name: str = None,
88
+ tags: List[str] = None,
89
+ links: List[Link] = None) -> str:
84
90
  test_run_name = f'TestRun_{datetime.today().strftime("%Y-%m-%dT%H:%M:%S")}' if \
85
91
  not test_run_name else test_run_name
86
92
  model = Converter.test_run_to_test_run_short_model(
87
93
  self.__config.get_project_id(),
88
- test_run_name
94
+ test_run_name,
95
+ tags=tags,
96
+ links=links,
89
97
  )
90
98
 
99
+ logging.info(
100
+ 'Creating test run with tags=%s, links=%s',
101
+ tags or [],
102
+ [link.get_url() for link in (links or [])],
103
+ )
91
104
  response = self.__test_run_api.adapters_test_runs_post(
92
105
  adapters_test_runs_post_request=model)
93
106
 
@@ -107,15 +120,55 @@ class ApiClientWorker:
107
120
  raise Exception(f"Test run by id {test_run_id} not found!")
108
121
 
109
122
  @retry
110
- def update_test_run(self, test_run: TestRunApiResult) -> None:
123
+ def update_test_run(
124
+ self,
125
+ test_run: TestRunApiResult,
126
+ tags: List[str] = None,
127
+ links: List[Link] = None) -> None:
111
128
  """Function updates test run."""
112
- model = Converter.build_update_empty_request(test_run)
129
+ model = Converter.build_update_empty_request(test_run, tags=tags, links=links)
113
130
  logging.debug(f"Updating test run with model: {model}")
114
131
 
115
132
  self.__test_run_api.adapters_test_runs_put(adapters_test_runs_put_request=model)
116
133
 
117
134
  logging.debug(f'Updated testrun (ID: {test_run.id})')
118
135
 
136
+ @adapter_logger
137
+ def apply_test_run_tags_and_links(
138
+ self,
139
+ test_run_id: str,
140
+ tags: List[str] = None,
141
+ links: List[Link] = None,
142
+ test_run_name: str = None) -> None:
143
+ tags = tags or []
144
+ links = links or []
145
+ if not tags and not links and not test_run_name:
146
+ return
147
+
148
+ try:
149
+ test_run = self.get_test_run(test_run_id)
150
+ name_changed = bool(test_run_name and test_run_name != test_run.name)
151
+ if name_changed:
152
+ test_run.name = test_run_name
153
+
154
+ if not tags and not links and not name_changed:
155
+ return
156
+
157
+ logging.info(
158
+ 'Applying test run metadata to %s: tags=%s, links=%s, name=%s',
159
+ test_run_id,
160
+ tags,
161
+ [link.get_url() for link in links],
162
+ test_run_name,
163
+ )
164
+ self.update_test_run(test_run, tags=tags, links=links)
165
+ except Exception as exc:
166
+ logging.error(
167
+ 'Cannot apply tags/links to test run %s: %s',
168
+ test_run_id,
169
+ exc,
170
+ )
171
+
119
172
  @adapter_logger
120
173
  def set_test_run_id(self, test_run_id: str) -> None:
121
174
  self.__config.set_test_run_id(test_run_id)
@@ -48,11 +48,22 @@ from testit_python_commons.services.logger import adapter_logger
48
48
  class Converter:
49
49
  @staticmethod
50
50
  @adapter_logger
51
- def test_run_to_test_run_short_model(project_id: str, name: str) -> AdaptersTestRunsPostRequest:
52
- return AdaptersTestRunsPostRequest(
53
- project_id=project_id,
54
- name=name
55
- )
51
+ def test_run_to_test_run_short_model(
52
+ project_id: str,
53
+ name: str,
54
+ tags: List[str] = None,
55
+ links: List[Link] = None) -> AdaptersTestRunsPostRequest:
56
+ kwargs = {
57
+ 'project_id': project_id,
58
+ 'name': name,
59
+ }
60
+ if tags:
61
+ kwargs['tags'] = tags
62
+ if links:
63
+ kwargs['links'] = [
64
+ Converter.link_to_create_link_api_model(link) for link in links
65
+ ]
66
+ return AdaptersTestRunsPostRequest(**kwargs)
56
67
 
57
68
  @staticmethod
58
69
  @adapter_logger
@@ -61,14 +72,51 @@ class Converter:
61
72
 
62
73
  @classmethod
63
74
  @adapter_logger
64
- def build_update_empty_request(cls, test_run: TestRunApiResult) -> AdaptersTestRunsPutRequest:
75
+ def build_update_empty_request(
76
+ cls,
77
+ test_run: TestRunApiResult,
78
+ tags: List[str] = None,
79
+ links: List[Link] = None) -> AdaptersTestRunsPutRequest:
80
+ merged_tags = list(test_run.tags or [])
81
+ for tag in tags or []:
82
+ if tag not in merged_tags:
83
+ merged_tags.append(tag)
84
+
85
+ update_links = list(map(cls.build_update_link_api_model, test_run.links or []))
86
+ existing_urls = {link.url for link in (test_run.links or [])}
87
+ for link in links or []:
88
+ if link.get_url() not in existing_urls:
89
+ update_links.append(cls.link_to_update_link_api_model(link))
90
+ existing_urls.add(link.get_url())
91
+
65
92
  return AdaptersTestRunsPutRequest(
66
93
  id=test_run.id,
67
94
  name=test_run.name,
68
95
  description=test_run.description,
69
96
  launch_source=test_run.launch_source,
70
- attachments=list(map(cls.build_assign_attachment_api_model, test_run.attachments)),
71
- links=list(map(cls.build_update_link_api_model, test_run.links))
97
+ attachments=list(map(cls.build_assign_attachment_api_model, test_run.attachments or [])),
98
+ links=update_links,
99
+ tags=merged_tags,
100
+ )
101
+
102
+ @staticmethod
103
+ @adapter_logger
104
+ def link_to_create_link_api_model(link: Link) -> CreateLinkApiModel:
105
+ return CreateLinkApiModel(
106
+ url=link.get_url(),
107
+ title=link.get_title(),
108
+ type=LinkType(link.get_link_type() or "Related"),
109
+ description=link.get_description(),
110
+ )
111
+
112
+ @staticmethod
113
+ @adapter_logger
114
+ def link_to_update_link_api_model(link: Link) -> UpdateLinkApiModel:
115
+ return UpdateLinkApiModel(
116
+ url=link.get_url(),
117
+ title=link.get_title(),
118
+ type=LinkType(link.get_link_type() or "Related"),
119
+ description=link.get_description(),
72
120
  )
73
121
 
74
122
  @staticmethod
@@ -7,6 +7,8 @@ class PropertiesNames:
7
7
  CONFIGURATION_ID = 'configurationid'
8
8
  TEST_RUN_ID = 'testrunid'
9
9
  TEST_RUN_NAME = 'testrunname'
10
+ TEST_RUN_TAGS = 'testruntags'
11
+ TEST_RUN_LINKS = 'testrunlinks'
10
12
  TMS_PROXY = 'tmsproxy'
11
13
  ADAPTER_MODE = 'adaptermode'
12
14
  CERT_VALIDATION = 'certvalidation'
@@ -23,6 +25,8 @@ ENV_TO_PROPERTY = {
23
25
  'TMS_CONFIGURATION_ID': PropertiesNames.CONFIGURATION_ID,
24
26
  'TMS_TEST_RUN_ID': PropertiesNames.TEST_RUN_ID,
25
27
  'TMS_TEST_RUN_NAME': PropertiesNames.TEST_RUN_NAME,
28
+ 'TMS_TEST_RUN_TAGS': PropertiesNames.TEST_RUN_TAGS,
29
+ 'TMS_TEST_RUN_LINKS': PropertiesNames.TEST_RUN_LINKS,
26
30
  'TMS_PROXY': PropertiesNames.TMS_PROXY,
27
31
  'TMS_ADAPTER_MODE': PropertiesNames.ADAPTER_MODE,
28
32
  'TMS_CERT_VALIDATION': PropertiesNames.CERT_VALIDATION,
@@ -40,6 +44,8 @@ OPTION_TO_PROPERTY = {
40
44
  'set_configuration_id': PropertiesNames.CONFIGURATION_ID,
41
45
  'set_test_run_id': PropertiesNames.TEST_RUN_ID,
42
46
  'set_test_run_name': PropertiesNames.TEST_RUN_NAME,
47
+ 'set_test_run_tags': PropertiesNames.TEST_RUN_TAGS,
48
+ 'set_test_run_links': PropertiesNames.TEST_RUN_LINKS,
43
49
  'set_tms_proxy': PropertiesNames.TMS_PROXY,
44
50
  'set_adapter_mode': PropertiesNames.ADAPTER_MODE,
45
51
  'set_cert_validation': PropertiesNames.CERT_VALIDATION,
@@ -34,6 +34,7 @@ class AdapterManager:
34
34
  self.__fixture_manager = fixture_manager
35
35
  self.__test_result_map = {}
36
36
  self.__test_results = []
37
+ self.__test_run_metadata_applied = False
37
38
 
38
39
  # Sync Storage integration
39
40
  self.__sync_storage_runner = None
@@ -106,33 +107,35 @@ class AdapterManager:
106
107
  test_run_id = self.__config.get_test_run_id()
107
108
 
108
109
  if test_run_id:
109
- self.__update_test_run_name(test_run_id)
110
+ self.__apply_test_run_metadata_early(test_run_id)
110
111
 
111
112
  return test_run_id or ""
112
113
 
113
114
  result = self.__config.get_test_run_id()
114
115
  if result is not None:
116
+ self.__apply_test_run_metadata_early(result)
115
117
  return result
116
118
 
117
119
  # create if not exists
118
120
  test_run_name = self.__config.get_test_run_name()
119
- return self.__api_client.create_test_run(test_run_name if test_run_name else "")
121
+ return self.__api_client.create_test_run(
122
+ test_run_name if test_run_name else "",
123
+ tags=self.__config.get_test_run_tags(),
124
+ links=self.__config.get_test_run_links(),
125
+ )
120
126
 
121
127
  @adapter_logger
122
- def __update_test_run_name(self, test_run_id: str) -> None:
123
- test_run_name = self.__config.get_test_run_name()
124
-
125
- if not test_run_name:
126
- return
127
-
128
- test_run = self.__api_client.get_test_run(test_run_id)
129
-
130
- if test_run_name == test_run.name:
128
+ def __apply_test_run_metadata_early(self, test_run_id: str) -> None:
129
+ if self.__test_run_metadata_applied:
131
130
  return
132
131
 
133
- test_run.name = test_run_name
134
-
135
- self.__api_client.update_test_run(test_run)
132
+ self.__test_run_metadata_applied = True
133
+ self.__api_client.apply_test_run_tags_and_links(
134
+ test_run_id,
135
+ tags=self.__config.get_test_run_tags(),
136
+ links=self.__config.get_test_run_links(),
137
+ test_run_name=self.__config.get_test_run_name(),
138
+ )
136
139
 
137
140
  @adapter_logger
138
141
  def get_autotests_for_launch(self):
@@ -1,8 +1,13 @@
1
+ from typing import List
2
+
1
3
  from testit_python_commons.models.adapter_mode import AdapterMode
4
+ from testit_python_commons.models.link import Link
2
5
  from testit_python_commons.services.logger import adapter_logger
6
+ from testit_python_commons.services.test_run_metadata import parse_test_run_links, parse_test_run_tags
3
7
  from testit_python_commons.services.utils import Utils
4
8
  from testit_python_commons.configurations.properties_names import PropertiesNames
5
9
 
10
+
6
11
  class AdapterManagerConfiguration:
7
12
  __test_run_id = None
8
13
 
@@ -14,8 +19,11 @@ class AdapterManagerConfiguration:
14
19
  self.__automatic_creation_test_cases = Utils.convert_value_str_to_bool(
15
20
  app_properties.get(PropertiesNames.AUTOMATIC_CREATION_TEST_CASES).lower())
16
21
 
17
- self.__import_realtime = Utils.convert_value_str_to_bool(app_properties.get(PropertiesNames.IMPORT_REALTIME).lower())
22
+ self.__import_realtime = Utils.convert_value_str_to_bool(
23
+ app_properties.get(PropertiesNames.IMPORT_REALTIME).lower())
18
24
  self.__test_run_name = app_properties.get(PropertiesNames.TEST_RUN_NAME)
25
+ self.__test_run_tags = parse_test_run_tags(app_properties.get(PropertiesNames.TEST_RUN_TAGS))
26
+ self.__test_run_links = parse_test_run_links(app_properties.get(PropertiesNames.TEST_RUN_LINKS))
19
27
 
20
28
  @adapter_logger
21
29
  def get_test_run_id(self):
@@ -29,6 +37,14 @@ class AdapterManagerConfiguration:
29
37
  def get_test_run_name(self):
30
38
  return self.__test_run_name
31
39
 
40
+ @adapter_logger
41
+ def get_test_run_tags(self) -> List[str]:
42
+ return self.__test_run_tags
43
+
44
+ @adapter_logger
45
+ def get_test_run_links(self) -> List[Link]:
46
+ return self.__test_run_links
47
+
32
48
  @adapter_logger
33
49
  def get_mode(self):
34
50
  return self.__adapter_mode
@@ -0,0 +1,50 @@
1
+ import json
2
+ import logging
3
+ from typing import List, Optional
4
+
5
+ from testit_python_commons.models.link import Link
6
+ from testit_python_commons.services.utils import Utils
7
+
8
+
9
+ def parse_test_run_tags(raw: Optional[str]) -> List[str]:
10
+ if not raw or not str(raw).strip():
11
+ return []
12
+
13
+ value = str(raw).strip()
14
+ if value.startswith('['):
15
+ try:
16
+ parsed = json.loads(value)
17
+ except json.JSONDecodeError:
18
+ logging.warning('Invalid test run tags JSON: %s', value)
19
+ return []
20
+ if not isinstance(parsed, list):
21
+ logging.warning('Test run tags JSON must be an array: %s', value)
22
+ return []
23
+ return [str(tag).strip() for tag in parsed if str(tag).strip()]
24
+
25
+ return [tag.strip() for tag in value.split(',') if tag.strip()]
26
+
27
+
28
+ def parse_test_run_links(raw: Optional[str]) -> List[Link]:
29
+ if not raw or not str(raw).strip():
30
+ return []
31
+
32
+ value = str(raw).strip()
33
+ try:
34
+ parsed = json.loads(value)
35
+ except json.JSONDecodeError:
36
+ logging.warning('Invalid test run links JSON: %s', value)
37
+ return []
38
+
39
+ if not isinstance(parsed, list):
40
+ logging.warning('Test run links JSON must be an array: %s', value)
41
+ return []
42
+
43
+ links = []
44
+ for item in parsed:
45
+ if not isinstance(item, dict) or not item.get('url'):
46
+ logging.warning('Skipping invalid test run link (url is required): %s', item)
47
+ continue
48
+ links.append(Utils.convert_link_dict_to_link_model(item))
49
+
50
+ return links
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: testit-python-commons
3
- Version: 5.1.0.post580
3
+ Version: 5.1.1.post580
4
4
  Summary: Python commons for Test IT
5
5
  Home-page: https://github.com/testit-tms/adapters-python/
6
6
  Author: Integration team
@@ -249,6 +249,7 @@ src/testit_python_commons/services/plugin_manager.py
249
249
  src/testit_python_commons/services/retry.py
250
250
  src/testit_python_commons/services/step_manager.py
251
251
  src/testit_python_commons/services/step_result_storage.py
252
+ src/testit_python_commons/services/test_run_metadata.py
252
253
  src/testit_python_commons/services/utils.py
253
254
  src/testit_python_commons/services/sync_storage/__init__.py
254
255
  src/testit_python_commons/services/sync_storage/sync_storage_runner.py