sagemaker-core 1.0.62__py3-none-any.whl → 2.1.1__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 (362) hide show
  1. sagemaker/core/__init__.py +16 -0
  2. sagemaker/core/_studio.py +116 -0
  3. sagemaker/core/_version.py +11 -0
  4. sagemaker/core/accept_types.py +131 -0
  5. sagemaker/core/analytics.py +744 -0
  6. sagemaker/core/apiutils/__init__.py +13 -0
  7. sagemaker/core/apiutils/_base_types.py +228 -0
  8. sagemaker/core/apiutils/_boto_functions.py +130 -0
  9. sagemaker/core/apiutils/_utils.py +34 -0
  10. sagemaker/core/base_deserializers.py +35 -0
  11. sagemaker/core/base_serializers.py +35 -0
  12. sagemaker/core/clarify/__init__.py +2898 -0
  13. sagemaker/core/collection.py +467 -0
  14. sagemaker/core/common_utils.py +2281 -0
  15. sagemaker/core/compute_resource_requirements/__init__.py +18 -0
  16. sagemaker/core/compute_resource_requirements/resource_requirements.py +94 -0
  17. sagemaker/core/config/__init__.py +181 -0
  18. sagemaker/core/config/config.py +238 -0
  19. sagemaker/core/config/config_manager.py +595 -0
  20. sagemaker/core/config/config_schema.py +1220 -0
  21. sagemaker/core/config/config_utils.py +297 -0
  22. {sagemaker_core/main → sagemaker/core}/config_schema.py +408 -3
  23. sagemaker/core/constants.py +73 -0
  24. sagemaker/core/content_types.py +137 -0
  25. sagemaker/core/debugger/__init__.py +39 -0
  26. sagemaker/core/debugger/debugger.py +945 -0
  27. sagemaker/core/debugger/framework_profile.py +292 -0
  28. sagemaker/core/debugger/metrics_config.py +468 -0
  29. sagemaker/core/debugger/profiler.py +42 -0
  30. sagemaker/core/debugger/profiler_config.py +190 -0
  31. sagemaker/core/debugger/profiler_constants.py +40 -0
  32. sagemaker/core/debugger/utils.py +148 -0
  33. sagemaker/core/deprecations.py +254 -0
  34. sagemaker/core/deserializers/__init__.py +10 -0
  35. sagemaker/core/deserializers/base.py +424 -0
  36. sagemaker/core/deserializers/implementations.py +157 -0
  37. sagemaker/core/drift_check_baselines.py +106 -0
  38. sagemaker/core/enums.py +51 -0
  39. sagemaker/core/environment_variables.py +101 -0
  40. sagemaker/core/exceptions.py +108 -0
  41. sagemaker/core/experiments/__init__.py +53 -0
  42. sagemaker/core/experiments/_api_types.py +251 -0
  43. sagemaker/core/experiments/_environment.py +124 -0
  44. sagemaker/core/experiments/_helper.py +294 -0
  45. sagemaker/core/experiments/_metrics.py +333 -0
  46. sagemaker/core/experiments/_run_context.py +58 -0
  47. sagemaker/core/experiments/_utils.py +216 -0
  48. sagemaker/core/experiments/experiment.py +244 -0
  49. sagemaker/core/experiments/run.py +970 -0
  50. sagemaker/core/experiments/trial.py +296 -0
  51. sagemaker/core/experiments/trial_component.py +387 -0
  52. sagemaker/core/explainer/__init__.py +24 -0
  53. sagemaker/core/explainer/clarify_explainer_config.py +298 -0
  54. sagemaker/core/explainer/explainer_config.py +44 -0
  55. sagemaker/core/fw_utils.py +1176 -0
  56. sagemaker/core/git_utils.py +349 -0
  57. sagemaker/core/helper/pipeline_variable.py +82 -0
  58. sagemaker/core/helper/session_helper.py +2965 -0
  59. sagemaker/core/huggingface/__init__.py +29 -0
  60. sagemaker/core/huggingface/llm_utils.py +150 -0
  61. sagemaker/core/huggingface/processing.py +139 -0
  62. sagemaker/core/huggingface/training_compiler/config.py +167 -0
  63. sagemaker/core/hyperparameters.py +172 -0
  64. sagemaker/core/image_retriever/__init__.py +3 -0
  65. sagemaker/core/image_retriever/image_retriever.py +640 -0
  66. sagemaker/core/image_retriever/image_retriever_utils.py +511 -0
  67. sagemaker/core/image_retriever/test.py +7 -0
  68. sagemaker/core/image_uri_config/__init__.py +13 -0
  69. sagemaker/core/image_uri_config/autogluon.json +1335 -0
  70. sagemaker/core/image_uri_config/blazingtext.json +50 -0
  71. sagemaker/core/image_uri_config/chainer.json +104 -0
  72. sagemaker/core/image_uri_config/clarify.json +39 -0
  73. sagemaker/core/image_uri_config/coach-mxnet.json +70 -0
  74. sagemaker/core/image_uri_config/coach-tensorflow.json +186 -0
  75. sagemaker/core/image_uri_config/data-wrangler.json +91 -0
  76. sagemaker/core/image_uri_config/debugger.json +34 -0
  77. sagemaker/core/image_uri_config/detailed-profiler.json +18 -0
  78. sagemaker/core/image_uri_config/djl-deepspeed.json +385 -0
  79. sagemaker/core/image_uri_config/djl-fastertransformer.json +167 -0
  80. sagemaker/core/image_uri_config/djl-lmi.json +136 -0
  81. sagemaker/core/image_uri_config/djl-neuronx.json +258 -0
  82. sagemaker/core/image_uri_config/djl-tensorrtllm.json +262 -0
  83. sagemaker/core/image_uri_config/factorization-machines.json +50 -0
  84. sagemaker/core/image_uri_config/forecasting-deepar.json +50 -0
  85. sagemaker/core/image_uri_config/huggingface-llm-neuronx.json +660 -0
  86. sagemaker/core/image_uri_config/huggingface-llm.json +1158 -0
  87. sagemaker/core/image_uri_config/huggingface-neuron.json +52 -0
  88. sagemaker/core/image_uri_config/huggingface-neuronx.json +510 -0
  89. sagemaker/core/image_uri_config/huggingface-tei-cpu.json +298 -0
  90. sagemaker/core/image_uri_config/huggingface-tei.json +298 -0
  91. sagemaker/core/image_uri_config/huggingface-training-compiler.json +195 -0
  92. sagemaker/core/image_uri_config/huggingface.json +2138 -0
  93. sagemaker/core/image_uri_config/hyperpod-recipes-neuron.json +52 -0
  94. sagemaker/core/image_uri_config/image-classification-neo.json +43 -0
  95. sagemaker/core/image_uri_config/image-classification.json +50 -0
  96. sagemaker/core/image_uri_config/inferentia-mxnet.json +88 -0
  97. sagemaker/core/image_uri_config/inferentia-pytorch.json +127 -0
  98. sagemaker/core/image_uri_config/inferentia-tensorflow.json +88 -0
  99. sagemaker/core/image_uri_config/instance_gpu_info.json +782 -0
  100. sagemaker/core/image_uri_config/ipinsights.json +50 -0
  101. sagemaker/core/image_uri_config/kmeans.json +50 -0
  102. sagemaker/core/image_uri_config/knn.json +50 -0
  103. sagemaker/core/image_uri_config/lda.json +26 -0
  104. sagemaker/core/image_uri_config/linear-learner.json +50 -0
  105. sagemaker/core/image_uri_config/model-monitor.json +42 -0
  106. sagemaker/core/image_uri_config/mxnet.json +1154 -0
  107. sagemaker/core/image_uri_config/neo-mxnet.json +64 -0
  108. sagemaker/core/image_uri_config/neo-pytorch.json +341 -0
  109. sagemaker/core/image_uri_config/neo-tensorflow.json +109 -0
  110. sagemaker/core/image_uri_config/ntm.json +50 -0
  111. sagemaker/core/image_uri_config/object-detection.json +50 -0
  112. sagemaker/core/image_uri_config/object2vec.json +50 -0
  113. sagemaker/core/image_uri_config/pca.json +50 -0
  114. sagemaker/core/image_uri_config/pytorch-neuron.json +43 -0
  115. sagemaker/core/image_uri_config/pytorch-smp.json +218 -0
  116. sagemaker/core/image_uri_config/pytorch-training-compiler.json +80 -0
  117. sagemaker/core/image_uri_config/pytorch.json +3101 -0
  118. sagemaker/core/image_uri_config/randomcutforest.json +50 -0
  119. sagemaker/core/image_uri_config/ray-pytorch.json +46 -0
  120. sagemaker/core/image_uri_config/ray-tensorflow.json +194 -0
  121. sagemaker/core/image_uri_config/sagemaker-base-python.json +46 -0
  122. sagemaker/core/image_uri_config/sagemaker-distribution.json +37 -0
  123. sagemaker/core/image_uri_config/sagemaker-geospatial.json +13 -0
  124. sagemaker/core/image_uri_config/sagemaker-tritonserver.json +212 -0
  125. sagemaker/core/image_uri_config/semantic-segmentation.json +50 -0
  126. sagemaker/core/image_uri_config/seq2seq.json +50 -0
  127. sagemaker/core/image_uri_config/sklearn.json +446 -0
  128. sagemaker/core/image_uri_config/spark.json +280 -0
  129. sagemaker/core/image_uri_config/sparkml-serving.json +97 -0
  130. sagemaker/core/image_uri_config/stabilityai.json +53 -0
  131. sagemaker/core/image_uri_config/tensorflow.json +5086 -0
  132. sagemaker/core/image_uri_config/vw.json +25 -0
  133. sagemaker/core/image_uri_config/xgboost-neo.json +43 -0
  134. sagemaker/core/image_uri_config/xgboost.json +888 -0
  135. sagemaker/core/image_uris.py +810 -0
  136. sagemaker/core/inference_config.py +144 -0
  137. sagemaker/core/inference_recommender/__init__.py +18 -0
  138. sagemaker/core/inference_recommender/inference_recommender_mixin.py +622 -0
  139. sagemaker/core/inputs.py +366 -0
  140. sagemaker/core/instance_group.py +61 -0
  141. sagemaker/core/instance_types.py +164 -0
  142. sagemaker/core/instance_types_gpu_info.py +43 -0
  143. sagemaker/core/interactive_apps/__init__.py +41 -0
  144. sagemaker/core/interactive_apps/base_interactive_app.py +204 -0
  145. sagemaker/core/interactive_apps/detail_profiler_app.py +139 -0
  146. sagemaker/core/interactive_apps/tensorboard.py +149 -0
  147. sagemaker/core/iterators.py +186 -0
  148. sagemaker/core/job.py +380 -0
  149. sagemaker/core/jumpstart/__init__.py +156 -0
  150. sagemaker/core/jumpstart/accessors.py +390 -0
  151. sagemaker/core/jumpstart/artifacts/__init__.py +69 -0
  152. sagemaker/core/jumpstart/artifacts/environment_variables.py +252 -0
  153. sagemaker/core/jumpstart/artifacts/hyperparameters.py +120 -0
  154. sagemaker/core/jumpstart/artifacts/image_uris.py +139 -0
  155. sagemaker/core/jumpstart/artifacts/incremental_training.py +87 -0
  156. sagemaker/core/jumpstart/artifacts/instance_types.py +223 -0
  157. sagemaker/core/jumpstart/artifacts/kwargs.py +289 -0
  158. sagemaker/core/jumpstart/artifacts/metric_definitions.py +117 -0
  159. sagemaker/core/jumpstart/artifacts/model_packages.py +202 -0
  160. sagemaker/core/jumpstart/artifacts/model_uris.py +252 -0
  161. sagemaker/core/jumpstart/artifacts/payloads.py +96 -0
  162. sagemaker/core/jumpstart/artifacts/predictors.py +540 -0
  163. sagemaker/core/jumpstart/artifacts/resource_names.py +86 -0
  164. sagemaker/core/jumpstart/artifacts/resource_requirements.py +162 -0
  165. sagemaker/core/jumpstart/artifacts/script_uris.py +172 -0
  166. sagemaker/core/jumpstart/cache.py +663 -0
  167. sagemaker/core/jumpstart/configs.py +50 -0
  168. sagemaker/core/jumpstart/constants.py +198 -0
  169. sagemaker/core/jumpstart/deserializers.py +81 -0
  170. sagemaker/core/jumpstart/document.py +76 -0
  171. sagemaker/core/jumpstart/enums.py +168 -0
  172. sagemaker/core/jumpstart/exceptions.py +236 -0
  173. sagemaker/core/jumpstart/factory/utils.py +833 -0
  174. sagemaker/core/jumpstart/filters.py +597 -0
  175. sagemaker/core/jumpstart/hub/constants.py +16 -0
  176. sagemaker/core/jumpstart/hub/hub.py +291 -0
  177. sagemaker/core/jumpstart/hub/interfaces.py +936 -0
  178. sagemaker/core/jumpstart/hub/parser_utils.py +70 -0
  179. sagemaker/core/jumpstart/hub/parsers.py +288 -0
  180. sagemaker/core/jumpstart/hub/types.py +35 -0
  181. sagemaker/core/jumpstart/hub/utils.py +260 -0
  182. sagemaker/core/jumpstart/models.py +499 -0
  183. sagemaker/core/jumpstart/notebook_utils.py +575 -0
  184. sagemaker/core/jumpstart/parameters.py +20 -0
  185. sagemaker/core/jumpstart/payload_utils.py +239 -0
  186. sagemaker/core/jumpstart/region_config.json +163 -0
  187. sagemaker/core/jumpstart/search.py +171 -0
  188. sagemaker/core/jumpstart/serializers.py +81 -0
  189. sagemaker/core/jumpstart/session_utils.py +234 -0
  190. sagemaker/core/jumpstart/types.py +3044 -0
  191. sagemaker/core/jumpstart/utils.py +1731 -0
  192. sagemaker/core/jumpstart/validators.py +257 -0
  193. sagemaker/core/lambda_helper.py +312 -0
  194. sagemaker/core/lineage/__init__.py +42 -0
  195. sagemaker/core/lineage/_api_types.py +239 -0
  196. sagemaker/core/lineage/_utils.py +49 -0
  197. sagemaker/core/lineage/action.py +345 -0
  198. sagemaker/core/lineage/artifact.py +646 -0
  199. sagemaker/core/lineage/association.py +190 -0
  200. sagemaker/core/lineage/context.py +505 -0
  201. sagemaker/core/lineage/lineage_trial_component.py +191 -0
  202. sagemaker/core/lineage/query.py +732 -0
  203. sagemaker/core/lineage/visualizer.py +346 -0
  204. sagemaker/core/local/__init__.py +18 -0
  205. sagemaker/core/local/data.py +413 -0
  206. sagemaker/core/local/entities.py +678 -0
  207. sagemaker/core/local/exceptions.py +17 -0
  208. sagemaker/core/local/image.py +1243 -0
  209. sagemaker/core/local/local_session.py +739 -0
  210. sagemaker/core/local/utils.py +245 -0
  211. sagemaker/core/logs.py +181 -0
  212. sagemaker/core/metadata_properties.py +56 -0
  213. sagemaker/core/metric_definitions.py +91 -0
  214. sagemaker/core/mlflow/__init__.py +38 -0
  215. sagemaker/core/mlflow/forward_sagemaker_metrics.py +44 -0
  216. sagemaker/core/model_card/__init__.py +26 -0
  217. sagemaker/core/model_life_cycle.py +51 -0
  218. sagemaker/core/model_metrics.py +160 -0
  219. sagemaker/core/model_monitor/__init__.py +66 -0
  220. sagemaker/core/model_monitor/clarify_model_monitoring.py +1495 -0
  221. sagemaker/core/model_monitor/cron_expression_generator.py +82 -0
  222. sagemaker/core/model_monitor/data_capture_config.py +115 -0
  223. sagemaker/core/model_monitor/data_quality_monitoring_config.py +66 -0
  224. sagemaker/core/model_monitor/dataset_format.py +102 -0
  225. sagemaker/core/model_monitor/model_monitoring.py +4266 -0
  226. sagemaker/core/model_monitor/monitoring_alert.py +76 -0
  227. sagemaker/core/model_monitor/monitoring_files.py +506 -0
  228. sagemaker/core/model_monitor/utils.py +793 -0
  229. sagemaker/core/model_registry.py +480 -0
  230. sagemaker/core/model_uris.py +97 -0
  231. sagemaker/core/modules/__init__.py +19 -0
  232. sagemaker/core/modules/configs.py +226 -0
  233. sagemaker/core/modules/constants.py +37 -0
  234. sagemaker/core/modules/distributed.py +182 -0
  235. sagemaker/core/modules/local_core/__init__.py +0 -0
  236. sagemaker/core/modules/local_core/local_container.py +605 -0
  237. sagemaker/core/modules/templates.py +83 -0
  238. sagemaker/core/modules/train/__init__.py +14 -0
  239. sagemaker/core/modules/train/container_drivers/__init__.py +14 -0
  240. sagemaker/core/modules/train/container_drivers/common/__init__.py +14 -0
  241. sagemaker/core/modules/train/container_drivers/common/utils.py +213 -0
  242. sagemaker/core/modules/train/container_drivers/distributed_drivers/__init__.py +14 -0
  243. sagemaker/core/modules/train/container_drivers/distributed_drivers/basic_script_driver.py +81 -0
  244. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_driver.py +123 -0
  245. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_utils.py +302 -0
  246. sagemaker/core/modules/train/container_drivers/distributed_drivers/torchrun_driver.py +129 -0
  247. sagemaker/core/modules/train/container_drivers/scripts/__init__.py +14 -0
  248. sagemaker/core/modules/train/container_drivers/scripts/environment.py +305 -0
  249. sagemaker/core/modules/train/sm_recipes/__init__.py +0 -0
  250. sagemaker/core/modules/train/sm_recipes/utils.py +330 -0
  251. sagemaker/core/modules/types.py +19 -0
  252. sagemaker/core/modules/utils.py +194 -0
  253. sagemaker/core/network.py +185 -0
  254. sagemaker/core/parameter.py +173 -0
  255. sagemaker/core/payloads.py +185 -0
  256. sagemaker/core/processing.py +1597 -0
  257. sagemaker/core/remote_function/__init__.py +19 -0
  258. sagemaker/core/remote_function/checkpoint_location.py +47 -0
  259. sagemaker/core/remote_function/client.py +1285 -0
  260. sagemaker/core/remote_function/core/__init__.py +0 -0
  261. sagemaker/core/remote_function/core/_custom_dispatch_table.py +72 -0
  262. sagemaker/core/remote_function/core/pipeline_variables.py +353 -0
  263. sagemaker/core/remote_function/core/serialization.py +422 -0
  264. sagemaker/core/remote_function/core/stored_function.py +226 -0
  265. sagemaker/core/remote_function/custom_file_filter.py +128 -0
  266. sagemaker/core/remote_function/errors.py +104 -0
  267. sagemaker/core/remote_function/invoke_function.py +172 -0
  268. sagemaker/core/remote_function/job.py +2140 -0
  269. sagemaker/core/remote_function/logging_config.py +38 -0
  270. sagemaker/core/remote_function/runtime_environment/__init__.py +14 -0
  271. sagemaker/core/remote_function/runtime_environment/bootstrap_runtime_environment.py +605 -0
  272. sagemaker/core/remote_function/runtime_environment/mpi_utils_remote.py +252 -0
  273. sagemaker/core/remote_function/runtime_environment/runtime_environment_manager.py +554 -0
  274. sagemaker/core/remote_function/runtime_environment/spark_app.py +18 -0
  275. sagemaker/core/remote_function/spark_config.py +149 -0
  276. sagemaker/core/resource_requirements.py +168 -0
  277. {sagemaker_core/main → sagemaker/core}/resources.py +19098 -10895
  278. sagemaker/core/s3/__init__.py +41 -0
  279. sagemaker/core/s3/client.py +367 -0
  280. sagemaker/core/s3/utils.py +175 -0
  281. sagemaker/core/script_uris.py +93 -0
  282. sagemaker/core/serializers/__init__.py +11 -0
  283. sagemaker/core/serializers/base.py +510 -0
  284. sagemaker/core/serializers/implementations.py +159 -0
  285. sagemaker/core/serializers/utils.py +223 -0
  286. sagemaker/core/serverless_inference_config.py +63 -0
  287. sagemaker/core/session_settings.py +55 -0
  288. sagemaker/core/shapes/__init__.py +3 -0
  289. sagemaker/core/shapes/model_card_shapes.py +159 -0
  290. {sagemaker_core/main → sagemaker/core/shapes}/shapes.py +5810 -1806
  291. sagemaker/core/spark/__init__.py +16 -0
  292. sagemaker/core/spark/defaults.py +16 -0
  293. sagemaker/core/spark/processing.py +1380 -0
  294. sagemaker/core/telemetry/__init__.py +23 -0
  295. sagemaker/core/telemetry/constants.py +84 -0
  296. sagemaker/core/telemetry/telemetry_logging.py +284 -0
  297. sagemaker/core/tools/__init__.py +1 -0
  298. {sagemaker_core → sagemaker/core}/tools/codegen.py +4 -4
  299. {sagemaker_core → sagemaker/core}/tools/constants.py +23 -15
  300. {sagemaker_core → sagemaker/core}/tools/data_extractor.py +1 -1
  301. {sagemaker_core → sagemaker/core}/tools/method.py +1 -1
  302. sagemaker/core/tools/model_card/generate_model_card_from_schema.py +562 -0
  303. {sagemaker_core → sagemaker/core}/tools/resources_codegen.py +165 -98
  304. {sagemaker_core → sagemaker/core}/tools/resources_extractor.py +5 -13
  305. {sagemaker_core → sagemaker/core}/tools/shapes_codegen.py +16 -17
  306. {sagemaker_core → sagemaker/core}/tools/shapes_extractor.py +29 -67
  307. {sagemaker_core → sagemaker/core}/tools/templates.py +39 -17
  308. sagemaker/core/training/__init__.py +14 -0
  309. sagemaker/core/training/configs.py +333 -0
  310. sagemaker/core/training/constants.py +37 -0
  311. sagemaker/core/training/utils.py +77 -0
  312. sagemaker/core/training_compiler/__init__.py +16 -0
  313. sagemaker/core/training_compiler/config.py +197 -0
  314. sagemaker/core/training_compiler_config.py +197 -0
  315. sagemaker/core/transformer.py +793 -0
  316. sagemaker/core/user_agent.py +76 -0
  317. sagemaker/core/utilities/__init__.py +24 -0
  318. sagemaker/core/utilities/cache.py +169 -0
  319. sagemaker/core/utilities/search_expression.py +133 -0
  320. sagemaker/core/utils/__init__.py +48 -0
  321. sagemaker/core/utils/code_injection/__init__.py +0 -0
  322. {sagemaker_core/main → sagemaker/core/utils}/code_injection/codec.py +2 -2
  323. {sagemaker_core/main → sagemaker/core/utils}/code_injection/shape_dag.py +5979 -176
  324. {sagemaker_core/main → sagemaker/core/utils}/exceptions.py +8 -8
  325. sagemaker_core/main/default_configs_helper.py → sagemaker/core/utils/intelligent_defaults_helper.py +5 -6
  326. {sagemaker_core/main → sagemaker/core/utils}/logs.py +1 -2
  327. {sagemaker_core/main → sagemaker/core/utils}/utils.py +27 -22
  328. sagemaker/core/workflow/__init__.py +152 -0
  329. sagemaker/core/workflow/conditions.py +313 -0
  330. sagemaker/core/workflow/entities.py +58 -0
  331. sagemaker/core/workflow/execution_variables.py +89 -0
  332. sagemaker/core/workflow/functions.py +193 -0
  333. sagemaker/core/workflow/parameters.py +222 -0
  334. sagemaker/core/workflow/pipeline_context.py +394 -0
  335. sagemaker/core/workflow/pipeline_definition_config.py +31 -0
  336. sagemaker/core/workflow/properties.py +285 -0
  337. sagemaker/core/workflow/step_outputs.py +65 -0
  338. sagemaker/core/workflow/utilities.py +507 -0
  339. sagemaker/lineage/__init__.py +33 -0
  340. sagemaker/lineage/action.py +28 -0
  341. sagemaker/lineage/artifact.py +28 -0
  342. sagemaker/lineage/context.py +28 -0
  343. sagemaker/lineage/lineage_trial_component.py +28 -0
  344. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/METADATA +28 -9
  345. sagemaker_core-2.1.1.dist-info/RECORD +355 -0
  346. sagemaker_core-2.1.1.dist-info/top_level.txt +1 -0
  347. sagemaker_core/_version.py +0 -3
  348. sagemaker_core/helper/session_helper.py +0 -769
  349. sagemaker_core/resources/__init__.py +0 -1
  350. sagemaker_core/shapes/__init__.py +0 -1
  351. sagemaker_core/tools/__init__.py +0 -1
  352. sagemaker_core-1.0.62.dist-info/RECORD +0 -35
  353. sagemaker_core-1.0.62.dist-info/top_level.txt +0 -1
  354. {sagemaker_core → sagemaker/core/helper}/__init__.py +0 -0
  355. {sagemaker_core/helper → sagemaker/core/huggingface/training_compiler}/__init__.py +0 -0
  356. {sagemaker_core/main → sagemaker/core/jumpstart/factory}/__init__.py +0 -0
  357. {sagemaker_core/main/code_injection → sagemaker/core/jumpstart/hub}/__init__.py +0 -0
  358. {sagemaker_core/main → sagemaker/core/utils}/code_injection/base.py +0 -0
  359. {sagemaker_core/main → sagemaker/core/utils}/code_injection/constants.py +0 -0
  360. {sagemaker_core/main → sagemaker/core/utils}/user_agent.py +0 -0
  361. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/WHEEL +0 -0
  362. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,349 @@
1
+ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+ """Placeholder docstring"""
14
+ from __future__ import absolute_import
15
+
16
+ import os
17
+ from pathlib import Path
18
+ import subprocess
19
+ import tempfile
20
+ import warnings
21
+ import six
22
+ from six.moves import urllib
23
+
24
+
25
+ def git_clone_repo(git_config, entry_point, source_dir=None, dependencies=None):
26
+ """Git clone repo containing the training code and serving code.
27
+
28
+ This method also validate ``git_config``, and set ``entry_point``,
29
+ ``source_dir`` and ``dependencies`` to the right file or directory in the
30
+ repo cloned.
31
+
32
+ Args:
33
+ git_config (dict[str, str]): Git configurations used for cloning files,
34
+ including ``repo``, ``branch``, ``commit``, ``2FA_enabled``,
35
+ ``username``, ``password`` and ``token``. The ``repo`` field is
36
+ required. All other fields are optional. ``repo`` specifies the Git
37
+ repository where your training script is stored. If you don't
38
+ provide ``branch``, the default value 'master' is used. If you don't
39
+ provide ``commit``, the latest commit in the specified branch is
40
+ used. ``2FA_enabled``, ``username``, ``password`` and ``token`` are
41
+ for authentication purpose. If ``2FA_enabled`` is not provided, we
42
+ consider 2FA as disabled.
43
+
44
+ For GitHub and GitHub-like repos, when SSH URLs are provided, it
45
+ doesn't matter whether 2FA is enabled or disabled; you should either
46
+ have no passphrase for the SSH key pairs, or have the ssh-agent
47
+ configured so that you will not be prompted for SSH passphrase when
48
+ you do 'git clone' command with SSH URLs. When https URLs are
49
+ provided: if 2FA is disabled, then either token or username+password
50
+ will be used for authentication if provided (token prioritized); if
51
+ 2FA is enabled, only token will be used for authentication if
52
+ provided. If required authentication info is not provided, python
53
+ SDK will try to use local credentials storage to authenticate. If
54
+ that fails either, an error message will be thrown.
55
+
56
+ For CodeCommit repos, 2FA is not supported, so '2FA_enabled' should
57
+ not be provided. There is no token in CodeCommit, so 'token' should
58
+ not be provided too. When 'repo' is an SSH URL, the requirements are
59
+ the same as GitHub-like repos. When 'repo' is an https URL,
60
+ username+password will be used for authentication if they are
61
+ provided; otherwise, python SDK will try to use either CodeCommit
62
+ credential helper or local credential storage for authentication.
63
+ entry_point (str): A relative location to the Python source file which
64
+ should be executed as the entry point to training or model hosting
65
+ in the Git repo.
66
+ source_dir (str): A relative location to a directory with other training
67
+ or model hosting source code dependencies aside from the entry point
68
+ file in the Git repo (default: None). Structure within this
69
+ directory are preserved when training on Amazon SageMaker.
70
+ dependencies (list[str]): A list of relative locations to directories
71
+ with any additional libraries that will be exported to the container
72
+ in the Git repo (default: []).
73
+
74
+ Returns:
75
+ dict: A dict that contains the updated values of entry_point, source_dir
76
+ and dependencies.
77
+
78
+ Raises:
79
+ CalledProcessError: If 1. failed to clone git repo
80
+ 2. failed to checkout the required branch
81
+ 3. failed to checkout the required commit
82
+ ValueError: If 1. entry point specified does not exist in the repo
83
+ 2. source dir specified does not exist in the repo
84
+ 3. dependencies specified do not exist in the repo
85
+ 4. wrong format is provided for git_config
86
+ """
87
+ if entry_point is None:
88
+ raise ValueError("Please provide an entry point.")
89
+ _validate_git_config(git_config)
90
+ dest_dir = tempfile.mkdtemp()
91
+ _generate_and_run_clone_command(git_config, dest_dir)
92
+
93
+ _checkout_branch_and_commit(git_config, dest_dir)
94
+
95
+ updated_paths = {
96
+ "entry_point": entry_point,
97
+ "source_dir": source_dir,
98
+ "dependencies": dependencies,
99
+ }
100
+
101
+ # check if the cloned repo contains entry point, source directory and dependencies
102
+ if source_dir:
103
+ if not os.path.isdir(os.path.join(dest_dir, source_dir)):
104
+ raise ValueError("Source directory does not exist in the repo.")
105
+ if not os.path.isfile(os.path.join(dest_dir, source_dir, entry_point)):
106
+ raise ValueError("Entry point does not exist in the repo.")
107
+ updated_paths["source_dir"] = os.path.join(dest_dir, source_dir)
108
+ else:
109
+ if os.path.isfile(os.path.join(dest_dir, entry_point)):
110
+ updated_paths["entry_point"] = os.path.join(dest_dir, entry_point)
111
+ else:
112
+ raise ValueError("Entry point does not exist in the repo.")
113
+ if dependencies is not None:
114
+ updated_paths["dependencies"] = []
115
+ for path in dependencies:
116
+ if os.path.exists(os.path.join(dest_dir, path)):
117
+ updated_paths["dependencies"].append(os.path.join(dest_dir, path))
118
+ else:
119
+ raise ValueError("Dependency {} does not exist in the repo.".format(path))
120
+ return updated_paths
121
+
122
+
123
+ def _validate_git_config(git_config):
124
+ """Validates the git configuration.
125
+
126
+ Checks all configuration values except 2FA_enabled are string types. The
127
+ 2FA_enabled configuration should be a boolean.
128
+
129
+ Args:
130
+ git_config: The configuration to validate.
131
+ """
132
+ if "repo" not in git_config:
133
+ raise ValueError("Please provide a repo for git_config.")
134
+ for key in git_config:
135
+ if key == "2FA_enabled":
136
+ if not isinstance(git_config["2FA_enabled"], bool):
137
+ raise ValueError("Please enter a bool type for 2FA_enabled'.")
138
+ elif not isinstance(git_config[key], six.string_types):
139
+ raise ValueError("'{}' must be a string.".format(key))
140
+
141
+
142
+ def _generate_and_run_clone_command(git_config, dest_dir):
143
+ """Check if a git_config param is valid.
144
+
145
+ If it is valid, create the command to git, clone the repo, and run it.
146
+
147
+ Args:
148
+ git_config ((dict[str, str]): Git configurations used for cloning files,
149
+ including ``repo``, ``branch`` and ``commit``.
150
+ dest_dir (str): The local directory to clone the Git repo into.
151
+
152
+ Raises:
153
+ CalledProcessError: If failed to clone git repo.
154
+ """
155
+ if git_config["repo"].startswith("https://git-codecommit") or git_config["repo"].startswith(
156
+ "ssh://git-codecommit"
157
+ ):
158
+ _clone_command_for_codecommit(git_config, dest_dir)
159
+ else:
160
+ _clone_command_for_github_like(git_config, dest_dir)
161
+
162
+
163
+ def _clone_command_for_github_like(git_config, dest_dir):
164
+ """Check if a git_config param representing a GitHub (or like) repo is valid.
165
+
166
+ If it is valid, create the command to git clone the repo, and run it.
167
+
168
+ Args:
169
+ git_config ((dict[str, str]): Git configurations used for cloning files,
170
+ including ``repo``, ``branch`` and ``commit``.
171
+ dest_dir (str): The local directory to clone the Git repo into.
172
+
173
+ Raises:
174
+ ValueError: If git_config['repo'] is in the wrong format.
175
+ CalledProcessError: If failed to clone git repo.
176
+ """
177
+ is_https = git_config["repo"].startswith("https://")
178
+ is_ssh = git_config["repo"].startswith("git@") or git_config["repo"].startswith("ssh://")
179
+ if not is_https and not is_ssh:
180
+ raise ValueError("Invalid Git url provided.")
181
+ if is_ssh:
182
+ _clone_command_for_ssh(git_config, dest_dir)
183
+ elif "2FA_enabled" in git_config and git_config["2FA_enabled"] is True:
184
+ _clone_command_for_github_like_https_2fa_enabled(git_config, dest_dir)
185
+ else:
186
+ _clone_command_for_github_like_https_2fa_disabled(git_config, dest_dir)
187
+
188
+
189
+ def _clone_command_for_ssh(git_config, dest_dir):
190
+ """Placeholder docstring"""
191
+ if "username" in git_config or "password" in git_config or "token" in git_config:
192
+ warnings.warn("SSH cloning, authentication information in git config will be ignored.")
193
+ _run_clone_command(git_config["repo"], dest_dir)
194
+
195
+
196
+ def _clone_command_for_github_like_https_2fa_disabled(git_config, dest_dir):
197
+ """Placeholder docstring"""
198
+ updated_url = git_config["repo"]
199
+ if "token" in git_config:
200
+ if "username" in git_config or "password" in git_config:
201
+ warnings.warn("Using token for authentication, " "other credentials will be ignored.")
202
+ updated_url = _insert_token_to_repo_url(url=git_config["repo"], token=git_config["token"])
203
+ elif "username" in git_config and "password" in git_config:
204
+ updated_url = _insert_username_and_password_to_repo_url(
205
+ url=git_config["repo"], username=git_config["username"], password=git_config["password"]
206
+ )
207
+ elif "username" in git_config or "password" in git_config:
208
+ warnings.warn("Credentials provided in git config will be ignored.")
209
+ _run_clone_command(updated_url, dest_dir)
210
+
211
+
212
+ def _clone_command_for_github_like_https_2fa_enabled(git_config, dest_dir):
213
+ """Placeholder docstring"""
214
+ updated_url = git_config["repo"]
215
+ if "token" in git_config:
216
+ if "username" in git_config or "password" in git_config:
217
+ warnings.warn("Using token for authentication, " "other credentials will be ignored.")
218
+ updated_url = _insert_token_to_repo_url(url=git_config["repo"], token=git_config["token"])
219
+ _run_clone_command(updated_url, dest_dir)
220
+
221
+
222
+ def _clone_command_for_codecommit(git_config, dest_dir):
223
+ """Check if a git_config param representing a CodeCommit repo is valid.
224
+
225
+ If it is, create the command to git clone the repo, and run it.
226
+
227
+ Args:
228
+ git_config ((dict[str, str]): Git configurations used for cloning files,
229
+ including ``repo``, ``branch`` and ``commit``.
230
+ dest_dir (str): The local directory to clone the Git repo into.
231
+
232
+ Raises:
233
+ ValueError: If git_config['repo'] is in the wrong format.
234
+ CalledProcessError: If failed to clone git repo.
235
+ """
236
+ is_https = git_config["repo"].startswith("https://git-codecommit")
237
+ is_ssh = git_config["repo"].startswith("ssh://git-codecommit")
238
+ if not is_https and not is_ssh:
239
+ raise ValueError("Invalid Git url provided.")
240
+ if "2FA_enabled" in git_config:
241
+ warnings.warn("CodeCommit does not support 2FA, '2FA_enabled' will be ignored.")
242
+ if "token" in git_config:
243
+ warnings.warn("There are no tokens in CodeCommit, the token provided will be ignored.")
244
+ if is_ssh:
245
+ _clone_command_for_ssh(git_config, dest_dir)
246
+ else:
247
+ _clone_command_for_codecommit_https(git_config, dest_dir)
248
+
249
+
250
+ def _clone_command_for_codecommit_https(git_config, dest_dir):
251
+ """Invoke the clone command for codecommit.
252
+
253
+ Args:
254
+ git_config: The git configuration.
255
+ dest_dir: The destination directory for the clone.
256
+ """
257
+ updated_url = git_config["repo"]
258
+ if "username" in git_config and "password" in git_config:
259
+ updated_url = _insert_username_and_password_to_repo_url(
260
+ url=git_config["repo"], username=git_config["username"], password=git_config["password"]
261
+ )
262
+ elif "username" in git_config or "password" in git_config:
263
+ warnings.warn("Credentials provided in git config will be ignored.")
264
+ _run_clone_command(updated_url, dest_dir)
265
+
266
+
267
+ def _run_clone_command(repo_url, dest_dir):
268
+ """Run the 'git clone' command with the repo url and the directory to clone the repo into.
269
+
270
+ Args:
271
+ repo_url (str): Git repo url to be cloned.
272
+ dest_dir: (str): Local path where the repo should be cloned into.
273
+
274
+ Raises:
275
+ CalledProcessError: If failed to clone git repo.
276
+ """
277
+ my_env = os.environ.copy()
278
+ if repo_url.startswith("https://"):
279
+ my_env["GIT_TERMINAL_PROMPT"] = "0"
280
+ subprocess.check_call(["git", "clone", repo_url, dest_dir], env=my_env)
281
+ elif repo_url.startswith("git@") or repo_url.startswith("ssh://"):
282
+ try:
283
+ with tempfile.TemporaryDirectory() as tmp_dir:
284
+ custom_ssh_executable = Path(tmp_dir) / "ssh_batch"
285
+ with open(custom_ssh_executable, "w") as pipe:
286
+ print("#!/bin/sh", file=pipe)
287
+ print("ssh -oBatchMode=yes $@", file=pipe)
288
+ os.chmod(custom_ssh_executable, 0o511)
289
+ my_env["GIT_SSH"] = str(custom_ssh_executable)
290
+ subprocess.check_call(["git", "clone", repo_url, dest_dir], env=my_env)
291
+ except subprocess.CalledProcessError:
292
+ del my_env["GIT_SSH"]
293
+ subprocess.check_call(["git", "clone", repo_url, dest_dir], env=my_env)
294
+
295
+
296
+ def _insert_token_to_repo_url(url, token):
297
+ """Insert the token to the Git repo url, to make a component of the git clone command.
298
+
299
+ This method can only be called when repo_url is an https url.
300
+
301
+ Args:
302
+ url (str): Git repo url where the token should be inserted into.
303
+ token (str): Token to be inserted.
304
+
305
+ Returns:
306
+ str: the component needed fot the git clone command.
307
+ """
308
+ index = len("https://")
309
+ if url.find(token) == index:
310
+ return url
311
+ return url.replace("https://", "https://" + token + "@")
312
+
313
+
314
+ def _insert_username_and_password_to_repo_url(url, username, password):
315
+ """Insert username and password to the Git repo url to make a component of git clone command.
316
+
317
+ This method can only be called when repo_url is an https url.
318
+
319
+ Args:
320
+ url (str): Git repo url where the token should be inserted into.
321
+ username (str): Username to be inserted.
322
+ password (str): Password to be inserted.
323
+
324
+ Returns:
325
+ str: the component needed for the git clone command.
326
+ """
327
+ password = urllib.parse.quote_plus(password)
328
+ # urllib parses ' ' as '+', but what we need is '%20' here
329
+ password = password.replace("+", "%20")
330
+ index = len("https://")
331
+ return url[:index] + username + ":" + password + "@" + url[index:]
332
+
333
+
334
+ def _checkout_branch_and_commit(git_config, dest_dir):
335
+ """Checkout the required branch and commit.
336
+
337
+ Args:
338
+ git_config (dict[str, str]): Git configurations used for cloning files,
339
+ including ``repo``, ``branch`` and ``commit``.
340
+ dest_dir (str): the directory where the repo is cloned
341
+
342
+ Raises:
343
+ CalledProcessError: If 1. failed to checkout the required branch 2.
344
+ failed to checkout the required commit
345
+ """
346
+ if "branch" in git_config:
347
+ subprocess.check_call(args=["git", "checkout", git_config["branch"]], cwd=str(dest_dir))
348
+ if "commit" in git_config:
349
+ subprocess.check_call(args=["git", "checkout", git_config["commit"]], cwd=str(dest_dir))
@@ -0,0 +1,82 @@
1
+ import abc
2
+ from typing import Dict, List, Union, Any
3
+
4
+ try:
5
+ from pydantic_core import core_schema
6
+ except ImportError:
7
+ core_schema = None
8
+
9
+ PrimitiveType = Union[str, int, bool, float, None]
10
+ RequestType = Union[Dict[str, Any], List[Dict[str, Any]]]
11
+
12
+
13
+ class PipelineVariable(abc.ABC):
14
+ """PipelineVariables are placeholders for strings that are unknown before Pipeline execution
15
+
16
+ PipelineVariable subclasses must implement the expr property. Its subclasses include:
17
+ :class:`~sagemaker.workflow.parameters.Parameter`,
18
+ :class:`~sagemaker.workflow.properties.Properties`,
19
+ :class:`~sagemaker.workflow.functions.Join`,
20
+ :class:`~sagemaker.workflow.functions.JsonGet`,
21
+ :class:`~sagemaker.workflow.execution_variables.ExecutionVariable`.
22
+ :class:`~sagemaker.workflow.step_outputs.StepOutput`.
23
+ """
24
+
25
+ def __add__(self, other: Union["PipelineVariable", PrimitiveType]):
26
+ """Add function for PipelineVariable
27
+
28
+ Args:
29
+ other (Union[PipelineVariable, PrimitiveType]): The other object to be concatenated.
30
+
31
+ Always raise an error since pipeline variables do not support concatenation
32
+ """
33
+
34
+ raise TypeError("Pipeline variables do not support concatenation.")
35
+
36
+ def __str__(self):
37
+ """Override built-in String function for PipelineVariable"""
38
+ raise TypeError(
39
+ "Pipeline variables do not support __str__ operation. "
40
+ "Please use `.to_string()` to convert it to string type in execution time "
41
+ "or use `.expr` to translate it to Json for display purpose in Python SDK."
42
+ )
43
+
44
+ def __int__(self):
45
+ """Override built-in Integer function for PipelineVariable"""
46
+ raise TypeError("Pipeline variables do not support __int__ operation.")
47
+
48
+ def __float__(self):
49
+ """Override built-in Float function for PipelineVariable"""
50
+ raise TypeError("Pipeline variables do not support __float__ operation.")
51
+
52
+ def to_string(self):
53
+ """Prompt the pipeline to convert the pipeline variable to String in runtime"""
54
+ from sagemaker.core.workflow.functions import Join
55
+
56
+ return Join(on="", values=[self])
57
+
58
+ @property
59
+ @abc.abstractmethod
60
+ def expr(self) -> RequestType:
61
+ """Get the expression structure for workflow service calls."""
62
+
63
+ @property
64
+ def _pickleable(self):
65
+ """A pickleable object that can be used in a function step."""
66
+ raise NotImplementedError
67
+
68
+ @property
69
+ @abc.abstractmethod
70
+ def _referenced_steps(self) -> List[Any]:
71
+ """List of steps that this variable is generated from."""
72
+
73
+ @classmethod
74
+ def __get_pydantic_core_schema__(cls, source_type, handler):
75
+ """Return a Pydantic core schema for PipelineVariable validation."""
76
+ if core_schema is None:
77
+ raise ImportError("pydantic-core is required for Pydantic validation")
78
+ return core_schema.is_instance_schema(cls)
79
+
80
+
81
+ # This is a type that could be either string or pipeline variable
82
+ StrPipeVar = Union[str, PipelineVariable]