thestage 0.5.46__py3-none-any.whl → 0.5.49__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 (179) hide show
  1. thestage/.env +5 -0
  2. thestage/__init__.py +3 -3
  3. thestage/__main__.py +9 -9
  4. thestage/cli_command.py +56 -0
  5. thestage/cli_command_helper.py +51 -0
  6. thestage/color_scheme/color_scheme.py +7 -7
  7. thestage/config/__init__.py +18 -18
  8. thestage/config/config_storage.py +5 -0
  9. thestage/config/env_base.py +7 -7
  10. thestage/controllers/__init__.py +0 -0
  11. thestage/controllers/base_controller.py +67 -63
  12. thestage/controllers/config_controller.py +137 -145
  13. thestage/controllers/container_controller.py +389 -425
  14. thestage/controllers/instance_controller.py +183 -200
  15. thestage/controllers/project_controller.py +802 -872
  16. thestage/controllers/utils_controller.py +32 -28
  17. thestage/debug_main.dist.py +28 -28
  18. thestage/entities/__init__.py +0 -0
  19. thestage/entities/container.py +17 -22
  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 -24
  30. thestage/entities/self_hosted_instance.py +18 -20
  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 -0
  43. thestage/helpers/logger/__init__.py +0 -0
  44. thestage/helpers/logger/app_logger.py +50 -51
  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 -24
  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 -127
  53. thestage/services/app_config_service.py +52 -51
  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 +433 -331
  57. thestage/services/clients/thestage_api/__init__.py +0 -0
  58. thestage/services/clients/thestage_api/api_client.py +718 -734
  59. thestage/services/clients/thestage_api/core/api_client_core.py +108 -25
  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 -14
  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 -0
  138. thestage/services/config_provider/__init__.py +0 -0
  139. thestage/services/config_provider/config_provider.py +237 -209
  140. thestage/services/connect/connect_service.py +196 -207
  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 -391
  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 -20
  147. thestage/services/filesystem_service.py +133 -133
  148. thestage/services/instance/__init__.py +0 -0
  149. thestage/services/instance/instance_service.py +303 -317
  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 -395
  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 +1260 -1280
  168. thestage/services/remote_server_service.py +609 -610
  169. thestage/services/service_factory.py +97 -103
  170. thestage/services/task/dto/task_dto.py +40 -40
  171. thestage/services/validation_service.py +61 -56
  172. {thestage-0.5.46.dist-info → thestage-0.5.49.dist-info}/LICENSE.txt +12 -12
  173. {thestage-0.5.46.dist-info → thestage-0.5.49.dist-info}/METADATA +3 -4
  174. thestage-0.5.49.dist-info/RECORD +176 -0
  175. {thestage-0.5.46.dist-info → thestage-0.5.49.dist-info}/WHEEL +1 -1
  176. thestage/exceptions/http_error_exception.py +0 -12
  177. thestage/services/clients/thestage_api/core/api_client_abstract.py +0 -91
  178. thestage-0.5.46.dist-info/RECORD +0 -172
  179. {thestage-0.5.46.dist-info → thestage-0.5.49.dist-info}/entry_points.txt +0 -0
@@ -1,28 +1,32 @@
1
- import os
2
- import pathlib
3
- from typing import Optional, Dict, Tuple
4
-
5
- from thestage.services.core_files.config_entity import ConfigEntity
6
- from thestage.helpers.error_handler import error_handler
7
- from thestage.services.service_factory import ServiceFactory
8
- from thestage.services.config_provider.config_provider import ConfigProvider
9
-
10
-
11
- def get_current_directory() -> pathlib.Path:
12
- return pathlib.Path.cwd()
13
-
14
-
15
- @error_handler()
16
- def validate_config_and_get_service_factory(
17
- working_directory: Optional[str] = None,
18
- ) -> ServiceFactory:
19
- local_path = get_current_directory() if not working_directory else os.path.abspath(working_directory)
20
- config_provider = ConfigProvider(local_path=local_path)
21
- service_factory = ServiceFactory(config_provider=config_provider)
22
- config: ConfigEntity = config_provider.get_full_config()
23
-
24
- validation_service = service_factory.get_validation_service()
25
- validation_service.check_token(config=config)
26
- config_provider.save_config(config=config)
27
-
28
- return service_factory
1
+ import os
2
+ import pathlib
3
+ from typing import Optional
4
+
5
+ from thestage.helpers.error_handler import error_handler
6
+ from thestage.services.service_factory import ServiceFactory
7
+
8
+
9
+ def get_current_directory() -> pathlib.Path:
10
+ return pathlib.Path.cwd()
11
+
12
+
13
+ @error_handler()
14
+ def validate_config_and_get_service_factory(
15
+ working_directory: Optional[str] = None,
16
+ ) -> ServiceFactory:
17
+ local_path = get_current_directory() if not working_directory else os.path.abspath(working_directory)
18
+
19
+ service_factory = ServiceFactory()
20
+ config_provider = service_factory.get_config_provider()
21
+
22
+ config = config_provider.get_config()
23
+ config.runtime.working_directory = str(local_path)
24
+
25
+ config_provider.update_config(updated_config=config)
26
+
27
+ validation_service = service_factory.get_validation_service()
28
+
29
+ validation_service.check_token()
30
+ config_provider.save_config()
31
+
32
+ return service_factory
@@ -1,28 +1,28 @@
1
- from thestage import __app_name__
2
-
3
- from thestage.controllers import base_controller, container_controller, instance_controller, \
4
- config_controller, project_controller
5
-
6
- base_controller.app.add_typer(container_controller.app, name="container")
7
- base_controller.app.add_typer(instance_controller.app, name="instance")
8
- base_controller.app.add_typer(config_controller.app, name="config")
9
- base_controller.app.add_typer(project_controller.app, name="project")
10
-
11
-
12
- def main():
13
- # example of a command to debug
14
- project_controller.app([
15
- "run",
16
- "-wd",
17
- "/Users/alexey/Documents/clonetest",
18
- "-dcuid",
19
- '62-1',
20
- '-t',
21
- 'task',
22
- '-com',
23
- "'echo 123'"
24
- ], prog_name=__app_name__)
25
-
26
-
27
- if __name__ == "__main__":
28
- main()
1
+ from thestage import __app_name__
2
+
3
+ from thestage.controllers import base_controller, container_controller, instance_controller, \
4
+ config_controller, project_controller
5
+
6
+ base_controller.app.add_typer(container_controller.app, name="container")
7
+ base_controller.app.add_typer(instance_controller.app, name="instance")
8
+ base_controller.app.add_typer(config_controller.app, name="config")
9
+ base_controller.app.add_typer(project_controller.app, name="project")
10
+
11
+
12
+ def main():
13
+ # example of a command to debug
14
+ project_controller.app([
15
+ "run",
16
+ "-wd",
17
+ "/Users/alexey/Documents/clonetest",
18
+ "-dcuid",
19
+ '62-1',
20
+ '-t',
21
+ 'task',
22
+ '-com',
23
+ "'echo 123'"
24
+ ], prog_name=__app_name__)
25
+
26
+
27
+ if __name__ == "__main__":
28
+ main()
File without changes
@@ -1,22 +1,17 @@
1
- from typing import Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field
4
-
5
-
6
- class DockerContainerEntity(BaseModel):
7
-
8
- model_config = ConfigDict(
9
- populate_by_name=True,
10
- use_enum_values=True,
11
- )
12
-
13
- # id: Optional[int] = Field(None, alias='id')
14
- slug: Optional[str] = Field(None, alias='UNIQUE ID')
15
- status: Optional[str] = Field(None, alias='STATUS')
16
- title: Optional[str] = Field(None, alias='TITLE')
17
- instance_type: Optional[str] = Field(None, alias='INSTANCE TYPE')
18
- instance_slug: Optional[str] = Field(None, alias='INSTANCE UNIQUE ID')
19
- # instance_rented_slug: Optional[str] = Field(None, alias='INSTANCE UNIQUE ID')
20
- # selfhosted_rented_slug: Optional[str] = Field(None, alias='SELF-HOSTED UNIQUE ID')
21
- # system_name: Optional[str] = Field(None, alias='SYSTEM NAME')
22
- # docker_image: Optional[str] = Field(None, alias='DOCKER IMAGE')
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+
6
+ class DockerContainerEntity(BaseModel):
7
+
8
+ model_config = ConfigDict(
9
+ populate_by_name=True,
10
+ use_enum_values=True,
11
+ )
12
+
13
+ slug: Optional[str] = Field(None, alias='UNIQUE ID')
14
+ status: Optional[str] = Field(None, alias='STATUS')
15
+ title: Optional[str] = Field(None, alias='TITLE')
16
+ instance_type: Optional[str] = Field(None, alias='INSTANCE TYPE')
17
+ instance_slug: Optional[str] = Field(None, alias='INSTANCE UNIQUE ID')
File without changes
@@ -1,6 +1,6 @@
1
- from enum import Enum
2
-
3
-
4
- class OrderDirectionType(str, Enum):
5
- ASC = "ASC"
6
- DESC = "DESC"
1
+ from enum import Enum
2
+
3
+
4
+ class OrderDirectionType(str, Enum):
5
+ ASC = "ASC"
6
+ DESC = "DESC"
@@ -1,7 +1,7 @@
1
- from enum import Enum
2
-
3
-
4
- class ShellType(str, Enum):
5
- BASH = "/bin/bash"
6
- SH = "/bin/sh"
7
- UNKNOWN = "UNKNOWN"
1
+ from enum import Enum
2
+
3
+
4
+ class ShellType(str, Enum):
5
+ BASH = "/bin/bash"
6
+ SH = "/bin/sh"
7
+ UNKNOWN = "UNKNOWN"
@@ -1,6 +1,6 @@
1
- from enum import Enum
2
-
3
-
4
- class TailOutputType(str, Enum):
5
- YES = '1'
6
- NO = '0'
1
+ from enum import Enum
2
+
3
+
4
+ class TailOutputType(str, Enum):
5
+ YES = '1'
6
+ NO = '0'
@@ -1,7 +1,7 @@
1
- from enum import Enum
2
-
3
-
4
- class YesOrNoResponse(str, Enum):
5
- YES = "y"
6
- NO = "n"
7
-
1
+ from enum import Enum
2
+
3
+
4
+ class YesOrNoResponse(str, Enum):
5
+ YES = "y"
6
+ NO = "n"
7
+
@@ -1,27 +1,27 @@
1
- import os
2
- from pathlib import Path
3
- from typing import Optional, List
4
-
5
- from pydantic import BaseModel, ConfigDict, Field
6
-
7
-
8
- class FileItemEntity(BaseModel):
9
- model_config = ConfigDict(use_enum_values=True)
10
-
11
- name: Optional[str] = Field(None)
12
- path: Optional[str] = Field(None)
13
- is_file: Optional[bool] = Field(False)
14
- is_folder: Optional[bool] = Field(False)
15
- file_size: Optional[int] = Field(None)
16
- children: List['FileItemEntity'] = Field(default=[])
17
-
18
- @staticmethod
19
- def build_from_path(path: Path) -> 'FileItemEntity':
20
- file_stat = os.stat(path)
21
- return FileItemEntity(
22
- name=path.name,
23
- path=str(path.absolute()),
24
- is_file=path.is_file(),
25
- is_folder=path.is_dir(),
26
- file_size=file_stat.st_size,
27
- )
1
+ import os
2
+ from pathlib import Path
3
+ from typing import Optional, List
4
+
5
+ from pydantic import BaseModel, ConfigDict, Field
6
+
7
+
8
+ class FileItemEntity(BaseModel):
9
+ model_config = ConfigDict(use_enum_values=True)
10
+
11
+ name: Optional[str] = Field(None)
12
+ path: Optional[str] = Field(None)
13
+ is_file: Optional[bool] = Field(False)
14
+ is_folder: Optional[bool] = Field(False)
15
+ file_size: Optional[int] = Field(None)
16
+ children: List['FileItemEntity'] = Field(default=[])
17
+
18
+ @staticmethod
19
+ def build_from_path(path: Path) -> 'FileItemEntity':
20
+ file_stat = os.stat(path)
21
+ return FileItemEntity(
22
+ name=path.name,
23
+ path=str(path.absolute()),
24
+ is_file=path.is_file(),
25
+ is_folder=path.is_dir(),
26
+ file_size=file_stat.st_size,
27
+ )
@@ -1,18 +1,18 @@
1
- from typing import Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field
4
-
5
-
6
- class ProjectInferenceSimulatorEntity(BaseModel):
7
-
8
- model_config = ConfigDict(
9
- populate_by_name=True,
10
- use_enum_values=True,
11
- )
12
-
13
- slug: Optional[str] = Field(None, alias='UNIQUE ID')
14
- status: Optional[str] = Field(None, alias='STATUS')
15
- http_endpoint: Optional[str] = Field(None, alias="HTTP")
16
- grpc_endpoint: Optional[str] = Field(None, alias="GRPC")
17
- metrics_endpoint: Optional[str] = Field(None, alias="METRICS")
18
- started_at: Optional[str] = Field(None, alias='STARTED AT')
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+
6
+ class ProjectInferenceSimulatorEntity(BaseModel):
7
+
8
+ model_config = ConfigDict(
9
+ populate_by_name=True,
10
+ use_enum_values=True,
11
+ )
12
+
13
+ slug: Optional[str] = Field(None, alias='UNIQUE ID')
14
+ status: Optional[str] = Field(None, alias='STATUS')
15
+ http_endpoint: Optional[str] = Field(None, alias="HTTP")
16
+ grpc_endpoint: Optional[str] = Field(None, alias="GRPC")
17
+ metrics_endpoint: Optional[str] = Field(None, alias="METRICS")
18
+ started_at: Optional[str] = Field(None, alias='STARTED AT')
@@ -1,17 +1,17 @@
1
- from typing import Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field
4
-
5
-
6
- class ProjectInferenceSimulatorModelEntity(BaseModel):
7
-
8
- model_config = ConfigDict(
9
- populate_by_name=True,
10
- use_enum_values=True,
11
- )
12
-
13
- id: Optional[int] = Field(None, alias='ID')
14
- slug: Optional[str] = Field(None, alias='UNIQUE_ID')
15
- status: Optional[str] = Field(None, alias='STATUS')
16
- commit_hash: Optional[str] = Field(None, alias='COMMIT_HASH')
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+
6
+ class ProjectInferenceSimulatorModelEntity(BaseModel):
7
+
8
+ model_config = ConfigDict(
9
+ populate_by_name=True,
10
+ use_enum_values=True,
11
+ )
12
+
13
+ id: Optional[int] = Field(None, alias='ID')
14
+ slug: Optional[str] = Field(None, alias='UNIQUE_ID')
15
+ status: Optional[str] = Field(None, alias='STATUS')
16
+ commit_hash: Optional[str] = Field(None, alias='COMMIT_HASH')
17
17
  environment_metadata: Optional[str] = Field(None, alias='ENVIRONMENT_METADATA')
@@ -1,19 +1,19 @@
1
- from typing import Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field
4
-
5
-
6
- class ProjectTaskEntity(BaseModel):
7
-
8
- model_config = ConfigDict(
9
- populate_by_name=True,
10
- use_enum_values=True,
11
- )
12
-
13
- id: Optional[int] = Field(None, alias='ID')
14
- title: Optional[str] = Field(None, alias='TITLE')
15
- status: Optional[str] = Field(None, alias='STATUS')
16
- docker_container_id: Optional[int] = Field(None, alias='DOCKER_CONTAINER_ID')
17
- docker_container_slug: Optional[str] = Field(None, alias='DOCKER_CONTAINER_UID')
18
- started_at: Optional[str] = Field(None, alias='STARTED AT')
19
- finished_at: Optional[str] = Field(None, alias='FINISHED_AT')
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+
6
+ class ProjectTaskEntity(BaseModel):
7
+
8
+ model_config = ConfigDict(
9
+ populate_by_name=True,
10
+ use_enum_values=True,
11
+ )
12
+
13
+ id: Optional[int] = Field(None, alias='ID')
14
+ title: Optional[str] = Field(None, alias='TITLE')
15
+ status: Optional[str] = Field(None, alias='STATUS')
16
+ docker_container_id: Optional[int] = Field(None, alias='DOCKER_CONTAINER_ID')
17
+ docker_container_slug: Optional[str] = Field(None, alias='DOCKER_CONTAINER_UID')
18
+ started_at: Optional[str] = Field(None, alias='STARTED AT')
19
+ finished_at: Optional[str] = Field(None, alias='FINISHED_AT')
@@ -1,24 +1,19 @@
1
- from typing import Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field
4
-
5
-
6
- class RentedInstanceEntity(BaseModel):
7
-
8
- model_config = ConfigDict(
9
- populate_by_name=True,
10
- use_enum_values=True
11
- )
12
-
13
- # id: Optional[int] = Field(None, alias='ID')
14
- status: Optional[str] = Field(None, alias='STATUS')
15
- title: Optional[str] = Field(None, alias='TITLE')
16
- slug: Optional[str] = Field(None, alias='UNIQUE ID')
17
- cpu_type: Optional[str] = Field(None, alias='CPU TYPE')
18
- cpu_cores: Optional[str] = Field(None, alias='CPU CORES')
19
- gpu_type: Optional[str] = Field(None, alias='GPU TYPE')
20
- # ram_size_gb: Optional[int] = Field(None, alias='RAM SIZE GB')
21
- ip_address: Optional[str] = Field(None, alias='IP ADDRESS')
22
- # username: Optional[str] = Field(None, alias='USERNAME')
23
- # created_at: Optional[str] = Field(None, alias='CREATED AT')
24
- # updated_at: Optional[str] = Field(None, alias='UPDATED AT')
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+
6
+ class RentedInstanceEntity(BaseModel):
7
+
8
+ model_config = ConfigDict(
9
+ populate_by_name=True,
10
+ use_enum_values=True
11
+ )
12
+
13
+ status: Optional[str] = Field(None, alias='STATUS')
14
+ title: Optional[str] = Field(None, alias='TITLE')
15
+ slug: Optional[str] = Field(None, alias='UNIQUE ID')
16
+ cpu_type: Optional[str] = Field(None, alias='CPU TYPE')
17
+ cpu_cores: Optional[str] = Field(None, alias='CPU CORES')
18
+ gpu_type: Optional[str] = Field(None, alias='GPU TYPE')
19
+ ip_address: Optional[str] = Field(None, alias='IP ADDRESS')
@@ -1,20 +1,18 @@
1
- from typing import Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field
4
-
5
-
6
- class SelfHostedInstanceEntity(BaseModel):
7
- model_config = ConfigDict(
8
- use_enum_values=True,
9
- populate_by_name=True,
10
- )
11
-
12
- status: Optional[str] = Field(None, alias='STATUS')
13
- title: Optional[str] = Field(None, alias='TITLE')
14
- slug: Optional[str] = Field(None, alias='SLUG')
15
- cpu_type: Optional[str] = Field(str, alias='CPU_TYPE')
16
- cpu_cores: Optional[int] = Field(None, alias='CPU_CORES')
17
- gpu_type: Optional[str] = Field(str, alias='GPU_TYPE')
18
- ip_address: Optional[str] = Field(None, alias='IP_ADDRESS')
19
- # created_at: Optional[str] = Field(None, alias='CREATED_AT')
20
- # updated_at: Optional[str] = Field(None, alias='UPDATED_AT')
1
+ from typing import Optional
2
+
3
+ from pydantic import BaseModel, ConfigDict, Field
4
+
5
+
6
+ class SelfHostedInstanceEntity(BaseModel):
7
+ model_config = ConfigDict(
8
+ use_enum_values=True,
9
+ populate_by_name=True,
10
+ )
11
+
12
+ status: Optional[str] = Field(None, alias='STATUS')
13
+ title: Optional[str] = Field(None, alias='TITLE')
14
+ slug: Optional[str] = Field(None, alias='SLUG')
15
+ cpu_type: Optional[str] = Field(str, alias='CPU_TYPE')
16
+ cpu_cores: Optional[int] = Field(None, alias='CPU_CORES')
17
+ gpu_type: Optional[str] = Field(str, alias='GPU_TYPE')
18
+ ip_address: Optional[str] = Field(None, alias='IP_ADDRESS')
File without changes
@@ -1,6 +1,6 @@
1
- from thestage.exceptions.base_exception import BaseAbstractException
2
-
3
-
4
- class AuthException(BaseAbstractException):
5
- def __init__(self, message: str):
6
- super(AuthException, self).__init__(message=message)
1
+ from thestage.exceptions.base_exception import BaseAbstractException
2
+
3
+
4
+ class AuthException(BaseAbstractException):
5
+ def __init__(self, message: str):
6
+ super(AuthException, self).__init__(message=message)
@@ -1,13 +1,13 @@
1
-
2
- class BaseAbstractException(Exception):
3
- def __init__(self, message: str):
4
- self._message = message
5
-
6
- def __str__(self):
7
- return self._message
8
-
9
- def __repr__(self):
10
- return self._message
11
-
12
- def get_message(self) -> str:
13
- return self._message
1
+
2
+ class BaseAbstractException(Exception):
3
+ def __init__(self, message: str):
4
+ self._message = message
5
+
6
+ def __str__(self):
7
+ return self._message
8
+
9
+ def __repr__(self):
10
+ return self._message
11
+
12
+ def get_message(self) -> str:
13
+ return self._message
@@ -1,6 +1,6 @@
1
- from thestage.exceptions.base_exception import BaseAbstractException
2
-
3
-
4
- class BusinessLogicException(BaseAbstractException):
5
- def __init__(self, message: str):
6
- super(BusinessLogicException, self).__init__(message=message)
1
+ from thestage.exceptions.base_exception import BaseAbstractException
2
+
3
+
4
+ class BusinessLogicException(BaseAbstractException):
5
+ def __init__(self, message: str):
6
+ super(BusinessLogicException, self).__init__(message=message)
@@ -1,6 +1,6 @@
1
- from thestage.exceptions.base_exception import BaseAbstractException
2
-
3
-
4
- class ConfigException(BaseAbstractException):
5
- def __init__(self, message: str):
6
- super(ConfigException, self).__init__(message=message)
1
+ from thestage.exceptions.base_exception import BaseAbstractException
2
+
3
+
4
+ class ConfigException(BaseAbstractException):
5
+ def __init__(self, message: str):
6
+ super(ConfigException, self).__init__(message=message)
@@ -1,6 +1,6 @@
1
- from thestage.exceptions.base_exception import BaseAbstractException
2
-
3
-
4
- class FileSystemException(BaseAbstractException):
5
- def __init__(self, message: str):
6
- super(FileSystemException, self).__init__(message=message)
1
+ from thestage.exceptions.base_exception import BaseAbstractException
2
+
3
+
4
+ class FileSystemException(BaseAbstractException):
5
+ def __init__(self, message: str):
6
+ super(FileSystemException, self).__init__(message=message)
@@ -1,17 +1,17 @@
1
- from thestage.exceptions.base_exception import BaseAbstractException
2
-
3
-
4
- class GitAccessException(BaseAbstractException):
5
-
6
- __url: str
7
-
8
- def __init__(self, message: str, url: str, dop_message: str):
9
- super(GitAccessException, self).__init__(message=message)
10
- self.__url = url
11
- self.__dop_message = dop_message
12
-
13
- def get_url(self) -> str:
14
- return self.__url
15
-
16
- def get_dop_message(self) -> str:
17
- return self.__dop_message
1
+ from thestage.exceptions.base_exception import BaseAbstractException
2
+
3
+
4
+ class GitAccessException(BaseAbstractException):
5
+
6
+ __url: str
7
+
8
+ def __init__(self, message: str, url: str, dop_message: str):
9
+ super(GitAccessException, self).__init__(message=message)
10
+ self.__url = url
11
+ self.__dop_message = dop_message
12
+
13
+ def get_url(self) -> str:
14
+ return self.__url
15
+
16
+ def get_dop_message(self) -> str:
17
+ return self.__dop_message
@@ -1,24 +1,24 @@
1
- from typing import Optional
2
-
3
- from thestage.exceptions.base_exception import BaseAbstractException
4
-
5
-
6
- class RemoteServerException(BaseAbstractException):
7
-
8
- def __init__(
9
- self,
10
- message: str,
11
- ip_address: Optional[str] = None,
12
- username: Optional[str] = None,
13
- ):
14
- super(RemoteServerException, self).__init__(message=message)
15
- self._ip_address = ip_address
16
- self._username = username
17
-
18
- @property
19
- def ip_address(self):
20
- return self._ip_address
21
-
22
- @property
23
- def username(self):
24
- return self._username
1
+ from typing import Optional
2
+
3
+ from thestage.exceptions.base_exception import BaseAbstractException
4
+
5
+
6
+ class RemoteServerException(BaseAbstractException):
7
+
8
+ def __init__(
9
+ self,
10
+ message: str,
11
+ ip_address: Optional[str] = None,
12
+ username: Optional[str] = None,
13
+ ):
14
+ super(RemoteServerException, self).__init__(message=message)
15
+ self._ip_address = ip_address
16
+ self._username = username
17
+
18
+ @property
19
+ def ip_address(self):
20
+ return self._ip_address
21
+
22
+ @property
23
+ def username(self):
24
+ return self._username