thestage 0.6.2__py3-none-any.whl → 0.6.3__py3-none-any.whl

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 (177) hide show
  1. thestage/.env +4 -5
  2. thestage/__init__.py +3 -3
  3. thestage/__main__.py +9 -9
  4. thestage/cli_command.py +56 -56
  5. thestage/cli_command_helper.py +51 -51
  6. thestage/color_scheme/color_scheme.py +7 -7
  7. thestage/config/__init__.py +18 -18
  8. thestage/config/config_storage.py +5 -5
  9. thestage/config/env_base.py +7 -7
  10. thestage/controllers/__init__.py +0 -0
  11. thestage/controllers/base_controller.py +67 -67
  12. thestage/controllers/config_controller.py +137 -137
  13. thestage/controllers/container_controller.py +389 -389
  14. thestage/controllers/instance_controller.py +183 -183
  15. thestage/controllers/project_controller.py +810 -810
  16. thestage/controllers/utils_controller.py +32 -32
  17. thestage/debug_main.dist.py +28 -28
  18. thestage/entities/__init__.py +0 -0
  19. thestage/entities/container.py +17 -17
  20. thestage/entities/enums/__init__.py +0 -0
  21. thestage/entities/enums/order_direction_type.py +6 -6
  22. thestage/entities/enums/shell_type.py +7 -7
  23. thestage/entities/enums/tail_output_type.py +6 -6
  24. thestage/entities/enums/yes_no_response.py +7 -7
  25. thestage/entities/file_item.py +27 -27
  26. thestage/entities/project_inference_simulator.py +18 -18
  27. thestage/entities/project_inference_simulator_model.py +16 -16
  28. thestage/entities/project_task.py +19 -19
  29. thestage/entities/rented_instance.py +19 -19
  30. thestage/entities/self_hosted_instance.py +18 -18
  31. thestage/exceptions/__init__.py +0 -0
  32. thestage/exceptions/auth_exception.py +6 -6
  33. thestage/exceptions/base_exception.py +13 -13
  34. thestage/exceptions/business_logic_exception.py +6 -6
  35. thestage/exceptions/config_exception.py +6 -6
  36. thestage/exceptions/file_system_exception.py +6 -6
  37. thestage/exceptions/git_access_exception.py +17 -17
  38. thestage/exceptions/remote_server_exception.py +24 -24
  39. thestage/git/ProgressPrinter.py +22 -22
  40. thestage/helpers/__init__.py +0 -0
  41. thestage/helpers/error_handler.py +115 -115
  42. thestage/helpers/exception_hook.py +14 -14
  43. thestage/helpers/logger/__init__.py +0 -0
  44. thestage/helpers/logger/app_logger.py +50 -50
  45. thestage/helpers/ssh_util.py +38 -38
  46. thestage/i18n/en_GB/messages.po +947 -947
  47. thestage/i18n/translation.py +9 -9
  48. thestage/main.py +36 -36
  49. thestage/services/.env +6 -6
  50. thestage/services/__init__.py +0 -0
  51. thestage/services/abstract_mapper.py +9 -9
  52. thestage/services/abstract_service.py +87 -87
  53. thestage/services/app_config_service.py +52 -52
  54. thestage/services/clients/__init__.py +0 -0
  55. thestage/services/clients/git/__init__.py +0 -0
  56. thestage/services/clients/git/git_client.py +436 -436
  57. thestage/services/clients/thestage_api/__init__.py +0 -0
  58. thestage/services/clients/thestage_api/api_client.py +718 -718
  59. thestage/services/clients/thestage_api/core/api_client_core.py +108 -108
  60. thestage/services/clients/thestage_api/core/http_client_exception.py +12 -12
  61. thestage/services/clients/thestage_api/dtos/__init__.py +0 -0
  62. thestage/services/clients/thestage_api/dtos/base_response.py +13 -13
  63. thestage/services/clients/thestage_api/dtos/cloud_provider_region.py +19 -19
  64. thestage/services/clients/thestage_api/dtos/container_param_request.py +11 -11
  65. thestage/services/clients/thestage_api/dtos/container_response.py +67 -67
  66. thestage/services/clients/thestage_api/dtos/docker_container_assigned_device.py +10 -10
  67. thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_request.py +13 -13
  68. thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_response.py +13 -13
  69. thestage/services/clients/thestage_api/dtos/docker_container_mapping.py +10 -10
  70. thestage/services/clients/thestage_api/dtos/entity_filter_request.py +14 -14
  71. thestage/services/clients/thestage_api/dtos/enums/__init__.py +0 -0
  72. thestage/services/clients/thestage_api/dtos/enums/container_pending_action.py +10 -10
  73. thestage/services/clients/thestage_api/dtos/enums/container_status.py +17 -17
  74. thestage/services/clients/thestage_api/dtos/enums/cpu_type.py +8 -8
  75. thestage/services/clients/thestage_api/dtos/enums/currency_type.py +10 -10
  76. thestage/services/clients/thestage_api/dtos/enums/daemon_status.py +9 -9
  77. thestage/services/clients/thestage_api/dtos/enums/disk_type.py +7 -7
  78. thestage/services/clients/thestage_api/dtos/enums/drive_type.py +7 -7
  79. thestage/services/clients/thestage_api/dtos/enums/gpu_name.py +8 -8
  80. thestage/services/clients/thestage_api/dtos/enums/inference_model_status.py +9 -9
  81. thestage/services/clients/thestage_api/dtos/enums/inference_simulator_status.py +15 -15
  82. thestage/services/clients/thestage_api/dtos/enums/instance_rented_status.py +17 -17
  83. thestage/services/clients/thestage_api/dtos/enums/instance_type.py +7 -7
  84. thestage/services/clients/thestage_api/dtos/enums/location_region.py +11 -11
  85. thestage/services/clients/thestage_api/dtos/enums/power_status.py +10 -10
  86. thestage/services/clients/thestage_api/dtos/enums/provider_name.py +11 -11
  87. thestage/services/clients/thestage_api/dtos/enums/selfhosted_status.py +10 -10
  88. thestage/services/clients/thestage_api/dtos/enums/task_execution_status.py +12 -12
  89. thestage/services/clients/thestage_api/dtos/enums/task_status.py +12 -12
  90. thestage/services/clients/thestage_api/dtos/frontend_status.py +10 -10
  91. thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_instance_request.py +13 -13
  92. thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_instance_response.py +13 -13
  93. thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_sagemaker_request.py +12 -12
  94. thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_sagemaker_response.py +12 -12
  95. thestage/services/clients/thestage_api/dtos/inference_controller/get_inference_simulator_request.py +10 -10
  96. thestage/services/clients/thestage_api/dtos/inference_controller/get_inference_simulator_response.py +13 -13
  97. thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_list_for_project_request.py +14 -14
  98. thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_list_for_project_response.py +12 -12
  99. thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_request.py +12 -12
  100. thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_response.py +13 -13
  101. thestage/services/clients/thestage_api/dtos/inference_simulator_model_response.py +11 -11
  102. thestage/services/clients/thestage_api/dtos/inference_simulator_response.py +11 -11
  103. thestage/services/clients/thestage_api/dtos/installed_service.py +17 -17
  104. thestage/services/clients/thestage_api/dtos/instance_detected_gpus.py +20 -20
  105. thestage/services/clients/thestage_api/dtos/instance_rented_response.py +71 -71
  106. thestage/services/clients/thestage_api/dtos/logging_controller/docker_container_log_stream_request.py +7 -7
  107. thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_request.py +13 -13
  108. thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_response.py +14 -14
  109. thestage/services/clients/thestage_api/dtos/logging_controller/task_log_stream_request.py +7 -7
  110. thestage/services/clients/thestage_api/dtos/logging_controller/user_logs_query_request.py +21 -21
  111. thestage/services/clients/thestage_api/dtos/logging_controller/user_logs_query_response.py +14 -14
  112. thestage/services/clients/thestage_api/dtos/paginated_entity_list.py +11 -11
  113. thestage/services/clients/thestage_api/dtos/pagination_data.py +10 -10
  114. thestage/services/clients/thestage_api/dtos/price_definition.py +14 -14
  115. thestage/services/clients/thestage_api/dtos/project_controller/project_get_deploy_ssh_key_request.py +7 -7
  116. thestage/services/clients/thestage_api/dtos/project_controller/project_get_deploy_ssh_key_response.py +10 -10
  117. thestage/services/clients/thestage_api/dtos/project_controller/project_push_inference_simulator_model_request.py +8 -8
  118. thestage/services/clients/thestage_api/dtos/project_controller/project_push_inference_simulator_model_response.py +6 -6
  119. thestage/services/clients/thestage_api/dtos/project_controller/project_run_task_request.py +15 -15
  120. thestage/services/clients/thestage_api/dtos/project_controller/project_run_task_response.py +10 -10
  121. thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_request.py +13 -13
  122. thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_response.py +10 -10
  123. thestage/services/clients/thestage_api/dtos/project_response.py +32 -32
  124. thestage/services/clients/thestage_api/dtos/selfhosted_instance_response.py +56 -56
  125. thestage/services/clients/thestage_api/dtos/sftp_path_helper.py +13 -13
  126. thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_request.py +8 -8
  127. thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_response.py +11 -11
  128. thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_public_key_to_instance_request.py +8 -8
  129. thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_public_key_to_instance_response.py +11 -11
  130. thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_public_ssh_key_request.py +7 -7
  131. thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_public_ssh_key_response.py +12 -12
  132. thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_request.py +10 -10
  133. thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_response.py +12 -12
  134. thestage/services/clients/thestage_api/dtos/task_controller/task_status_localized_map_response.py +9 -9
  135. thestage/services/clients/thestage_api/dtos/task_controller/task_view_response.py +12 -12
  136. thestage/services/clients/thestage_api/dtos/user_controller/user_profile.py +12 -12
  137. thestage/services/clients/thestage_api/dtos/validate_token_response.py +11 -11
  138. thestage/services/config_provider/__init__.py +0 -0
  139. thestage/services/config_provider/config_provider.py +237 -237
  140. thestage/services/connect/connect_service.py +193 -196
  141. thestage/services/connect/dto/remote_server_config.py +9 -9
  142. thestage/services/container/__init__.py +0 -0
  143. thestage/services/container/container_service.py +374 -374
  144. thestage/services/container/mapper/__init__.py +0 -0
  145. thestage/services/container/mapper/container_mapper.py +30 -30
  146. thestage/services/core_files/config_entity.py +26 -26
  147. thestage/services/filesystem_service.py +133 -133
  148. thestage/services/instance/__init__.py +0 -0
  149. thestage/services/instance/instance_service.py +303 -303
  150. thestage/services/instance/mapper/__init__.py +0 -0
  151. thestage/services/instance/mapper/instance_mapper.py +24 -24
  152. thestage/services/instance/mapper/selfhosted_mapper.py +33 -33
  153. thestage/services/logging/byte_print_style.py +5 -5
  154. thestage/services/logging/dto/log_message.py +15 -15
  155. thestage/services/logging/dto/log_type.py +6 -6
  156. thestage/services/logging/exception/log_polling_exception.py +6 -6
  157. thestage/services/logging/logging_constants.py +3 -3
  158. thestage/services/logging/logging_service.py +367 -367
  159. thestage/services/project/__init__.py +0 -0
  160. thestage/services/project/dto/inference_simulator_dto.py +22 -22
  161. thestage/services/project/dto/inference_simulator_model_dto.py +20 -20
  162. thestage/services/project/dto/project_config.py +14 -14
  163. thestage/services/project/mapper/__init__.py +0 -0
  164. thestage/services/project/mapper/project_inference_simulator_mapper.py +21 -21
  165. thestage/services/project/mapper/project_inference_simulator_model_mapper.py +21 -21
  166. thestage/services/project/mapper/project_task_mapper.py +22 -22
  167. thestage/services/project/project_service.py +1253 -1253
  168. thestage/services/remote_server_service.py +609 -609
  169. thestage/services/service_factory.py +97 -97
  170. thestage/services/task/dto/task_dto.py +40 -40
  171. thestage/services/validation_service.py +61 -61
  172. {thestage-0.6.2.dist-info → thestage-0.6.3.dist-info}/LICENSE.txt +12 -12
  173. {thestage-0.6.2.dist-info → thestage-0.6.3.dist-info}/METADATA +3 -2
  174. thestage-0.6.3.dist-info/RECORD +176 -0
  175. {thestage-0.6.2.dist-info → thestage-0.6.3.dist-info}/WHEEL +1 -1
  176. thestage-0.6.2.dist-info/RECORD +0 -176
  177. {thestage-0.6.2.dist-info → thestage-0.6.3.dist-info}/entry_points.txt +0 -0
@@ -1,97 +1,97 @@
1
- from typing import Optional
2
-
3
- from thestage.services.config_provider.config_provider import ConfigProvider
4
- from thestage.services.connect.connect_service import ConnectService
5
- from thestage.services.filesystem_service import FileSystemService
6
- from thestage.services.logging.logging_service import LoggingService
7
- from thestage.services.project.project_service import ProjectService
8
- from thestage.services.remote_server_service import RemoteServerService
9
- from thestage.services.container.container_service import ContainerService
10
- from thestage.services.instance.instance_service import InstanceService
11
- from thestage.services.app_config_service import AppConfigService
12
- from thestage.services.clients.git.git_client import GitLocalClient
13
- from thestage.services.clients.thestage_api.api_client import TheStageApiClient
14
- from thestage.services.validation_service import ValidationService
15
-
16
-
17
- class ServiceFactory:
18
- __thestage_api_client: Optional[TheStageApiClient] = None
19
- __git_local_client: Optional[GitLocalClient] = None
20
- __file_system_service: Optional[FileSystemService] = None
21
- __config_provider: Optional[ConfigProvider] = None
22
-
23
-
24
- def get_validation_service(self) -> ValidationService:
25
- return ValidationService(
26
- thestage_api_client=self.get_thestage_api_client(),
27
- config_provider=self.get_config_provider(),
28
- )
29
-
30
- def get_instance_service(self) -> InstanceService:
31
- return InstanceService(
32
- thestage_api_client=self.get_thestage_api_client(),
33
- remote_server_service=self.get_remote_server_service(),
34
- config_provider=self.get_config_provider(),
35
- )
36
-
37
- def get_container_service(self) -> ContainerService:
38
- return ContainerService(
39
- thestage_api_client=self.get_thestage_api_client(),
40
- remote_server_service=self.get_remote_server_service(),
41
- file_system_service=self.get_file_system_service(),
42
- config_provider=self.get_config_provider(),
43
- )
44
-
45
- def get_connect_service(self) -> ConnectService:
46
- return ConnectService(
47
- thestage_api_client=self.get_thestage_api_client(),
48
- instance_service=self.get_instance_service(),
49
- container_service=self.get_container_service(),
50
- logging_service=self.get_logging_service(),
51
- )
52
-
53
- def get_project_service(self) -> ProjectService:
54
- return ProjectService(
55
- thestage_api_client=self.get_thestage_api_client(),
56
- remote_server_service=self.get_remote_server_service(),
57
- file_system_service=self.get_file_system_service(),
58
- git_local_client=self.get_git_local_client(),
59
- config_provider=self.get_config_provider(),
60
- )
61
-
62
- def get_remote_server_service(self) -> RemoteServerService:
63
- return RemoteServerService(
64
- file_system_service=self.get_file_system_service(),
65
- config_provider=self.get_config_provider(),
66
- )
67
-
68
- def get_thestage_api_client(self) -> TheStageApiClient:
69
- if not self.__thestage_api_client:
70
- self.__thestage_api_client = TheStageApiClient(config_provider=self.get_config_provider())
71
- return self.__thestage_api_client
72
-
73
- def get_git_local_client(self):
74
- if not self.__git_local_client:
75
- self.__git_local_client = GitLocalClient(file_system_service=self.get_file_system_service())
76
- return self.__git_local_client
77
-
78
- def get_file_system_service(self) -> FileSystemService:
79
- if not self.__file_system_service:
80
- self.__file_system_service = FileSystemService()
81
- return self.__file_system_service
82
-
83
- def get_app_config_service(self) -> AppConfigService:
84
- return AppConfigService(
85
- config_provider=self.get_config_provider(),
86
- validation_service=self.get_validation_service(),
87
- )
88
-
89
- def get_logging_service(self) -> LoggingService:
90
- return LoggingService(
91
- thestage_api_client=self.get_thestage_api_client(),
92
- )
93
-
94
- def get_config_provider(self) -> ConfigProvider:
95
- if not self.__config_provider:
96
- self.__config_provider = ConfigProvider(self.get_file_system_service())
97
- return self.__config_provider
1
+ from typing import Optional
2
+
3
+ from thestage.services.config_provider.config_provider import ConfigProvider
4
+ from thestage.services.connect.connect_service import ConnectService
5
+ from thestage.services.filesystem_service import FileSystemService
6
+ from thestage.services.logging.logging_service import LoggingService
7
+ from thestage.services.project.project_service import ProjectService
8
+ from thestage.services.remote_server_service import RemoteServerService
9
+ from thestage.services.container.container_service import ContainerService
10
+ from thestage.services.instance.instance_service import InstanceService
11
+ from thestage.services.app_config_service import AppConfigService
12
+ from thestage.services.clients.git.git_client import GitLocalClient
13
+ from thestage.services.clients.thestage_api.api_client import TheStageApiClient
14
+ from thestage.services.validation_service import ValidationService
15
+
16
+
17
+ class ServiceFactory:
18
+ __thestage_api_client: Optional[TheStageApiClient] = None
19
+ __git_local_client: Optional[GitLocalClient] = None
20
+ __file_system_service: Optional[FileSystemService] = None
21
+ __config_provider: Optional[ConfigProvider] = None
22
+
23
+
24
+ def get_validation_service(self) -> ValidationService:
25
+ return ValidationService(
26
+ thestage_api_client=self.get_thestage_api_client(),
27
+ config_provider=self.get_config_provider(),
28
+ )
29
+
30
+ def get_instance_service(self) -> InstanceService:
31
+ return InstanceService(
32
+ thestage_api_client=self.get_thestage_api_client(),
33
+ remote_server_service=self.get_remote_server_service(),
34
+ config_provider=self.get_config_provider(),
35
+ )
36
+
37
+ def get_container_service(self) -> ContainerService:
38
+ return ContainerService(
39
+ thestage_api_client=self.get_thestage_api_client(),
40
+ remote_server_service=self.get_remote_server_service(),
41
+ file_system_service=self.get_file_system_service(),
42
+ config_provider=self.get_config_provider(),
43
+ )
44
+
45
+ def get_connect_service(self) -> ConnectService:
46
+ return ConnectService(
47
+ thestage_api_client=self.get_thestage_api_client(),
48
+ instance_service=self.get_instance_service(),
49
+ container_service=self.get_container_service(),
50
+ logging_service=self.get_logging_service(),
51
+ )
52
+
53
+ def get_project_service(self) -> ProjectService:
54
+ return ProjectService(
55
+ thestage_api_client=self.get_thestage_api_client(),
56
+ remote_server_service=self.get_remote_server_service(),
57
+ file_system_service=self.get_file_system_service(),
58
+ git_local_client=self.get_git_local_client(),
59
+ config_provider=self.get_config_provider(),
60
+ )
61
+
62
+ def get_remote_server_service(self) -> RemoteServerService:
63
+ return RemoteServerService(
64
+ file_system_service=self.get_file_system_service(),
65
+ config_provider=self.get_config_provider(),
66
+ )
67
+
68
+ def get_thestage_api_client(self) -> TheStageApiClient:
69
+ if not self.__thestage_api_client:
70
+ self.__thestage_api_client = TheStageApiClient(config_provider=self.get_config_provider())
71
+ return self.__thestage_api_client
72
+
73
+ def get_git_local_client(self):
74
+ if not self.__git_local_client:
75
+ self.__git_local_client = GitLocalClient(file_system_service=self.get_file_system_service())
76
+ return self.__git_local_client
77
+
78
+ def get_file_system_service(self) -> FileSystemService:
79
+ if not self.__file_system_service:
80
+ self.__file_system_service = FileSystemService()
81
+ return self.__file_system_service
82
+
83
+ def get_app_config_service(self) -> AppConfigService:
84
+ return AppConfigService(
85
+ config_provider=self.get_config_provider(),
86
+ validation_service=self.get_validation_service(),
87
+ )
88
+
89
+ def get_logging_service(self) -> LoggingService:
90
+ return LoggingService(
91
+ thestage_api_client=self.get_thestage_api_client(),
92
+ )
93
+
94
+ def get_config_provider(self) -> ConfigProvider:
95
+ if not self.__config_provider:
96
+ self.__config_provider = ConfigProvider(self.get_file_system_service())
97
+ return self.__config_provider
@@ -1,40 +1,40 @@
1
- from typing import Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field
4
-
5
- from thestage.services.clients.thestage_api.dtos.container_response import DockerContainerDto
6
- from thestage.services.clients.thestage_api.dtos.frontend_status import FrontendStatusDto
7
- from thestage.services.clients.thestage_api.dtos.instance_rented_response import InstanceRentedDto
8
- from thestage.services.clients.thestage_api.dtos.selfhosted_instance_response import SelfHostedInstanceDto
9
-
10
-
11
- class TaskDto(BaseModel):
12
- model_config = ConfigDict(use_enum_values=True)
13
-
14
- id: Optional[int] = Field(None, alias='id')
15
- instance_rented_id: Optional[int] = Field(None, alias='instanceRentedId')
16
- selfhosted_instance_id: Optional[int] = Field(None, alias='selfhostedInstanceId')
17
- docker_container_id: Optional[int] = Field(None, alias='dockerContainerId')
18
- description: Optional[str] = Field(None, alias='description')
19
- title: Optional[str] = Field(None, alias='title')
20
- source_path: Optional[str] = Field(None, alias='sourcePath')
21
- source_target_path: Optional[str] = Field(None, alias='sourceTargetPath')
22
- data_path: Optional[str] = Field(None, alias='dataPath')
23
- result_destination_path: Optional[str] = Field(None, alias='resultDestinationPath')
24
- run_command: Optional[str] = Field(None, alias='runCommand')
25
- commit_hash: Optional[str] = Field(None, alias='commitHash')
26
- ordinal_number_for_sketch: Optional[int] = Field(None, alias='ordinalNumberForSketch')
27
- user_id: Optional[int] = Field(None, alias='userId')
28
- frontend_status: FrontendStatusDto = Field(None, alias='frontendStatus')
29
- created_at: Optional[str] = Field(None, alias='createdAt')
30
- updated_at: Optional[str] = Field(None, alias='updatedAt')
31
- started_at: Optional[str] = Field(None, alias='startedAt')
32
- finished_at: Optional[str] = Field(None, alias='finishedAt')
33
- client_id: Optional[int] = Field(None, alias='clientId')
34
-
35
- instance_rented: Optional[InstanceRentedDto] = Field(None, alias='instanceRented')
36
- selfhosted_instance: Optional[SelfHostedInstanceDto] = Field(None, alias='selfhostedInstance')
37
- docker_container: Optional[DockerContainerDto] = Field(None, alias='dockerContainer')
38
-
39
- exit_code: Optional[int] = Field(None, alias='exitCode')
40
- failure_reason: Optional[str] = Field(None, alias='failureReason')
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+ from thestage.services.clients.thestage_api.dtos.container_response import DockerContainerDto
6
+ from thestage.services.clients.thestage_api.dtos.frontend_status import FrontendStatusDto
7
+ from thestage.services.clients.thestage_api.dtos.instance_rented_response import InstanceRentedDto
8
+ from thestage.services.clients.thestage_api.dtos.selfhosted_instance_response import SelfHostedInstanceDto
9
+
10
+
11
+ class TaskDto(BaseModel):
12
+ model_config = ConfigDict(use_enum_values=True)
13
+
14
+ id: Optional[int] = Field(None, alias='id')
15
+ instance_rented_id: Optional[int] = Field(None, alias='instanceRentedId')
16
+ selfhosted_instance_id: Optional[int] = Field(None, alias='selfhostedInstanceId')
17
+ docker_container_id: Optional[int] = Field(None, alias='dockerContainerId')
18
+ description: Optional[str] = Field(None, alias='description')
19
+ title: Optional[str] = Field(None, alias='title')
20
+ source_path: Optional[str] = Field(None, alias='sourcePath')
21
+ source_target_path: Optional[str] = Field(None, alias='sourceTargetPath')
22
+ data_path: Optional[str] = Field(None, alias='dataPath')
23
+ result_destination_path: Optional[str] = Field(None, alias='resultDestinationPath')
24
+ run_command: Optional[str] = Field(None, alias='runCommand')
25
+ commit_hash: Optional[str] = Field(None, alias='commitHash')
26
+ ordinal_number_for_sketch: Optional[int] = Field(None, alias='ordinalNumberForSketch')
27
+ user_id: Optional[int] = Field(None, alias='userId')
28
+ frontend_status: FrontendStatusDto = Field(None, alias='frontendStatus')
29
+ created_at: Optional[str] = Field(None, alias='createdAt')
30
+ updated_at: Optional[str] = Field(None, alias='updatedAt')
31
+ started_at: Optional[str] = Field(None, alias='startedAt')
32
+ finished_at: Optional[str] = Field(None, alias='finishedAt')
33
+ client_id: Optional[int] = Field(None, alias='clientId')
34
+
35
+ instance_rented: Optional[InstanceRentedDto] = Field(None, alias='instanceRented')
36
+ selfhosted_instance: Optional[SelfHostedInstanceDto] = Field(None, alias='selfhostedInstance')
37
+ docker_container: Optional[DockerContainerDto] = Field(None, alias='dockerContainer')
38
+
39
+ exit_code: Optional[int] = Field(None, alias='exitCode')
40
+ failure_reason: Optional[str] = Field(None, alias='failureReason')
@@ -1,61 +1,61 @@
1
- import typer
2
-
3
- from thestage.i18n.translation import __
4
- # from thestage.main import update_allowed_commands
5
- from thestage.services.clients.thestage_api.api_client import TheStageApiClient
6
- from thestage.services.config_provider.config_provider import ConfigProvider
7
- from thestage.services.core_files.config_entity import ConfigEntity
8
-
9
-
10
- class ValidationService:
11
- _thestage_api_client: TheStageApiClient = None
12
- _config_provider: ConfigProvider = None
13
-
14
- def __init__(
15
- self,
16
- thestage_api_client: TheStageApiClient,
17
- config_provider: ConfigProvider,
18
- ):
19
- self._thestage_api_client = thestage_api_client
20
- self._config_provider = config_provider
21
-
22
-
23
- def check_token(self):
24
- config = self._config_provider.get_config()
25
- token = config.main.thestage_auth_token
26
- if not token:
27
- token: str = typer.prompt(
28
- text=f'Authenticate using valid TheStage AI API token ({config.main.thestage_api_url})',
29
- show_choices=False,
30
- type=str,
31
- show_default=False,
32
- )
33
-
34
- # TODO this fails with 503 error - AttributeError("'bytes' object has no attribute 'text'") from _parse_api_response method in core
35
- if not token:
36
- return
37
-
38
- token_validate_response = self._thestage_api_client.validate_token(token=token)
39
- is_valid = token_validate_response.is_success if token_validate_response else False
40
- if not is_valid:
41
- typer.echo(__(
42
- 'API token is invalid: generate API token using TheStage AI WebApp'
43
- ))
44
- raise typer.Exit(1)
45
-
46
- if config.main.thestage_auth_token != token:
47
- config.main.thestage_auth_token = token
48
- self._config_provider.update_config(updated_config=config)
49
- self._config_provider.update_allowed_commands_and_is_token_valid(validate_token_response=token_validate_response)
50
-
51
-
52
- @staticmethod
53
- def is_present_token(config: ConfigEntity) -> bool:
54
- present_token = True
55
- if not config:
56
- present_token = False
57
- else:
58
- if not config.main.thestage_auth_token:
59
- present_token = False
60
-
61
- return present_token
1
+ import typer
2
+
3
+ from thestage.i18n.translation import __
4
+ # from thestage.main import update_allowed_commands
5
+ from thestage.services.clients.thestage_api.api_client import TheStageApiClient
6
+ from thestage.services.config_provider.config_provider import ConfigProvider
7
+ from thestage.services.core_files.config_entity import ConfigEntity
8
+
9
+
10
+ class ValidationService:
11
+ _thestage_api_client: TheStageApiClient = None
12
+ _config_provider: ConfigProvider = None
13
+
14
+ def __init__(
15
+ self,
16
+ thestage_api_client: TheStageApiClient,
17
+ config_provider: ConfigProvider,
18
+ ):
19
+ self._thestage_api_client = thestage_api_client
20
+ self._config_provider = config_provider
21
+
22
+
23
+ def check_token(self):
24
+ config = self._config_provider.get_config()
25
+ token = config.main.thestage_auth_token
26
+ if not token:
27
+ token: str = typer.prompt(
28
+ text=f'Authenticate using valid TheStage AI API token ({config.main.thestage_api_url})',
29
+ show_choices=False,
30
+ type=str,
31
+ show_default=False,
32
+ )
33
+
34
+ # TODO this fails with 503 error - AttributeError("'bytes' object has no attribute 'text'") from _parse_api_response method in core
35
+ if not token:
36
+ return
37
+
38
+ token_validate_response = self._thestage_api_client.validate_token(token=token)
39
+ is_valid = token_validate_response.is_success if token_validate_response else False
40
+ if not is_valid:
41
+ typer.echo(__(
42
+ 'API token is invalid: generate API token using TheStage AI WebApp'
43
+ ))
44
+ raise typer.Exit(1)
45
+
46
+ if config.main.thestage_auth_token != token:
47
+ config.main.thestage_auth_token = token
48
+ self._config_provider.update_config(updated_config=config)
49
+ self._config_provider.update_allowed_commands_and_is_token_valid(validate_token_response=token_validate_response)
50
+
51
+
52
+ @staticmethod
53
+ def is_present_token(config: ConfigEntity) -> bool:
54
+ present_token = True
55
+ if not config:
56
+ present_token = False
57
+ else:
58
+ if not config.main.thestage_auth_token:
59
+ present_token = False
60
+
61
+ return present_token
@@ -1,13 +1,13 @@
1
- Copyright 2024 TheStage AI. All rights reserved.
2
-
3
- Licensed under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License.
5
- You may obtain a copy of the License at
6
-
7
- http://www.apache.org/licenses/LICENSE-2.0
8
-
9
- Unless required by applicable law or agreed to in writing, software
10
- distributed under the License is distributed on an "AS IS" BASIS,
11
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- See the License for the specific language governing permissions and
1
+ Copyright 2024 TheStage AI. All rights reserved.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
13
  limitations under the License.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: thestage
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary:
5
5
  Author: TheStage AI team
6
6
  Author-email: hello@thestage.ai
@@ -10,6 +10,7 @@ Classifier: Programming Language :: Python :: 3.9
10
10
  Classifier: Programming Language :: Python :: 3.10
11
11
  Classifier: Programming Language :: Python :: 3.11
12
12
  Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
13
14
  Requires-Dist: aioconsole (>=0.8.0,<0.9.0)
14
15
  Requires-Dist: boto3 (>=1.35.80,<2.0.0)
15
16
  Requires-Dist: gitpython (>=3.1.40,<4.0.0)
@@ -0,0 +1,176 @@
1
+ thestage/.env,sha256=lHeR-H4TiBp4z06bWt7oND9LMMVXP3WCKY7lQltDM3M,129
2
+ thestage/__init__.py,sha256=_DRvfFKWKADujVE2sliedLGBeSo7nwI-3kPAatcyvDk,64
3
+ thestage/__main__.py,sha256=4ObdWrDRaIASaR06IxtFSsoMu58eyL0MnD64habvPj8,101
4
+ thestage/cli_command.py,sha256=P93LXDruJWecmF5xn-D2uhMOSD9iSJl-gP4oG9aD56k,2173
5
+ thestage/cli_command_helper.py,sha256=f5NZQ4MZJ7yyxPvkQW7ilIAxN_19Mx_zzSqedhZtd6g,1939
6
+ thestage/color_scheme/color_scheme.py,sha256=qaSSS_OzPsqI7yV1TC3Ne0PnsWDWo5xqU8j_7JYG-TI,210
7
+ thestage/config/__init__.py,sha256=RNobilYVK1WAM1utcQ8ZuATKc9Zh9M9BAjCLZTnR_TA,428
8
+ thestage/config/config_storage.py,sha256=QxUCPJCCNs_PHuz_5TbAOXaeTCIT34IiQXJQzPAXlss,140
9
+ thestage/config/env_base.py,sha256=RNBQ17yk1ieu1kdUlM7Qe7mDCoxstgGUwwhe265o4dQ,367
10
+ thestage/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ thestage/controllers/base_controller.py,sha256=52uvBAL9Z-otP-oXGZoRZ7AjR0nAOrXzBang9PhyVyE,2458
12
+ thestage/controllers/config_controller.py,sha256=hj9SiPCC1o1loJx8txl5wMh_S52RD-OdpvOWJG1NM6E,5417
13
+ thestage/controllers/container_controller.py,sha256=Es3s4NOa0fYCqYSUv6unv3ryqRQ5t_f6yrybZhileZM,15312
14
+ thestage/controllers/instance_controller.py,sha256=uV0ZLqTsz7CfQA6T_ZhepPz3KfDFCW5wgiWoNvrH_OE,6680
15
+ thestage/controllers/project_controller.py,sha256=zFCcst-zO0msU3Jx3uVdKhYdPG5bHoxmXpxdVBP6s5U,32039
16
+ thestage/controllers/utils_controller.py,sha256=ac-TLWC2wrmxJYNFOltoQKCTpFaKB6p937odona64OI,912
17
+ thestage/debug_main.dist.py,sha256=UPIJ58yf-6FtXZj-FLAwxi7HononseuCYm9xb5KlxTs,783
18
+ thestage/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ thestage/entities/container.py,sha256=jP8ZUQPSMdAG5Z68FFKLYpBFI7Hf42Jz4_NXnRj5css,533
20
+ thestage/entities/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ thestage/entities/enums/order_direction_type.py,sha256=zC9-FLhn8-6NVmSlgeKXKBnVJKH8RLtuUYApQIb1zcU,95
22
+ thestage/entities/enums/shell_type.py,sha256=-XcPiI3psjeIzd0VXWHdca5Ttgbu9M5oQPeZUZLJRMc,118
23
+ thestage/entities/enums/tail_output_type.py,sha256=6S55VRRosrI3yZW8XeAGm4u12H4haeiBRvoaExUCWcU,84
24
+ thestage/entities/enums/yes_no_response.py,sha256=PXXkB7KMB-XCHvKOBRuX6NRKyq8UW0G228OICRr2ZTk,86
25
+ thestage/entities/file_item.py,sha256=hxUbdne6AYFHJfuQ8l0XQO86IuC8Pyx_OrPw_0lhN_o,828
26
+ thestage/entities/project_inference_simulator.py,sha256=J7Kq3Stb9EElaa8LYLo5kzLLAzgG0ibg4u1iNo0ZUns,597
27
+ thestage/entities/project_inference_simulator_model.py,sha256=_xfjaaCSUfVKFQLlsyMEvD4oboKAzIOl6YoMyS59XyQ,546
28
+ thestage/entities/project_task.py,sha256=7uewPIC_HF32OviQHU7uyJ8KokCuK5OjB47r-ltdpyI,672
29
+ thestage/entities/rented_instance.py,sha256=NjYKaO0oZ3a55OJHrMyWK9ueeXw8HtVgm9-0nobo_kg,632
30
+ thestage/entities/self_hosted_instance.py,sha256=oJeKpLyqBdFxWiaoxJq6XDyXjRwYsCs40uM1AF6YMng,629
31
+ thestage/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ thestage/exceptions/auth_exception.py,sha256=HZeiF3aocqukmClUfIDCk5izb4tpG4KEbhyXtVl2z34,214
33
+ thestage/exceptions/base_exception.py,sha256=ekov63Q0OZLeLOu6bhHN9KLo8pPn0XLCMZwZrVULhDw,282
34
+ thestage/exceptions/business_logic_exception.py,sha256=vNiSq9hUjrB0gx1umFcq4Eft99Cg59wCayOYSazT_oc,232
35
+ thestage/exceptions/config_exception.py,sha256=c2V8ccEoPWOV5fd_rSgaj9HB4rQfj6DOdnALEq_U8-Q,218
36
+ thestage/exceptions/file_system_exception.py,sha256=OiBCtjzV1ToXfn5HtmXv9Ihp6uDcKNSyKzQxut-xhQQ,226
37
+ thestage/exceptions/git_access_exception.py,sha256=ZyB5qrz6fok1jOEKtt3PXP9vq3vOmKOK2OZcFztH9gM,465
38
+ thestage/exceptions/remote_server_exception.py,sha256=Z1R5Wjw3w7VdqURhjidGkNhJL9lsA76txkAZPA5Uv70,595
39
+ thestage/git/ProgressPrinter.py,sha256=z99BPq3KYycClL-7fmsERIIuZ03papdIYOhR8A7b9AA,573
40
+ thestage/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ thestage/helpers/error_handler.py,sha256=_KArMtEmlwvZmPcbbO-fGYSuMKMmOTErZONf1jkFpu8,5355
42
+ thestage/helpers/exception_hook.py,sha256=jekDs7smzI1UjXkuMut_uM725GL3c6Gr_zmyEYdDjV8,334
43
+ thestage/helpers/logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ thestage/helpers/logger/app_logger.py,sha256=4dgZ_8k28R887rmIHmCTn2QVg0stqTk8hcXa5CF4VJc,1607
45
+ thestage/helpers/ssh_util.py,sha256=JuDwddHxEGcA24Y8a-jLv339cG-jq4hEaBAl5TSVVFw,1262
46
+ thestage/i18n/en_GB/messages.po,sha256=BuVIhd5TRQkgFkAbTGvbSRuO88lSJGpnk9TT2J9BC8E,32375
47
+ thestage/i18n/translation.py,sha256=c62OicQ4phSMuqDe7hqGebIsk0W2-8ZJUfgfdtjjqEc,284
48
+ thestage/main.py,sha256=P59_DqDeb6metD6RBCmpp1crEh9VhsKTYPt4SUdPfS4,1789
49
+ thestage/services/.env,sha256=K2VpzFAVjD75XawAHZdR0HWmypryA_mXNY4WHNgR-wQ,184
50
+ thestage/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ thestage/services/abstract_mapper.py,sha256=_q7YLkPNRsNW5wOCqvZIu1KfpLkc7uVaAQKrMZtsGuY,218
52
+ thestage/services/abstract_service.py,sha256=fsGXb0plZ9SvGBWAY4y599BH196YoFP3BJ7LS_pgTcc,2707
53
+ thestage/services/app_config_service.py,sha256=bbiXxcLoh_XC3mgsAo9ciksblPvUEcnG2oCIm1jMyo4,1679
54
+ thestage/services/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ thestage/services/clients/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ thestage/services/clients/git/git_client.py,sha256=PAob7rcwLNoHMDW1ZyRGGGpbYKWahaAp0DrPVKrKUzM,16811
57
+ thestage/services/clients/thestage_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ thestage/services/clients/thestage_api/api_client.py,sha256=CGB-IlumCFd3auYcTRrslQ8qTRDpf5gFA_rGVVV5xBM,30322
59
+ thestage/services/clients/thestage_api/core/api_client_core.py,sha256=lEffuh30f6oV2lp90UuET90OUxnrMh2PHjquF6_sT6E,3453
60
+ thestage/services/clients/thestage_api/core/http_client_exception.py,sha256=JH-874Gu9T1b1_FpPBLqdyt9U0PyhpwRCe_oDc6c_jI,385
61
+ thestage/services/clients/thestage_api/dtos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ thestage/services/clients/thestage_api/dtos/base_response.py,sha256=R6jjhvv0U0XD8j5N5T36q-6liiEAUy7xINFA1H7CMB8,410
63
+ thestage/services/clients/thestage_api/dtos/cloud_provider_region.py,sha256=EJNhQywINW0dtjXKHEDb-etkWQ7keXNUSDhH-h9cabs,1011
64
+ thestage/services/clients/thestage_api/dtos/container_param_request.py,sha256=8Mp9-ZqkvoVw_lyCjo-7syMA4zCKXhs367PIl5DhWN8,436
65
+ thestage/services/clients/thestage_api/dtos/container_response.py,sha256=15WqoxXw6VkombfRbWvR_gLTPyOfE2qidaDBj1oy--w,3763
66
+ thestage/services/clients/thestage_api/dtos/docker_container_assigned_device.py,sha256=u_OE30OpGIeqF4Wnil44JCLIN5rQfpLReTIXfJEbtyk,361
67
+ thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_request.py,sha256=AMNmxoWGt4yAS7juirOCurhlNqEkKAV2C974tLZ212A,500
68
+ thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_response.py,sha256=DfbXk6ikZK78NxlaC5nGujVeSrafTRu7H8QslarmfqE,663
69
+ thestage/services/clients/thestage_api/dtos/docker_container_mapping.py,sha256=pH0lCKTDheDI16NasqQiF288szUgpw758W27JrJo0QI,372
70
+ thestage/services/clients/thestage_api/dtos/entity_filter_request.py,sha256=akovBYk0vK6a9M90eDFnCqx70Mde4Wtb6e0ulhtGMLo,514
71
+ thestage/services/clients/thestage_api/dtos/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ thestage/services/clients/thestage_api/dtos/enums/container_pending_action.py,sha256=7DMt4KdpO91-NnU-Rb2s8ikDpt3IxsyBYEH1lWhR9MI,222
73
+ thestage/services/clients/thestage_api/dtos/enums/container_status.py,sha256=CpXOUJgpqKMRW7QKyJSeegtj_aQBOfDcNsvztMAJvzw,457
74
+ thestage/services/clients/thestage_api/dtos/enums/cpu_type.py,sha256=lNgTW92gc-MolKThbJmY6xXcrgEFdVxXcH07T2KQ2_o,154
75
+ thestage/services/clients/thestage_api/dtos/enums/currency_type.py,sha256=ojfTE12pyDQ6GXZfoQlpftcArtRVu8kApHUm7QC9lJM,202
76
+ thestage/services/clients/thestage_api/dtos/enums/daemon_status.py,sha256=vFuCVysI6PF-XM7QOgdivg13Uuy9IzBAV8bg_afd4pQ,182
77
+ thestage/services/clients/thestage_api/dtos/enums/disk_type.py,sha256=tsi4XyKxohIY0W_sgskxTklIiqDwINZ6pgo8Kt-AOS0,129
78
+ thestage/services/clients/thestage_api/dtos/enums/drive_type.py,sha256=xqs2I9w2cuOmQ86kcMZHetCe18lNqzH6TAYnfwkQPcM,130
79
+ thestage/services/clients/thestage_api/dtos/enums/gpu_name.py,sha256=YO3iYlo7wTT6wEpkJDRcOO8NAc3WMxEQXMQ8jTFKH6k,162
80
+ thestage/services/clients/thestage_api/dtos/enums/inference_model_status.py,sha256=OgoJBh8u5kveForMoxKCCXesE23C8MTGWiMKTUmmKls,256
81
+ thestage/services/clients/thestage_api/dtos/enums/inference_simulator_status.py,sha256=mC8_xCjP0p_tmzx41rgLRwYgbijWcR9xs4m9goZY1Ck,436
82
+ thestage/services/clients/thestage_api/dtos/enums/instance_rented_status.py,sha256=_uk5memh9fOPybFugvNANdhnj2-1Gpx1SE9ZpG6d88k,490
83
+ thestage/services/clients/thestage_api/dtos/enums/instance_type.py,sha256=bdyRr3Up7LpdHZjVsVjg_4lmxME5CQZ6DJ0__tgmpMk,159
84
+ thestage/services/clients/thestage_api/dtos/enums/location_region.py,sha256=t0TLDgFhZTe6eOZxhp1a52bB-ZPERwxoHv0c928Vxvk,281
85
+ thestage/services/clients/thestage_api/dtos/enums/power_status.py,sha256=jNmebTN4qcQs8pwlG2QSy0kTwOyBEkfCl84Gl1npK4g,239
86
+ thestage/services/clients/thestage_api/dtos/enums/provider_name.py,sha256=StLglFLewOa7pQYOb3aGzIPuhc937Qr2c4UlQFJXUto,287
87
+ thestage/services/clients/thestage_api/dtos/enums/selfhosted_status.py,sha256=_OsxObVpczLJ9CJKh4nRh0X6lXw9PfQMTYOGEvze9R8,285
88
+ thestage/services/clients/thestage_api/dtos/enums/task_execution_status.py,sha256=MU14K1PvkLEFnUizeVt8x_u1IP2OVkyf5pLFdrUUtYg,303
89
+ thestage/services/clients/thestage_api/dtos/enums/task_status.py,sha256=Zg4QkuHilWTC6D_lKsby7u4y1rSRs69_kzfeFWCWoFg,282
90
+ thestage/services/clients/thestage_api/dtos/frontend_status.py,sha256=MKrqCmFWVe-8InJqavkqz1w1N35OcT3ndBrXOu7mKdA,312
91
+ thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_instance_request.py,sha256=5R8snv8kMqpyFtxiLKLNotGc-2a4cZYrf6_a8vY5wgg,612
92
+ thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_instance_response.py,sha256=KMq_ySkrQC-sGUB4Znbj2qImjSPHOLKosnsOqJFsMBg,496
93
+ thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_sagemaker_request.py,sha256=5NcSMRSlTon_zg9hI2SxRGd17Y5lRTGP3TXgOercjlw,408
94
+ thestage/services/clients/thestage_api/dtos/inference_controller/deploy_inference_model_to_sagemaker_response.py,sha256=lis4effVtF39eW8gCkWzJKxMVhIMAg3_8JHub83JR6s,422
95
+ thestage/services/clients/thestage_api/dtos/inference_controller/get_inference_simulator_request.py,sha256=syCIJgOYxzm4E53qRVLh4u1ZbSP23_O09WhELMH6QIg,337
96
+ thestage/services/clients/thestage_api/dtos/inference_controller/get_inference_simulator_response.py,sha256=zTt5ewR3oh4qyL0pzt0QP2jANrUpA-5V8As1YqNy3hA,474
97
+ thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_list_for_project_request.py,sha256=zsDl-23C2hGZIYwk4aR8wCXP6KDdOObanLsPYkQOplw,508
98
+ thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_list_for_project_response.py,sha256=YVMbjwz18wWdn9OIzQcc50Vc8e9r2zQc4csIUDDGPyQ,554
99
+ thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_request.py,sha256=ljK-NhYCGojuHHJjOW3WcT6hSSf1lsBHEUyZe3UT-lE,486
100
+ thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_response.py,sha256=d6Aikhrbu0CDrtqUi5XWhYzFK4PrcD3YdJpt9wOUuMI,673
101
+ thestage/services/clients/thestage_api/dtos/inference_simulator_model_response.py,sha256=zC0wMnp_73oNse-ZMF5dICrqwXtJ5KdpKVkb7ejx61s,421
102
+ thestage/services/clients/thestage_api/dtos/inference_simulator_response.py,sha256=KUs4cZF7I7rC_UceCG4MfBaNffxkf-_HNDuKfvHyKQI,405
103
+ thestage/services/clients/thestage_api/dtos/installed_service.py,sha256=YHpFFozYe_fz_MP9Tdr-Nn6oR9FWfnXA9NTaxeGlyPI,662
104
+ thestage/services/clients/thestage_api/dtos/instance_detected_gpus.py,sha256=G32A2kz78sJeLcWkIHcbkC75YxUezXjhp98_2RLCo1g,636
105
+ thestage/services/clients/thestage_api/dtos/instance_rented_response.py,sha256=ZRmSupfT9fckcWlSRKoa0B9Xwq72X7IY_1vUc1yTXM0,4478
106
+ thestage/services/clients/thestage_api/dtos/logging_controller/docker_container_log_stream_request.py,sha256=1roOpNE6BX8E9zyPdoMBp0bpL70xRQJepH9Q0EZ8H7c,223
107
+ thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_request.py,sha256=mu3j0DH3qLrySf43EIET8vDn-miiEdYvFR8wX7mwh-4,526
108
+ thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_response.py,sha256=To3AbryCZ4ihOlukrwucQQNUaRnNIvvH5VZw38AcjrA,548
109
+ thestage/services/clients/thestage_api/dtos/logging_controller/task_log_stream_request.py,sha256=fbqteayY0XR7wNjuSrvJNJ61HSAaMM0LqPXqUVBUQxQ,190
110
+ thestage/services/clients/thestage_api/dtos/logging_controller/user_logs_query_request.py,sha256=hCbd_SRHX8kQDMpfO7DpzhjdzxP-zmHBMc7Cnigi8bM,1032
111
+ thestage/services/clients/thestage_api/dtos/logging_controller/user_logs_query_response.py,sha256=66zw9eTmKnEeCmuZG7Bcm_nPYFkAEQbh1HMo_JbGt5U,559
112
+ thestage/services/clients/thestage_api/dtos/paginated_entity_list.py,sha256=a2QRAFqwz2KZXzuTB8aIqTNymg8FHr4XTVXDnYJgqnc,419
113
+ thestage/services/clients/thestage_api/dtos/pagination_data.py,sha256=qV7qiTAtCf-RdDmjZwsBspQlifR1OGr7ezuVJ0A42zU,357
114
+ thestage/services/clients/thestage_api/dtos/price_definition.py,sha256=ddcXpp0Rt3iH6SrRLjsydNrWweZVdiTtYsFaas6wsC0,572
115
+ thestage/services/clients/thestage_api/dtos/project_controller/project_get_deploy_ssh_key_request.py,sha256=SjFUoIe3cX8czx7PjObCVkDV9l7FBabSJPfvAvWou5g,209
116
+ thestage/services/clients/thestage_api/dtos/project_controller/project_get_deploy_ssh_key_response.py,sha256=LY7NbmzPaQcnI8IjP5nZ6ONMiKf1cK7lUJN5fJ3RQjo,363
117
+ thestage/services/clients/thestage_api/dtos/project_controller/project_push_inference_simulator_model_request.py,sha256=_k5PixXsQSgLkcs68ib1QwQUFC7MiXLHWbLQIpVYDoc,245
118
+ thestage/services/clients/thestage_api/dtos/project_controller/project_push_inference_simulator_model_response.py,sha256=aNaD4xVkhbwlD_rI3D0-2gp-F4L6CxxUkAOSLJZPl1I,249
119
+ thestage/services/clients/thestage_api/dtos/project_controller/project_run_task_request.py,sha256=ZFe2uGseJGwixBh380zpaotb_aWUidrqUSYoqe-y4jE,660
120
+ thestage/services/clients/thestage_api/dtos/project_controller/project_run_task_response.py,sha256=iISmJTHbxSRJsXHT4qBTMP3-Co9fWCHI5s2UgB_-GV8,340
121
+ thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_request.py,sha256=56MzMLxfXrCUW5m3SEhGMQXisQSTN10GhPrIoXHxjNo,623
122
+ thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_response.py,sha256=Q7XlbZ4vgk9QQL2z11BeUkKDn-5p8j06eNI0GmpZNjk,430
123
+ thestage/services/clients/thestage_api/dtos/project_response.py,sha256=PQ0L14_8akc5ADZeL_Y15Z2Hlvkt54d0YKfPROJZQHk,1691
124
+ thestage/services/clients/thestage_api/dtos/selfhosted_instance_response.py,sha256=_zjZAmJ5XI5Jf3Hpys9SBuM_wSsBaUm9KIyFUxECPJ0,3047
125
+ thestage/services/clients/thestage_api/dtos/sftp_path_helper.py,sha256=UeCEcE_qR_TcOGFyOLef7cz3veh1_o6MnLbAJyZk2yc,362
126
+ thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_request.py,sha256=BmO99BXrbUCb2ZIYS2oc7xkwWb5CV5WCaqt1xO4yIro,234
127
+ thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_response.py,sha256=V8wH70noiX2wIFPr8MoBClVl3uUnKpJgaELp59dfK9E,391
128
+ thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_public_key_to_instance_request.py,sha256=gRAyJnvUs4DaIfgDLmZAG7y1o1wvmh-cgbgHcG5iNjs,284
129
+ thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_public_key_to_instance_response.py,sha256=JrAsRyRU8IhQHJc_Vj0v0ZM2vKPVh30r5wnY_-OX5jc,334
130
+ thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_public_ssh_key_request.py,sha256=UfiBOkYNm_usW0rRSc5QIWhTh_5br0x43M8qbNX5HfU,198
131
+ thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_public_ssh_key_response.py,sha256=wwZ-W-LUibTVNXkERQjn6da_02jOJMGHYburaWkpXVw,424
132
+ thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_request.py,sha256=hJt5T2mHPaS9U793NlvgY6kv_GFUxk34QGeRymvQN7Q,392
133
+ thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_response.py,sha256=r2R2efDZmaAyfiNs_kuftpgaP-j6VWpKnA1qkHDQfII,466
134
+ thestage/services/clients/thestage_api/dtos/task_controller/task_status_localized_map_response.py,sha256=yop410FwNvQFXYHKh60ne4DSO3m19zF1nCEuUVSaZ8w,283
135
+ thestage/services/clients/thestage_api/dtos/task_controller/task_view_response.py,sha256=30P19Fipas4wzHguvzmxsAoDkKcGNbcKQ_SjJOQVsq8,462
136
+ thestage/services/clients/thestage_api/dtos/user_controller/user_profile.py,sha256=cDH5azyVBXi3V7kIOEuzsF1aKONQnxcI7YsDwXjRmuE,268
137
+ thestage/services/clients/thestage_api/dtos/validate_token_response.py,sha256=nmKbqRPkwtzhv37QheA_MO4CpEPmGM0VUC2gYckcrl8,418
138
+ thestage/services/config_provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
+ thestage/services/config_provider/config_provider.py,sha256=rxMydXyAdR45ARwEK4020LmunexucPp4HszCTeKe9v8,10257
140
+ thestage/services/connect/connect_service.py,sha256=FASRfXsiFpqGEDPAmJnnEwyZij0IrJJk29U_Ms4ykiU,9359
141
+ thestage/services/connect/dto/remote_server_config.py,sha256=yuO0tTAgUxCiQ-h1nVvWUMlCUtR-WB_eOH6KYspV7zQ,272
142
+ thestage/services/container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
+ thestage/services/container/container_service.py,sha256=ndsjWGupoXlCLAheFij6IcqLtaMickgS5rBMqM7qYkc,14148
144
+ thestage/services/container/mapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
+ thestage/services/container/mapper/container_mapper.py,sha256=ymIjBLGZnpodh0W2KwNUqRxT0VgM1hsCViNza1nhWHk,1088
146
+ thestage/services/core_files/config_entity.py,sha256=_55m8h2_KXIxl8Y71Yyk3wTj-q1mo918YU1yltzVqgQ,1075
147
+ thestage/services/filesystem_service.py,sha256=Ee62DJ7rlkpBkyz40so7Fwd-39vN03uL6uYapcsiq58,4892
148
+ thestage/services/instance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
+ thestage/services/instance/instance_service.py,sha256=NqMT9lKXJlcvflJr7GBLD78zehvfHRYCI9onzAO5gVM,12718
150
+ thestage/services/instance/mapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
+ thestage/services/instance/mapper/instance_mapper.py,sha256=OA0-Z6ODfAK1yBjf7nF-JDKERr8lZUm5vYKk_TFw-v8,1132
152
+ thestage/services/instance/mapper/selfhosted_mapper.py,sha256=KpkvsDV0OWzHhN53md4mgo3xc8siM5idDwL_pSRTouE,1286
153
+ thestage/services/logging/byte_print_style.py,sha256=vUimuC3ZgGujtweQxiRcUXEGlb2yKwv9LRYMy7Gtzhg,139
154
+ thestage/services/logging/dto/log_message.py,sha256=k2clfz2fQnQ-ycFI8g8WYJ_XOjK0hhlA5VhwxVYByaQ,453
155
+ thestage/services/logging/dto/log_type.py,sha256=a6JWnq0ZjJ-2BQrG-fKYYy3UeJS2U2ZzE5P_EXglBfE,95
156
+ thestage/services/logging/exception/log_polling_exception.py,sha256=rKQ7AtNCGKkk5OINIyyjvLT92PU5i_yJUH-Msr9hXQw,226
157
+ thestage/services/logging/logging_constants.py,sha256=4Gk2tglHW_-jnjB8uVIh-ds4fAVBqNW8igfQt8k7Quc,137
158
+ thestage/services/logging/logging_service.py,sha256=7xhzxlSHwaepJtBsPN63-oMF1Ii335REHnMd4J_UFQw,17153
159
+ thestage/services/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
+ thestage/services/project/dto/inference_simulator_dto.py,sha256=5U4uGp7VC1Yr-T0fqZiSNqZUIybs4J9sV25vjBbAUxI,1312
161
+ thestage/services/project/dto/inference_simulator_model_dto.py,sha256=j4dT-7cduzLd59QnmnfQt_aFsiUucpyJFGb-9rNx5K8,1172
162
+ thestage/services/project/dto/project_config.py,sha256=xLy1P5fwToRNZ7ktEBzfEmmvSqXlEGeLANqWlC8VV_4,557
163
+ thestage/services/project/mapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
+ thestage/services/project/mapper/project_inference_simulator_mapper.py,sha256=UdOu9IIF5rlNPoWSaaeSKU3ODe8E5uSMgm2V5ywMWKE,812
165
+ thestage/services/project/mapper/project_inference_simulator_model_mapper.py,sha256=PWY0iWbXhvD-G0X0_aQZAFY2bqc0lvRJcQAyC8Y-88Q,869
166
+ thestage/services/project/mapper/project_task_mapper.py,sha256=SHIEXjYwt4vm2B1X2QiI4sCPbBarum0bTOnmTWPOlto,813
167
+ thestage/services/project/project_service.py,sha256=jVJr6ePzjOpai8OZzedDUCR3UwTMQ0bc6JC2xvQ3yRE,58984
168
+ thestage/services/remote_server_service.py,sha256=dYLuwQQeuFC8Z9ozmZgapPZ0xChjBrTYS5frCAJmG3w,23264
169
+ thestage/services/service_factory.py,sha256=WosSbicSvY9dHOkS2OqGCtHkmKdJE1f_K7uEnB3Auaw,4291
170
+ thestage/services/task/dto/task_dto.py,sha256=PJwrUsLLAoO2uA9xvzb27b9iYAoNiBcsHSxKERh2VFo,2335
171
+ thestage/services/validation_service.py,sha256=iopaDKuC_V_4Z_Zly5BFaLL74wG66z9URE86_I-9Hi4,2243
172
+ thestage-0.6.3.dist-info/LICENSE.txt,sha256=U9QrxfdD7Ie7r8z1FleuvOGQvgCF1m0Mjd78cFvWaHE,572
173
+ thestage-0.6.3.dist-info/METADATA,sha256=3vfj6-b9gvyaOjQrpwdzFNgj698we-Q335jT-NAzCLI,5557
174
+ thestage-0.6.3.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
175
+ thestage-0.6.3.dist-info/entry_points.txt,sha256=57pMhs8zaCM-jgeTffC0WVqCsh35Uq_dUDmzXR80CI4,47
176
+ thestage-0.6.3.dist-info/RECORD,,