codemagic-cli-tools 0.53.2__tar.gz → 0.53.4__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 (432) hide show
  1. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/PKG-INFO +1 -1
  2. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/pyproject.toml +8 -6
  3. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/__version__.py +1 -1
  4. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/__version__.py-e +1 -1
  5. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/enums.py +52 -0
  6. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xctests/xcresulttool.py +51 -2
  7. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/certificates_action_group.py +15 -42
  8. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/actions/fetch_signing_files_action.py +2 -13
  9. codemagic_cli_tools-0.53.4/tests/apple/resources/enums/test_certificate_type.py +159 -0
  10. codemagic_cli_tools-0.53.4/tests/models/xctests/test_xcresulttool.py +24 -0
  11. codemagic_cli_tools-0.53.2/tests/apple/resources/enums/test_certificate_type.py +0 -12
  12. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/LICENSE +0 -0
  13. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/README.md +0 -0
  14. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/__init__.py +0 -0
  15. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/__init__.py +0 -0
  16. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/__init__.py +0 -0
  17. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/api_client.py +0 -0
  18. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/api_error.py +0 -0
  19. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/api_session.py +0 -0
  20. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/app_store_publishing/__init__.py +0 -0
  21. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/app_store_publishing/app_store_version_phased_releases.py +0 -0
  22. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/apps/__init__.py +0 -0
  23. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/apps/apps.py +0 -0
  24. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/builds/__init__.py +0 -0
  25. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/builds/builds.py +0 -0
  26. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/json_web_token_manager.py +0 -0
  27. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/provisioning/__init__.py +0 -0
  28. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/provisioning/bundle_id_capabilities.py +0 -0
  29. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/provisioning/bundle_ids.py +0 -0
  30. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/provisioning/devices.py +0 -0
  31. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/provisioning/profiles.py +0 -0
  32. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/provisioning/signing_certificates.py +0 -0
  33. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/resource_manager.py +0 -0
  34. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/testflight/__init__.py +0 -0
  35. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/testflight/beta_groups.py +0 -0
  36. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/type_declarations.py +0 -0
  37. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/__init__.py +0 -0
  38. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/app_store_version_localizations.py +0 -0
  39. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/app_store_version_submissions.py +0 -0
  40. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/app_store_versions.py +0 -0
  41. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/beta_app_review_submissions.py +0 -0
  42. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/beta_build_localizations.py +0 -0
  43. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/pre_release_versions.py +0 -0
  44. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/review_submission_items.py +0 -0
  45. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/app_store_connect/versioning/review_submissions.py +0 -0
  46. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/__init__.py +0 -0
  47. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/app.py +0 -0
  48. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/app_store_version.py +0 -0
  49. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/app_store_version_localization.py +0 -0
  50. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/app_store_version_phased_release.py +0 -0
  51. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/app_store_version_submission.py +0 -0
  52. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/beta_app_localization.py +0 -0
  53. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/beta_app_review_detail.py +0 -0
  54. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/beta_app_review_submission.py +0 -0
  55. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/beta_build_localization.py +0 -0
  56. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/beta_group.py +0 -0
  57. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/build.py +0 -0
  58. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/build_beta_detail.py +0 -0
  59. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/bundle_id.py +0 -0
  60. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/bundle_id_capability.py +0 -0
  61. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/device.py +0 -0
  62. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/error_response.py +0 -0
  63. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/pre_release_version.py +0 -0
  64. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/profile.py +0 -0
  65. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/resource.py +0 -0
  66. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/review_submission.py +0 -0
  67. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/review_submission_item.py +0 -0
  68. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/apple/resources/signing_certificate.py +0 -0
  69. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/__init__.py +0 -0
  70. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/action.py +0 -0
  71. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/action_group.py +0 -0
  72. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/__init__.py +0 -0
  73. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/action_callable.py +0 -0
  74. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/argument.py +0 -0
  75. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/argument_formatter.py +0 -0
  76. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/argument_parser_builder.py +0 -0
  77. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/argument_properties.py +0 -0
  78. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/common_argument_types.py +0 -0
  79. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/argument/typed_cli_argument.py +0 -0
  80. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/cli_app.py +0 -0
  81. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/cli_help_formatter.py +0 -0
  82. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/cli_process.py +0 -0
  83. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/cli_process_stream.py +0 -0
  84. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/cli_types.py +0 -0
  85. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/colors.py +0 -0
  86. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/cli/environment.py +0 -0
  87. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/data/jars/bundletool-all-1.13.1.jar +0 -0
  88. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/__init__.py +0 -0
  89. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/errors.py +0 -0
  90. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/firebase_client.py +0 -0
  91. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/google_client.py +0 -0
  92. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resource_managers/__init__.py +0 -0
  93. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resource_managers/mixins/__init__.py +0 -0
  94. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resource_managers/mixins/acting_manager_mixin.py +0 -0
  95. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resource_managers/mixins/listing_manager_mixin.py +0 -0
  96. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resource_managers/release_manager.py +0 -0
  97. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resource_managers/resource_manager.py +0 -0
  98. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resources/__init__.py +0 -0
  99. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resources/identifiers/__init__.py +0 -0
  100. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resources/identifiers/app_identifier.py +0 -0
  101. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resources/identifiers/resource_identifier.py +0 -0
  102. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resources/release.py +0 -0
  103. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resources/release_notes.py +0 -0
  104. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google/resources/resource.py +0 -0
  105. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/__init__.py +0 -0
  106. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/api_client.py +0 -0
  107. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/api_error.py +0 -0
  108. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/resources/__init__.py +0 -0
  109. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/resources/edit.py +0 -0
  110. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/resources/enums.py +0 -0
  111. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/resources/resource.py +0 -0
  112. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/google_play/resources/track.py +0 -0
  113. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/mixins/__init__.py +0 -0
  114. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/mixins/path_finder.py +0 -0
  115. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/mixins/running_cli_app.py +0 -0
  116. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/mixins/str_converter.py +0 -0
  117. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/__init__.py +0 -0
  118. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/altool/__init__.py +0 -0
  119. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/altool/altool.py +0 -0
  120. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/altool/altool_result.py +0 -0
  121. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/altool/enums.py +0 -0
  122. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/android_signing_info.py +0 -0
  123. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/application_package/__init__.py +0 -0
  124. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/application_package/abstract_package.py +0 -0
  125. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/application_package/ipa.py +0 -0
  126. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/application_package/macos_package.py +0 -0
  127. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/bundle_id_detector.py +0 -0
  128. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/certificate.py +0 -0
  129. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/certificate_attributes.py +0 -0
  130. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/certificate_p12_exporter.py +0 -0
  131. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/code_sign_entitlements.py +0 -0
  132. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/code_signing_settings_manager.py +0 -0
  133. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/enums.py +0 -0
  134. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/export_options.py +0 -0
  135. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/json_serializable.py +0 -0
  136. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/junit/__init__.py +0 -0
  137. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/junit/definitions.py +0 -0
  138. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/junit/printer.py +0 -0
  139. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/keystore.py +0 -0
  140. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/pbx_project.py +0 -0
  141. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/private_key.py +0 -0
  142. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/provisioning_profile.py +0 -0
  143. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/simulator/__init__.py +0 -0
  144. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/simulator/core_simulator_service.py +0 -0
  145. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/simulator/runtime.py +0 -0
  146. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/simulator/simulator.py +0 -0
  147. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/table/__init__.py +0 -0
  148. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/table/line.py +0 -0
  149. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/table/table.py +0 -0
  150. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xcode.py +0 -0
  151. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xcodebuild.py +0 -0
  152. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xcpretty.py +0 -0
  153. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xctests/__init__.py +0 -0
  154. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xctests/collector.py +0 -0
  155. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xctests/converter.py +0 -0
  156. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/models/xctests/xcresult.py +0 -0
  157. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/py.typed +0 -0
  158. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/scripts/code_signing_manager.rb +0 -0
  159. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/shell_tools/__init__.py +0 -0
  160. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/shell_tools/abstract_shell_tool.py +0 -0
  161. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/shell_tools/keytool.py +0 -0
  162. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/__init__.py +0 -0
  163. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/_xcode_project/__init__.py +0 -0
  164. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/_xcode_project/arguments.py +0 -0
  165. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/android_app_bundle.py +0 -0
  166. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/android_keystore/__init__.py +0 -0
  167. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/android_keystore/__main__.py +0 -0
  168. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/android_keystore/android_keystore.py +0 -0
  169. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/android_keystore/argument_types.py +0 -0
  170. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/android_keystore/arguments.py +0 -0
  171. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/__init__.py +0 -0
  172. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/__main__.py +0 -0
  173. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/abstract_base_action.py +0 -0
  174. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_group.py +0 -0
  175. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/__init__.py +0 -0
  176. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_localizations_action_group.py +0 -0
  177. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_phased_releases_action_group.py +0 -0
  178. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_submissions_action_group.py +0 -0
  179. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/app_store_versions_action_group.py +0 -0
  180. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/apps_action_group.py +0 -0
  181. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/beta_app_review_submissions_action_group.py +0 -0
  182. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/beta_build_localizations_action_group.py +0 -0
  183. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/beta_groups_action_group.py +0 -0
  184. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/builds_action_group.py +0 -0
  185. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/bundle_ids_action_group.py +0 -0
  186. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/devices_action_group.py +0 -0
  187. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/profiles_action_group.py +0 -0
  188. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/review_submission_items_actions_group.py +0 -0
  189. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/action_groups/review_submissions_actions_group.py +0 -0
  190. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/actions/__init__.py +0 -0
  191. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/actions/latest_build_number_actions.py +0 -0
  192. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/actions/publish_action.py +0 -0
  193. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/actions/submit_to_app_store_action.py +0 -0
  194. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/actions/submit_to_testflight_action.py +0 -0
  195. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/app_store_connect.py +0 -0
  196. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/arguments.py +0 -0
  197. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/errors.py +0 -0
  198. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/mixins/__init__.py +0 -0
  199. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/mixins/resource_manager_mixin.py +0 -0
  200. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/mixins/signing_file_saver_mixin.py +0 -0
  201. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/app_store_connect/resource_printer.py +0 -0
  202. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/codemagic_cli_tools.py +0 -0
  203. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/__init__.py +0 -0
  204. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/__main__.py +0 -0
  205. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/action_groups/__init__.py +0 -0
  206. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/action_groups/firebase_action_groups.py +0 -0
  207. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/action_groups/releases_action_group.py +0 -0
  208. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/actions/__init__.py +0 -0
  209. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/actions/get_latest_build_version_action.py +0 -0
  210. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/argument_types.py +0 -0
  211. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/arguments.py +0 -0
  212. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/errors.py +0 -0
  213. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +0 -0
  214. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution_action.py +0 -0
  215. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/firebase_app_distribution/resource_printer.py +0 -0
  216. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/git_changelog.py +0 -0
  217. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/__init__.py +0 -0
  218. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/__main__.py +0 -0
  219. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/action_groups/__init__.py +0 -0
  220. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/action_groups/google_play_action_groups.py +0 -0
  221. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/action_groups/tracks_action_group.py +0 -0
  222. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/actions/__init__.py +0 -0
  223. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/actions/get_latest_build_number_action.py +0 -0
  224. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/argument_types.py +0 -0
  225. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/arguments.py +0 -0
  226. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/errors.py +0 -0
  227. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/google_play.py +0 -0
  228. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/google_play/google_play_base_action.py +0 -0
  229. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/keychain.py +0 -0
  230. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/universal_apk_generator.py +0 -0
  231. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/tools/xcode_project.py +0 -0
  232. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/__init__.py +0 -0
  233. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/auditing/__init__.py +0 -0
  234. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/auditing/base_auditor.py +0 -0
  235. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/auditing/exception_auditor.py +0 -0
  236. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/auditing/http_request_auditor.py +0 -0
  237. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/backwards_file_reader.py +0 -0
  238. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/case_conversion.py +0 -0
  239. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/decorators.py +0 -0
  240. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/levenshtein_distance.py +0 -0
  241. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/log.py +0 -0
  242. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/src/codemagic/utilities/versions.py +0 -0
  243. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/__init__.py +0 -0
  244. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/__init__.py +0 -0
  245. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/__init__.py +0 -0
  246. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/app_store_publishing/__init__.py +0 -0
  247. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/app_store_publishing/test_app_store_version_phased_releases.py +0 -0
  248. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/apps/__init__.py +0 -0
  249. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/apps/test_apps.py +0 -0
  250. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/builds/__init__.py +0 -0
  251. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/builds/test_builds.py +0 -0
  252. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/provisioning/__init__.py +0 -0
  253. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/provisioning/conftest.py +0 -0
  254. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/provisioning/test_bundle_id_capabilities.py +0 -0
  255. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/provisioning/test_bundle_ids.py +0 -0
  256. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/provisioning/test_devices.py +0 -0
  257. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/provisioning/test_profiles.py +0 -0
  258. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/provisioning/test_signing_certificates.py +0 -0
  259. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/resource_manager_test_base.py +0 -0
  260. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/test_api_client.py +0 -0
  261. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/test_api_session.py +0 -0
  262. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/test_json_web_token_manager.py +0 -0
  263. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/test_resource_manager.py +0 -0
  264. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/testflight/__init__.py +0 -0
  265. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/testflight/test_beta_groups.py +0 -0
  266. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/__init__.py +0 -0
  267. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_app_store_version_localizations.py +0 -0
  268. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_app_store_version_submissions.py +0 -0
  269. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_app_store_versions.py +0 -0
  270. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_beta_app_review_submissions.py +0 -0
  271. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_beta_build_localizations.py +0 -0
  272. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_pre_release_versions.py +0 -0
  273. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_review_submission_items.py +0 -0
  274. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/app_store_connect/versioning/test_review_submissions.py +0 -0
  275. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/__init__.py +0 -0
  276. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/conftest.py +0 -0
  277. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/enums/__init__.py +0 -0
  278. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/enums/test_capability_type.py +0 -0
  279. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/enums/test_profile_type.py +0 -0
  280. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/app.json +0 -0
  281. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/app_store_version.json +0 -0
  282. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/app_store_version_phased_release.json +0 -0
  283. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/build.json +0 -0
  284. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/bundle_id.json +0 -0
  285. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/bundle_id_capability.json +0 -0
  286. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/certificate.json +0 -0
  287. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/device.json +0 -0
  288. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/error_response.json +0 -0
  289. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/error_response_entity_state_invalid.json +0 -0
  290. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/error_response_with_links.json +0 -0
  291. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/mock_resource.json +0 -0
  292. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/pre_release_version.json +0 -0
  293. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/mocks/profile.json +0 -0
  294. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_app_resource.py +0 -0
  295. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_app_store_version_phased_release_resource.py +0 -0
  296. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_app_store_version_resource.py +0 -0
  297. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_build_resource.py +0 -0
  298. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_bundle_id_capability_resource.py +0 -0
  299. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_bundle_id_resource.py +0 -0
  300. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_device_resource.py +0 -0
  301. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_error_response.py +0 -0
  302. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_pre_release_version_resource.py +0 -0
  303. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_profile_resource.py +0 -0
  304. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_resource.py +0 -0
  305. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_signing_certificate_resource.py +0 -0
  306. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/apple/resources/test_undefined_resource_fields.py +0 -0
  307. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/__init__.py +0 -0
  308. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/argument/__init__.py +0 -0
  309. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/argument/common_argument_types/__init__.py +0 -0
  310. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/argument/common_argument_types/test_bounded_number.py +0 -0
  311. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/argument/common_argument_types/test_iso_8601_datetime.py +0 -0
  312. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/argument/common_argument_types/test_maybe_dir.py +0 -0
  313. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/argument/test_argument.py +0 -0
  314. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/mocks/utf-8-sample.txt +0 -0
  315. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/test_cli_process.py +0 -0
  316. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/cli/test_decorators.py +0 -0
  317. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/conftest.py +0 -0
  318. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google/__init__.py +0 -0
  319. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google/conftest.py +0 -0
  320. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google/test_firebase_client.py +0 -0
  321. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google/test_live_firebase_client.py +0 -0
  322. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/__init__.py +0 -0
  323. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/resources/__init__.py +0 -0
  324. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/resources/conftest.py +0 -0
  325. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/resources/mocks/edit.json +0 -0
  326. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/resources/mocks/track.json +0 -0
  327. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/resources/test_edit_resource.py +0 -0
  328. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/resources/test_resource_print.py +0 -0
  329. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/resources/test_track_resource.py +0 -0
  330. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/google_play/test_api_client.py +0 -0
  331. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mixins/__init__.py +0 -0
  332. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mixins/test_path_finder.py +0 -0
  333. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mixins/test_string_converter.py +0 -0
  334. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mocks/certificate.asn1 +0 -0
  335. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mocks/encrypted.pem +0 -0
  336. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mocks/encrypted.pem.pub +0 -0
  337. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mocks/unencrypted.pem +0 -0
  338. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/mocks/unencrypted.pem.pub +0 -0
  339. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/__init__.py +0 -0
  340. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/altool/__init__.py +0 -0
  341. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/altool/mocks/mock_failure_auth.txt +0 -0
  342. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/altool/mocks/mock_failure_other.txt +0 -0
  343. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/altool/mocks/mock_upload_success.json +0 -0
  344. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/altool/mocks/mock_validation_failure.json +0 -0
  345. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/altool/test_altool_result.py +0 -0
  346. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/altool/test_altool_retrying.py +0 -0
  347. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/conftest.py +0 -0
  348. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/enums/__init__.py +0 -0
  349. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/enums/test_resource_enum.py +0 -0
  350. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/junit/__init__.py +0 -0
  351. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/junit/mocks/testsuite.xml +0 -0
  352. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/junit/test_xml_generation.py +0 -0
  353. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/certificate-no-password.p12 +0 -0
  354. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/certificate.p12 +0 -0
  355. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/codemagic_io_wildcard_development.mobileprovision +0 -0
  356. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/export_options.plist +0 -0
  357. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock.ipa +0 -0
  358. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock.xcarchive/Products/Applications/Capybara App.app/Capybara App +0 -0
  359. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock_0_icloud_container_environments.plist +0 -0
  360. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock_1_icloud_container_environments.plist +0 -0
  361. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock_2_icloud_container_environments.plist +0 -0
  362. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock_openssh_private_key +0 -0
  363. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock_rsa_private_key +0 -0
  364. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/mocks/mock_xcode/Contents/version.plist +0 -0
  365. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/simulator/__init__.py +0 -0
  366. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/simulator/mocks/devices.json +0 -0
  367. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/simulator/mocks/simulator.json +0 -0
  368. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/simulator/test_runtime.py +0 -0
  369. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/simulator/test_simulator.py +0 -0
  370. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_certificate.py +0 -0
  371. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_certificate_attributes.py +0 -0
  372. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_code_sign_entitlements.py +0 -0
  373. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_export_options.py +0 -0
  374. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_private_key.py +0 -0
  375. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_provisioning_profile.py +0 -0
  376. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_table.py +0 -0
  377. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/test_xcode.py +0 -0
  378. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/__init__.py +0 -0
  379. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/conftest.py +0 -0
  380. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_1NtPgUPcB1A83X977l5Q91ElstUeVDnqAhumk_VJG8DIS4GA1sb8ElPPHZZGYEHmNvnHU1VVaPDCw1tI8n3uXg__.json +0 -0
  381. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_5rAUs3HknUI7DU8Jyc5RlFcosqCXTOV-qwOaOE1Mul_ppK8QCta-NSxxCdtVg6i12km4zTR5l0SjgzfHGUNxog__.json +0 -0
  382. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_97T9qQZ3dEI1oDS6NvYTPcFk_jUXFJ0NRwyd5FZ2S585JGMtlqbF28Hc85yeifgKEnNoInoW93Za9c5QJCspeQ__.json +0 -0
  383. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_DVcJZnHFaQQlzl8czovv7RuDRQIToEr5_3lLe-Mn1Sm6VreJ5xoXEFqBaWNv0XRmSg00NJ77XzQKgddhfkuk7w__.json +0 -0
  384. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_FZMbIp5VAUEiJv1wUUM-K78Dtmb4o-titbTusDJqRuarbS9OatzAykygXo4NUqEoR9sxCIoeu8VDioQmbba6mw__.json +0 -0
  385. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_Hj6SOUxY1APmxdQEA2HdqbA52GD3WJE571nqr_Z-w8vi_buxP-GUjNxCsGYQvnKnnwlyykwxY-KJmjqKYmPyXQ__.json +0 -0
  386. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_NnCmQ8rMqVyUBgL3ZDjfjJ9Vt1AMGeMzZPkDH30rGMYer0pFDpp4UDZlCEHRImO-48LdC_KdcbjP70IZA6zKUQ__.json +0 -0
  387. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_YK9aPHVT-grv_ZVooRT79GBO9n82BNogkuWVzFO6itJEtbtsRTQpK2-0ZDLot1JpCfPb26aZwEZjeb9G4GHiBQ__.json +0 -0
  388. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0__H1_RrdBT9b-ZhkWCQiRKpHlwURmyWUudeOhj5UslLXhXl8mr9w5CGqdobi9A5wCVEIRMsO4yuFyzx2gMPr-_Q__.json +0 -0
  389. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/0_evvkuGf92MVrmIvhr07911LuRTiPBKDjIQ0q_7L-mPGGYkWVKMBPQ5pB5lbjoaOnvr0fpC9k003EunfwSdss2g__.json +0 -0
  390. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/mocks/actions_invocation_record.json +0 -0
  391. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/test_collector.py +0 -0
  392. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/test_converter.py +0 -0
  393. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/models/xctests/test_xcresult.py +0 -0
  394. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/__init__.py +0 -0
  395. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/__init__.py +0 -0
  396. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/conftest.py +0 -0
  397. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/mocks/android.ks +0 -0
  398. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.jks +0 -0
  399. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.p12 +0 -0
  400. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.jks +0 -0
  401. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.p12 +0 -0
  402. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/test_get_certificate.py +0 -0
  403. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/test_get_certificates.py +0 -0
  404. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/shell_tools/keytool/test_validate.py +0 -0
  405. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/__init__.py +0 -0
  406. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/__init__.py +0 -0
  407. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/action_groups/__init__.py +0 -0
  408. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/action_groups/test_apps_action_group.py +0 -0
  409. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/actions/__init__.py +0 -0
  410. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/actions/publish_action/__init__.py +0 -0
  411. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/actions/publish_action/test_publish_arguments.py +0 -0
  412. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/arguments/__init__.py +0 -0
  413. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/arguments/test_beta_build_localizations.py +0 -0
  414. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/conftest.py +0 -0
  415. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/mocks/AuthKeyMock.p8 +0 -0
  416. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/app_store_connect/test_from_cli_args.py +0 -0
  417. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/google_play/__init__.py +0 -0
  418. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/google_play/mocks/google_play_tracks.json +0 -0
  419. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/google_play/test_argument_types.py +0 -0
  420. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/google_play/test_google_play.py +0 -0
  421. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/mocks/firebase_releases.json +0 -0
  422. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/test_android_app_bundle.py +0 -0
  423. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/test_firebase_app_distribution.py +0 -0
  424. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/test_keychain.py +0 -0
  425. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/tools/test_universal_apk_generator.py +0 -0
  426. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/utilities/__init__.py +0 -0
  427. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/utilities/decorators/__init__.py +0 -0
  428. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/utilities/decorators/test_deprecated.py +0 -0
  429. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/utilities/test_backwards_file_reader.py +0 -0
  430. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/utilities/test_case_conversion.py +0 -0
  431. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/utilities/test_levenshtein_distance.py +0 -0
  432. {codemagic_cli_tools-0.53.2 → codemagic_cli_tools-0.53.4}/tests/utilities/test_versions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codemagic-cli-tools
3
- Version: 0.53.2
3
+ Version: 0.53.4
4
4
  Summary: CLI tools used in Codemagic builds
5
5
  Home-page: https://github.com/codemagic-ci-cd/cli-tools
6
6
  License: GPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "codemagic-cli-tools"
3
- version = "0.53.2"
3
+ version = "0.53.4"
4
4
  description = "CLI tools used in Codemagic builds"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -65,6 +65,11 @@ build-backend = "poetry.core.masonry.api"
65
65
  line-length = 120
66
66
 
67
67
  [tool.ruff]
68
+ line-length = 120
69
+ target-version = "py37"
70
+ exclude = [".venv", "stubs"]
71
+
72
+ [tool.ruff.lint]
68
73
  select = [
69
74
  "F", # https://beta.ruff.rs/docs/rules/#pyflakes-f
70
75
  "E", # https://beta.ruff.rs/docs/rules/#error-e
@@ -75,11 +80,8 @@ select = [
75
80
  "ISC", # https://beta.ruff.rs/docs/rules/#flake8-implicit-str-concat-isc
76
81
  "ASYNC", # https://beta.ruff.rs/docs/rules/#flake8-async-async
77
82
  ]
78
- line-length = 120
79
- target-version = "py37"
80
- exclude = [".venv", "stubs"]
81
83
 
82
- [tool.ruff.per-file-ignores]
84
+ [tool.ruff.lint.per-file-ignores]
83
85
  "__init__.py" = ["F401"]
84
86
  "doc.py" = ["E402"]
85
87
  "src/codemagic/apple/resources/*.py" = ["N815"]
@@ -87,7 +89,7 @@ exclude = [".venv", "stubs"]
87
89
  "src/codemagic/google_play/resources/*.py" = ["N815"]
88
90
  "src/codemagic/models/export_options.py" = ["N815"]
89
91
 
90
- [tool.ruff.isort]
92
+ [tool.ruff.lint.isort]
91
93
  force-single-line = true
92
94
 
93
95
  [tool.mypy]
@@ -1,5 +1,5 @@
1
1
  __title__ = "codemagic-cli-tools"
2
2
  __description__ = "CLI tools used in Codemagic builds"
3
- __version__ = '0.53.2'
3
+ __version__ = '0.53.4'
4
4
  __url__ = "https://github.com/codemagic-ci-cd/cli-tools"
5
5
  __licence__ = "GNU General Public License v3.0"
@@ -1,5 +1,5 @@
1
1
  __title__ = "codemagic-cli-tools"
2
2
  __description__ = "CLI tools used in Codemagic builds"
3
- __version__ = "0.53.2.dev"
3
+ __version__ = "0.53.4.dev"
4
4
  __url__ = "https://github.com/codemagic-ci-cd/cli-tools"
5
5
  __licence__ = "GNU General Public License v3.0"
@@ -1,7 +1,12 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import re
4
+ from collections import OrderedDict
5
+ from typing import List
6
+ from typing import Optional
7
+ from typing import Sequence
4
8
  from typing import Tuple
9
+ from typing import Union
5
10
 
6
11
  from codemagic.models.enums import ResourceEnum
7
12
  from codemagic.utilities.decorators import deprecated
@@ -157,7 +162,13 @@ class CapabilityType(ResourceEnum):
157
162
 
158
163
 
159
164
  class CertificateType(ResourceEnum):
165
+ """
166
+ https://developer.apple.com/documentation/appstoreconnectapi/certificatetype
167
+ """
168
+
160
169
  DEVELOPER_ID_APPLICATION = "DEVELOPER_ID_APPLICATION"
170
+ # Undocumented developer ID certificate with profile type "G2 Sub-CA"
171
+ DEVELOPER_ID_APPLICATION_G2 = "DEVELOPER_ID_APPLICATION_G2"
161
172
  DEVELOPER_ID_KEXT = "DEVELOPER_ID_KEXT"
162
173
  DEVELOPMENT = "DEVELOPMENT"
163
174
  DISTRIBUTION = "DISTRIBUTION"
@@ -200,6 +211,47 @@ class CertificateType(ResourceEnum):
200
211
  else:
201
212
  raise ValueError(f"Certificate type for profile type {profile_type} is unknown")
202
213
 
214
+ @classmethod
215
+ def resolve_applicable_types(
216
+ cls,
217
+ certificate_types: Optional[Union[CertificateType, Sequence[CertificateType]]] = None,
218
+ profile_type: Optional[ProfileType] = None,
219
+ ) -> List[CertificateType]:
220
+ """
221
+ Construct a list of unique certificate types based on the provided certificate and
222
+ provisioning profile types. Resolved types are ordered so that
223
+ - provided `certificate_types` come first in original ordering (if given),
224
+ - which is followed by `profile_type` primary accompanying certificate type and
225
+ finally `profile_type`'s secondary matching certificate type in case it exists.
226
+ """
227
+
228
+ types: List[CertificateType] = []
229
+
230
+ if isinstance(certificate_types, CertificateType):
231
+ types.append(certificate_types)
232
+ elif certificate_types:
233
+ types.extend(certificate_types)
234
+
235
+ if profile_type:
236
+ types.append(CertificateType.from_profile_type(profile_type))
237
+ # Include iOS and Mac App distribution certificate types backwards compatibility.
238
+ # In the past iOS and Mac App Store profiles used to map to iOS and Mac App distribution
239
+ # certificates, and consequently they too can be used with those profiles.
240
+ if profile_type is ProfileType.IOS_APP_STORE or profile_type is ProfileType.IOS_APP_ADHOC:
241
+ types.append(CertificateType.IOS_DISTRIBUTION)
242
+ elif profile_type is ProfileType.MAC_APP_STORE:
243
+ types.append(CertificateType.MAC_APP_DISTRIBUTION)
244
+
245
+ # Developer ID profiles can also be used with undocumented (as of 04.07.24) flavor
246
+ # of developer ID application certificates that have special G2 suffix in the type name.
247
+ # Said profiles themselves have the same type as before regardless of whether they
248
+ # are of type "G2 Sub-GA" or "Previous Sub-GA".
249
+ if profile_type in (ProfileType.MAC_APP_DIRECT, ProfileType.MAC_CATALYST_APP_DIRECT):
250
+ types.append(CertificateType.DEVELOPER_ID_APPLICATION_G2)
251
+
252
+ # Remove duplicate entries from the list in order-preserving way.
253
+ return list(OrderedDict.fromkeys(types))
254
+
203
255
 
204
256
  class ContentRightsDeclaration(ResourceEnum):
205
257
  DOES_NOT_USE_THIRD_PARTY_CONTENT = "DOES_NOT_USE_THIRD_PARTY_CONTENT"
@@ -2,7 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  import pathlib
5
+ import re
5
6
  import subprocess
7
+ from functools import lru_cache
6
8
  from tempfile import NamedTemporaryFile
7
9
  from typing import TYPE_CHECKING
8
10
  from typing import Any
@@ -11,9 +13,12 @@ from typing import List
11
13
  from typing import Optional
12
14
  from typing import Sequence
13
15
 
16
+ from packaging.version import Version
17
+
14
18
  from codemagic.cli import CommandArg
15
19
  from codemagic.mixins import RunningCliAppMixin
16
20
  from codemagic.mixins import StringConverterMixin
21
+ from codemagic.utilities import log
17
22
 
18
23
  if TYPE_CHECKING:
19
24
  from codemagic.cli import CliApp
@@ -26,6 +31,42 @@ class XcResultToolError(IOError):
26
31
 
27
32
 
28
33
  class XcResultTool(RunningCliAppMixin, StringConverterMixin):
34
+ @classmethod
35
+ @lru_cache(1)
36
+ def get_tool_version(cls) -> Optional[Version]:
37
+ # Cache xcresulttool version to avoid repeated checks.
38
+ # Assumes Xcode (and thus xcresulttool) version remains constant during execution.
39
+
40
+ cmd_args = ["xcrun", "xcresulttool", "version"]
41
+ try:
42
+ stdout = cls._run_command(cmd_args, "Failed to obtain xcresulttool version")
43
+ except XcResultToolError as e:
44
+ log.get_file_logger(cls).exception(str(e))
45
+ return None
46
+
47
+ version_output = cls._str(stdout.strip())
48
+ # Expected version output of xcresulttool (bundled with Xcode 16.0 beta 3) is as follows:
49
+ # xcresulttool version 23024, format version 3.53 (current)
50
+ match = re.match(r"^xcresulttool version (?P<version>\d+(\.\d+)?)", version_output)
51
+
52
+ if not match:
53
+ log.get_file_logger(cls).error("Failed to capture xcresulttool version from %r", version_output)
54
+ return None
55
+
56
+ return Version(match.group("version"))
57
+
58
+ @classmethod
59
+ def _requires_legacy_flag(cls) -> bool:
60
+ """
61
+ Starting from Xcode 16 beta 3 'xcresulttool get --format json' has been deprecated and
62
+ cannot be used without '--legacy' flag.
63
+ """
64
+
65
+ version = cls.get_tool_version()
66
+ if not version:
67
+ return False
68
+ return version >= Version("23021")
69
+
29
70
  @classmethod
30
71
  def get_bundle(cls, xcresult: pathlib.Path) -> Dict[str, Any]:
31
72
  cmd_args: List[CommandArg] = [
@@ -37,6 +78,10 @@ class XcResultTool(RunningCliAppMixin, StringConverterMixin):
37
78
  "--path",
38
79
  xcresult.expanduser(),
39
80
  ]
81
+
82
+ if cls._requires_legacy_flag():
83
+ cmd_args.append("--legacy")
84
+
40
85
  stdout = cls._run_command(cmd_args, f"Failed to get result bundle object from {xcresult}")
41
86
  return json.loads(stdout)
42
87
 
@@ -53,6 +98,10 @@ class XcResultTool(RunningCliAppMixin, StringConverterMixin):
53
98
  "--id",
54
99
  object_id,
55
100
  ]
101
+
102
+ if cls._requires_legacy_flag():
103
+ cmd_args.append("--legacy")
104
+
56
105
  stdout = cls._run_command(cmd_args, f"Failed to get result bundle object {object_id} from {xcresult}")
57
106
  return json.loads(stdout)
58
107
 
@@ -82,8 +131,8 @@ class XcResultTool(RunningCliAppMixin, StringConverterMixin):
82
131
  Replace default stdout stream with direct file handle to bypass stream
83
132
  processing in Python which can be very slow. For example
84
133
  `xcrun xcresulttool get --format json --path results.xcresult --id 'object-id'`
85
- can output 500K+ lines at 30+ MB. Processing it in small chunks in Python is very time
86
- consuming whereas using file handles is almost instantaneous.
134
+ can output 500K+ lines at 30+ MB. Processing it in small chunks in Python is very
135
+ time-consuming whereas using file handles is almost instantaneous.
87
136
  """
88
137
  with NamedTemporaryFile(mode="w+b") as stdout_fd:
89
138
  process = cli_app.execute(command_args, suppress_output=True, stdout=stdout_fd)
@@ -6,7 +6,6 @@ from typing import TYPE_CHECKING
6
6
  from typing import List
7
7
  from typing import Optional
8
8
  from typing import Sequence
9
- from typing import Set
10
9
  from typing import Union
11
10
  from typing import cast
12
11
 
@@ -166,10 +165,23 @@ class CertificatesActionGroup(AbstractBaseAction, metaclass=ABCMeta):
166
165
  raise AppStoreConnectError("Cannot create or save resource without certificate private key")
167
166
 
168
167
  _certificate_type: Optional[CertificateType] = _deprecated_kwargs.get("certificate_type")
169
- certificate_types_filter = self._resolve_certificate_types(_certificate_type, certificate_types, profile_type)
168
+ if isinstance(_certificate_type, CertificateType):
169
+ warning = (
170
+ "Deprecation warning! Keyword argument "
171
+ '"certificate_type: Optional[CertificateType]" is deprecated in favor of '
172
+ '"certificate_types: Optional[Union[CertificateType, Sequence[CertificateType]]]", '
173
+ "and is subject for removal."
174
+ )
175
+ self.logger.warning(Colors.RED(warning))
176
+ certificate_types = _certificate_type
177
+
178
+ certificate_types_filter = CertificateType.resolve_applicable_types(
179
+ certificate_types=certificate_types,
180
+ profile_type=profile_type,
181
+ )
170
182
 
171
183
  certificate_filter = self.api_client.signing_certificates.Filter(
172
- certificate_type=certificate_types_filter,
184
+ certificate_type=certificate_types_filter if certificate_types_filter else None,
173
185
  display_name=display_name,
174
186
  )
175
187
  certificates = self._list_resources(
@@ -196,42 +208,3 @@ class CertificatesActionGroup(AbstractBaseAction, metaclass=ABCMeta):
196
208
  )
197
209
 
198
210
  return certificates
199
-
200
- def _resolve_certificate_types(
201
- self,
202
- certificate_type: Optional[CertificateType],
203
- certificate_types: Optional[Union[CertificateType, Sequence[CertificateType]]],
204
- profile_type: Optional[ProfileType],
205
- ) -> Optional[List[CertificateType]]:
206
- types: Set[CertificateType] = set()
207
-
208
- if isinstance(certificate_types, CertificateType):
209
- types.add(certificate_types)
210
- elif certificate_types is not None:
211
- types.update(certificate_types)
212
-
213
- if isinstance(certificate_type, CertificateType):
214
- warning = (
215
- "Deprecation warning! Keyword argument "
216
- '"certificate_type: Optional[CertificateType]" is deprecated in favor of '
217
- '"certificate_types: Optional[Union[CertificateType, Sequence[CertificateType]]] = None", '
218
- "and is subject for removal."
219
- )
220
- self.logger.warning(Colors.RED(warning))
221
- types.add(certificate_type)
222
-
223
- if profile_type:
224
- types.add(CertificateType.from_profile_type(profile_type))
225
- # Include iOS and Mac App distribution certificate types backwards compatibility.
226
- # In the past iOS and Mac App Store profiles used to map to iOS and Mac App distribution
227
- # certificates, and consequently they too can be used with those profiles.
228
- if profile_type is ProfileType.IOS_APP_STORE:
229
- types.add(CertificateType.IOS_DISTRIBUTION)
230
- elif profile_type is ProfileType.IOS_APP_ADHOC:
231
- types.add(CertificateType.IOS_DISTRIBUTION)
232
- elif profile_type is ProfileType.MAC_APP_STORE:
233
- types.add(CertificateType.MAC_APP_DISTRIBUTION)
234
- elif profile_type is ProfileType.MAC_APP_DIRECT:
235
- types.add(CertificateType.DEVELOPER_ID_APPLICATION)
236
-
237
- return list(types) if types else None
@@ -121,18 +121,7 @@ class FetchSigningFilesAction(AbstractBaseAction, metaclass=ABCMeta):
121
121
  certificate_key_password: Optional[Types.CertificateKeyPasswordArgument],
122
122
  create_resource: bool,
123
123
  ) -> List[SigningCertificate]:
124
- certificate_types = [CertificateType.from_profile_type(profile_type)]
125
- # Include iOS and Mac App distribution certificate types backwards compatibility.
126
- # In the past iOS and Mac App Store profiles used to map to iOS and Mac App distribution
127
- # certificates, and we want to keep using existing certificates for as long as possible.
128
- if profile_type is ProfileType.IOS_APP_STORE:
129
- certificate_types.append(CertificateType.IOS_DISTRIBUTION)
130
- elif profile_type is ProfileType.IOS_APP_ADHOC:
131
- certificate_types.append(CertificateType.IOS_DISTRIBUTION)
132
- elif profile_type is ProfileType.MAC_APP_STORE:
133
- certificate_types.append(CertificateType.MAC_APP_DISTRIBUTION)
134
- elif profile_type is ProfileType.MAC_APP_DIRECT:
135
- certificate_types.append(CertificateType.DEVELOPER_ID_APPLICATION)
124
+ certificate_types = CertificateType.resolve_applicable_types(profile_type=profile_type)
136
125
 
137
126
  certificates = self.list_certificates(
138
127
  certificate_types=certificate_types,
@@ -218,7 +207,7 @@ class FetchSigningFilesAction(AbstractBaseAction, metaclass=ABCMeta):
218
207
  platform: Optional[BundleIdPlatform] = None,
219
208
  ) -> Iterator[Profile]:
220
209
  if not bundle_ids_without_profiles:
221
- return []
210
+ return
222
211
  if platform is None:
223
212
  platform = bundle_ids_without_profiles[0].attributes.platform
224
213
 
@@ -0,0 +1,159 @@
1
+ from typing import List
2
+ from typing import Sequence
3
+
4
+ import pytest
5
+ from codemagic.apple.resources import CertificateType
6
+ from codemagic.apple.resources import ProfileType
7
+
8
+
9
+ @pytest.mark.parametrize("profile_type", list(ProfileType))
10
+ def test_from_profile_type(profile_type: ProfileType):
11
+ """
12
+ Check that all profile types are mapped to matching certificate type
13
+ """
14
+ certificate_type = CertificateType.from_profile_type(profile_type)
15
+ assert isinstance(certificate_type, CertificateType)
16
+
17
+
18
+ @pytest.mark.parametrize("certificate_type", list(CertificateType))
19
+ def test_resolve_applicable_types_using_literal_certificate_type(certificate_type: CertificateType):
20
+ """
21
+ Check that type can be resolved when CertificateType literal instance is passed via
22
+ `certificate_types` keyword argument. Expected result is to have a list that contains
23
+ only the passed type.
24
+ """
25
+ resolved_types = CertificateType.resolve_applicable_types(certificate_types=certificate_type)
26
+ assert resolved_types == [certificate_type]
27
+
28
+
29
+ @pytest.mark.parametrize(
30
+ "certificate_types",
31
+ (
32
+ (CertificateType.IOS_DISTRIBUTION,),
33
+ (CertificateType.IOS_DISTRIBUTION, CertificateType.IOS_DEVELOPMENT),
34
+ [CertificateType.IOS_DISTRIBUTION, CertificateType.IOS_DEVELOPMENT],
35
+ [CertificateType.MAC_APP_DEVELOPMENT, CertificateType.MAC_APP_DISTRIBUTION],
36
+ [
37
+ CertificateType.MAC_APP_DEVELOPMENT,
38
+ CertificateType.MAC_INSTALLER_DISTRIBUTION,
39
+ CertificateType.MAC_APP_DISTRIBUTION,
40
+ ],
41
+ ),
42
+ )
43
+ def test_resolve_applicable_types_using_multiple_certificate_types(certificate_types: Sequence[CertificateType]):
44
+ """
45
+ Check that type can be resolved when number of CertificateType instances are passed via
46
+ `certificate_types` keyword argument as a sequence. Expected result is to have a list that
47
+ contains all the passed types without duplicates and nothing else.
48
+ """
49
+ resolved_types = CertificateType.resolve_applicable_types(certificate_types=certificate_types)
50
+ assert resolved_types == list(certificate_types)
51
+
52
+
53
+ def test_resolve_applicable_types_using_multiple_certificate_types_omit_duplicates():
54
+ """
55
+ Check that duplicates are removed from given certificate types when resolving result.
56
+ Return value should contain each resolved type only once and in the order in which they
57
+ appeared first.
58
+ """
59
+ resolved_types = CertificateType.resolve_applicable_types(
60
+ certificate_types=[
61
+ CertificateType.MAC_INSTALLER_DISTRIBUTION,
62
+ CertificateType.MAC_APP_DEVELOPMENT,
63
+ CertificateType.MAC_APP_DEVELOPMENT,
64
+ CertificateType.MAC_INSTALLER_DISTRIBUTION,
65
+ CertificateType.MAC_APP_DEVELOPMENT,
66
+ CertificateType.MAC_APP_DISTRIBUTION,
67
+ ],
68
+ )
69
+ assert resolved_types == [
70
+ CertificateType.MAC_INSTALLER_DISTRIBUTION,
71
+ CertificateType.MAC_APP_DEVELOPMENT,
72
+ CertificateType.MAC_APP_DISTRIBUTION,
73
+ ]
74
+
75
+
76
+ @pytest.mark.parametrize(
77
+ ("profile_type", "expected_certificate_type"),
78
+ (
79
+ (ProfileType.IOS_APP_DEVELOPMENT, CertificateType.IOS_DEVELOPMENT),
80
+ (ProfileType.IOS_APP_INHOUSE, CertificateType.DISTRIBUTION),
81
+ (ProfileType.MAC_APP_DEVELOPMENT, CertificateType.MAC_APP_DEVELOPMENT),
82
+ (ProfileType.MAC_CATALYST_APP_DEVELOPMENT, CertificateType.DEVELOPMENT),
83
+ (ProfileType.MAC_CATALYST_APP_STORE, CertificateType.DISTRIBUTION),
84
+ (ProfileType.TVOS_APP_ADHOC, CertificateType.DISTRIBUTION),
85
+ (ProfileType.TVOS_APP_DEVELOPMENT, CertificateType.DEVELOPMENT),
86
+ (ProfileType.TVOS_APP_INHOUSE, CertificateType.DISTRIBUTION),
87
+ (ProfileType.TVOS_APP_STORE, CertificateType.DISTRIBUTION),
88
+ ),
89
+ )
90
+ def test_resolve_applicable_types_using_profile_type_with_one_match(
91
+ profile_type: ProfileType,
92
+ expected_certificate_type: CertificateType,
93
+ ):
94
+ """
95
+ Most provisioning profile types are in one-to-one correspondence with a certain
96
+ certificate type. Check that expected certificate type is resolved for such profiles,
97
+ and nothing else.
98
+ """
99
+ resolved_types = CertificateType.resolve_applicable_types(profile_type=profile_type)
100
+ assert resolved_types == [expected_certificate_type]
101
+
102
+
103
+ @pytest.mark.parametrize(
104
+ ("profile_type", "expected_certificate_types"),
105
+ (
106
+ (
107
+ ProfileType.IOS_APP_ADHOC,
108
+ [CertificateType.DISTRIBUTION, CertificateType.IOS_DISTRIBUTION],
109
+ ),
110
+ (
111
+ ProfileType.IOS_APP_STORE,
112
+ [CertificateType.DISTRIBUTION, CertificateType.IOS_DISTRIBUTION],
113
+ ),
114
+ (
115
+ ProfileType.MAC_APP_DIRECT,
116
+ [CertificateType.DEVELOPER_ID_APPLICATION, CertificateType.DEVELOPER_ID_APPLICATION_G2],
117
+ ),
118
+ (
119
+ ProfileType.MAC_CATALYST_APP_DIRECT,
120
+ [CertificateType.DEVELOPER_ID_APPLICATION, CertificateType.DEVELOPER_ID_APPLICATION_G2],
121
+ ),
122
+ (
123
+ ProfileType.MAC_APP_STORE,
124
+ [CertificateType.DISTRIBUTION, CertificateType.MAC_APP_DISTRIBUTION],
125
+ ),
126
+ ),
127
+ )
128
+ def test_resolve_applicable_types_using_profile_type_with_many_matches(
129
+ profile_type: ProfileType,
130
+ expected_certificate_types: List[CertificateType],
131
+ ):
132
+ """
133
+ Some provisioning profile types can be used with more than one type of certificates.
134
+ Check that for those profile types all the allowed certificate types are resolved,
135
+ and nothing else. Additionally, the secondary resolved type should be always last.
136
+ """
137
+ resolved_types = CertificateType.resolve_applicable_types(profile_type=profile_type)
138
+ assert resolved_types == expected_certificate_types
139
+
140
+
141
+ def test_resolve_applicable_types_with_multiple_arguments():
142
+ """
143
+ Check that when different arguments are passed to the resolver at once, then
144
+ all of them are respected and used accordingly.
145
+ """
146
+ resolved_types = CertificateType.resolve_applicable_types(
147
+ profile_type=ProfileType.IOS_APP_STORE,
148
+ certificate_types=[
149
+ CertificateType.DEVELOPER_ID_APPLICATION,
150
+ CertificateType.DEVELOPER_ID_APPLICATION_G2,
151
+ ],
152
+ )
153
+ expected_certificate_types = [
154
+ CertificateType.DEVELOPER_ID_APPLICATION, # From "certificate_types" argument
155
+ CertificateType.DEVELOPER_ID_APPLICATION_G2, # From "certificate_types" argument
156
+ CertificateType.DISTRIBUTION, # From given profile type
157
+ CertificateType.IOS_DISTRIBUTION, # From given profile type
158
+ ]
159
+ assert resolved_types == expected_certificate_types
@@ -0,0 +1,24 @@
1
+ from typing import Optional
2
+ from unittest import mock
3
+
4
+ import pytest
5
+ from codemagic.models.xctests import XcResultTool
6
+ from packaging.version import Version
7
+
8
+
9
+ @pytest.mark.parametrize(
10
+ ("xcresulttool_version", "expected_result"),
11
+ (
12
+ (None, False),
13
+ (Version("0"), False),
14
+ (Version("1"), False),
15
+ (Version("23020.9"), False),
16
+ (Version("23021"), True),
17
+ (Version("23021.1"), True),
18
+ (Version("23022"), True),
19
+ (Version("33022"), True),
20
+ ),
21
+ )
22
+ def test_requires_legacy_flag(xcresulttool_version: Optional[Version], expected_result: bool):
23
+ with mock.patch.object(XcResultTool, "get_tool_version", new=mock.MagicMock(return_value=xcresulttool_version)):
24
+ assert expected_result is XcResultTool._requires_legacy_flag()
@@ -1,12 +0,0 @@
1
- import pytest
2
- from codemagic.apple.resources import CertificateType
3
- from codemagic.apple.resources import ProfileType
4
-
5
-
6
- @pytest.mark.parametrize("profile_type", list(ProfileType))
7
- def test_from_profile_type(profile_type: ProfileType):
8
- """
9
- Check that all profile types are mapped to matching certificate type
10
- """
11
- certificate_type = CertificateType.from_profile_type(profile_type)
12
- assert isinstance(certificate_type, CertificateType)