thestage 0.5.45__py3-none-any.whl → 0.5.47__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 (50) hide show
  1. thestage/.env +5 -0
  2. thestage/__init__.py +2 -1
  3. thestage/cli_command.py +56 -0
  4. thestage/cli_command_helper.py +51 -0
  5. thestage/config/config_storage.py +3 -0
  6. thestage/controllers/base_controller.py +19 -15
  7. thestage/controllers/config_controller.py +30 -38
  8. thestage/controllers/container_controller.py +43 -79
  9. thestage/controllers/instance_controller.py +23 -40
  10. thestage/controllers/project_controller.py +95 -184
  11. thestage/controllers/utils_controller.py +12 -8
  12. thestage/debug_tests.py +12 -0
  13. thestage/entities/container.py +0 -5
  14. thestage/entities/rented_instance.py +0 -5
  15. thestage/entities/self_hosted_instance.py +0 -2
  16. thestage/helpers/error_handler.py +14 -14
  17. thestage/helpers/exception_hook.py +14 -0
  18. thestage/helpers/logger/app_logger.py +3 -4
  19. thestage/main.py +25 -13
  20. thestage/services/abstract_service.py +0 -40
  21. thestage/services/app_config_service.py +7 -6
  22. thestage/services/clients/thestage_api/api_client.py +60 -74
  23. thestage/services/clients/thestage_api/core/api_client_core.py +92 -9
  24. thestage/services/clients/thestage_api/dtos/container_response.py +1 -1
  25. thestage/services/clients/thestage_api/dtos/enums/instance_rented_status.py +1 -0
  26. thestage/services/clients/thestage_api/dtos/enums/selfhosted_status.py +1 -1
  27. thestage/services/clients/thestage_api/dtos/inference_simulator_model_response.py +1 -1
  28. thestage/services/clients/thestage_api/dtos/inference_simulator_response.py +1 -1
  29. thestage/services/clients/thestage_api/dtos/instance_rented_response.py +1 -1
  30. thestage/services/clients/thestage_api/dtos/selfhosted_instance_response.py +1 -1
  31. thestage/services/clients/thestage_api/dtos/task_controller/task_status_localized_map_response.py +1 -1
  32. thestage/services/clients/thestage_api/dtos/validate_token_response.py +11 -0
  33. thestage/services/config_provider/config_provider.py +75 -47
  34. thestage/services/connect/connect_service.py +11 -22
  35. thestage/services/container/container_service.py +6 -23
  36. thestage/services/core_files/config_entity.py +7 -1
  37. thestage/services/filesystem_service.py +2 -2
  38. thestage/services/instance/instance_service.py +14 -28
  39. thestage/services/logging/logging_service.py +17 -45
  40. thestage/services/project/project_service.py +33 -72
  41. thestage/services/remote_server_service.py +3 -4
  42. thestage/services/service_factory.py +21 -27
  43. thestage/services/validation_service.py +14 -9
  44. {thestage-0.5.45.dist-info → thestage-0.5.47.dist-info}/METADATA +3 -4
  45. {thestage-0.5.45.dist-info → thestage-0.5.47.dist-info}/RECORD +48 -43
  46. {thestage-0.5.45.dist-info → thestage-0.5.47.dist-info}/WHEEL +1 -1
  47. thestage/exceptions/http_error_exception.py +0 -12
  48. thestage/services/clients/thestage_api/core/api_client_abstract.py +0 -91
  49. {thestage-0.5.45.dist-info → thestage-0.5.47.dist-info}/LICENSE.txt +0 -0
  50. {thestage-0.5.45.dist-info → thestage-0.5.47.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.1
2
2
  Name: thestage
3
- Version: 0.5.45
3
+ Version: 0.5.47
4
4
  Summary:
5
5
  Author: TheStage AI team
6
6
  Author-email: hello@thestage.ai
@@ -10,12 +10,11 @@ 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
14
13
  Requires-Dist: aioconsole (>=0.8.0,<0.9.0)
15
14
  Requires-Dist: boto3 (>=1.35.80,<2.0.0)
16
15
  Requires-Dist: gitpython (>=3.1.40,<4.0.0)
17
16
  Requires-Dist: httpx (>=0.27.2,<0.28.0)
18
- Requires-Dist: paramiko (>=3.4.0,<4.0.0)
17
+ Requires-Dist: paramiko (>=3.5.1,<4.0.0)
19
18
  Requires-Dist: pydantic (>=2.4.2,<3.0.0)
20
19
  Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
21
20
  Requires-Dist: python-gettext-translations (>=1.1.0,<2.0.0)
@@ -1,18 +1,23 @@
1
- thestage/__init__.py,sha256=jF3zpsm_hT2fThFl_9xh6OFpHhG5nMHLJtncxIQBu1A,65
1
+ thestage/.env,sha256=3nhls9S7988o3kow9IETQuaq8vXbyTHQDkHxMpFu5Iw,187
2
+ thestage/__init__.py,sha256=qLrayU7awNqaeKLMu2MU9cuWz-1PCv8PeSkIxjsEWmg,66
2
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
3
6
  thestage/color_scheme/color_scheme.py,sha256=qaSSS_OzPsqI7yV1TC3Ne0PnsWDWo5xqU8j_7JYG-TI,210
4
7
  thestage/config/__init__.py,sha256=RNobilYVK1WAM1utcQ8ZuATKc9Zh9M9BAjCLZTnR_TA,428
8
+ thestage/config/config_storage.py,sha256=6Zg1fuv8HSlYsZ-27paKDv8OBhUi2s7WGlTQswxg8WU,108
5
9
  thestage/config/env_base.py,sha256=RNBQ17yk1ieu1kdUlM7Qe7mDCoxstgGUwwhe265o4dQ,367
6
10
  thestage/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- thestage/controllers/base_controller.py,sha256=lX0XsBc7ZEPD_I56cN8IBAVuWGIkOkr7JHvist3_FEM,2135
8
- thestage/controllers/config_controller.py,sha256=Gzd61UeU1igFT4QUyrZ4dOo_QaNEuXuSEIroXpbBhPA,5365
9
- thestage/controllers/container_controller.py,sha256=sSjrkjCQtn-DQJTeUCYYdzwOoGIGniA-MQ3y3BleVsE,14967
10
- thestage/controllers/instance_controller.py,sha256=3jaM7bYICviAl9_rgkt4S1v9S-bEAAJ18qKDzuMpZlQ,6687
11
- thestage/controllers/project_controller.py,sha256=ueQJI7lAwwPMJa7evVg_unUnAsTmgz204veOQIxFWSU,31778
12
- thestage/controllers/utils_controller.py,sha256=FV35yte7jTZRzy2DaL3OZCNzmlVrsNKxksC8P0FD7hM,1030
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=7CQmvo6QXcWxDZcFURMuq_z3c0WFVhEfQIWEkxkbGls,31057
16
+ thestage/controllers/utils_controller.py,sha256=ac-TLWC2wrmxJYNFOltoQKCTpFaKB6p937odona64OI,912
13
17
  thestage/debug_main.dist.py,sha256=UPIJ58yf-6FtXZj-FLAwxi7HononseuCYm9xb5KlxTs,783
18
+ thestage/debug_tests.py,sha256=u4I3NMKUaCFQsrrw4LKnniwMOlv99hD5zM_xyBGo5QE,539
14
19
  thestage/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- thestage/entities/container.py,sha256=OxOuXnTs4DITNpcrcUkuSBl4M5S4lGY_DTbhy8WsqUg,894
20
+ thestage/entities/container.py,sha256=jP8ZUQPSMdAG5Z68FFKLYpBFI7Hf42Jz4_NXnRj5css,533
16
21
  thestage/entities/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
22
  thestage/entities/enums/order_direction_type.py,sha256=zC9-FLhn8-6NVmSlgeKXKBnVJKH8RLtuUYApQIb1zcU,95
18
23
  thestage/entities/enums/shell_type.py,sha256=-XcPiI3psjeIzd0VXWHdca5Ttgbu9M5oQPeZUZLJRMc,118
@@ -22,8 +27,8 @@ thestage/entities/file_item.py,sha256=hxUbdne6AYFHJfuQ8l0XQO86IuC8Pyx_OrPw_0lhN_
22
27
  thestage/entities/project_inference_simulator.py,sha256=J7Kq3Stb9EElaa8LYLo5kzLLAzgG0ibg4u1iNo0ZUns,597
23
28
  thestage/entities/project_inference_simulator_model.py,sha256=_xfjaaCSUfVKFQLlsyMEvD4oboKAzIOl6YoMyS59XyQ,546
24
29
  thestage/entities/project_task.py,sha256=7uewPIC_HF32OviQHU7uyJ8KokCuK5OjB47r-ltdpyI,672
25
- thestage/entities/rented_instance.py,sha256=NiOZzOUi6Wt39S5uQBlDodEnMEB1_EA72nT0ZW16eCk,944
26
- thestage/entities/self_hosted_instance.py,sha256=YyQsuG4PJ8aMMaZyF0wo5Q1tXoeP0BwXA2MvrqEm_rg,761
30
+ thestage/entities/rented_instance.py,sha256=NjYKaO0oZ3a55OJHrMyWK9ueeXw8HtVgm9-0nobo_kg,632
31
+ thestage/entities/self_hosted_instance.py,sha256=oJeKpLyqBdFxWiaoxJq6XDyXjRwYsCs40uM1AF6YMng,629
27
32
  thestage/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
33
  thestage/exceptions/auth_exception.py,sha256=HZeiF3aocqukmClUfIDCk5izb4tpG4KEbhyXtVl2z34,214
29
34
  thestage/exceptions/base_exception.py,sha256=ekov63Q0OZLeLOu6bhHN9KLo8pPn0XLCMZwZrVULhDw,282
@@ -31,36 +36,35 @@ thestage/exceptions/business_logic_exception.py,sha256=vNiSq9hUjrB0gx1umFcq4Eft9
31
36
  thestage/exceptions/config_exception.py,sha256=c2V8ccEoPWOV5fd_rSgaj9HB4rQfj6DOdnALEq_U8-Q,218
32
37
  thestage/exceptions/file_system_exception.py,sha256=OiBCtjzV1ToXfn5HtmXv9Ihp6uDcKNSyKzQxut-xhQQ,226
33
38
  thestage/exceptions/git_access_exception.py,sha256=ZyB5qrz6fok1jOEKtt3PXP9vq3vOmKOK2OZcFztH9gM,465
34
- thestage/exceptions/http_error_exception.py,sha256=24R8KYC5nU8T1zDE9xtThM9SAA3PGSgv4zPk4Gn5eWI,405
35
39
  thestage/exceptions/remote_server_exception.py,sha256=Z1R5Wjw3w7VdqURhjidGkNhJL9lsA76txkAZPA5Uv70,595
36
40
  thestage/git/ProgressPrinter.py,sha256=z99BPq3KYycClL-7fmsERIIuZ03papdIYOhR8A7b9AA,573
37
41
  thestage/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- thestage/helpers/error_handler.py,sha256=ZnCrMcGEtEbVc_-yA7utUQr6jVSfey_J__siAB_rxiA,5341
42
+ thestage/helpers/error_handler.py,sha256=_KArMtEmlwvZmPcbbO-fGYSuMKMmOTErZONf1jkFpu8,5355
43
+ thestage/helpers/exception_hook.py,sha256=jekDs7smzI1UjXkuMut_uM725GL3c6Gr_zmyEYdDjV8,334
39
44
  thestage/helpers/logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- thestage/helpers/logger/app_logger.py,sha256=hUuxgUsj4pl9Ogjt1xJePTf71iVxKzyx46dr1QZ7E28,1560
45
+ thestage/helpers/logger/app_logger.py,sha256=4dgZ_8k28R887rmIHmCTn2QVg0stqTk8hcXa5CF4VJc,1607
41
46
  thestage/helpers/ssh_util.py,sha256=JuDwddHxEGcA24Y8a-jLv339cG-jq4hEaBAl5TSVVFw,1262
42
47
  thestage/i18n/en_GB/messages.po,sha256=BuVIhd5TRQkgFkAbTGvbSRuO88lSJGpnk9TT2J9BC8E,32375
43
48
  thestage/i18n/translation.py,sha256=c62OicQ4phSMuqDe7hqGebIsk0W2-8ZJUfgfdtjjqEc,284
44
- thestage/main.py,sha256=qjlm4kSgT4Gnr4kyjYmHypj0RTk90JYHscP1w8P1Zwg,935
49
+ thestage/main.py,sha256=P59_DqDeb6metD6RBCmpp1crEh9VhsKTYPt4SUdPfS4,1789
45
50
  thestage/services/.env,sha256=K2VpzFAVjD75XawAHZdR0HWmypryA_mXNY4WHNgR-wQ,184
46
51
  thestage/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
52
  thestage/services/abstract_mapper.py,sha256=_q7YLkPNRsNW5wOCqvZIu1KfpLkc7uVaAQKrMZtsGuY,218
48
- thestage/services/abstract_service.py,sha256=1PBkO8pFkPmNk1VxUIxED0H3ZStCqAcFw7QGBlzkoh4,3963
49
- thestage/services/app_config_service.py,sha256=a7zrbVCJx6XCSRCMv346AYQ_gV3fzw8g7EzunZJ-CIY,1655
53
+ thestage/services/abstract_service.py,sha256=fsGXb0plZ9SvGBWAY4y599BH196YoFP3BJ7LS_pgTcc,2707
54
+ thestage/services/app_config_service.py,sha256=bbiXxcLoh_XC3mgsAo9ciksblPvUEcnG2oCIm1jMyo4,1679
50
55
  thestage/services/clients/.DS_Store,sha256=EYALnKLNXhZ-2jJTMck8Fo1bIxlFCvaXGUUUf-lgHxM,6148
51
56
  thestage/services/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
57
  thestage/services/clients/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
58
  thestage/services/clients/git/git_client.py,sha256=y1ZHgFu5l6tQ3l7SCJVLP81VDGTkCWofhOsVruZwJHo,12716
54
59
  thestage/services/clients/thestage_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- thestage/services/clients/thestage_api/api_client.py,sha256=W28SETPflYnOQgb0WoGaleqYtR8EtiOYllcOqUbK-pE,29336
56
- thestage/services/clients/thestage_api/core/api_client_abstract.py,sha256=nJ0OiT4Ecexp-3HHK332pvyzrf1JsZ1WQYdvn-aeIL8,2984
57
- thestage/services/clients/thestage_api/core/api_client_core.py,sha256=WwtzdTAxog-l2UU8Up40BxepgM7OTXn-XHgzlHorXT0,908
60
+ thestage/services/clients/thestage_api/api_client.py,sha256=gPjJ-qlkvZutIh0aCFMRDpOZUImb89mdjPi_m25LAJA,30368
61
+ thestage/services/clients/thestage_api/core/api_client_core.py,sha256=lEffuh30f6oV2lp90UuET90OUxnrMh2PHjquF6_sT6E,3453
58
62
  thestage/services/clients/thestage_api/core/http_client_exception.py,sha256=JH-874Gu9T1b1_FpPBLqdyt9U0PyhpwRCe_oDc6c_jI,385
59
63
  thestage/services/clients/thestage_api/dtos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
64
  thestage/services/clients/thestage_api/dtos/base_response.py,sha256=R6jjhvv0U0XD8j5N5T36q-6liiEAUy7xINFA1H7CMB8,410
61
65
  thestage/services/clients/thestage_api/dtos/cloud_provider_region.py,sha256=EJNhQywINW0dtjXKHEDb-etkWQ7keXNUSDhH-h9cabs,1011
62
66
  thestage/services/clients/thestage_api/dtos/container_param_request.py,sha256=8Mp9-ZqkvoVw_lyCjo-7syMA4zCKXhs367PIl5DhWN8,436
63
- thestage/services/clients/thestage_api/dtos/container_response.py,sha256=Oy0lpBTpUFaJU5TGVm1a7h0SZLdpStS0ewb9UG0SXns,3765
67
+ thestage/services/clients/thestage_api/dtos/container_response.py,sha256=15WqoxXw6VkombfRbWvR_gLTPyOfE2qidaDBj1oy--w,3763
64
68
  thestage/services/clients/thestage_api/dtos/docker_container_assigned_device.py,sha256=u_OE30OpGIeqF4Wnil44JCLIN5rQfpLReTIXfJEbtyk,361
65
69
  thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_request.py,sha256=AMNmxoWGt4yAS7juirOCurhlNqEkKAV2C974tLZ212A,500
66
70
  thestage/services/clients/thestage_api/dtos/docker_container_controller/docker_container_list_response.py,sha256=DfbXk6ikZK78NxlaC5nGujVeSrafTRu7H8QslarmfqE,663
@@ -77,12 +81,12 @@ thestage/services/clients/thestage_api/dtos/enums/drive_type.py,sha256=xqs2I9w2c
77
81
  thestage/services/clients/thestage_api/dtos/enums/gpu_name.py,sha256=YO3iYlo7wTT6wEpkJDRcOO8NAc3WMxEQXMQ8jTFKH6k,162
78
82
  thestage/services/clients/thestage_api/dtos/enums/inference_model_status.py,sha256=OgoJBh8u5kveForMoxKCCXesE23C8MTGWiMKTUmmKls,256
79
83
  thestage/services/clients/thestage_api/dtos/enums/inference_simulator_status.py,sha256=mC8_xCjP0p_tmzx41rgLRwYgbijWcR9xs4m9goZY1Ck,436
80
- thestage/services/clients/thestage_api/dtos/enums/instance_rented_status.py,sha256=688DYG1gxPL_ZRt1uwzwl2RZeMBtpxkigu9oSdVEweQ,439
84
+ thestage/services/clients/thestage_api/dtos/enums/instance_rented_status.py,sha256=_uk5memh9fOPybFugvNANdhnj2-1Gpx1SE9ZpG6d88k,490
81
85
  thestage/services/clients/thestage_api/dtos/enums/instance_type.py,sha256=bdyRr3Up7LpdHZjVsVjg_4lmxME5CQZ6DJ0__tgmpMk,159
82
86
  thestage/services/clients/thestage_api/dtos/enums/location_region.py,sha256=t0TLDgFhZTe6eOZxhp1a52bB-ZPERwxoHv0c928Vxvk,281
83
87
  thestage/services/clients/thestage_api/dtos/enums/power_status.py,sha256=jNmebTN4qcQs8pwlG2QSy0kTwOyBEkfCl84Gl1npK4g,239
84
88
  thestage/services/clients/thestage_api/dtos/enums/provider_name.py,sha256=StLglFLewOa7pQYOb3aGzIPuhc937Qr2c4UlQFJXUto,287
85
- thestage/services/clients/thestage_api/dtos/enums/selfhosted_status.py,sha256=EAtj7e565Dxq8RE8avABJTuPepykHfxOFDshxzi72eQ,269
89
+ thestage/services/clients/thestage_api/dtos/enums/selfhosted_status.py,sha256=_OsxObVpczLJ9CJKh4nRh0X6lXw9PfQMTYOGEvze9R8,285
86
90
  thestage/services/clients/thestage_api/dtos/enums/task_execution_status.py,sha256=MU14K1PvkLEFnUizeVt8x_u1IP2OVkyf5pLFdrUUtYg,303
87
91
  thestage/services/clients/thestage_api/dtos/enums/task_status.py,sha256=Zg4QkuHilWTC6D_lKsby7u4y1rSRs69_kzfeFWCWoFg,282
88
92
  thestage/services/clients/thestage_api/dtos/frontend_status.py,sha256=MKrqCmFWVe-8InJqavkqz1w1N35OcT3ndBrXOu7mKdA,312
@@ -96,11 +100,11 @@ thestage/services/clients/thestage_api/dtos/inference_controller/inference_simul
96
100
  thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_list_for_project_response.py,sha256=YVMbjwz18wWdn9OIzQcc50Vc8e9r2zQc4csIUDDGPyQ,554
97
101
  thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_request.py,sha256=ljK-NhYCGojuHHJjOW3WcT6hSSf1lsBHEUyZe3UT-lE,486
98
102
  thestage/services/clients/thestage_api/dtos/inference_controller/inference_simulator_model_list_for_project_response.py,sha256=d6Aikhrbu0CDrtqUi5XWhYzFK4PrcD3YdJpt9wOUuMI,673
99
- thestage/services/clients/thestage_api/dtos/inference_simulator_model_response.py,sha256=YG-FNg1S8BSIsVqwHBnzOzCKRwztalTMsbRmI1kyOr0,423
100
- thestage/services/clients/thestage_api/dtos/inference_simulator_response.py,sha256=yJ-ccZlAkUB1ZaZruM1cw2maRVH7RtKzyaxJyhdxDSU,407
103
+ thestage/services/clients/thestage_api/dtos/inference_simulator_model_response.py,sha256=zC0wMnp_73oNse-ZMF5dICrqwXtJ5KdpKVkb7ejx61s,421
104
+ thestage/services/clients/thestage_api/dtos/inference_simulator_response.py,sha256=KUs4cZF7I7rC_UceCG4MfBaNffxkf-_HNDuKfvHyKQI,405
101
105
  thestage/services/clients/thestage_api/dtos/installed_service.py,sha256=YHpFFozYe_fz_MP9Tdr-Nn6oR9FWfnXA9NTaxeGlyPI,662
102
106
  thestage/services/clients/thestage_api/dtos/instance_detected_gpus.py,sha256=G32A2kz78sJeLcWkIHcbkC75YxUezXjhp98_2RLCo1g,636
103
- thestage/services/clients/thestage_api/dtos/instance_rented_response.py,sha256=9mhB8pEPR4KqPG7esfgXJGW_UUed-PykGs2kz0cAbS8,4480
107
+ thestage/services/clients/thestage_api/dtos/instance_rented_response.py,sha256=ZRmSupfT9fckcWlSRKoa0B9Xwq72X7IY_1vUc1yTXM0,4478
104
108
  thestage/services/clients/thestage_api/dtos/logging_controller/docker_container_log_stream_request.py,sha256=1roOpNE6BX8E9zyPdoMBp0bpL70xRQJepH9Q0EZ8H7c,223
105
109
  thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_request.py,sha256=mu3j0DH3qLrySf43EIET8vDn-miiEdYvFR8wX7mwh-4,526
106
110
  thestage/services/clients/thestage_api/dtos/logging_controller/log_polling_response.py,sha256=To3AbryCZ4ihOlukrwucQQNUaRnNIvvH5VZw38AcjrA,548
@@ -119,7 +123,7 @@ thestage/services/clients/thestage_api/dtos/project_controller/project_run_task_
119
123
  thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_request.py,sha256=TMLXtRAy1Z66xt-XmLS-88tDwuWBA3srz6w-uAlM71U,675
120
124
  thestage/services/clients/thestage_api/dtos/project_controller/project_start_inference_simulator_response.py,sha256=Q7XlbZ4vgk9QQL2z11BeUkKDn-5p8j06eNI0GmpZNjk,430
121
125
  thestage/services/clients/thestage_api/dtos/project_response.py,sha256=PQ0L14_8akc5ADZeL_Y15Z2Hlvkt54d0YKfPROJZQHk,1691
122
- thestage/services/clients/thestage_api/dtos/selfhosted_instance_response.py,sha256=iDo2AFlUr2WV7vhBU40Abyp1AFoEk986UQRb5O0as4U,3049
126
+ thestage/services/clients/thestage_api/dtos/selfhosted_instance_response.py,sha256=_zjZAmJ5XI5Jf3Hpys9SBuM_wSsBaUm9KIyFUxECPJ0,3047
123
127
  thestage/services/clients/thestage_api/dtos/sftp_path_helper.py,sha256=UeCEcE_qR_TcOGFyOLef7cz3veh1_o6MnLbAJyZk2yc,362
124
128
  thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_request.py,sha256=BmO99BXrbUCb2ZIYS2oc7xkwWb5CV5WCaqt1xO4yIro,234
125
129
  thestage/services/clients/thestage_api/dtos/ssh_key_controller/add_ssh_key_to_user_response.py,sha256=V8wH70noiX2wIFPr8MoBClVl3uUnKpJgaELp59dfK9E,391
@@ -129,21 +133,22 @@ thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_publi
129
133
  thestage/services/clients/thestage_api/dtos/ssh_key_controller/is_user_has_public_ssh_key_response.py,sha256=wwZ-W-LUibTVNXkERQjn6da_02jOJMGHYburaWkpXVw,424
130
134
  thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_request.py,sha256=hJt5T2mHPaS9U793NlvgY6kv_GFUxk34QGeRymvQN7Q,392
131
135
  thestage/services/clients/thestage_api/dtos/task_controller/task_list_for_project_response.py,sha256=r2R2efDZmaAyfiNs_kuftpgaP-j6VWpKnA1qkHDQfII,466
132
- thestage/services/clients/thestage_api/dtos/task_controller/task_status_localized_map_response.py,sha256=Q0YahAKtlWIV0l2XXEwzjjyORchPlBolA2xXZ8c3zpw,285
136
+ thestage/services/clients/thestage_api/dtos/task_controller/task_status_localized_map_response.py,sha256=yop410FwNvQFXYHKh60ne4DSO3m19zF1nCEuUVSaZ8w,283
133
137
  thestage/services/clients/thestage_api/dtos/task_controller/task_view_response.py,sha256=30P19Fipas4wzHguvzmxsAoDkKcGNbcKQ_SjJOQVsq8,462
134
138
  thestage/services/clients/thestage_api/dtos/user_controller/user_profile.py,sha256=cDH5azyVBXi3V7kIOEuzsF1aKONQnxcI7YsDwXjRmuE,268
139
+ thestage/services/clients/thestage_api/dtos/validate_token_response.py,sha256=nmKbqRPkwtzhv37QheA_MO4CpEPmGM0VUC2gYckcrl8,418
135
140
  thestage/services/config_provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
- thestage/services/config_provider/config_provider.py,sha256=_BNP_pAw40deKyMzDuTR6ze3on-NCxR_yKwl8ZcoUEU,9115
137
- thestage/services/connect/connect_service.py,sha256=bVUqHh3-AdEhNmh0iRmgBIuR3z7k7rAkE5ldH9dHA5U,9916
141
+ thestage/services/config_provider/config_provider.py,sha256=rxMydXyAdR45ARwEK4020LmunexucPp4HszCTeKe9v8,10257
142
+ thestage/services/connect/connect_service.py,sha256=D7c6ypCFQfgkEa9sITbZhnOGXQtGQFLgi-fZYdbRYqY,9448
138
143
  thestage/services/connect/dto/remote_server_config.py,sha256=yuO0tTAgUxCiQ-h1nVvWUMlCUtR-WB_eOH6KYspV7zQ,272
139
144
  thestage/services/container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
- thestage/services/container/container_service.py,sha256=wqgteC2fVue0rCKnZIRPyhGH3Is1L2E2nMt8i0wYlyA,14759
145
+ thestage/services/container/container_service.py,sha256=ndsjWGupoXlCLAheFij6IcqLtaMickgS5rBMqM7qYkc,14148
141
146
  thestage/services/container/mapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
147
  thestage/services/container/mapper/container_mapper.py,sha256=ymIjBLGZnpodh0W2KwNUqRxT0VgM1hsCViNza1nhWHk,1088
143
- thestage/services/core_files/config_entity.py,sha256=qMMjqQrTQmlts93r_NunR5na5uScc526NV9_a3SgPVQ,867
144
- thestage/services/filesystem_service.py,sha256=U_-U7UcTMFwJeYu-iD8OVYQgcKjTnnrENKVqfDqQwY4,4832
148
+ thestage/services/core_files/config_entity.py,sha256=_55m8h2_KXIxl8Y71Yyk3wTj-q1mo918YU1yltzVqgQ,1075
149
+ thestage/services/filesystem_service.py,sha256=Ee62DJ7rlkpBkyz40so7Fwd-39vN03uL6uYapcsiq58,4892
145
150
  thestage/services/instance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
- thestage/services/instance/instance_service.py,sha256=cAuyDozqVNy9FkyQqMu037LghqaUeFfmR9kGbUxLhY4,13371
151
+ thestage/services/instance/instance_service.py,sha256=NqMT9lKXJlcvflJr7GBLD78zehvfHRYCI9onzAO5gVM,12718
147
152
  thestage/services/instance/mapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
153
  thestage/services/instance/mapper/instance_mapper.py,sha256=OA0-Z6ODfAK1yBjf7nF-JDKERr8lZUm5vYKk_TFw-v8,1132
149
154
  thestage/services/instance/mapper/selfhosted_mapper.py,sha256=KpkvsDV0OWzHhN53md4mgo3xc8siM5idDwL_pSRTouE,1286
@@ -152,7 +157,7 @@ thestage/services/logging/dto/log_message.py,sha256=k2clfz2fQnQ-ycFI8g8WYJ_XOjK0
152
157
  thestage/services/logging/dto/log_type.py,sha256=a6JWnq0ZjJ-2BQrG-fKYYy3UeJS2U2ZzE5P_EXglBfE,95
153
158
  thestage/services/logging/exception/log_polling_exception.py,sha256=rKQ7AtNCGKkk5OINIyyjvLT92PU5i_yJUH-Msr9hXQw,226
154
159
  thestage/services/logging/logging_constants.py,sha256=4Gk2tglHW_-jnjB8uVIh-ds4fAVBqNW8igfQt8k7Quc,137
155
- thestage/services/logging/logging_service.py,sha256=V790CqOSgSMKTwMMkLzAViprtQ4e5jM1jw4Xd8v3zAU,18566
160
+ thestage/services/logging/logging_service.py,sha256=7xhzxlSHwaepJtBsPN63-oMF1Ii335REHnMd4J_UFQw,17153
156
161
  thestage/services/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
162
  thestage/services/project/dto/inference_simulator_dto.py,sha256=5U4uGp7VC1Yr-T0fqZiSNqZUIybs4J9sV25vjBbAUxI,1312
158
163
  thestage/services/project/dto/inference_simulator_model_dto.py,sha256=j4dT-7cduzLd59QnmnfQt_aFsiUucpyJFGb-9rNx5K8,1172
@@ -161,13 +166,13 @@ thestage/services/project/mapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
161
166
  thestage/services/project/mapper/project_inference_simulator_mapper.py,sha256=UdOu9IIF5rlNPoWSaaeSKU3ODe8E5uSMgm2V5ywMWKE,812
162
167
  thestage/services/project/mapper/project_inference_simulator_model_mapper.py,sha256=PWY0iWbXhvD-G0X0_aQZAFY2bqc0lvRJcQAyC8Y-88Q,869
163
168
  thestage/services/project/mapper/project_task_mapper.py,sha256=SHIEXjYwt4vm2B1X2QiI4sCPbBarum0bTOnmTWPOlto,813
164
- thestage/services/project/project_service.py,sha256=dvWKLV0M5LieO4v0Kye4wQbs-kQmGhifomCsmpxhEBM,59743
165
- thestage/services/remote_server_service.py,sha256=AsTzlI7mvlJpqFqrhn4o9l3CYliLgeq3GQdyaZ17m9c,23256
166
- thestage/services/service_factory.py,sha256=Hx9DeFP3x3FDj2g9FCuUnAQSUEfZbJGli_WD805wg40,5082
169
+ thestage/services/project/project_service.py,sha256=AskyiT3_yFnOWW5tXm3_wGM5zcamKWswGu1JIVTqasw,57875
170
+ thestage/services/remote_server_service.py,sha256=dYLuwQQeuFC8Z9ozmZgapPZ0xChjBrTYS5frCAJmG3w,23264
171
+ thestage/services/service_factory.py,sha256=WosSbicSvY9dHOkS2OqGCtHkmKdJE1f_K7uEnB3Auaw,4291
167
172
  thestage/services/task/dto/task_dto.py,sha256=PJwrUsLLAoO2uA9xvzb27b9iYAoNiBcsHSxKERh2VFo,2335
168
- thestage/services/validation_service.py,sha256=RFVZA_Ri2bzOBKGz6qs5WHK8Z7wVNUMjuj8uRz38YbU,1798
169
- thestage-0.5.45.dist-info/LICENSE.txt,sha256=U9QrxfdD7Ie7r8z1FleuvOGQvgCF1m0Mjd78cFvWaHE,572
170
- thestage-0.5.45.dist-info/METADATA,sha256=nrVxlmjYX1TjrTIIAjbQFWLwLvoH4XaJuUSptgY6yFk,5558
171
- thestage-0.5.45.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
172
- thestage-0.5.45.dist-info/entry_points.txt,sha256=57pMhs8zaCM-jgeTffC0WVqCsh35Uq_dUDmzXR80CI4,47
173
- thestage-0.5.45.dist-info/RECORD,,
173
+ thestage/services/validation_service.py,sha256=iopaDKuC_V_4Z_Zly5BFaLL74wG66z9URE86_I-9Hi4,2243
174
+ thestage-0.5.47.dist-info/LICENSE.txt,sha256=U9QrxfdD7Ie7r8z1FleuvOGQvgCF1m0Mjd78cFvWaHE,572
175
+ thestage-0.5.47.dist-info/METADATA,sha256=STjdz-e1fxmTuMKQ8n__Gj7KfqiCaqE1KemyLisaf5U,5507
176
+ thestage-0.5.47.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
177
+ thestage-0.5.47.dist-info/entry_points.txt,sha256=57pMhs8zaCM-jgeTffC0WVqCsh35Uq_dUDmzXR80CI4,47
178
+ thestage-0.5.47.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,12 +0,0 @@
1
- # from thestage.exceptions.base_exception import BaseAbstractException
2
- #
3
- #
4
- # class HttpClientException(BaseAbstractException):
5
- # _status_code: int = 0
6
- #
7
- # def __init__(self, message: str, status_code: int, ):
8
- # super(HttpClientException, self).__init__(message=message)
9
- # self._status_code = status_code
10
- #
11
- # def get_status_code(self) -> int:
12
- # return self._status_code
@@ -1,91 +0,0 @@
1
- import json
2
- from abc import ABC
3
- from typing import Optional
4
-
5
- import requests
6
-
7
- from thestage.config import THESTAGE_API_URL
8
- from thestage.exceptions.auth_exception import AuthException
9
- from thestage.services.clients.thestage_api.core.http_client_exception import HttpClientException
10
-
11
-
12
- class TheStageApiClientAbstract(ABC):
13
- def __init__(self, timeout: int, url: Optional[str] = None):
14
- self.__timeout = timeout
15
- self.__api_url = url
16
-
17
- def _get_host(self, ) -> str:
18
- return self.__api_url or THESTAGE_API_URL
19
-
20
- def _request(
21
- self,
22
- method: str,
23
- url: str,
24
- data: dict = None,
25
- query_params: dict = None,
26
- headers: Optional[dict] = None,
27
- token: Optional[str] = None,
28
- ):
29
- if not data:
30
- data = {}
31
-
32
- host = self._get_host()
33
- url = f'{host}{url}'
34
-
35
- request_headers = {
36
- 'Content-Type': 'application/json',
37
- }
38
-
39
- if token:
40
- request_headers['Authorization'] = f"Bearer {token}"
41
-
42
- if headers:
43
- request_headers.update(headers)
44
- response = requests.request(
45
- method=method,
46
- url=url,
47
- json=data,
48
- params=query_params,
49
- headers=request_headers,
50
- timeout=self.__timeout,
51
-
52
- )
53
- return self._parse_api_response(response)
54
-
55
- @staticmethod
56
- def _parse_api_response(raw_response):
57
- content_type = raw_response.headers.get('content-type')
58
- message_error = None
59
- if content_type == 'application/json':
60
- try:
61
- result = raw_response.json()
62
- message_error = result.get('message', None)
63
- except json.JSONDecodeError:
64
- raise HttpClientException(
65
- message=f"Failed to parse server response",
66
- status_code=raw_response.status_code,
67
- )
68
- else:
69
- result = raw_response.content.text()
70
-
71
- if raw_response.status_code == 401:
72
- raise AuthException(
73
- message=f"Unauthorized",
74
- )
75
- elif raw_response.status_code == 403:
76
- raise HttpClientException(
77
- message=f"{message_error if message_error else 'Forbidden'} ({raw_response.status_code})",
78
- status_code=raw_response.status_code,
79
- )
80
- elif raw_response.status_code >= 400:
81
- raise HttpClientException(
82
- message=f"{message_error if message_error else 'Request error'} ({raw_response.status_code})",
83
- status_code=raw_response.status_code,
84
- )
85
- elif raw_response.status_code < 200 or raw_response.status_code > 300:
86
- raise HttpClientException(
87
- message=f"{message_error if message_error else 'Request error'} ({raw_response.status_code})",
88
- status_code=raw_response.status_code,
89
- )
90
-
91
- return result