codemagic-cli-tools 0.53.3__tar.gz → 0.53.5__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 (434) hide show
  1. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/PKG-INFO +1 -1
  2. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/pyproject.toml +1 -1
  3. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/__version__.py +1 -1
  4. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/__version__.py-e +1 -1
  5. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/__init__.py +1 -0
  6. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/__init__.py +1 -0
  7. codemagic_cli_tools-0.53.5/src/codemagic/cli/argument/argument_parser_builder.py +220 -0
  8. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/argument_properties.py +5 -0
  9. codemagic_cli_tools-0.53.5/src/codemagic/cli/argument/mutually_exclusive_groups.py +35 -0
  10. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/xcresulttool.py +51 -2
  11. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/action_groups/releases_action_group.py +1 -1
  12. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/actions/get_latest_build_version_action.py +1 -1
  13. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/arguments.py +14 -3
  14. codemagic_cli_tools-0.53.5/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +88 -0
  15. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution_action.py +1 -1
  16. codemagic_cli_tools-0.53.5/tests/models/xctests/test_xcresulttool.py +24 -0
  17. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/test_firebase_app_distribution.py +4 -2
  18. codemagic_cli_tools-0.53.3/src/codemagic/cli/argument/argument_parser_builder.py +0 -154
  19. codemagic_cli_tools-0.53.3/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +0 -53
  20. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/LICENSE +0 -0
  21. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/README.md +0 -0
  22. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/__init__.py +0 -0
  23. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/__init__.py +0 -0
  24. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/__init__.py +0 -0
  25. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/api_client.py +0 -0
  26. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/api_error.py +0 -0
  27. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/api_session.py +0 -0
  28. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/app_store_publishing/__init__.py +0 -0
  29. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/app_store_publishing/app_store_version_phased_releases.py +0 -0
  30. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/apps/__init__.py +0 -0
  31. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/apps/apps.py +0 -0
  32. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/builds/__init__.py +0 -0
  33. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/builds/builds.py +0 -0
  34. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/json_web_token_manager.py +0 -0
  35. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/__init__.py +0 -0
  36. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/bundle_id_capabilities.py +0 -0
  37. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/bundle_ids.py +0 -0
  38. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/devices.py +0 -0
  39. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/profiles.py +0 -0
  40. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/provisioning/signing_certificates.py +0 -0
  41. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/resource_manager.py +0 -0
  42. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/testflight/__init__.py +0 -0
  43. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/testflight/beta_groups.py +0 -0
  44. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/type_declarations.py +0 -0
  45. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/__init__.py +0 -0
  46. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/app_store_version_localizations.py +0 -0
  47. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/app_store_version_submissions.py +0 -0
  48. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/app_store_versions.py +0 -0
  49. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/beta_app_review_submissions.py +0 -0
  50. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/beta_build_localizations.py +0 -0
  51. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/pre_release_versions.py +0 -0
  52. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/review_submission_items.py +0 -0
  53. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/app_store_connect/versioning/review_submissions.py +0 -0
  54. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/__init__.py +0 -0
  55. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app.py +0 -0
  56. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version.py +0 -0
  57. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version_localization.py +0 -0
  58. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version_phased_release.py +0 -0
  59. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/app_store_version_submission.py +0 -0
  60. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_app_localization.py +0 -0
  61. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_app_review_detail.py +0 -0
  62. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_app_review_submission.py +0 -0
  63. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_build_localization.py +0 -0
  64. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/beta_group.py +0 -0
  65. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/build.py +0 -0
  66. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/build_beta_detail.py +0 -0
  67. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/bundle_id.py +0 -0
  68. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/bundle_id_capability.py +0 -0
  69. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/device.py +0 -0
  70. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/enums.py +0 -0
  71. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/error_response.py +0 -0
  72. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/pre_release_version.py +0 -0
  73. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/profile.py +0 -0
  74. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/resource.py +0 -0
  75. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/review_submission.py +0 -0
  76. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/review_submission_item.py +0 -0
  77. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/apple/resources/signing_certificate.py +0 -0
  78. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/action.py +0 -0
  79. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/action_group.py +0 -0
  80. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/action_callable.py +0 -0
  81. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/argument.py +0 -0
  82. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/argument_formatter.py +0 -0
  83. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/common_argument_types.py +0 -0
  84. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/argument/typed_cli_argument.py +0 -0
  85. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_app.py +0 -0
  86. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_help_formatter.py +0 -0
  87. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_process.py +0 -0
  88. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_process_stream.py +0 -0
  89. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/cli_types.py +0 -0
  90. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/colors.py +0 -0
  91. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/cli/environment.py +0 -0
  92. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/data/jars/bundletool-all-1.13.1.jar +0 -0
  93. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/__init__.py +0 -0
  94. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/errors.py +0 -0
  95. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/firebase_client.py +0 -0
  96. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/google_client.py +0 -0
  97. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/__init__.py +0 -0
  98. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/mixins/__init__.py +0 -0
  99. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/mixins/acting_manager_mixin.py +0 -0
  100. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/mixins/listing_manager_mixin.py +0 -0
  101. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/release_manager.py +0 -0
  102. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resource_managers/resource_manager.py +0 -0
  103. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/__init__.py +0 -0
  104. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/identifiers/__init__.py +0 -0
  105. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/identifiers/app_identifier.py +0 -0
  106. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/identifiers/resource_identifier.py +0 -0
  107. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/release.py +0 -0
  108. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/release_notes.py +0 -0
  109. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google/resources/resource.py +0 -0
  110. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/__init__.py +0 -0
  111. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/api_client.py +0 -0
  112. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/api_error.py +0 -0
  113. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/__init__.py +0 -0
  114. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/edit.py +0 -0
  115. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/enums.py +0 -0
  116. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/resource.py +0 -0
  117. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/google_play/resources/track.py +0 -0
  118. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/__init__.py +0 -0
  119. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/path_finder.py +0 -0
  120. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/running_cli_app.py +0 -0
  121. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/mixins/str_converter.py +0 -0
  122. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/__init__.py +0 -0
  123. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/__init__.py +0 -0
  124. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/altool.py +0 -0
  125. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/altool_result.py +0 -0
  126. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/altool/enums.py +0 -0
  127. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/android_signing_info.py +0 -0
  128. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/__init__.py +0 -0
  129. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/abstract_package.py +0 -0
  130. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/ipa.py +0 -0
  131. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/application_package/macos_package.py +0 -0
  132. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/bundle_id_detector.py +0 -0
  133. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/certificate.py +0 -0
  134. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/certificate_attributes.py +0 -0
  135. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/certificate_p12_exporter.py +0 -0
  136. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/code_sign_entitlements.py +0 -0
  137. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/code_signing_settings_manager.py +0 -0
  138. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/enums.py +0 -0
  139. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/export_options.py +0 -0
  140. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/json_serializable.py +0 -0
  141. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/junit/__init__.py +0 -0
  142. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/junit/definitions.py +0 -0
  143. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/junit/printer.py +0 -0
  144. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/keystore.py +0 -0
  145. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/pbx_project.py +0 -0
  146. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/private_key.py +0 -0
  147. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/provisioning_profile.py +0 -0
  148. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/__init__.py +0 -0
  149. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/core_simulator_service.py +0 -0
  150. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/runtime.py +0 -0
  151. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/simulator/simulator.py +0 -0
  152. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/table/__init__.py +0 -0
  153. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/table/line.py +0 -0
  154. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/table/table.py +0 -0
  155. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xcode.py +0 -0
  156. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xcodebuild.py +0 -0
  157. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xcpretty.py +0 -0
  158. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/__init__.py +0 -0
  159. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/collector.py +0 -0
  160. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/converter.py +0 -0
  161. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/models/xctests/xcresult.py +0 -0
  162. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/py.typed +0 -0
  163. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/scripts/code_signing_manager.rb +0 -0
  164. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/shell_tools/__init__.py +0 -0
  165. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/shell_tools/abstract_shell_tool.py +0 -0
  166. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/shell_tools/keytool.py +0 -0
  167. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/__init__.py +0 -0
  168. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/_xcode_project/__init__.py +0 -0
  169. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/_xcode_project/arguments.py +0 -0
  170. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_app_bundle.py +0 -0
  171. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/__init__.py +0 -0
  172. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/__main__.py +0 -0
  173. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/android_keystore.py +0 -0
  174. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/argument_types.py +0 -0
  175. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/android_keystore/arguments.py +0 -0
  176. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/__init__.py +0 -0
  177. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/__main__.py +0 -0
  178. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/abstract_base_action.py +0 -0
  179. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_group.py +0 -0
  180. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/__init__.py +0 -0
  181. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_localizations_action_group.py +0 -0
  182. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_phased_releases_action_group.py +0 -0
  183. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_submissions_action_group.py +0 -0
  184. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/app_store_versions_action_group.py +0 -0
  185. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/apps_action_group.py +0 -0
  186. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/beta_app_review_submissions_action_group.py +0 -0
  187. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/beta_build_localizations_action_group.py +0 -0
  188. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/beta_groups_action_group.py +0 -0
  189. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/builds_action_group.py +0 -0
  190. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/bundle_ids_action_group.py +0 -0
  191. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/certificates_action_group.py +0 -0
  192. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/devices_action_group.py +0 -0
  193. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/profiles_action_group.py +0 -0
  194. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/review_submission_items_actions_group.py +0 -0
  195. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/action_groups/review_submissions_actions_group.py +0 -0
  196. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/__init__.py +0 -0
  197. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/fetch_signing_files_action.py +0 -0
  198. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/latest_build_number_actions.py +0 -0
  199. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/publish_action.py +0 -0
  200. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/submit_to_app_store_action.py +0 -0
  201. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/actions/submit_to_testflight_action.py +0 -0
  202. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/app_store_connect.py +0 -0
  203. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/arguments.py +0 -0
  204. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/errors.py +0 -0
  205. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/mixins/__init__.py +0 -0
  206. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/mixins/resource_manager_mixin.py +0 -0
  207. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/mixins/signing_file_saver_mixin.py +0 -0
  208. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/app_store_connect/resource_printer.py +0 -0
  209. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/codemagic_cli_tools.py +0 -0
  210. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/__init__.py +0 -0
  211. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/__main__.py +0 -0
  212. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/action_groups/__init__.py +0 -0
  213. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/action_groups/firebase_action_groups.py +0 -0
  214. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/actions/__init__.py +0 -0
  215. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/argument_types.py +0 -0
  216. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/errors.py +0 -0
  217. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/firebase_app_distribution/resource_printer.py +0 -0
  218. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/git_changelog.py +0 -0
  219. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/__init__.py +0 -0
  220. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/__main__.py +0 -0
  221. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/action_groups/__init__.py +0 -0
  222. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/action_groups/google_play_action_groups.py +0 -0
  223. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/action_groups/tracks_action_group.py +0 -0
  224. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/actions/__init__.py +0 -0
  225. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/actions/get_latest_build_number_action.py +0 -0
  226. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/argument_types.py +0 -0
  227. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/arguments.py +0 -0
  228. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/errors.py +0 -0
  229. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/google_play.py +0 -0
  230. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/google_play/google_play_base_action.py +0 -0
  231. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/keychain.py +0 -0
  232. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/universal_apk_generator.py +0 -0
  233. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/tools/xcode_project.py +0 -0
  234. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/__init__.py +0 -0
  235. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/__init__.py +0 -0
  236. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/base_auditor.py +0 -0
  237. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/exception_auditor.py +0 -0
  238. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/auditing/http_request_auditor.py +0 -0
  239. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/backwards_file_reader.py +0 -0
  240. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/case_conversion.py +0 -0
  241. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/decorators.py +0 -0
  242. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/levenshtein_distance.py +0 -0
  243. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/log.py +0 -0
  244. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/src/codemagic/utilities/versions.py +0 -0
  245. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/__init__.py +0 -0
  246. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/__init__.py +0 -0
  247. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/__init__.py +0 -0
  248. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/app_store_publishing/__init__.py +0 -0
  249. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/app_store_publishing/test_app_store_version_phased_releases.py +0 -0
  250. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/apps/__init__.py +0 -0
  251. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/apps/test_apps.py +0 -0
  252. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/builds/__init__.py +0 -0
  253. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/builds/test_builds.py +0 -0
  254. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/__init__.py +0 -0
  255. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/conftest.py +0 -0
  256. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_bundle_id_capabilities.py +0 -0
  257. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_bundle_ids.py +0 -0
  258. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_devices.py +0 -0
  259. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_profiles.py +0 -0
  260. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/provisioning/test_signing_certificates.py +0 -0
  261. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/resource_manager_test_base.py +0 -0
  262. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_api_client.py +0 -0
  263. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_api_session.py +0 -0
  264. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_json_web_token_manager.py +0 -0
  265. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/test_resource_manager.py +0 -0
  266. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/testflight/__init__.py +0 -0
  267. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/testflight/test_beta_groups.py +0 -0
  268. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/__init__.py +0 -0
  269. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_app_store_version_localizations.py +0 -0
  270. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_app_store_version_submissions.py +0 -0
  271. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_app_store_versions.py +0 -0
  272. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_beta_app_review_submissions.py +0 -0
  273. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_beta_build_localizations.py +0 -0
  274. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_pre_release_versions.py +0 -0
  275. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_review_submission_items.py +0 -0
  276. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/app_store_connect/versioning/test_review_submissions.py +0 -0
  277. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/__init__.py +0 -0
  278. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/conftest.py +0 -0
  279. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/__init__.py +0 -0
  280. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/test_capability_type.py +0 -0
  281. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/test_certificate_type.py +0 -0
  282. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/enums/test_profile_type.py +0 -0
  283. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/app.json +0 -0
  284. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/app_store_version.json +0 -0
  285. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/app_store_version_phased_release.json +0 -0
  286. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/build.json +0 -0
  287. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/bundle_id.json +0 -0
  288. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/bundle_id_capability.json +0 -0
  289. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/certificate.json +0 -0
  290. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/device.json +0 -0
  291. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/error_response.json +0 -0
  292. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/error_response_entity_state_invalid.json +0 -0
  293. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/error_response_with_links.json +0 -0
  294. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/mock_resource.json +0 -0
  295. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/pre_release_version.json +0 -0
  296. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/mocks/profile.json +0 -0
  297. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_app_resource.py +0 -0
  298. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_app_store_version_phased_release_resource.py +0 -0
  299. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_app_store_version_resource.py +0 -0
  300. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_build_resource.py +0 -0
  301. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_bundle_id_capability_resource.py +0 -0
  302. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_bundle_id_resource.py +0 -0
  303. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_device_resource.py +0 -0
  304. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_error_response.py +0 -0
  305. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_pre_release_version_resource.py +0 -0
  306. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_profile_resource.py +0 -0
  307. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_resource.py +0 -0
  308. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_signing_certificate_resource.py +0 -0
  309. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/apple/resources/test_undefined_resource_fields.py +0 -0
  310. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/__init__.py +0 -0
  311. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/argument/__init__.py +0 -0
  312. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/__init__.py +0 -0
  313. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/test_bounded_number.py +0 -0
  314. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/test_iso_8601_datetime.py +0 -0
  315. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/argument/common_argument_types/test_maybe_dir.py +0 -0
  316. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/argument/test_argument.py +0 -0
  317. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/mocks/utf-8-sample.txt +0 -0
  318. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/test_cli_process.py +0 -0
  319. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/cli/test_decorators.py +0 -0
  320. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/conftest.py +0 -0
  321. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google/__init__.py +0 -0
  322. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google/conftest.py +0 -0
  323. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google/test_firebase_client.py +0 -0
  324. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google/test_live_firebase_client.py +0 -0
  325. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/__init__.py +0 -0
  326. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/__init__.py +0 -0
  327. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/conftest.py +0 -0
  328. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/mocks/edit.json +0 -0
  329. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/mocks/track.json +0 -0
  330. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/test_edit_resource.py +0 -0
  331. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/test_resource_print.py +0 -0
  332. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/resources/test_track_resource.py +0 -0
  333. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/google_play/test_api_client.py +0 -0
  334. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mixins/__init__.py +0 -0
  335. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mixins/test_path_finder.py +0 -0
  336. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mixins/test_string_converter.py +0 -0
  337. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mocks/certificate.asn1 +0 -0
  338. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mocks/encrypted.pem +0 -0
  339. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mocks/encrypted.pem.pub +0 -0
  340. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mocks/unencrypted.pem +0 -0
  341. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/mocks/unencrypted.pem.pub +0 -0
  342. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/__init__.py +0 -0
  343. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/altool/__init__.py +0 -0
  344. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_failure_auth.txt +0 -0
  345. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_failure_other.txt +0 -0
  346. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_upload_success.json +0 -0
  347. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/altool/mocks/mock_validation_failure.json +0 -0
  348. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/altool/test_altool_result.py +0 -0
  349. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/altool/test_altool_retrying.py +0 -0
  350. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/conftest.py +0 -0
  351. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/enums/__init__.py +0 -0
  352. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/enums/test_resource_enum.py +0 -0
  353. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/junit/__init__.py +0 -0
  354. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/junit/mocks/testsuite.xml +0 -0
  355. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/junit/test_xml_generation.py +0 -0
  356. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/certificate-no-password.p12 +0 -0
  357. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/certificate.p12 +0 -0
  358. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/codemagic_io_wildcard_development.mobileprovision +0 -0
  359. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/export_options.plist +0 -0
  360. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock.ipa +0 -0
  361. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock.xcarchive/Products/Applications/Capybara App.app/Capybara App +0 -0
  362. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_0_icloud_container_environments.plist +0 -0
  363. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_1_icloud_container_environments.plist +0 -0
  364. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_2_icloud_container_environments.plist +0 -0
  365. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_openssh_private_key +0 -0
  366. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_rsa_private_key +0 -0
  367. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/mocks/mock_xcode/Contents/version.plist +0 -0
  368. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/simulator/__init__.py +0 -0
  369. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/simulator/mocks/devices.json +0 -0
  370. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/simulator/mocks/simulator.json +0 -0
  371. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/simulator/test_runtime.py +0 -0
  372. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/simulator/test_simulator.py +0 -0
  373. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_certificate.py +0 -0
  374. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_certificate_attributes.py +0 -0
  375. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_code_sign_entitlements.py +0 -0
  376. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_export_options.py +0 -0
  377. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_private_key.py +0 -0
  378. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_provisioning_profile.py +0 -0
  379. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_table.py +0 -0
  380. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/test_xcode.py +0 -0
  381. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/__init__.py +0 -0
  382. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/conftest.py +0 -0
  383. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_1NtPgUPcB1A83X977l5Q91ElstUeVDnqAhumk_VJG8DIS4GA1sb8ElPPHZZGYEHmNvnHU1VVaPDCw1tI8n3uXg__.json +0 -0
  384. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_5rAUs3HknUI7DU8Jyc5RlFcosqCXTOV-qwOaOE1Mul_ppK8QCta-NSxxCdtVg6i12km4zTR5l0SjgzfHGUNxog__.json +0 -0
  385. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_97T9qQZ3dEI1oDS6NvYTPcFk_jUXFJ0NRwyd5FZ2S585JGMtlqbF28Hc85yeifgKEnNoInoW93Za9c5QJCspeQ__.json +0 -0
  386. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_DVcJZnHFaQQlzl8czovv7RuDRQIToEr5_3lLe-Mn1Sm6VreJ5xoXEFqBaWNv0XRmSg00NJ77XzQKgddhfkuk7w__.json +0 -0
  387. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_FZMbIp5VAUEiJv1wUUM-K78Dtmb4o-titbTusDJqRuarbS9OatzAykygXo4NUqEoR9sxCIoeu8VDioQmbba6mw__.json +0 -0
  388. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_Hj6SOUxY1APmxdQEA2HdqbA52GD3WJE571nqr_Z-w8vi_buxP-GUjNxCsGYQvnKnnwlyykwxY-KJmjqKYmPyXQ__.json +0 -0
  389. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_NnCmQ8rMqVyUBgL3ZDjfjJ9Vt1AMGeMzZPkDH30rGMYer0pFDpp4UDZlCEHRImO-48LdC_KdcbjP70IZA6zKUQ__.json +0 -0
  390. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_YK9aPHVT-grv_ZVooRT79GBO9n82BNogkuWVzFO6itJEtbtsRTQpK2-0ZDLot1JpCfPb26aZwEZjeb9G4GHiBQ__.json +0 -0
  391. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0__H1_RrdBT9b-ZhkWCQiRKpHlwURmyWUudeOhj5UslLXhXl8mr9w5CGqdobi9A5wCVEIRMsO4yuFyzx2gMPr-_Q__.json +0 -0
  392. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/0_evvkuGf92MVrmIvhr07911LuRTiPBKDjIQ0q_7L-mPGGYkWVKMBPQ5pB5lbjoaOnvr0fpC9k003EunfwSdss2g__.json +0 -0
  393. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/mocks/actions_invocation_record.json +0 -0
  394. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/test_collector.py +0 -0
  395. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/test_converter.py +0 -0
  396. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/models/xctests/test_xcresult.py +0 -0
  397. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/__init__.py +0 -0
  398. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/__init__.py +0 -0
  399. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/conftest.py +0 -0
  400. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/android.ks +0 -0
  401. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.jks +0 -0
  402. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.p12 +0 -0
  403. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.jks +0 -0
  404. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.p12 +0 -0
  405. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/test_get_certificate.py +0 -0
  406. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/test_get_certificates.py +0 -0
  407. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/shell_tools/keytool/test_validate.py +0 -0
  408. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/__init__.py +0 -0
  409. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/__init__.py +0 -0
  410. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/action_groups/__init__.py +0 -0
  411. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/action_groups/test_apps_action_group.py +0 -0
  412. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/actions/__init__.py +0 -0
  413. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/actions/publish_action/__init__.py +0 -0
  414. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/actions/publish_action/test_publish_arguments.py +0 -0
  415. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/arguments/__init__.py +0 -0
  416. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/arguments/test_beta_build_localizations.py +0 -0
  417. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/conftest.py +0 -0
  418. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/mocks/AuthKeyMock.p8 +0 -0
  419. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/app_store_connect/test_from_cli_args.py +0 -0
  420. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/__init__.py +0 -0
  421. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/mocks/google_play_tracks.json +0 -0
  422. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/test_argument_types.py +0 -0
  423. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/google_play/test_google_play.py +0 -0
  424. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/mocks/firebase_releases.json +0 -0
  425. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/test_android_app_bundle.py +0 -0
  426. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/test_keychain.py +0 -0
  427. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/tools/test_universal_apk_generator.py +0 -0
  428. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/utilities/__init__.py +0 -0
  429. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/utilities/decorators/__init__.py +0 -0
  430. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/utilities/decorators/test_deprecated.py +0 -0
  431. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/utilities/test_backwards_file_reader.py +0 -0
  432. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/utilities/test_case_conversion.py +0 -0
  433. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/tests/utilities/test_levenshtein_distance.py +0 -0
  434. {codemagic_cli_tools-0.53.3 → codemagic_cli_tools-0.53.5}/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.3
3
+ Version: 0.53.5
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.3"
3
+ version = "0.53.5"
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.53.3'
3
+ __version__ = '0.53.5'
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.3.dev"
3
+ __version__ = "0.53.5.dev"
4
4
  __url__ = "https://github.com/codemagic-ci-cd/cli-tools"
5
5
  __licence__ = "GNU General Public License v3.0"
@@ -6,6 +6,7 @@ from .argument import Argument
6
6
  from .argument import ArgumentProperties
7
7
  from .argument import CommonArgumentTypes
8
8
  from .argument import EnvironmentArgumentValue
9
+ from .argument import MutuallyExclusiveGroup
9
10
  from .argument import TypedCliArgument
10
11
  from .cli_app import CliApp
11
12
  from .cli_app import CliAppException
@@ -5,5 +5,6 @@ from .argument_formatter import ArgumentFormatter
5
5
  from .argument_parser_builder import ArgumentParserBuilder
6
6
  from .argument_properties import ArgumentProperties
7
7
  from .common_argument_types import CommonArgumentTypes
8
+ from .mutually_exclusive_groups import MutuallyExclusiveGroup
8
9
  from .typed_cli_argument import EnvironmentArgumentValue
9
10
  from .typed_cli_argument import TypedCliArgument
@@ -0,0 +1,220 @@
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import dataclasses
5
+ from typing import TYPE_CHECKING
6
+ from typing import Dict
7
+ from typing import Optional
8
+ from typing import Sequence
9
+ from typing import Tuple
10
+ from typing import Type
11
+
12
+ from codemagic.cli.cli_help_formatter import CliHelpFormatter
13
+ from codemagic.cli.colors import Colors
14
+
15
+ from .argument_formatter import ArgumentFormatter
16
+ from .mutually_exclusive_groups import MutuallyExclusiveGroup
17
+ from .mutually_exclusive_groups import MutuallyExclusiveGroups
18
+
19
+ if TYPE_CHECKING:
20
+ from argparse import _ArgumentGroup as ArgumentGroup
21
+ from argparse import _SubParsersAction as SubParsersAction
22
+
23
+ from codemagic.cli import Argument
24
+ from codemagic.cli.argument import ActionCallable
25
+ from codemagic.cli.cli_app import CliApp
26
+
27
+
28
+ @dataclasses.dataclass
29
+ class _ArgumentGroups:
30
+ required: Optional[ArgumentGroup] = None
31
+ optionals: Optional[ArgumentGroup] = None
32
+ mutually_exclusive: Dict[MutuallyExclusiveGroup, ArgumentGroup] = dataclasses.field(default_factory=dict)
33
+ custom: Dict[str, ArgumentGroup] = dataclasses.field(default_factory=dict)
34
+
35
+ def register_arguments(self, arguments: Sequence[Argument]):
36
+ argument_group: Optional[ArgumentGroup]
37
+ for argument in arguments:
38
+ if argument.argument_group_name:
39
+ argument_group = self.custom[argument.argument_group_name]
40
+ elif argument.mutually_exclusive_group:
41
+ argument_group = self.mutually_exclusive[argument.mutually_exclusive_group]
42
+ elif argument.is_required():
43
+ argument_group = self.required
44
+ else:
45
+ argument_group = self.optionals
46
+
47
+ if argument_group:
48
+ argument.register(argument_group)
49
+
50
+
51
+ class ArgumentParserBuilder:
52
+ def __init__(
53
+ self,
54
+ cli_app: Type[CliApp],
55
+ cli_action: ActionCallable,
56
+ parent_parser: SubParsersAction,
57
+ for_deprecated_alias: bool = False,
58
+ ):
59
+ self._cli_app = cli_app
60
+ self._cli_action = cli_action
61
+ self._action_parser = self._create_action_parser(parent_parser, for_deprecated_alias)
62
+
63
+ def _create_action_parser(self, parent_parser: SubParsersAction, for_deprecated_alias: bool):
64
+ if for_deprecated_alias:
65
+ if self._cli_action.deprecation_info is None:
66
+ raise RuntimeError(f"Deprecated alias requested for {self._cli_action.action_name} without alias")
67
+
68
+ deprecation_message = self._cli_action.deprecation_info.get_message(
69
+ self._full_action_name,
70
+ Colors.YELLOW,
71
+ Colors.BOLD,
72
+ )
73
+ return parent_parser.add_parser(
74
+ self._cli_action.deprecation_info.alias,
75
+ formatter_class=CliHelpFormatter,
76
+ description=f"{deprecation_message} {Colors.BOLD(self._cli_action.__doc__)}",
77
+ )
78
+ else:
79
+ return parent_parser.add_parser(
80
+ self._cli_action.action_name,
81
+ formatter_class=CliHelpFormatter,
82
+ description=Colors.BOLD(self._cli_action.__doc__),
83
+ help=self._cli_action.__doc__,
84
+ )
85
+
86
+ @property
87
+ def _full_action_name(self) -> str:
88
+ executable = self._cli_app.get_executable_name()
89
+ if self._cli_action.action_group:
90
+ return f"{executable} {self._cli_action.action_group.name} {self._cli_action.action_name}"
91
+ else:
92
+ return f"{executable} {self._cli_action.action_name}"
93
+
94
+ @classmethod
95
+ def set_default_cli_options(cls, cli_options_parser):
96
+ options_group = cli_options_parser.add_argument_group(Colors.UNDERLINE("Options"))
97
+ options_group.add_argument(
98
+ "--log-stream",
99
+ type=str,
100
+ default="stderr",
101
+ choices=["stderr", "stdout"],
102
+ help=f'Log output stream. {ArgumentFormatter.format_default_value("stderr")}',
103
+ )
104
+ options_group.add_argument(
105
+ "--no-color",
106
+ dest="no_color",
107
+ action="store_true",
108
+ help="Do not use ANSI colors to format terminal output",
109
+ )
110
+ options_group.add_argument(
111
+ "--version",
112
+ dest="show_version",
113
+ action="store_true",
114
+ help="Show tool version and exit",
115
+ )
116
+ options_group.add_argument(
117
+ "-s",
118
+ "--silent",
119
+ dest="enable_logging",
120
+ action="store_false",
121
+ help="Disable log output for commands",
122
+ )
123
+ options_group.add_argument(
124
+ "-v",
125
+ "--verbose",
126
+ dest="verbose",
127
+ action="store_true",
128
+ help="Enable verbose logging for commands",
129
+ )
130
+
131
+ options_group.set_defaults(
132
+ enable_logging=True,
133
+ no_color=False,
134
+ show_version=False,
135
+ verbose=False,
136
+ )
137
+
138
+ @staticmethod
139
+ def _get_mutually_exclusive_group_texts(group: MutuallyExclusiveGroup, executable: str) -> Tuple[str, str]:
140
+ if group.required:
141
+ title_prefix, description_prefix, description_verb = "Required", "Exactly", "must"
142
+ else:
143
+ title_prefix, description_prefix, description_verb = "Optional", "Only", "can"
144
+
145
+ title = f"{title_prefix} mutually exclusive arguments for {executable} to {Colors.BOLD(group.name)}"
146
+ description = f"{description_prefix} one of those options {description_verb} be selected"
147
+ return title, description
148
+
149
+ def _setup_custom_argument_groups(self, group_names: Sequence[str], executable) -> Dict[str, ArgumentGroup]:
150
+ argument_groups = {}
151
+ for group_name in group_names:
152
+ description = f"Optional arguments for {executable} to {Colors.BOLD(group_name)}"
153
+ argument_group = self._action_parser.add_argument_group(Colors.UNDERLINE(description))
154
+ argument_groups[group_name] = argument_group
155
+ return argument_groups
156
+
157
+ def _setup_mutually_exclusive_groups(
158
+ self,
159
+ mutually_exclusive_groups: Sequence[MutuallyExclusiveGroup],
160
+ executable: str,
161
+ ) -> Dict[MutuallyExclusiveGroup, ArgumentGroup]:
162
+ argument_groups = {}
163
+ for mutually_exclusive_group in mutually_exclusive_groups:
164
+ title, description = self._get_mutually_exclusive_group_texts(mutually_exclusive_group, executable)
165
+ argument_group = self._action_parser.add_argument_group(Colors.UNDERLINE(title), description)
166
+ mutually_exclusive_argument_group = argument_group.add_mutually_exclusive_group(
167
+ required=mutually_exclusive_group.required,
168
+ )
169
+ argument_groups[mutually_exclusive_group] = mutually_exclusive_argument_group
170
+ return argument_groups
171
+
172
+ def _setup_cli_app_options(self):
173
+ executable = self._action_parser.prog.split()[0]
174
+
175
+ mutually_exclusive_groups = MutuallyExclusiveGroups.from_argument_list(self._cli_app.CLASS_ARGUMENTS)
176
+
177
+ argument_groups = _ArgumentGroups()
178
+
179
+ required_args_title = Colors.UNDERLINE(f"Required arguments for {Colors.BOLD(executable)}")
180
+ argument_groups.required = self._action_parser.add_argument_group(required_args_title)
181
+ argument_groups.mutually_exclusive.update(
182
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.required, executable),
183
+ )
184
+
185
+ optional_args_title = Colors.UNDERLINE(f"Optional arguments for {Colors.BOLD(executable)}")
186
+ argument_groups.optionals = self._action_parser.add_argument_group(optional_args_title)
187
+ argument_groups.mutually_exclusive.update(
188
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.optional, executable),
189
+ )
190
+
191
+ argument_groups.register_arguments(self._cli_app.CLASS_ARGUMENTS)
192
+
193
+ def _setup_cli_action_options(self):
194
+ executable = f"command {self._cli_action.action_name}"
195
+ mutually_exclusive_groups = MutuallyExclusiveGroups.from_argument_list(self._cli_action.arguments)
196
+
197
+ argument_groups = _ArgumentGroups()
198
+
199
+ required_args_title = f"Required arguments for command {Colors.BOLD(self._cli_action.action_name)}"
200
+ argument_groups.required = self._action_parser.add_argument_group(Colors.UNDERLINE(required_args_title))
201
+ argument_groups.mutually_exclusive.update(
202
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.required, executable),
203
+ )
204
+
205
+ optional_args_title = f"Optional arguments for command {Colors.BOLD(self._cli_action.action_name)}"
206
+ argument_groups.optionals = self._action_parser.add_argument_group(Colors.UNDERLINE(optional_args_title))
207
+ argument_groups.mutually_exclusive.update(
208
+ self._setup_mutually_exclusive_groups(mutually_exclusive_groups.optional, executable),
209
+ )
210
+
211
+ custom_group_names = {a.argument_group_name for a in self._cli_action.arguments if a.argument_group_name}
212
+ argument_groups.custom = self._setup_custom_argument_groups(sorted(custom_group_names), executable)
213
+
214
+ argument_groups.register_arguments(self._cli_action.arguments)
215
+
216
+ def build(self) -> argparse.ArgumentParser:
217
+ self._setup_cli_app_options()
218
+ self._setup_cli_action_options()
219
+ self.set_default_cli_options(self._action_parser)
220
+ return self._action_parser
@@ -2,6 +2,7 @@
2
2
  from __future__ import annotations
3
3
 
4
4
  import copy
5
+ from typing import TYPE_CHECKING
5
6
  from typing import Any
6
7
  from typing import Callable
7
8
  from typing import Dict
@@ -11,6 +12,9 @@ from typing import Tuple
11
12
  from typing import Type
12
13
  from typing import Union
13
14
 
15
+ if TYPE_CHECKING:
16
+ from codemagic.cli import MutuallyExclusiveGroup
17
+
14
18
 
15
19
  class ArgumentProperties(NamedTuple):
16
20
  key: str
@@ -19,6 +23,7 @@ class ArgumentProperties(NamedTuple):
19
23
  flags: Tuple[str, ...] = tuple()
20
24
  argparse_kwargs: Optional[Dict[str, Any]] = None
21
25
  argument_group_name: Optional[str] = None
26
+ mutually_exclusive_group: Optional[MutuallyExclusiveGroup] = None
22
27
 
23
28
  @classmethod
24
29
  def duplicate(cls, template: Union[Tuple, ArgumentProperties], **overwrites) -> ArgumentProperties:
@@ -0,0 +1,35 @@
1
+ from __future__ import annotations
2
+
3
+ import dataclasses
4
+ from typing import NamedTuple
5
+ from typing import Sequence
6
+
7
+ from .argument import Argument
8
+
9
+
10
+ class MutuallyExclusiveGroup(NamedTuple):
11
+ name: str
12
+ required: bool
13
+
14
+
15
+ @dataclasses.dataclass(frozen=True)
16
+ class MutuallyExclusiveGroups:
17
+ required: Sequence[MutuallyExclusiveGroup]
18
+ optional: Sequence[MutuallyExclusiveGroup]
19
+
20
+ @classmethod
21
+ def from_argument_list(cls, arguments: Sequence[Argument]) -> MutuallyExclusiveGroups:
22
+ required_groups, optional_groups = set(), set()
23
+
24
+ for argument in arguments:
25
+ if not argument.mutually_exclusive_group:
26
+ continue
27
+ elif argument.mutually_exclusive_group.required:
28
+ required_groups.add(argument.mutually_exclusive_group)
29
+ else:
30
+ optional_groups.add(argument.mutually_exclusive_group)
31
+
32
+ return MutuallyExclusiveGroups(
33
+ required=tuple(required_groups),
34
+ optional=tuple(optional_groups),
35
+ )
@@ -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)
@@ -38,7 +38,7 @@ class ReleasesActionGroup(FirebaseAppDistributionAction, ABC):
38
38
  List releases for the Firebase application
39
39
  """
40
40
 
41
- app_identifier = AppIdentifier(self.project_id, app_id)
41
+ app_identifier = AppIdentifier(self.project_number, app_id)
42
42
  try:
43
43
  releases = self.client.releases.list(app_identifier, order_by, limit)
44
44
  except GoogleError as e:
@@ -18,7 +18,7 @@ class GetLatestBuildVersionAction(FirebaseAppDistributionAction, ABC):
18
18
  """
19
19
  Get latest build version from Firebase
20
20
  """
21
- app_identifier = AppIdentifier(self.project_id, app_id)
21
+ app_identifier = AppIdentifier(self.project_number, app_id)
22
22
  try:
23
23
  releases = self.client.releases.list(app_identifier, limit=1)
24
24
  except GoogleError as e:
@@ -4,13 +4,24 @@ from codemagic.google.resources import OrderBy
4
4
 
5
5
  from .argument_types import CredentialsArgument
6
6
 
7
+ select_project_group = cli.MutuallyExclusiveGroup(
8
+ name="select project",
9
+ required=True,
10
+ )
11
+
7
12
 
8
13
  class FirebaseArgument(cli.Argument):
9
14
  PROJECT_ID = cli.ArgumentProperties(
10
15
  key="project_id",
11
- flags=("--project-id", "-p"),
12
- description=f'Project ID in Firebase. For example `{Colors.WHITE("228333310124")}`',
13
- argparse_kwargs={"required": True},
16
+ flags=("--project-id",),
17
+ description=f'Deprecated in version 0.53.5. Use `{Colors.BRIGHT_BLUE("--project-number")}` instead',
18
+ mutually_exclusive_group=select_project_group,
19
+ )
20
+ PROJECT_NUMBER = cli.ArgumentProperties(
21
+ key="project_number",
22
+ flags=("--project-number", "-p"),
23
+ description=f'Project number in Firebase. For example `{Colors.WHITE("228333310124")}`',
24
+ mutually_exclusive_group=select_project_group,
14
25
  )
15
26
  FIREBASE_SERVICE_ACCOUNT_CREDENTIALS = cli.ArgumentProperties(
16
27
  key="credentials",
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env python3
2
+
3
+ from __future__ import annotations
4
+
5
+ import argparse
6
+ from typing import Dict
7
+ from typing import Optional
8
+
9
+ from codemagic import cli
10
+ from codemagic.google.firebase_client import FirebaseClient
11
+ from codemagic.utilities import log
12
+ from codemagic.utilities.decorators import deprecated
13
+
14
+ from .action_groups import ReleasesActionGroup
15
+ from .actions import GetLatestBuildVersionAction
16
+ from .arguments import FirebaseArgument
17
+
18
+
19
+ @cli.common_arguments(
20
+ FirebaseArgument.PROJECT_ID,
21
+ FirebaseArgument.PROJECT_NUMBER,
22
+ FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS,
23
+ )
24
+ class FirebaseAppDistribution(
25
+ cli.CliApp,
26
+ GetLatestBuildVersionAction,
27
+ ReleasesActionGroup,
28
+ ):
29
+ """
30
+ Utility to list releases and retrieve the latest release build version number from Firebase
31
+ """
32
+
33
+ def __init__(
34
+ self,
35
+ credentials: Dict,
36
+ project_number: Optional[str] = None,
37
+ project_id: Optional[str] = None,
38
+ **kwargs,
39
+ ):
40
+ if not project_id and not project_number:
41
+ raise ValueError("Missing project_number")
42
+ super().__init__(**kwargs)
43
+ self.client = FirebaseClient(credentials)
44
+ self._project_id = project_id
45
+ self._project_number = project_number
46
+ if project_id:
47
+ _ = self.project_id # Just to trigger deprecation warning
48
+
49
+ @property
50
+ @deprecated("0.53.5", 'Use "FirebaseAppDistribution.project_number" instead.')
51
+ def project_id(self):
52
+ return self.project_number
53
+
54
+ @property
55
+ def project_number(self):
56
+ if not self._project_number:
57
+ return self._project_id
58
+ return self._project_number
59
+
60
+ @classmethod
61
+ def from_cli_args(cls, cli_args: argparse.Namespace) -> FirebaseAppDistribution:
62
+ credentials_argument = FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS.from_args(cli_args)
63
+ if credentials_argument is None:
64
+ raise FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS.raise_argument_error()
65
+ project_id = FirebaseArgument.PROJECT_ID.from_args(cli_args)
66
+ if project_id:
67
+ message = (
68
+ "Deprecation warning! "
69
+ f'Flag "{FirebaseArgument.get_flag(FirebaseArgument.PROJECT_ID)}" was deprecated in version 0.53.5 '
70
+ "and is subject for removal in future releases. "
71
+ f'Use "{FirebaseArgument.get_flag(FirebaseArgument.PROJECT_NUMBER)}" instead.'
72
+ )
73
+ log.get_logger(cls).warning(cli.Colors.YELLOW(message))
74
+
75
+ project_number = FirebaseArgument.PROJECT_NUMBER.from_args(cli_args)
76
+
77
+ if not project_id and not project_number:
78
+ raise FirebaseArgument.PROJECT_NUMBER.raise_argument_error()
79
+
80
+ return FirebaseAppDistribution(
81
+ credentials_argument.value,
82
+ project_number=project_id or project_number,
83
+ **cls._parent_class_kwargs(cli_args),
84
+ )
85
+
86
+
87
+ if __name__ == "__main__":
88
+ FirebaseAppDistribution.invoke_cli()
@@ -16,7 +16,7 @@ class FirebaseAppDistributionAction(ABC):
16
16
 
17
17
  @property
18
18
  @abstractmethod
19
- def project_id(self):
19
+ def project_number(self):
20
20
  ...
21
21
 
22
22
  @classmethod
@@ -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()
@@ -21,6 +21,7 @@ from googleapiclient import discovery
21
21
  from oauth2client.service_account import ServiceAccountCredentials
22
22
 
23
23
  credentials_argument = FirebaseArgument.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS
24
+ project_number_argument = FirebaseArgument.PROJECT_NUMBER
24
25
  project_id_argument = FirebaseArgument.PROJECT_ID
25
26
 
26
27
 
@@ -41,7 +42,8 @@ def register_args(cli_argument_group):
41
42
  def namespace_kwargs():
42
43
  ns_kwargs = {
43
44
  credentials_argument.key: CredentialsArgument('{"type":"service_account"}'),
44
- project_id_argument.key: "228333310124",
45
+ project_number_argument.key: "228333310124",
46
+ project_id_argument.key: None,
45
47
  }
46
48
  for arg in FirebaseAppDistribution.CLASS_ARGUMENTS:
47
49
  if not hasattr(arg.type, "environment_variable_key"):
@@ -158,7 +160,7 @@ def app_identifier():
158
160
 
159
161
  @pytest.fixture
160
162
  def firebase_app_distribution(app_identifier):
161
- return FirebaseAppDistribution({"type": "service_account"}, app_identifier.project_id)
163
+ return FirebaseAppDistribution({"type": "service_account"}, app_identifier.project_id, None)
162
164
 
163
165
 
164
166
  def test_list_releases(firebase_app_distribution, mock_releases_list, releases, app_identifier):