testit-python-commons 5.1.2.post580__tar.gz → 5.1.3.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 (263) hide show
  1. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/PKG-INFO +1 -1
  2. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/setup.py +1 -1
  3. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/api_client.py +38 -26
  4. testit_python_commons-5.1.3.post580/src/testit_python_commons/client/helpers/test_result_matching.py +41 -0
  5. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons.egg-info/PKG-INFO +1 -1
  6. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons.egg-info/SOURCES.txt +1 -0
  7. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/README.md +0 -0
  8. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/setup.cfg +0 -0
  9. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/__init__.py +0 -0
  10. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/__init__.py +0 -0
  11. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/attachments_api.py +0 -0
  12. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/auto_tests_api.py +0 -0
  13. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/configurations_api.py +0 -0
  14. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/parameters_api.py +0 -0
  15. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/project_attributes_api.py +0 -0
  16. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/project_sections_api.py +0 -0
  17. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/project_work_items_api.py +0 -0
  18. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/projects_api.py +0 -0
  19. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/sections_api.py +0 -0
  20. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/test_results_api.py +0 -0
  21. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/test_runs_api.py +0 -0
  22. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/work_items_api.py +0 -0
  23. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api/workflows_api.py +0 -0
  24. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/api_client.py +0 -0
  25. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/apis/__init__.py +0 -0
  26. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/configuration.py +0 -0
  27. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/exceptions.py +0 -0
  28. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/__init__.py +0 -0
  29. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_auto_tests_id_work_items_post_request.py +0 -0
  30. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_auto_tests_post_request.py +0 -0
  31. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_auto_tests_put_request.py +0 -0
  32. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_auto_tests_search_post_request.py +0 -0
  33. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_configurations_search_post_request.py +0 -0
  34. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_parameters_post_request.py +0 -0
  35. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_parameters_search_post_request.py +0 -0
  36. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_projects_post_request.py +0 -0
  37. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_projects_project_id_attributes_put_request.py +0 -0
  38. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_projects_project_id_attributes_search_post_request.py +0 -0
  39. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_projects_project_id_work_items_search_post_request.py +0 -0
  40. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_projects_search_post_request.py +0 -0
  41. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_sections_post_request.py +0 -0
  42. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_test_results_id_put_request.py +0 -0
  43. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_test_results_search_post_request.py +0 -0
  44. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_test_runs_id_reruns_post_request.py +0 -0
  45. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_test_runs_post_request.py +0 -0
  46. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_test_runs_put_request.py +0 -0
  47. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/adapters_work_items_post_request.py +0 -0
  48. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/assign_attachment_api_model.py +0 -0
  49. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/assign_auto_test_case_id_api_model.py +0 -0
  50. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/assign_iteration_api_model.py +0 -0
  51. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/attachment_api_result.py +0 -0
  52. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/attachment_model.py +0 -0
  53. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/attachment_put_model.py +0 -0
  54. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/attachment_put_model_auto_test_step_results_model.py +0 -0
  55. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/attachment_update_request.py +0 -0
  56. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test.py +0 -0
  57. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_api_result.py +0 -0
  58. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_case_api_model.py +0 -0
  59. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_create_api_model.py +0 -0
  60. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_filter_api_model.py +0 -0
  61. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_id_model.py +0 -0
  62. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_model.py +0 -0
  63. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_model_last_test_result_configuration.py +0 -0
  64. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_model_last_test_result_status.py +0 -0
  65. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_result_reason_short.py +0 -0
  66. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_results_for_test_run_model.py +0 -0
  67. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_search_api_model.py +0 -0
  68. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_search_api_model_filter.py +0 -0
  69. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_search_api_model_includes.py +0 -0
  70. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_search_include_api_model.py +0 -0
  71. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_step.py +0 -0
  72. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_step_api_model.py +0 -0
  73. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_step_api_result.py +0 -0
  74. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_step_model.py +0 -0
  75. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_step_result.py +0 -0
  76. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_step_result_update_request.py +0 -0
  77. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_update_api_model.py +0 -0
  78. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/auto_test_work_item_identifier_api_result.py +0 -0
  79. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/available_test_result_outcome.py +0 -0
  80. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/configuration_filter_model.py +0 -0
  81. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/configuration_model.py +0 -0
  82. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/configuration_short_model.py +0 -0
  83. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/create_empty_test_run_api_model.py +0 -0
  84. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/create_link_api_model.py +0 -0
  85. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/create_parameter_api_model.py +0 -0
  86. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/create_project_api_model.py +0 -0
  87. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/create_step_api_model.py +0 -0
  88. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/create_work_item_api_model.py +0 -0
  89. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/custom_attribute_api_result.py +0 -0
  90. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/custom_attribute_get_model.py +0 -0
  91. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/custom_attribute_option_api_result.py +0 -0
  92. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/custom_attribute_option_model.py +0 -0
  93. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/custom_attribute_put_model.py +0 -0
  94. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/custom_attribute_type.py +0 -0
  95. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/custom_attribute_types_enum.py +0 -0
  96. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/date_time_range_selector_model.py +0 -0
  97. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/deletion_state.py +0 -0
  98. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/detailed_project_api_result.py +0 -0
  99. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/detailed_project_api_result_workflow.py +0 -0
  100. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/failure_category_model.py +0 -0
  101. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/guid_extraction_model.py +0 -0
  102. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/image_resize_type.py +0 -0
  103. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/int32_range_selector_model.py +0 -0
  104. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/int64_range_selector_model.py +0 -0
  105. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/iteration_api_result.py +0 -0
  106. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/iteration_model.py +0 -0
  107. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/label_api_model.py +0 -0
  108. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/label_api_result.py +0 -0
  109. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/label_short_model.py +0 -0
  110. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_api_result.py +0 -0
  111. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_create_api_model.py +0 -0
  112. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_model.py +0 -0
  113. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_post_model.py +0 -0
  114. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_put_model.py +0 -0
  115. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_short_api_result.py +0 -0
  116. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_type.py +0 -0
  117. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/link_update_api_model.py +0 -0
  118. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/manual_rerun_api_result.py +0 -0
  119. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model.py +0 -0
  120. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_extraction_model.py +0 -0
  121. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/manual_rerun_select_test_results_api_model_filter.py +0 -0
  122. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/manual_rerun_test_result_api_model.py +0 -0
  123. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/manual_rerun_test_result_api_model_test_result_ids.py +0 -0
  124. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/operation.py +0 -0
  125. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/parameter_api_result.py +0 -0
  126. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/parameter_iteration_model.py +0 -0
  127. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/parameter_short_api_result.py +0 -0
  128. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/parameter_short_model.py +0 -0
  129. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/parameters_filter_api_model.py +0 -0
  130. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/problem_details.py +0 -0
  131. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/project_api_result.py +0 -0
  132. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/project_attributes_filter_model.py +0 -0
  133. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/project_type_model.py +0 -0
  134. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/projects_filter_model.py +0 -0
  135. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/projects_filter_model_autotests_count.py +0 -0
  136. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/projects_filter_model_checklists_count.py +0 -0
  137. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/projects_filter_model_created_date.py +0 -0
  138. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/projects_filter_model_shared_steps_count.py +0 -0
  139. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/projects_filter_model_test_cases_count.py +0 -0
  140. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/section_model.py +0 -0
  141. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/section_post_model.py +0 -0
  142. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/section_shared_step.py +0 -0
  143. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/section_with_steps_model.py +0 -0
  144. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/shared_step_model.py +0 -0
  145. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/shared_step_result_api_model.py +0 -0
  146. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/step_comment_api_model.py +0 -0
  147. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/step_model.py +0 -0
  148. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/step_post_model.py +0 -0
  149. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/step_result_api_model.py +0 -0
  150. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/tag_model.py +0 -0
  151. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_result_link_api_result.py +0 -0
  152. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_result_outcome.py +0 -0
  153. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_result_response.py +0 -0
  154. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_result_short_response.py +0 -0
  155. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_result_short_response_status.py +0 -0
  156. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_result_step_comment_update_request.py +0 -0
  157. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_result_update_request.py +0 -0
  158. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_results_filter_api_model.py +0 -0
  159. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_results_filter_api_model_duration.py +0 -0
  160. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_run_api_result.py +0 -0
  161. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_run_api_result_status.py +0 -0
  162. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_run_state.py +0 -0
  163. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_status_api_result.py +0 -0
  164. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_status_api_type.py +0 -0
  165. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_status_model.py +0 -0
  166. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/test_status_type.py +0 -0
  167. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/update_empty_test_run_api_model.py +0 -0
  168. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/update_link_api_model.py +0 -0
  169. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/validation_problem_details.py +0 -0
  170. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_api_result.py +0 -0
  171. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_entity_type_api_model.py +0 -0
  172. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_filter_api_model.py +0 -0
  173. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_filter_api_model_duration.py +0 -0
  174. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_id_api_model.py +0 -0
  175. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_parameter_key_api_model.py +0 -0
  176. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_parameter_key_api_result.py +0 -0
  177. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_priority_api_model.py +0 -0
  178. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_priority_model.py +0 -0
  179. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_select_api_model.py +0 -0
  180. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_select_api_model_filter.py +0 -0
  181. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_short_api_result.py +0 -0
  182. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_source_type_model.py +0 -0
  183. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_state_api_model.py +0 -0
  184. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_states.py +0 -0
  185. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/work_item_type_model.py +0 -0
  186. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/workflow_api_result.py +0 -0
  187. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model/workflow_status_api_result.py +0 -0
  188. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/model_utils.py +0 -0
  189. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/models/__init__.py +0 -0
  190. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_adapters/rest.py +0 -0
  191. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/__init__.py +0 -0
  192. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/api/__init__.py +0 -0
  193. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/api/completion_api.py +0 -0
  194. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/api/health_api.py +0 -0
  195. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/api/system_api.py +0 -0
  196. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/api/test_results_api.py +0 -0
  197. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/api/workers_api.py +0 -0
  198. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/api_client.py +0 -0
  199. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/apis/__init__.py +0 -0
  200. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/configuration.py +0 -0
  201. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/exceptions.py +0 -0
  202. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/__init__.py +0 -0
  203. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/completion_response.py +0 -0
  204. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/health_status_response.py +0 -0
  205. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/register_request.py +0 -0
  206. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/register_response.py +0 -0
  207. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/set_worker_status_request.py +0 -0
  208. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/set_worker_status_response.py +0 -0
  209. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/shutdown_response.py +0 -0
  210. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/test_result_cut_api_model.py +0 -0
  211. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model/test_result_save_response.py +0 -0
  212. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/model_utils.py +0 -0
  213. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/models/__init__.py +0 -0
  214. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/api_client_syncstorage/rest.py +0 -0
  215. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit.py +0 -0
  216. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/__init__.py +0 -0
  217. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/app_properties.py +0 -0
  218. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/__init__.py +0 -0
  219. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/client_configuration.py +0 -0
  220. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/converter.py +0 -0
  221. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/helpers/__init__.py +0 -0
  222. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/helpers/bulk_autotest_helper.py +0 -0
  223. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/helpers/threads_manager.py +0 -0
  224. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/models/__init__.py +0 -0
  225. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/models/threads_for_create_and_result.py +0 -0
  226. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/client/models/threads_for_update_and_result.py +0 -0
  227. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/configurations/__init__.py +0 -0
  228. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/configurations/properties_names.py +0 -0
  229. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/decorators.py +0 -0
  230. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/dynamic_methods.py +0 -0
  231. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/__init__.py +0 -0
  232. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/adapter_mode.py +0 -0
  233. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/fixture.py +0 -0
  234. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/link.py +0 -0
  235. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/link_type.py +0 -0
  236. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/outcome_type.py +0 -0
  237. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/status_type.py +0 -0
  238. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/step_result.py +0 -0
  239. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/test_result.py +0 -0
  240. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/models/test_result_with_all_fixture_step_results_model.py +0 -0
  241. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/__init__.py +0 -0
  242. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/adapter_manager.py +0 -0
  243. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/adapter_manager_configuration.py +0 -0
  244. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/fixture_manager.py +0 -0
  245. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/fixture_storage.py +0 -0
  246. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/logger.py +0 -0
  247. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/plugin_manager.py +0 -0
  248. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/retry.py +0 -0
  249. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/step_manager.py +0 -0
  250. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/step_result_storage.py +0 -0
  251. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/sync_storage/__init__.py +0 -0
  252. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/sync_storage/sync_storage_runner.py +0 -0
  253. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/test_run_metadata.py +0 -0
  254. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/services/utils.py +0 -0
  255. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/step.py +0 -0
  256. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/utils/__init__.py +0 -0
  257. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons/utils/html_escape_utils.py +0 -0
  258. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons.egg-info/dependency_links.txt +0 -0
  259. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons.egg-info/requires.txt +0 -0
  260. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/src/testit_python_commons.egg-info/top_level.txt +0 -0
  261. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/tests/test_app_properties.py +0 -0
  262. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.post580}/tests/test_dynamic_methods.py +0 -0
  263. {testit_python_commons-5.1.2.post580 → testit_python_commons-5.1.3.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.2.post580
3
+ Version: 5.1.3.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.2.post580"
3
+ VERSION = "5.1.3.post580"
4
4
 
5
5
  setup(
6
6
  name='testit-python-commons',
@@ -30,6 +30,7 @@ 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 testit_python_commons.client.helpers.test_result_matching import pick_best_in_progress_id
33
34
  from typing import List
34
35
 
35
36
  from testit_python_commons.models.link import Link
@@ -62,6 +63,7 @@ class ApiClientWorker:
62
63
  self.__workflows_api = WorkflowsApi(api_client=api_client)
63
64
  self.__config = config
64
65
  self.__status_codes = self.__get_status_codes()
66
+ self.__claimed_in_progress_ids = set()
65
67
 
66
68
  @staticmethod
67
69
  @adapter_logger
@@ -535,37 +537,38 @@ class ApiClientWorker:
535
537
  logging.debug(f'Autotest was linked with workItem "{work_item_id}" by global id "{autotest_global_id}')
536
538
 
537
539
  @adapter_logger
538
- def find_in_progress_test_result_id(self, external_id: str):
540
+ def find_in_progress_test_result_id(self, external_id: str, parameters=None):
539
541
  if not external_id:
540
542
  return None
541
543
 
542
- matches = []
544
+ candidates = []
543
545
  for item in self.__get_test_results():
544
546
  if item is None:
545
547
  continue
546
- if getattr(item, "autotest_external_id", None) == external_id:
547
- matches.append(item)
548
-
549
- if not matches:
550
- return None
551
-
552
- orphan_id = None
553
- for item in matches:
548
+ if getattr(item, "autotest_external_id", None) != external_id:
549
+ continue
554
550
  result_id = getattr(item, "id", None)
555
551
  if result_id is None:
556
552
  continue
557
553
  result_id_str = str(result_id)
558
- if self.__has_valid_test_point_id_v2(result_id_str):
559
- return result_id_str
560
- if orphan_id is None:
561
- orphan_id = result_id_str
562
- return orphan_id
563
-
564
- def __has_valid_test_point_id_v2(self, test_result_id: str) -> bool:
565
- """Hack: adapters OpenAPI omits testPointId — read GET /api/v2/testResults/{id}."""
554
+ if result_id_str in self.__claimed_in_progress_ids:
555
+ continue
556
+ meta = self.__get_test_result_v2_meta(result_id_str)
557
+ candidates.append({
558
+ "id": result_id_str,
559
+ "has_test_point": self.__is_valid_test_point_id(meta.get("testPointId")),
560
+ "parameters": meta.get("parameters") or {},
561
+ })
562
+
563
+ chosen = pick_best_in_progress_id(candidates, parameters)
564
+ if chosen:
565
+ self.__claimed_in_progress_ids.add(chosen)
566
+ return chosen
567
+
568
+ def __get_test_result_v2_meta(self, test_result_id: str) -> dict:
569
+ """Hack: adapters OpenAPI omits testPointId/parameters — read GET /api/v2/testResults/{id}."""
566
570
  import json
567
571
  import ssl
568
- import urllib.error
569
572
  import urllib.request
570
573
 
571
574
  base = (self.__config.get_url() or "").rstrip("/")
@@ -583,15 +586,21 @@ class ApiClientWorker:
583
586
  if not self.__config.get_cert_validation():
584
587
  context = ssl._create_unverified_context()
585
588
  with urllib.request.urlopen(request, timeout=10, context=context) as response:
586
- payload = json.loads(response.read().decode("utf-8"))
587
- test_point_id = payload.get("testPointId")
588
- if test_point_id is None:
589
- return False
590
- value = str(test_point_id)
591
- return bool(value) and value != "00000000-0000-0000-0000-000000000000"
589
+ return json.loads(response.read().decode("utf-8")) or {}
592
590
  except Exception as exc:
593
591
  logging.debug("v2 getTestResult %s failed: %s", test_result_id, exc)
592
+ return {}
593
+
594
+ @staticmethod
595
+ def __is_valid_test_point_id(test_point_id) -> bool:
596
+ if test_point_id is None:
594
597
  return False
598
+ value = str(test_point_id)
599
+ return bool(value) and value != "00000000-0000-0000-0000-000000000000"
600
+
601
+ def __has_valid_test_point_id_v2(self, test_result_id: str) -> bool:
602
+ meta = self.__get_test_result_v2_meta(test_result_id)
603
+ return self.__is_valid_test_point_id(meta.get("testPointId"))
595
604
 
596
605
  @adapter_logger
597
606
  @retry
@@ -624,7 +633,10 @@ class ApiClientWorker:
624
633
  @adapter_logger
625
634
  @retry
626
635
  def __load_test_result(self, test_result: TestResult) -> str:
627
- existing_id = self.find_in_progress_test_result_id(test_result.get_external_id())
636
+ existing_id = self.find_in_progress_test_result_id(
637
+ test_result.get_external_id(),
638
+ test_result.get_parameters(),
639
+ )
628
640
  if existing_id:
629
641
  return self.__update_existing_test_result(existing_id, test_result)
630
642
 
@@ -0,0 +1,41 @@
1
+ """Match InProgress test results by parameters (parametrized mode 0)."""
2
+
3
+
4
+ def normalize_parameters(parameters) -> dict:
5
+ if not parameters:
6
+ return {}
7
+ if isinstance(parameters, dict):
8
+ return {str(k): "" if v is None else str(v) for k, v in parameters.items()}
9
+ return {}
10
+
11
+
12
+ def parameters_empty(parameters) -> bool:
13
+ return not normalize_parameters(parameters)
14
+
15
+
16
+ def pick_best_in_progress_id(candidates: list, incoming_parameters=None):
17
+ """
18
+ candidates: [{id: str, has_test_point: bool, parameters: dict}, ...]
19
+ Prefer: exact param match > empty TMS params (WI without params) > others skipped if incompatible.
20
+ Among equal match quality: prefer valid testPointId.
21
+ """
22
+ incoming = normalize_parameters(incoming_parameters)
23
+ ranked = []
24
+
25
+ for candidate in candidates:
26
+ if not candidate or not candidate.get("id"):
27
+ continue
28
+ cand_params = normalize_parameters(candidate.get("parameters"))
29
+ if cand_params == incoming:
30
+ match_score = 0
31
+ elif parameters_empty(cand_params):
32
+ match_score = 1
33
+ else:
34
+ continue
35
+ tp_score = 0 if candidate.get("has_test_point") else 1
36
+ ranked.append(((match_score, tp_score), candidate["id"]))
37
+
38
+ if not ranked:
39
+ return None
40
+ ranked.sort(key=lambda item: item[0])
41
+ return ranked[0][1]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: testit-python-commons
3
- Version: 5.1.2.post580
3
+ Version: 5.1.3.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
@@ -223,6 +223,7 @@ src/testit_python_commons/client/client_configuration.py
223
223
  src/testit_python_commons/client/converter.py
224
224
  src/testit_python_commons/client/helpers/__init__.py
225
225
  src/testit_python_commons/client/helpers/bulk_autotest_helper.py
226
+ src/testit_python_commons/client/helpers/test_result_matching.py
226
227
  src/testit_python_commons/client/helpers/threads_manager.py
227
228
  src/testit_python_commons/client/models/__init__.py
228
229
  src/testit_python_commons/client/models/threads_for_create_and_result.py