thestage 0.6.1__tar.gz → 0.6.2__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 (175) hide show
  1. {thestage-0.6.1 → thestage-0.6.2}/PKG-INFO +1 -1
  2. {thestage-0.6.1 → thestage-0.6.2}/pyproject.toml +1 -1
  3. {thestage-0.6.1 → thestage-0.6.2}/thestage/__init__.py +1 -1
  4. {thestage-0.6.1 → thestage-0.6.2}/thestage/controllers/project_controller.py +18 -10
  5. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/git/git_client.py +7 -4
  6. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/project_service.py +32 -39
  7. {thestage-0.6.1 → thestage-0.6.2}/LICENSE.txt +0 -0
  8. {thestage-0.6.1 → thestage-0.6.2}/README.md +0 -0
  9. {thestage-0.6.1 → thestage-0.6.2}/thestage/.env +0 -0
  10. {thestage-0.6.1 → thestage-0.6.2}/thestage/__main__.py +0 -0
  11. {thestage-0.6.1 → thestage-0.6.2}/thestage/cli_command.py +0 -0
  12. {thestage-0.6.1 → thestage-0.6.2}/thestage/cli_command_helper.py +0 -0
  13. {thestage-0.6.1 → thestage-0.6.2}/thestage/color_scheme/color_scheme.py +0 -0
  14. {thestage-0.6.1 → thestage-0.6.2}/thestage/config/__init__.py +0 -0
  15. {thestage-0.6.1 → thestage-0.6.2}/thestage/config/config_storage.py +0 -0
  16. {thestage-0.6.1 → thestage-0.6.2}/thestage/config/env_base.py +0 -0
  17. {thestage-0.6.1 → thestage-0.6.2}/thestage/controllers/__init__.py +0 -0
  18. {thestage-0.6.1 → thestage-0.6.2}/thestage/controllers/base_controller.py +0 -0
  19. {thestage-0.6.1 → thestage-0.6.2}/thestage/controllers/config_controller.py +0 -0
  20. {thestage-0.6.1 → thestage-0.6.2}/thestage/controllers/container_controller.py +0 -0
  21. {thestage-0.6.1 → thestage-0.6.2}/thestage/controllers/instance_controller.py +0 -0
  22. {thestage-0.6.1 → thestage-0.6.2}/thestage/controllers/utils_controller.py +0 -0
  23. {thestage-0.6.1 → thestage-0.6.2}/thestage/debug_main.dist.py +0 -0
  24. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/__init__.py +0 -0
  25. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/container.py +0 -0
  26. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/enums/__init__.py +0 -0
  27. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/enums/order_direction_type.py +0 -0
  28. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/enums/shell_type.py +0 -0
  29. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/enums/tail_output_type.py +0 -0
  30. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/enums/yes_no_response.py +0 -0
  31. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/file_item.py +0 -0
  32. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/project_inference_simulator.py +0 -0
  33. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/project_inference_simulator_model.py +0 -0
  34. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/project_task.py +0 -0
  35. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/rented_instance.py +0 -0
  36. {thestage-0.6.1 → thestage-0.6.2}/thestage/entities/self_hosted_instance.py +0 -0
  37. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/__init__.py +0 -0
  38. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/auth_exception.py +0 -0
  39. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/base_exception.py +0 -0
  40. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/business_logic_exception.py +0 -0
  41. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/config_exception.py +0 -0
  42. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/file_system_exception.py +0 -0
  43. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/git_access_exception.py +0 -0
  44. {thestage-0.6.1 → thestage-0.6.2}/thestage/exceptions/remote_server_exception.py +0 -0
  45. {thestage-0.6.1 → thestage-0.6.2}/thestage/git/ProgressPrinter.py +0 -0
  46. {thestage-0.6.1 → thestage-0.6.2}/thestage/helpers/__init__.py +0 -0
  47. {thestage-0.6.1 → thestage-0.6.2}/thestage/helpers/error_handler.py +0 -0
  48. {thestage-0.6.1 → thestage-0.6.2}/thestage/helpers/exception_hook.py +0 -0
  49. {thestage-0.6.1 → thestage-0.6.2}/thestage/helpers/logger/__init__.py +0 -0
  50. {thestage-0.6.1 → thestage-0.6.2}/thestage/helpers/logger/app_logger.py +0 -0
  51. {thestage-0.6.1 → thestage-0.6.2}/thestage/helpers/ssh_util.py +0 -0
  52. {thestage-0.6.1 → thestage-0.6.2}/thestage/i18n/en_GB/messages.po +0 -0
  53. {thestage-0.6.1 → thestage-0.6.2}/thestage/i18n/translation.py +0 -0
  54. {thestage-0.6.1 → thestage-0.6.2}/thestage/main.py +0 -0
  55. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/.env +0 -0
  56. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/__init__.py +0 -0
  57. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/abstract_mapper.py +0 -0
  58. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/abstract_service.py +0 -0
  59. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/app_config_service.py +0 -0
  60. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/__init__.py +0 -0
  61. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/git/__init__.py +0 -0
  62. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/__init__.py +0 -0
  63. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/api_client.py +0 -0
  64. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/core/api_client_core.py +0 -0
  65. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/core/http_client_exception.py +0 -0
  66. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/__init__.py +0 -0
  67. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/base_response.py +0 -0
  68. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/cloud_provider_region.py +0 -0
  69. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/container_param_request.py +0 -0
  70. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/container_response.py +0 -0
  71. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/docker_container_assigned_device.py +0 -0
  72. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_request.py +0 -0
  73. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_response.py +0 -0
  74. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/docker_container_mapping.py +0 -0
  75. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/entity_filter_request.py +0 -0
  76. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/__init__.py +0 -0
  77. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/container_pending_action.py +0 -0
  78. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/container_status.py +0 -0
  79. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/cpu_type.py +0 -0
  80. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/currency_type.py +0 -0
  81. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/daemon_status.py +0 -0
  82. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/disk_type.py +0 -0
  83. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/drive_type.py +0 -0
  84. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/gpu_name.py +0 -0
  85. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/inference_model_status.py +0 -0
  86. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/inference_simulator_status.py +0 -0
  87. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/instance_rented_status.py +0 -0
  88. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/instance_type.py +0 -0
  89. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/location_region.py +0 -0
  90. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/power_status.py +0 -0
  91. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/provider_name.py +0 -0
  92. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/selfhosted_status.py +0 -0
  93. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/task_execution_status.py +0 -0
  94. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/enums/task_status.py +0 -0
  95. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/frontend_status.py +0 -0
  96. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_instance_request.py +0 -0
  97. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_instance_response.py +0 -0
  98. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_sagemaker_request.py +0 -0
  99. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_sagemaker_response.py +0 -0
  100. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/get_inference_simulator_request.py +0 -0
  101. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/get_inference_simulator_response.py +0 -0
  102. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_list_for_project_request.py +0 -0
  103. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_list_for_project_response.py +0 -0
  104. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_request.py +0 -0
  105. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_response.py +0 -0
  106. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_simulator_model_response.py +0 -0
  107. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/inference_simulator_response.py +0 -0
  108. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/installed_service.py +0 -0
  109. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/instance_detected_gpus.py +0 -0
  110. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/instance_rented_response.py +0 -0
  111. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/logging_controller/docker_container_log_stream_request.py +0 -0
  112. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_request.py +0 -0
  113. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_response.py +0 -0
  114. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/logging_controller/task_log_stream_request.py +0 -0
  115. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/logging_controller/user_logs_query_request.py +0 -0
  116. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/logging_controller/user_logs_query_response.py +0 -0
  117. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/paginated_entity_list.py +0 -0
  118. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/pagination_data.py +0 -0
  119. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/price_definition.py +0 -0
  120. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_get_deploy_ssh_key_request.py +0 -0
  121. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_get_deploy_ssh_key_response.py +0 -0
  122. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_push_inference_simulator_model_request.py +0 -0
  123. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_push_inference_simulator_model_response.py +0 -0
  124. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_run_task_request.py +0 -0
  125. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_run_task_response.py +0 -0
  126. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_request.py +0 -0
  127. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_response.py +0 -0
  128. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/project_response.py +0 -0
  129. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/selfhosted_instance_response.py +0 -0
  130. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/sftp_path_helper.py +0 -0
  131. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_request.py +0 -0
  132. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_response.py +0 -0
  133. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_public_key_to_instance_request.py +0 -0
  134. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_public_key_to_instance_response.py +0 -0
  135. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_public_ssh_key_request.py +0 -0
  136. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_public_ssh_key_response.py +0 -0
  137. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_request.py +0 -0
  138. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_response.py +0 -0
  139. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/task_controller/task_status_localized_map_response.py +0 -0
  140. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/task_controller/task_view_response.py +0 -0
  141. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/user_controller/user_profile.py +0 -0
  142. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/clients/thestage_api/dtos/validate_token_response.py +0 -0
  143. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/config_provider/__init__.py +0 -0
  144. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/config_provider/config_provider.py +0 -0
  145. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/connect/connect_service.py +0 -0
  146. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/connect/dto/remote_server_config.py +0 -0
  147. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/container/__init__.py +0 -0
  148. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/container/container_service.py +0 -0
  149. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/container/mapper/__init__.py +0 -0
  150. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/container/mapper/container_mapper.py +0 -0
  151. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/core_files/config_entity.py +0 -0
  152. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/filesystem_service.py +0 -0
  153. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/instance/__init__.py +0 -0
  154. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/instance/instance_service.py +0 -0
  155. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/instance/mapper/__init__.py +0 -0
  156. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/instance/mapper/instance_mapper.py +0 -0
  157. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/instance/mapper/selfhosted_mapper.py +0 -0
  158. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/logging/byte_print_style.py +0 -0
  159. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/logging/dto/log_message.py +0 -0
  160. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/logging/dto/log_type.py +0 -0
  161. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/logging/exception/log_polling_exception.py +0 -0
  162. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/logging/logging_constants.py +0 -0
  163. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/logging/logging_service.py +0 -0
  164. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/__init__.py +0 -0
  165. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/dto/inference_simulator_dto.py +0 -0
  166. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/dto/inference_simulator_model_dto.py +0 -0
  167. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/dto/project_config.py +0 -0
  168. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/mapper/__init__.py +0 -0
  169. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/mapper/project_inference_simulator_mapper.py +0 -0
  170. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/mapper/project_inference_simulator_model_mapper.py +0 -0
  171. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/project/mapper/project_task_mapper.py +0 -0
  172. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/remote_server_service.py +0 -0
  173. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/service_factory.py +0 -0
  174. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/task/dto/task_dto.py +0 -0
  175. {thestage-0.6.1 → thestage-0.6.2}/thestage/services/validation_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: thestage
3
- Version: 0.6.1
3
+ Version: 0.6.2
4
4
  Summary:
5
5
  Author: TheStage AI team
6
6
  Author-email: hello@thestage.ai
@@ -1,7 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = "thestage"
3
3
 
4
- version = "0.6.1"
4
+ version = "0.6.2"
5
5
 
6
6
  description = ""
7
7
  authors = ["TheStage AI team <hello@thestage.ai>"]
@@ -1,3 +1,3 @@
1
1
  from . import *
2
2
  __app_name__ = "thestage"
3
- __version__ = "0.6.1"
3
+ __version__ = "0.6.2"
@@ -137,9 +137,16 @@ def run(
137
137
  None,
138
138
  "--files-add",
139
139
  "-fa",
140
- help=__("Files to add to the commit. You can add files by their relative path from the working directory with a comma as a separator. Use '.' to add all files."),
140
+ help=__("Files to add to the commit. You can add files by their relative path from the working directory with a comma as a separator."),
141
141
  is_eager=False,
142
142
  ),
143
+ is_skip_auto_commit: Optional[bool] = typer.Option(
144
+ False,
145
+ "--skip-autocommit",
146
+ "-sa",
147
+ help=__("Skip automatic commit of the changes"),
148
+ is_eager=False,
149
+ ),
143
150
  ):
144
151
  command_name = CliCommand.PROJECT_RUN
145
152
  app_logger.info(f'Running {command_name} from {get_current_directory()}')
@@ -158,6 +165,7 @@ def run(
158
165
  docker_container_slug=docker_container_slug,
159
166
  task_title=task_title,
160
167
  files_to_add=files_to_add,
168
+ is_skip_auto_commit=is_skip_auto_commit,
161
169
  )
162
170
 
163
171
  if enable_log_stream:
@@ -265,13 +273,6 @@ def checkout_project(
265
273
  help=__("Full path to working directory"),
266
274
  is_eager=False,
267
275
  ),
268
- files_to_add: Optional[str] = typer.Option(
269
- None,
270
- "--files-add",
271
- "-fa",
272
- help=__("Files to add to the commit. You can add files by their relative path from the working directory with a comma as a separator. Use '.' to add all files."),
273
- is_eager=False,
274
- ),
275
276
  ):
276
277
  command_name = CliCommand.PROJECT_CHECKOUT
277
278
  app_logger.info(f'Running {command_name} from {get_current_directory()}')
@@ -293,7 +294,6 @@ def checkout_project(
293
294
  project_service.checkout_project(
294
295
  task_id=task_id,
295
296
  branch_name=branch_name,
296
- files_to_add=files_to_add,
297
297
  )
298
298
 
299
299
  raise typer.Exit(0)
@@ -457,7 +457,14 @@ def run_inference_simulator(
457
457
  None,
458
458
  "--files-add",
459
459
  "-fa",
460
- help=__("Files to add to the commit. You can add files by their relative path from the working directory with a comma as a separator. Use '.' to add all files."),
460
+ help=__("Files to add to the commit. You can add files by their relative path from the working directory with a comma as a separator."),
461
+ is_eager=False,
462
+ ),
463
+ is_skip_auto_commit: Optional[bool] = typer.Option(
464
+ False,
465
+ "--skip-autocommit",
466
+ "-sa",
467
+ help=__("Skip automatic commit of the changes"),
461
468
  is_eager=False,
462
469
  ),
463
470
  ):
@@ -506,6 +513,7 @@ def run_inference_simulator(
506
513
  inference_dir=inference_dir,
507
514
  is_skip_installation=is_skip_installation,
508
515
  files_to_add=files_to_add,
516
+ is_skip_auto_commit=is_skip_auto_commit,
509
517
  )
510
518
 
511
519
  if enable_log_stream:
@@ -267,7 +267,10 @@ class GitLocalClient:
267
267
  if repo:
268
268
  try:
269
269
  diff: str = repo.git.diff("--cached", "--stat")
270
- return diff.splitlines()[-1]
270
+ if diff:
271
+ return diff.splitlines()[-1]
272
+ else:
273
+ return None
271
274
  except ValueError as e:
272
275
  return str(e)
273
276
 
@@ -282,10 +285,10 @@ class GitLocalClient:
282
285
  If files_to_add is not provided, adds all changed/new files except those that are too large.
283
286
  Returns True if files were added, False if operation was aborted due to large files.
284
287
  """
285
- if files_to_add == '.':
286
- return self.add_all_files(repo_path=repo_path, max_file_size=max_file_size)
288
+ if files_to_add:
289
+ return self.add_files_by_path(repo_path=repo_path, files_to_add=files_to_add, max_file_size=max_file_size)
287
290
 
288
- return self.add_files_by_path(repo_path=repo_path, files_to_add=files_to_add, max_file_size=max_file_size)
291
+ return self.add_all_files(repo_path=repo_path, max_file_size=max_file_size)
289
292
 
290
293
 
291
294
  def add_files_by_path(
@@ -233,6 +233,7 @@ class ProjectService(AbstractService):
233
233
  commit_hash: Optional[str] = None,
234
234
  docker_container_slug: Optional[str] = None,
235
235
  files_to_add: Optional[str] = None,
236
+ is_skip_auto_commit: Optional[bool] = False,
236
237
  ) -> Optional[TaskDto]:
237
238
  config = self.__config_provider.get_config()
238
239
  project_config: ProjectConfig = self.__get_fixed_project_config()
@@ -280,24 +281,23 @@ class ProjectService(AbstractService):
280
281
 
281
282
  self.__config_provider.save_project_config(project_config=project_config)
282
283
 
283
- if files_to_add and commit_hash:
284
- typer.echo(__("Cannot provide both files to add and commit hash."))
285
- raise typer.Exit(1)
286
-
287
- has_changes = self.__git_local_client.has_changes_with_untracked(
288
- path=config.runtime.working_directory,
289
- )
284
+ has_wrong_args = files_to_add and commit_hash or is_skip_auto_commit and commit_hash or files_to_add and is_skip_auto_commit
290
285
 
291
- if not files_to_add and has_changes:
292
- print(f"[{ColorScheme.USEFUL_INFO.value}]Uncommitted changes detected, but the command is being run without adding these files. If you want to include these changes in the task, use the -fa flag (e.g., -fa .)[{ColorScheme.USEFUL_INFO.value}]")
286
+ if has_wrong_args:
287
+ warning_msg = f"[{ColorScheme.WARNING.value}][WARNING] You can provide only one of the following arguments: --commit-hash, --files-add, --skip-autocommit[{ColorScheme.WARNING.value}]"
288
+ print(warning_msg)
289
+ raise typer.Exit(1)
293
290
 
294
- if files_to_add:
291
+ if not is_skip_auto_commit and not commit_hash:
295
292
  is_git_folder = self.__git_local_client.is_present_local_git(path=config.runtime.working_directory)
296
293
  if not is_git_folder:
297
294
  typer.echo("Error: working directory does not contain git repository")
298
295
  raise typer.Exit(1)
299
296
 
300
297
  is_commit_allowed: bool = True
298
+ has_changes = self.__git_local_client.has_changes_with_untracked(
299
+ path=config.runtime.working_directory,
300
+ )
301
301
 
302
302
  if self.__git_local_client.is_head_detached(path=config.runtime.working_directory):
303
303
  is_commit_allowed = False
@@ -326,9 +326,11 @@ class ProjectService(AbstractService):
326
326
  print(warning_msg)
327
327
  raise typer.Exit(1)
328
328
 
329
- if has_changes:
329
+ diff_stat = self.__git_local_client.git_diff_stat(repo_path=config.runtime.working_directory)
330
+
331
+ if has_changes and diff_stat:
330
332
  branch_name = self.__git_local_client.get_active_branch_name(config.runtime.working_directory)
331
- diff_stat = self.__git_local_client.git_diff_stat(repo_path=config.runtime.working_directory)
333
+
332
334
  typer.echo(__('Active branch [%branch_name%] has uncommitted changes: %diff_stat_bottomline%', {
333
335
  'diff_stat_bottomline': diff_stat,
334
336
  'branch_name': branch_name,
@@ -433,6 +435,7 @@ class ProjectService(AbstractService):
433
435
  inference_dir: Optional[str] = None,
434
436
  is_skip_installation: Optional[bool] = False,
435
437
  files_to_add: Optional[str] = None,
438
+ is_skip_auto_commit: Optional[bool] = False,
436
439
  ) -> Optional[InferenceSimulatorDto]:
437
440
  config = self.__config_provider.get_config()
438
441
  project_config: ProjectConfig = self.__get_fixed_project_config()
@@ -449,24 +452,23 @@ class ProjectService(AbstractService):
449
452
  typer.echo(__("Error: Either a rented instance ID or a self-hosted instance unique ID must be provided."))
450
453
  raise typer.Exit(1)
451
454
 
452
- if files_to_add and commit_hash:
453
- typer.echo(__("Cannot provide both files to add and commit hash."))
454
- raise typer.Exit(1)
455
-
456
- has_changes = self.__git_local_client.has_changes_with_untracked(
457
- path=config.runtime.working_directory,
458
- )
455
+ has_wrong_args = files_to_add and commit_hash or is_skip_auto_commit and commit_hash or files_to_add and is_skip_auto_commit
459
456
 
460
- if not files_to_add and has_changes:
461
- print(f"[{ColorScheme.USEFUL_INFO.value}]Uncommitted changes detected, but the command is being run without adding these files. If you want to include these changes in the inference simulator, use the -fa flag (e.g., -fa .)[{ColorScheme.USEFUL_INFO.value}]")
457
+ if has_wrong_args:
458
+ warning_msg = f"[{ColorScheme.WARNING.value}][WARNING] You can provide only one of the following arguments: --commit-hash, --files-add, --skip-autocommit[{ColorScheme.WARNING.value}]"
459
+ print(warning_msg)
460
+ raise typer.Exit(1)
462
461
 
463
- if files_to_add:
462
+ if not is_skip_auto_commit and not commit_hash:
464
463
  is_git_folder = self.__git_local_client.is_present_local_git(path=config.runtime.working_directory)
465
464
  if not is_git_folder:
466
465
  typer.echo("Error: Working directory does not contain git repository.")
467
466
  raise typer.Exit(1)
468
467
 
469
468
  is_commit_allowed: bool = True
469
+ has_changes = self.__git_local_client.has_changes_with_untracked(
470
+ path=config.runtime.working_directory,
471
+ )
470
472
 
471
473
  if self.__git_local_client.is_head_detached(path=config.runtime.working_directory):
472
474
  print(f"[{ColorScheme.GIT_HEADLESS.value}]HEAD is detached[{ColorScheme.GIT_HEADLESS.value}]")
@@ -498,9 +500,10 @@ class ProjectService(AbstractService):
498
500
  print(warning_msg)
499
501
  raise typer.Exit(1)
500
502
 
501
- if has_changes:
503
+ diff_stat = self.__git_local_client.git_diff_stat(repo_path=config.runtime.working_directory)
504
+
505
+ if has_changes and diff_stat:
502
506
  branch_name = self.__git_local_client.get_active_branch_name(config.runtime.working_directory)
503
- diff_stat = self.__git_local_client.git_diff_stat(repo_path=config.runtime.working_directory)
504
507
  typer.echo(__('Active branch [%branch_name%] has uncommitted changes: %diff_stat_bottomline%', {
505
508
  'diff_stat_bottomline': diff_stat,
506
509
  'branch_name': branch_name,
@@ -695,7 +698,6 @@ class ProjectService(AbstractService):
695
698
  self,
696
699
  task_id: Optional[int],
697
700
  branch_name: Optional[str],
698
- files_to_add: Optional[str] = None,
699
701
  ):
700
702
  config = self.__config_provider.get_config()
701
703
  project_config: ProjectConfig = self.__get_fixed_project_config()
@@ -741,22 +743,13 @@ class ProjectService(AbstractService):
741
743
  if self.__git_local_client.get_active_branch_name(path=config.runtime.working_directory) == branch_name:
742
744
  typer.echo(f"You are already at branch '{branch_name}'")
743
745
  raise typer.Exit(0)
744
-
745
- has_changes = self.__git_local_client.has_changes_with_untracked(
746
- path=config.runtime.working_directory,
747
- )
748
-
749
- if not files_to_add and has_changes:
750
- print(f"[{ColorScheme.WARNING.value}][WARNING] Uncommitted changes detected, cannot checkout with uncommitted changes. You should use the -fa flag (e.g., -fa .)[{ColorScheme.WARNING.value}]")
751
- raise typer.Exit(1)
752
746
 
753
- if is_commit_allowed and has_changes and files_to_add:
754
- print(2)
747
+ if is_commit_allowed:
748
+ self.__git_local_client.git_add_all(repo_path=config.runtime.working_directory)
755
749
 
756
- if not self.__git_local_client.add_files_with_size_limit_or_warn(config.runtime.working_directory, files_to_add):
757
- warning_msg = f"[{ColorScheme.WARNING.value}][WARNING] Checkout was not performed [{ColorScheme.WARNING.value}]"
758
- print(warning_msg)
759
- raise typer.Exit(1)
750
+ has_changes = self.__git_local_client.has_changes_with_untracked(
751
+ path=config.runtime.working_directory,
752
+ )
760
753
 
761
754
  if has_changes:
762
755
  active_branch_name = self.__git_local_client.get_active_branch_name(config.runtime.working_directory)
File without changes
File without changes
File without changes
File without changes
File without changes