codemagic-cli-tools 0.50.4__tar.gz → 0.50.7__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 (410) hide show
  1. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/PKG-INFO +1 -1
  2. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/pyproject.toml +1 -1
  3. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/__version__.py +1 -1
  4. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/__version__.py-e +1 -1
  5. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/__init__.py +0 -1
  6. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/cli_app.py +2 -2
  7. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/cli_process.py +0 -23
  8. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resources/release.py +1 -3
  9. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/altool/altool.py +10 -84
  10. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/certificate.py +13 -4
  11. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/actions/get_latest_build_version_action.py +2 -2
  12. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution_action.py +1 -1
  13. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google/conftest.py +2 -2
  14. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google/test_firebase_client.py +2 -2
  15. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/altool/test_altool_retrying.py +4 -43
  16. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/test_firebase_app_distribution.py +1 -1
  17. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/LICENSE +0 -0
  18. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/README.md +0 -0
  19. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/__init__.py +0 -0
  20. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/__init__.py +0 -0
  21. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/__init__.py +0 -0
  22. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/api_client.py +0 -0
  23. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/api_error.py +0 -0
  24. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/api_session.py +0 -0
  25. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/apps/__init__.py +0 -0
  26. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/apps/apps.py +0 -0
  27. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/builds/__init__.py +0 -0
  28. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/builds/builds.py +0 -0
  29. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/json_web_token_manager.py +0 -0
  30. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/provisioning/__init__.py +0 -0
  31. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/provisioning/bundle_id_capabilities.py +0 -0
  32. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/provisioning/bundle_ids.py +0 -0
  33. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/provisioning/devices.py +0 -0
  34. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/provisioning/profiles.py +0 -0
  35. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/provisioning/signing_certificates.py +0 -0
  36. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/resource_manager.py +0 -0
  37. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/testflight/__init__.py +0 -0
  38. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/testflight/beta_groups.py +0 -0
  39. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/type_declarations.py +0 -0
  40. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/__init__.py +0 -0
  41. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/app_store_version_localizations.py +0 -0
  42. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/app_store_version_submissions.py +0 -0
  43. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/app_store_versions.py +0 -0
  44. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/beta_app_review_submissions.py +0 -0
  45. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/beta_build_localizations.py +0 -0
  46. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/pre_release_versions.py +0 -0
  47. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/review_submission_items.py +0 -0
  48. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/app_store_connect/versioning/review_submissions.py +0 -0
  49. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/__init__.py +0 -0
  50. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/app.py +0 -0
  51. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/app_store_version.py +0 -0
  52. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/app_store_version_localization.py +0 -0
  53. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/app_store_version_submission.py +0 -0
  54. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/beta_app_localization.py +0 -0
  55. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/beta_app_review_detail.py +0 -0
  56. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/beta_app_review_submission.py +0 -0
  57. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/beta_build_localization.py +0 -0
  58. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/beta_group.py +0 -0
  59. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/build.py +0 -0
  60. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/build_beta_detail.py +0 -0
  61. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/bundle_id.py +0 -0
  62. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/bundle_id_capability.py +0 -0
  63. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/device.py +0 -0
  64. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/enums.py +0 -0
  65. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/error_response.py +0 -0
  66. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/pre_release_version.py +0 -0
  67. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/profile.py +0 -0
  68. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/resource.py +0 -0
  69. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/review_submission.py +0 -0
  70. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/review_submission_item.py +0 -0
  71. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/apple/resources/signing_certificate.py +0 -0
  72. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/action.py +0 -0
  73. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/action_group.py +0 -0
  74. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/__init__.py +0 -0
  75. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/action_callable.py +0 -0
  76. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/argument.py +0 -0
  77. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/argument_formatter.py +0 -0
  78. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/argument_parser_builder.py +0 -0
  79. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/argument_properties.py +0 -0
  80. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/common_argument_types.py +0 -0
  81. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/argument/typed_cli_argument.py +0 -0
  82. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/cli_help_formatter.py +0 -0
  83. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/cli_process_stream.py +0 -0
  84. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/cli_types.py +0 -0
  85. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/colors.py +0 -0
  86. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/cli/environment.py +0 -0
  87. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/data/jars/bundletool-all-1.13.1.jar +0 -0
  88. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/__init__.py +0 -0
  89. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/errors.py +0 -0
  90. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/firebase_client.py +0 -0
  91. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/google_client.py +0 -0
  92. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resource_managers/__init__.py +0 -0
  93. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resource_managers/mixins/__init__.py +0 -0
  94. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resource_managers/mixins/acting_manager_mixin.py +0 -0
  95. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resource_managers/mixins/listing_manager_mixin.py +0 -0
  96. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resource_managers/release_manager.py +0 -0
  97. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resource_managers/resource_manager.py +0 -0
  98. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resources/__init__.py +0 -0
  99. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resources/identifiers/__init__.py +0 -0
  100. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resources/identifiers/app_identifier.py +0 -0
  101. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resources/identifiers/resource_identifier.py +0 -0
  102. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resources/release_notes.py +0 -0
  103. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google/resources/resource.py +0 -0
  104. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/__init__.py +0 -0
  105. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/api_client.py +0 -0
  106. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/api_error.py +0 -0
  107. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/resources/__init__.py +0 -0
  108. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/resources/edit.py +0 -0
  109. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/resources/enums.py +0 -0
  110. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/resources/resource.py +0 -0
  111. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/google_play/resources/track.py +0 -0
  112. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/mixins/__init__.py +0 -0
  113. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/mixins/path_finder.py +0 -0
  114. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/mixins/running_cli_app.py +0 -0
  115. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/mixins/str_converter.py +0 -0
  116. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/__init__.py +0 -0
  117. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/altool/__init__.py +0 -0
  118. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/altool/altool_result.py +0 -0
  119. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/altool/enums.py +0 -0
  120. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/android_signing_info.py +0 -0
  121. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/application_package/__init__.py +0 -0
  122. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/application_package/abstract_package.py +0 -0
  123. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/application_package/ipa.py +0 -0
  124. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/application_package/macos_package.py +0 -0
  125. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/bundle_id_detector.py +0 -0
  126. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/certificate_attributes.py +0 -0
  127. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/certificate_p12_exporter.py +0 -0
  128. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/code_sign_entitlements.py +0 -0
  129. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/code_signing_settings_manager.py +0 -0
  130. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/enums.py +0 -0
  131. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/export_options.py +0 -0
  132. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/json_serializable.py +0 -0
  133. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/junit/__init__.py +0 -0
  134. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/junit/definitions.py +0 -0
  135. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/junit/printer.py +0 -0
  136. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/keystore.py +0 -0
  137. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/pbx_project.py +0 -0
  138. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/private_key.py +0 -0
  139. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/provisioning_profile.py +0 -0
  140. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/simulator/__init__.py +0 -0
  141. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/simulator/core_simulator_service.py +0 -0
  142. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/simulator/runtime.py +0 -0
  143. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/simulator/simulator.py +0 -0
  144. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/table/__init__.py +0 -0
  145. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/table/line.py +0 -0
  146. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/table/table.py +0 -0
  147. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xcode.py +0 -0
  148. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xcodebuild.py +0 -0
  149. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xcpretty.py +0 -0
  150. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xctests/__init__.py +0 -0
  151. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xctests/collector.py +0 -0
  152. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xctests/converter.py +0 -0
  153. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xctests/xcresult.py +0 -0
  154. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/models/xctests/xcresulttool.py +0 -0
  155. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/py.typed +0 -0
  156. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/scripts/code_signing_manager.rb +0 -0
  157. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/shell_tools/__init__.py +0 -0
  158. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/shell_tools/abstract_shell_tool.py +0 -0
  159. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/shell_tools/keytool.py +0 -0
  160. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/__init__.py +0 -0
  161. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/_xcode_project/__init__.py +0 -0
  162. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/_xcode_project/arguments.py +0 -0
  163. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/android_app_bundle.py +0 -0
  164. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/android_keystore/__init__.py +0 -0
  165. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/android_keystore/__main__.py +0 -0
  166. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/android_keystore/android_keystore.py +0 -0
  167. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/android_keystore/argument_types.py +0 -0
  168. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/android_keystore/arguments.py +0 -0
  169. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/__init__.py +0 -0
  170. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/__main__.py +0 -0
  171. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/abstract_base_action.py +0 -0
  172. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_group.py +0 -0
  173. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/__init__.py +0 -0
  174. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_localizations_action_group.py +0 -0
  175. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_submissions_action_group.py +0 -0
  176. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/app_store_versions_action_group.py +0 -0
  177. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/apps_action_group.py +0 -0
  178. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/beta_app_review_submissions_action_group.py +0 -0
  179. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/beta_build_localizations_action_group.py +0 -0
  180. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/beta_groups_action_group.py +0 -0
  181. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/builds_action_group.py +0 -0
  182. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/bundle_ids_action_group.py +0 -0
  183. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/certificates_action_group.py +0 -0
  184. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/devices_action_group.py +0 -0
  185. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/profiles_action_group.py +0 -0
  186. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/review_submission_items_actions_group.py +0 -0
  187. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/action_groups/review_submissions_actions_group.py +0 -0
  188. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/actions/__init__.py +0 -0
  189. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/actions/fetch_signing_files_action.py +0 -0
  190. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/actions/latest_build_number_actions.py +0 -0
  191. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/actions/publish_action.py +0 -0
  192. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/app_store_connect.py +0 -0
  193. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/arguments.py +0 -0
  194. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/errors.py +0 -0
  195. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/mixins/__init__.py +0 -0
  196. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/mixins/resource_manager_mixin.py +0 -0
  197. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/mixins/signing_file_saver_mixin.py +0 -0
  198. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/app_store_connect/resource_printer.py +0 -0
  199. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/codemagic_cli_tools.py +0 -0
  200. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/__init__.py +0 -0
  201. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/__main__.py +0 -0
  202. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/action_groups/__init__.py +0 -0
  203. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/action_groups/firebase_action_groups.py +0 -0
  204. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/action_groups/releases_action_group.py +0 -0
  205. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/actions/__init__.py +0 -0
  206. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/argument_types.py +0 -0
  207. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/arguments.py +0 -0
  208. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/errors.py +0 -0
  209. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +0 -0
  210. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/firebase_app_distribution/resource_printer.py +0 -0
  211. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/git_changelog.py +0 -0
  212. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/__init__.py +0 -0
  213. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/__main__.py +0 -0
  214. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/action_groups/__init__.py +0 -0
  215. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/action_groups/google_play_action_groups.py +0 -0
  216. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/action_groups/tracks_action_group.py +0 -0
  217. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/actions/__init__.py +0 -0
  218. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/actions/get_latest_build_number_action.py +0 -0
  219. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/argument_types.py +0 -0
  220. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/arguments.py +0 -0
  221. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/errors.py +0 -0
  222. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/google_play.py +0 -0
  223. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/google_play/google_play_base_action.py +0 -0
  224. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/keychain.py +0 -0
  225. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/universal_apk_generator.py +0 -0
  226. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/tools/xcode_project.py +0 -0
  227. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/__init__.py +0 -0
  228. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/auditing/__init__.py +0 -0
  229. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/auditing/base_auditor.py +0 -0
  230. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/auditing/exception_auditor.py +0 -0
  231. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/auditing/http_request_auditor.py +0 -0
  232. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/backwards_file_reader.py +0 -0
  233. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/case_conversion.py +0 -0
  234. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/decorators.py +0 -0
  235. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/levenshtein_distance.py +0 -0
  236. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/log.py +0 -0
  237. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/src/codemagic/utilities/versions.py +0 -0
  238. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/__init__.py +0 -0
  239. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/__init__.py +0 -0
  240. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/__init__.py +0 -0
  241. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/apps/__init__.py +0 -0
  242. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/apps/test_apps.py +0 -0
  243. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/builds/__init__.py +0 -0
  244. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/builds/test_builds.py +0 -0
  245. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/provisioning/__init__.py +0 -0
  246. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/provisioning/conftest.py +0 -0
  247. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/provisioning/test_bundle_id_capabilities.py +0 -0
  248. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/provisioning/test_bundle_ids.py +0 -0
  249. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/provisioning/test_devices.py +0 -0
  250. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/provisioning/test_profiles.py +0 -0
  251. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/provisioning/test_signing_certificates.py +0 -0
  252. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/resource_manager_test_base.py +0 -0
  253. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/test_api_client.py +0 -0
  254. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/test_api_session.py +0 -0
  255. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/test_json_web_token_manager.py +0 -0
  256. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/test_resource_manager.py +0 -0
  257. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/testflight/__init__.py +0 -0
  258. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/testflight/test_beta_groups.py +0 -0
  259. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_app_store_version_localizations.py +0 -0
  260. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_app_store_version_submissions.py +0 -0
  261. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_app_store_versions.py +0 -0
  262. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_beta_app_review_submissions.py +0 -0
  263. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_beta_build_localizations.py +0 -0
  264. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_pre_release_versions.py +0 -0
  265. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_review_submission_items.py +0 -0
  266. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/app_store_connect/versioning/test_review_submissions.py +0 -0
  267. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/__init__.py +0 -0
  268. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/conftest.py +0 -0
  269. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/enums/__init__.py +0 -0
  270. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/enums/test_capability_type.py +0 -0
  271. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/enums/test_certificate_type.py +0 -0
  272. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/enums/test_profile_type.py +0 -0
  273. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/app_store_version.json +0 -0
  274. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/build.json +0 -0
  275. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/bundle_id.json +0 -0
  276. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/bundle_id_capability.json +0 -0
  277. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/certificate.json +0 -0
  278. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/device.json +0 -0
  279. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/error_response.json +0 -0
  280. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/error_response_entity_state_invalid.json +0 -0
  281. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/error_response_with_links.json +0 -0
  282. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/mock_resource.json +0 -0
  283. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/pre_release_version.json +0 -0
  284. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/mocks/profile.json +0 -0
  285. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_app_store_version_resource.py +0 -0
  286. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_build_resource.py +0 -0
  287. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_bundle_id_capability_resource.py +0 -0
  288. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_bundle_id_resource.py +0 -0
  289. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_device_resource.py +0 -0
  290. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_error_response.py +0 -0
  291. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_pre_release_version_resource.py +0 -0
  292. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_profile_resource.py +0 -0
  293. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_resource.py +0 -0
  294. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_signing_certificate_resource.py +0 -0
  295. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/apple/resources/test_undefined_resource_fields.py +0 -0
  296. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/__init__.py +0 -0
  297. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/argument/__init__.py +0 -0
  298. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/argument/common_argument_types/__init__.py +0 -0
  299. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/argument/common_argument_types/test_bounded_number.py +0 -0
  300. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/argument/common_argument_types/test_iso_8601_datetime.py +0 -0
  301. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/argument/common_argument_types/test_maybe_dir.py +0 -0
  302. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/argument/test_argument.py +0 -0
  303. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/mocks/utf-8-sample.txt +0 -0
  304. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/test_cli_process.py +0 -0
  305. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/cli/test_decorators.py +0 -0
  306. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/conftest.py +0 -0
  307. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google/__init__.py +0 -0
  308. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google/test_live_firebase_client.py +0 -0
  309. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/__init__.py +0 -0
  310. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/resources/__init__.py +0 -0
  311. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/resources/conftest.py +0 -0
  312. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/resources/mocks/edit.json +0 -0
  313. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/resources/mocks/track.json +0 -0
  314. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/resources/test_edit_resource.py +0 -0
  315. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/resources/test_resource_print.py +0 -0
  316. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/resources/test_track_resource.py +0 -0
  317. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/google_play/test_api_client.py +0 -0
  318. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/mixins/__init__.py +0 -0
  319. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/mixins/test_string_converter.py +0 -0
  320. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/mocks/certificate.asn1 +0 -0
  321. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/mocks/encrypted.pem +0 -0
  322. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/mocks/encrypted.pem.pub +0 -0
  323. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/mocks/unencrypted.pem +0 -0
  324. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/mocks/unencrypted.pem.pub +0 -0
  325. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/__init__.py +0 -0
  326. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/altool/__init__.py +0 -0
  327. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/altool/mocks/mock_failure_auth.txt +0 -0
  328. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/altool/mocks/mock_failure_other.txt +0 -0
  329. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/altool/mocks/mock_upload_success.json +0 -0
  330. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/altool/mocks/mock_validation_failure.json +0 -0
  331. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/altool/test_altool_result.py +0 -0
  332. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/conftest.py +0 -0
  333. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/enums/__init__.py +0 -0
  334. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/enums/test_resource_enum.py +0 -0
  335. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/junit/__init__.py +0 -0
  336. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/junit/mocks/testsuite.xml +0 -0
  337. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/junit/test_xml_generation.py +0 -0
  338. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/certificate-no-password.p12 +0 -0
  339. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/certificate.p12 +0 -0
  340. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/codemagic_io_wildcard_development.mobileprovision +0 -0
  341. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/export_options.plist +0 -0
  342. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock.ipa +0 -0
  343. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock.xcarchive/Products/Applications/Capybara App.app/Capybara App +0 -0
  344. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock_0_icloud_container_environments.plist +0 -0
  345. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock_1_icloud_container_environments.plist +0 -0
  346. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock_2_icloud_container_environments.plist +0 -0
  347. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock_openssh_private_key +0 -0
  348. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock_rsa_private_key +0 -0
  349. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/mocks/mock_xcode/Contents/version.plist +0 -0
  350. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/simulator/__init__.py +0 -0
  351. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/simulator/mocks/devices.json +0 -0
  352. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/simulator/mocks/simulator.json +0 -0
  353. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/simulator/test_runtime.py +0 -0
  354. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/simulator/test_simulator.py +0 -0
  355. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_certificate.py +0 -0
  356. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_certificate_attributes.py +0 -0
  357. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_code_sign_entitlements.py +0 -0
  358. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_export_options.py +0 -0
  359. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_private_key.py +0 -0
  360. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_provisioning_profile.py +0 -0
  361. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_table.py +0 -0
  362. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/test_xcode.py +0 -0
  363. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/__init__.py +0 -0
  364. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/conftest.py +0 -0
  365. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_1NtPgUPcB1A83X977l5Q91ElstUeVDnqAhumk_VJG8DIS4GA1sb8ElPPHZZGYEHmNvnHU1VVaPDCw1tI8n3uXg__.json +0 -0
  366. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_5rAUs3HknUI7DU8Jyc5RlFcosqCXTOV-qwOaOE1Mul_ppK8QCta-NSxxCdtVg6i12km4zTR5l0SjgzfHGUNxog__.json +0 -0
  367. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_97T9qQZ3dEI1oDS6NvYTPcFk_jUXFJ0NRwyd5FZ2S585JGMtlqbF28Hc85yeifgKEnNoInoW93Za9c5QJCspeQ__.json +0 -0
  368. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_DVcJZnHFaQQlzl8czovv7RuDRQIToEr5_3lLe-Mn1Sm6VreJ5xoXEFqBaWNv0XRmSg00NJ77XzQKgddhfkuk7w__.json +0 -0
  369. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_FZMbIp5VAUEiJv1wUUM-K78Dtmb4o-titbTusDJqRuarbS9OatzAykygXo4NUqEoR9sxCIoeu8VDioQmbba6mw__.json +0 -0
  370. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_Hj6SOUxY1APmxdQEA2HdqbA52GD3WJE571nqr_Z-w8vi_buxP-GUjNxCsGYQvnKnnwlyykwxY-KJmjqKYmPyXQ__.json +0 -0
  371. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_NnCmQ8rMqVyUBgL3ZDjfjJ9Vt1AMGeMzZPkDH30rGMYer0pFDpp4UDZlCEHRImO-48LdC_KdcbjP70IZA6zKUQ__.json +0 -0
  372. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_YK9aPHVT-grv_ZVooRT79GBO9n82BNogkuWVzFO6itJEtbtsRTQpK2-0ZDLot1JpCfPb26aZwEZjeb9G4GHiBQ__.json +0 -0
  373. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0__H1_RrdBT9b-ZhkWCQiRKpHlwURmyWUudeOhj5UslLXhXl8mr9w5CGqdobi9A5wCVEIRMsO4yuFyzx2gMPr-_Q__.json +0 -0
  374. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/0_evvkuGf92MVrmIvhr07911LuRTiPBKDjIQ0q_7L-mPGGYkWVKMBPQ5pB5lbjoaOnvr0fpC9k003EunfwSdss2g__.json +0 -0
  375. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/mocks/actions_invocation_record.json +0 -0
  376. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/test_collector.py +0 -0
  377. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/test_converter.py +0 -0
  378. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/models/xctests/test_xcresult.py +0 -0
  379. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/__init__.py +0 -0
  380. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/__init__.py +0 -0
  381. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/conftest.py +0 -0
  382. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/mocks/android.ks +0 -0
  383. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.jks +0 -0
  384. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.p12 +0 -0
  385. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.jks +0 -0
  386. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.p12 +0 -0
  387. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/test_get_certificate.py +0 -0
  388. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/test_get_certificates.py +0 -0
  389. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/shell_tools/keytool/test_validate.py +0 -0
  390. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/__init__.py +0 -0
  391. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/app_store_connect/__init__.py +0 -0
  392. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/app_store_connect/arguments/__init__.py +0 -0
  393. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/app_store_connect/arguments/test_beta_build_localizations.py +0 -0
  394. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/app_store_connect/conftest.py +0 -0
  395. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/app_store_connect/mocks/AuthKeyMock.p8 +0 -0
  396. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/app_store_connect/test_from_cli_args.py +0 -0
  397. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/app_store_connect/test_publish_action.py +0 -0
  398. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/mocks/firebase_releases.json +0 -0
  399. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/mocks/google_play_tracks.json +0 -0
  400. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/test_android_app_bundle.py +0 -0
  401. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/test_google_play.py +0 -0
  402. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/test_keychain.py +0 -0
  403. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/tools/test_universal_apk_generator.py +0 -0
  404. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/utilities/__init__.py +0 -0
  405. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/utilities/decorators/__init__.py +0 -0
  406. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/utilities/decorators/test_deprecated.py +0 -0
  407. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/utilities/test_backwards_file_reader.py +0 -0
  408. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/utilities/test_case_conversion.py +0 -0
  409. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/tests/utilities/test_levenshtein_distance.py +0 -0
  410. {codemagic_cli_tools-0.50.4 → codemagic_cli_tools-0.50.7}/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.50.4
3
+ Version: 0.50.7
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.50.4"
3
+ version = "0.50.7"
4
4
  description = "CLI tools used in Codemagic builds"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1,5 +1,5 @@
1
1
  __title__ = "codemagic-cli-tools"
2
2
  __description__ = "CLI tools used in Codemagic builds"
3
- __version__ = '0.50.4'
3
+ __version__ = '0.50.7'
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.50.4.dev"
3
+ __version__ = "0.50.6.dev"
4
4
  __url__ = "https://github.com/codemagic-ci-cd/cli-tools"
5
5
  __licence__ = "GNU General Public License v3.0"
@@ -11,6 +11,5 @@ from .cli_app import CliApp
11
11
  from .cli_app import CliAppException
12
12
  from .cli_app import common_arguments
13
13
  from .cli_process import CliProcess
14
- from .cli_process import CliProcessHealthCheckError
15
14
  from .cli_types import CommandArg
16
15
  from .colors import Colors
@@ -392,7 +392,7 @@ class CliApp(metaclass=abc.ABCMeta):
392
392
  ArgumentParserBuilder(cls, main_or_group_action, deprecated_action_parsers, for_deprecated_alias=True).build()
393
393
  CliHelpFormatter.suppress_deprecated_action(main_or_group_action.deprecation_info.alias)
394
394
 
395
- def obfuscate_command(
395
+ def _obfuscate_command(
396
396
  self,
397
397
  command_args: Sequence[CommandArg],
398
398
  obfuscate_patterns: Optional[Iterable[ObfuscationPattern]] = None,
@@ -443,7 +443,7 @@ class CliApp(metaclass=abc.ABCMeta):
443
443
 
444
444
  return CliProcess(
445
445
  command_args,
446
- self.obfuscate_command(command_args, obfuscate_patterns),
446
+ self._obfuscate_command(command_args, obfuscate_patterns),
447
447
  dry=self.dry_run,
448
448
  print_streams=print_streams,
449
449
  ).execute(**execute_kwargs)
@@ -7,7 +7,6 @@ import subprocess
7
7
  import sys
8
8
  import time
9
9
  from typing import IO
10
- from typing import Callable
11
10
  from typing import Dict
12
11
  from typing import Optional
13
12
  from typing import Sequence
@@ -20,10 +19,6 @@ from .cli_types import CommandArg
20
19
  from .cli_types import ObfuscatedCommand
21
20
 
22
21
 
23
- class CliProcessHealthCheckError(Exception):
24
- pass
25
-
26
-
27
22
  class CliProcess:
28
23
  def __init__(
29
24
  self,
@@ -31,8 +26,6 @@ class CliProcess:
31
26
  safe_form: Optional[ObfuscatedCommand] = None,
32
27
  print_streams: bool = True,
33
28
  dry: bool = False,
34
- process_health_check: Optional[Callable[[CliProcess], bool]] = None,
35
- process_health_check_interval: float = 10,
36
29
  ):
37
30
  self.logger = log.get_logger(self.__class__)
38
31
  self.duration: float = 0
@@ -49,9 +42,6 @@ class CliProcess:
49
42
  self._stderr = ""
50
43
  self._stdout_stream: Optional[CliProcessStream] = None
51
44
  self._stderr_stream: Optional[CliProcessStream] = None
52
- self._process_health_check = process_health_check
53
- self._process_health_check_interval = process_health_check_interval
54
- self._process_health_check_at: Optional[float] = None
55
45
 
56
46
  @property
57
47
  def stdout(self) -> str:
@@ -86,18 +76,6 @@ class CliProcess:
86
76
  if self._stderr_stream:
87
77
  self._stderr += self._stderr_stream.process_buffer(buffer_size, self._print_streams)
88
78
 
89
- def _check_process_health(self):
90
- if not self._process_health_check:
91
- return
92
-
93
- now = time.time()
94
- if self._process_health_check_at and now - self._process_health_check_at < self._process_health_check_interval:
95
- return
96
-
97
- self._process_health_check_at = now
98
- if not self._process_health_check(self):
99
- raise CliProcessHealthCheckError("Process health check failed")
100
-
101
79
  def _configure_process_streams(self):
102
80
  if self._process.stdout:
103
81
  self._stdout_stream = CliProcessStream.create(self._process.stdout, sys.stdout, blocking=False)
@@ -124,7 +102,6 @@ class CliProcess:
124
102
  self._configure_process_streams()
125
103
  while self._process.poll() is None:
126
104
  self._handle_streams(self._buffer_size)
127
- self._check_process_health()
128
105
  time.sleep(poll_interval)
129
106
  self._handle_streams()
130
107
  finally:
@@ -15,7 +15,7 @@ class Release(Resource):
15
15
 
16
16
  name: str
17
17
  displayVersion: str
18
- buildVersion: int
18
+ buildVersion: str
19
19
  createTime: datetime
20
20
  firebaseConsoleUri: str
21
21
  testingUri: str
@@ -25,7 +25,5 @@ class Release(Resource):
25
25
  def __post_init__(self):
26
26
  if isinstance(self.createTime, str):
27
27
  self.createTime = datetime.fromisoformat(self.createTime.rstrip("Z")).replace(tzinfo=timezone.utc)
28
- if isinstance(self.buildVersion, str):
29
- self.buildVersion = int(self.buildVersion)
30
28
  if isinstance(self.releaseNotes, dict):
31
29
  self.releaseNotes = ReleaseNotes(self.releaseNotes["text"])
@@ -7,7 +7,6 @@ import re
7
7
  import subprocess
8
8
  import time
9
9
  from contextlib import contextmanager
10
- from datetime import datetime
11
10
  from functools import lru_cache
12
11
  from typing import TYPE_CHECKING
13
12
  from typing import AnyStr
@@ -17,12 +16,9 @@ from typing import Optional
17
16
  from typing import Sequence
18
17
  from typing import Tuple
19
18
  from typing import Union
20
- from typing import cast
21
19
 
22
20
  import psutil
23
21
 
24
- from codemagic.cli import CliProcess
25
- from codemagic.cli import CliProcessHealthCheckError
26
22
  from codemagic.cli import environment
27
23
  from codemagic.mixins import RunningCliAppMixin
28
24
  from codemagic.mixins import StringConverterMixin
@@ -47,10 +43,6 @@ class AltoolCommandError(Exception):
47
43
  self.process_output = process_output
48
44
 
49
45
 
50
- class CFNetworkingRetryError(AltoolCommandError):
51
- pass
52
-
53
-
54
46
  class Altool(RunningCliAppMixin, StringConverterMixin):
55
47
  def __init__(
56
48
  self,
@@ -203,7 +195,7 @@ class Altool(RunningCliAppMixin, StringConverterMixin):
203
195
  return self._run_command(command, f'Failed to {action_name} archive at "{artifact_path}"', cli_app)
204
196
  except AltoolCommandError as error:
205
197
  has_retries = retries > 0
206
- should_retry = self._should_retry_command(error)
198
+ should_retry = self._should_retry_command(error.process_output)
207
199
  if has_retries and should_retry:
208
200
  if attempt == 1:
209
201
  print_fn(f"Failed to {action_name} archive, but this might be a temporary issue, retrying...")
@@ -242,28 +234,21 @@ class Altool(RunningCliAppMixin, StringConverterMixin):
242
234
  cli_app: Optional[CliApp],
243
235
  ) -> Optional[AltoolResult]:
244
236
  obfuscate_patterns = [self._password] if self._password else []
245
- process = None
246
237
  try:
247
238
  if cli_app:
248
- logs_inspector = CFNetworkErrorLogsInspector("altool", datetime.now())
249
- process = CliProcess(
239
+ process = cli_app.execute(
250
240
  command,
251
- cli_app.obfuscate_command(command, obfuscate_patterns),
252
- print_streams=cli_app.verbose,
253
- # Less than 100 should be fine. Retry attempts get to thousands within minutes
254
- process_health_check=lambda _: logs_inspector.get_estimated_errors_count() < 100,
255
- process_health_check_interval=10,
241
+ obfuscate_patterns,
242
+ show_output=False,
243
+ stderr=subprocess.STDOUT,
256
244
  )
257
- process.execute(stderr=subprocess.STDOUT)
258
245
  stdout = process.stdout
259
246
  process.raise_for_returncode()
260
247
  else:
261
- stdout = subprocess.check_output(command, stderr=subprocess.STDOUT).decode()
262
- except CliProcessHealthCheckError as hce:
263
- raise CFNetworkingRetryError(
264
- f"{error_message}: Connection to Apple's cloud storage failed",
265
- process.stdout if process else "",
266
- ) from hce
248
+ stdout = subprocess.check_output(
249
+ command,
250
+ stderr=subprocess.STDOUT,
251
+ ).decode()
267
252
  except subprocess.CalledProcessError as cpe:
268
253
  result = self._get_action_result(cpe.stdout)
269
254
  if result and result.product_errors:
@@ -301,16 +286,12 @@ class Altool(RunningCliAppMixin, StringConverterMixin):
301
286
  return output
302
287
 
303
288
  @classmethod
304
- def _should_retry_command(cls, error: Union[AltoolCommandError, CFNetworkingRetryError]):
305
- if isinstance(error, CFNetworkingRetryError):
306
- return True
307
-
289
+ def _should_retry_command(cls, process_output: str):
308
290
  patterns = (
309
291
  re.compile("Unable to authenticate.*-19209"),
310
292
  re.compile("server returned an invalid response.*try your request again"),
311
293
  re.compile("The request timed out."),
312
294
  )
313
- process_output = cast(AltoolCommandError, error).process_output
314
295
  return any(pattern.search(process_output) for pattern in patterns)
315
296
 
316
297
  @classmethod
@@ -336,58 +317,3 @@ class Altool(RunningCliAppMixin, StringConverterMixin):
336
317
  cli_app.echo(prettified_result)
337
318
  else:
338
319
  print(prettified_result)
339
-
340
-
341
- class CFNetworkErrorLogsInspector:
342
- ERROR_PATTERN = re.compile(r"^Task <[\w-]+>\.<(\d+)> finished with error")
343
-
344
- def __init__(self, process: str, start: datetime):
345
- self.logger = log.get_file_logger(self.__class__)
346
- predicate = " and ".join(
347
- [
348
- 'subsystem=="com.apple.CFNetwork"',
349
- f'process=="{process}"',
350
- 'eventMessage contains "finished with error"',
351
- 'eventMessage contains "Error Domain=NSURLErrorDomain"',
352
- 'eventMessage contains "Code=-1003"',
353
- ],
354
- )
355
- self.logs_command = (
356
- "log",
357
- "show",
358
- "--no-backtrace",
359
- "--no-debug",
360
- "--no-info",
361
- "--no-pager",
362
- *("--start", start.strftime("%Y-%m-%d %H:%M:%S")),
363
- *("--predicate", predicate),
364
- *("--style", "ndjson"),
365
- )
366
-
367
- def iter_log_entries(self):
368
- start = time.time()
369
- try:
370
- cp = subprocess.run(
371
- self.logs_command,
372
- capture_output=True,
373
- check=True,
374
- timeout=10,
375
- )
376
- except (subprocess.CalledProcessError, subprocess.TimeoutExpired):
377
- self.logger.exception("Checking CFNetwork error logs failed")
378
- return
379
- finally:
380
- self.logger.debug(f"Completed CFNetwork error logs check in {time.time() - start:.2f}s")
381
-
382
- for line in cp.stdout.splitlines():
383
- try:
384
- log_entry = json.loads(line)
385
- if log_entry.get("eventMessage") is not None:
386
- yield log_entry
387
- except ValueError:
388
- pass
389
-
390
- def get_estimated_errors_count(self) -> int:
391
- count = sum(1 for log_entry in self.iter_log_entries() if self.ERROR_PATTERN.match(log_entry["eventMessage"]))
392
- self.logger.debug(f"Found {count} log that hint indefinite CFNetwork retry loop")
393
- return count
@@ -105,12 +105,16 @@ class Certificate(JsonSerializable, RunningCliAppMixin, StringConverterMixin):
105
105
  Get the timestamp at which the certificate stops being valid
106
106
  as an ASN.1 TIME YYYYMMDDhhmmssZ
107
107
  """
108
- not_after = self.certificate.not_valid_after
109
- return not_after.strftime("%Y%m%d%H%M%SZ")
108
+ return self.expires_at.strftime("%Y%m%d%H%M%SZ")
110
109
 
111
110
  @property
112
111
  def not_before(self) -> str:
113
- not_before = self.certificate.not_valid_before
112
+ try:
113
+ not_before = self.certificate.not_valid_before_utc
114
+ except AttributeError:
115
+ # x509.Certificate.not_valid_before_utc was added in cryptography 42.0.0.
116
+ # Use the legacy naive datetime instead.
117
+ not_before = self.certificate.not_valid_before
114
118
  return not_before.strftime("%Y%m%d%H%M%SZ")
115
119
 
116
120
  @property
@@ -120,7 +124,12 @@ class Certificate(JsonSerializable, RunningCliAppMixin, StringConverterMixin):
120
124
 
121
125
  @property
122
126
  def expires_at(self) -> datetime:
123
- return self.certificate.not_valid_after.replace(tzinfo=timezone.utc)
127
+ try:
128
+ return self.certificate.not_valid_after_utc
129
+ except AttributeError:
130
+ # x509.Certificate.not_valid_after_utc was added in cryptography 42.0.0.
131
+ # Use the legacy naive datetime instead.
132
+ return self.certificate.not_valid_after.replace(tzinfo=timezone.utc)
124
133
 
125
134
  @property
126
135
  def serial(self) -> int:
@@ -14,7 +14,7 @@ class GetLatestBuildVersionAction(FirebaseAppDistributionAction, ABC):
14
14
  "get-latest-build-version",
15
15
  ReleasesArgument.APP_ID,
16
16
  )
17
- def get_latest_build_version(self, app_id: str, should_print: bool = True) -> int:
17
+ def get_latest_build_version(self, app_id: str, should_print: bool = True) -> str:
18
18
  """
19
19
  Get latest build version from Firebase
20
20
  """
@@ -27,5 +27,5 @@ class GetLatestBuildVersionAction(FirebaseAppDistributionAction, ABC):
27
27
  raise FirebaseAppDistributionError(f"No releases available for {app_identifier.app_id}")
28
28
 
29
29
  build_version = releases[0].buildVersion
30
- self.echo(str(build_version)) if should_print else None
30
+ self.echo(build_version) if should_print else None
31
31
  return build_version
@@ -26,7 +26,7 @@ class FirebaseAppDistributionAction(ABC):
26
26
  # Action signatures in alphabetical order
27
27
 
28
28
  @abstractmethod
29
- def get_latest_build_version(self, app_id: str, should_print: bool = True) -> int:
29
+ def get_latest_build_version(self, app_id: str, should_print: bool = True) -> str:
30
30
  from .actions import GetLatestBuildVersionAction
31
31
 
32
32
  _ = GetLatestBuildVersionAction.get_latest_build_version # Implementation
@@ -14,7 +14,7 @@ def release():
14
14
  name="projects/228333310124/apps/1:228333310124:ios:5e439e0d0231a788ac8f09/releases/0fam13pr3rea0",
15
15
  releaseNotes=ReleaseNotes("Something new :) :)"),
16
16
  displayVersion="0.0.42",
17
- buildVersion=70,
17
+ buildVersion="1.0.3",
18
18
  createTime=datetime(2023, 5, 18, 12, 30, 17, 454581, tzinfo=timezone.utc),
19
19
  firebaseConsoleUri=mock.ANY,
20
20
  testingUri=mock.ANY,
@@ -28,7 +28,7 @@ def release_response():
28
28
  "name": "projects/228333310124/apps/1:228333310124:ios:5e439e0d0231a788ac8f09/releases/0fam13pr3rea0",
29
29
  "releaseNotes": {"text": "Something new :) :)"},
30
30
  "displayVersion": "0.0.42",
31
- "buildVersion": "70",
31
+ "buildVersion": "1.0.3",
32
32
  "createTime": "2023-05-18T12:30:17.454581Z",
33
33
  "firebaseConsoleUri": "",
34
34
  "testingUri": "",
@@ -60,7 +60,7 @@ def test_list_releases(app_identifier, firebase_client, release, mock_releases):
60
60
  releases = firebase_client.releases.list(app_identifier, order_by=order_by, page_size=2)
61
61
 
62
62
  assert releases[0] == release
63
- assert releases[1].buildVersion == 71
63
+ assert releases[1].buildVersion == "71"
64
64
 
65
65
 
66
66
  def test_list_releases_limit(app_identifier, firebase_client, mock_releases):
@@ -91,4 +91,4 @@ def test_list_releases_pagination(app_identifier, release, firebase_client, mock
91
91
 
92
92
  assert len(releases) == 2
93
93
  assert releases[0] == release
94
- assert releases[1].buildVersion == 71
94
+ assert releases[1].buildVersion == "71"
@@ -1,38 +1,25 @@
1
1
  import json
2
2
  import pathlib
3
+ from types import SimpleNamespace
3
4
  from unittest import mock
4
5
 
5
6
  import pytest
6
7
  from codemagic.models import Altool
7
8
  from codemagic.models.altool import AltoolResult
8
9
  from codemagic.models.altool.altool import AltoolCommandError
9
- from codemagic.models.altool.altool import CFNetworkErrorLogsInspector
10
10
  from codemagic.models.altool.altool import PlatformType
11
11
 
12
12
 
13
13
  @pytest.fixture
14
- def mock_echo():
15
- return mock.MagicMock()
16
-
17
-
18
- @pytest.fixture
19
- def mock_cli_app(mock_echo):
20
- return mock.MagicMock(
21
- echo=mock_echo,
22
- verbose=False,
23
- obfuscate_command=lambda cmd, _: cmd,
24
- )
25
-
26
-
27
- @pytest.fixture
28
- def mock_altool(mock_cli_app):
14
+ def mock_altool():
29
15
  Altool._ensure_altool = mock.Mock(return_value=True)
30
16
  altool = Altool(
31
17
  username="user@example.com",
32
18
  password="xxxx-yyyy-zzzz-wwww",
33
19
  )
20
+ mock_echo = mock.MagicMock()
34
21
  altool._kill_xcode_processes_for_retrying = mock.Mock()
35
- altool.get_current_cli_app = lambda: mock_cli_app
22
+ altool.get_current_cli_app = lambda: SimpleNamespace(echo=mock_echo)
36
23
  return altool
37
24
 
38
25
 
@@ -158,29 +145,3 @@ def test_retrying_command_immediate_success(mock_altool, mock_success_stdout, mo
158
145
  with mock.patch.object(mock_altool, "_run_command", side_effect=[mock_success_result]):
159
146
  result = mock_altool.upload_app(pathlib.Path("app.ipa"), retries=100, retry_wait_seconds=0)
160
147
  assert result is mock_success_result
161
-
162
-
163
- @mock.patch("codemagic.cli.cli_process.subprocess.Popen")
164
- @mock.patch.object(CFNetworkErrorLogsInspector, "iter_log_entries")
165
- @mock.patch.object(PlatformType, "from_path", lambda _artifact_path: PlatformType.IOS)
166
- def test_cf_networking_error_retrying(mock_iter_log_entries, mock_popen, mock_altool, mock_echo):
167
- mock_popen.return_value = mock.MagicMock(
168
- poll=mock.MagicMock(return_value=None),
169
- stdout=mock.MagicMock(read=mock.MagicMock(return_value=b"")),
170
- )
171
- event_message = "Task <0E1A3630>.<123> finished with error [-1003] Error Domain=NSURLErrorDomain Code=-1003 "
172
- mock_iter_log_entries.return_value = [{"eventMessage": event_message} for _ in range(101)]
173
-
174
- with pytest.raises(IOError) as exc_info:
175
- mock_altool.upload_app(
176
- pathlib.Path("app.ipa"),
177
- retries=2,
178
- )
179
-
180
- assert str(exc_info.value) == 'Failed to upload archive at "app.ipa": Connection to Apple\'s cloud storage failed'
181
- mock_echo.assert_has_calls(
182
- [
183
- mock.call("Failed to upload archive, but this might be a temporary issue, retrying..."),
184
- mock.call("Attempt #2 to upload failed."),
185
- ],
186
- )
@@ -175,7 +175,7 @@ def test_list_releases_with_limit(firebase_app_distribution, mock_releases_list,
175
175
  def test_get_latest_build_version(firebase_app_distribution, mock_releases_list, app_identifier):
176
176
  build_number = firebase_app_distribution.get_latest_build_version(app_identifier.app_id)
177
177
  mock_releases_list.assert_called_once_with(app_identifier, limit=1)
178
- assert build_number == 71
178
+ assert build_number == "71"
179
179
 
180
180
 
181
181
  def test_get_latest_build_version_no_releases(firebase_app_distribution, app_identifier):