sagemaker-core 1.0.47__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.
- sagemaker/core/__init__.py +16 -0
- sagemaker/core/_studio.py +116 -0
- sagemaker/core/_version.py +11 -0
- sagemaker/core/accept_types.py +131 -0
- sagemaker/core/analytics.py +744 -0
- sagemaker/core/apiutils/__init__.py +13 -0
- sagemaker/core/apiutils/_base_types.py +228 -0
- sagemaker/core/apiutils/_boto_functions.py +130 -0
- sagemaker/core/apiutils/_utils.py +34 -0
- sagemaker/core/base_deserializers.py +35 -0
- sagemaker/core/base_serializers.py +35 -0
- sagemaker/core/clarify/__init__.py +2898 -0
- sagemaker/core/collection.py +467 -0
- sagemaker/core/common_utils.py +2281 -0
- sagemaker/core/compute_resource_requirements/__init__.py +18 -0
- sagemaker/core/compute_resource_requirements/resource_requirements.py +94 -0
- sagemaker/core/config/__init__.py +181 -0
- sagemaker/core/config/config.py +238 -0
- sagemaker/core/config/config_manager.py +595 -0
- sagemaker/core/config/config_schema.py +1220 -0
- sagemaker/core/config/config_utils.py +297 -0
- {sagemaker_core/main → sagemaker/core}/config_schema.py +410 -4
- sagemaker/core/constants.py +73 -0
- sagemaker/core/content_types.py +137 -0
- sagemaker/core/debugger/__init__.py +39 -0
- sagemaker/core/debugger/debugger.py +945 -0
- sagemaker/core/debugger/framework_profile.py +292 -0
- sagemaker/core/debugger/metrics_config.py +468 -0
- sagemaker/core/debugger/profiler.py +42 -0
- sagemaker/core/debugger/profiler_config.py +190 -0
- sagemaker/core/debugger/profiler_constants.py +40 -0
- sagemaker/core/debugger/utils.py +148 -0
- sagemaker/core/deprecations.py +254 -0
- sagemaker/core/deserializers/__init__.py +10 -0
- sagemaker/core/deserializers/base.py +424 -0
- sagemaker/core/deserializers/implementations.py +157 -0
- sagemaker/core/drift_check_baselines.py +106 -0
- sagemaker/core/enums.py +51 -0
- sagemaker/core/environment_variables.py +101 -0
- sagemaker/core/exceptions.py +108 -0
- sagemaker/core/experiments/__init__.py +53 -0
- sagemaker/core/experiments/_api_types.py +251 -0
- sagemaker/core/experiments/_environment.py +124 -0
- sagemaker/core/experiments/_helper.py +294 -0
- sagemaker/core/experiments/_metrics.py +333 -0
- sagemaker/core/experiments/_run_context.py +58 -0
- sagemaker/core/experiments/_utils.py +216 -0
- sagemaker/core/experiments/experiment.py +244 -0
- sagemaker/core/experiments/run.py +970 -0
- sagemaker/core/experiments/trial.py +296 -0
- sagemaker/core/experiments/trial_component.py +387 -0
- sagemaker/core/explainer/__init__.py +24 -0
- sagemaker/core/explainer/clarify_explainer_config.py +298 -0
- sagemaker/core/explainer/explainer_config.py +44 -0
- sagemaker/core/fw_utils.py +1176 -0
- sagemaker/core/git_utils.py +349 -0
- sagemaker/core/helper/pipeline_variable.py +82 -0
- sagemaker/core/helper/session_helper.py +2965 -0
- sagemaker/core/huggingface/__init__.py +29 -0
- sagemaker/core/huggingface/llm_utils.py +150 -0
- sagemaker/core/huggingface/processing.py +139 -0
- sagemaker/core/huggingface/training_compiler/config.py +167 -0
- sagemaker/core/hyperparameters.py +172 -0
- sagemaker/core/image_retriever/__init__.py +3 -0
- sagemaker/core/image_retriever/image_retriever.py +640 -0
- sagemaker/core/image_retriever/image_retriever_utils.py +511 -0
- sagemaker/core/image_retriever/test.py +7 -0
- sagemaker/core/image_uri_config/__init__.py +13 -0
- sagemaker/core/image_uri_config/autogluon.json +1335 -0
- sagemaker/core/image_uri_config/blazingtext.json +50 -0
- sagemaker/core/image_uri_config/chainer.json +104 -0
- sagemaker/core/image_uri_config/clarify.json +39 -0
- sagemaker/core/image_uri_config/coach-mxnet.json +70 -0
- sagemaker/core/image_uri_config/coach-tensorflow.json +186 -0
- sagemaker/core/image_uri_config/data-wrangler.json +91 -0
- sagemaker/core/image_uri_config/debugger.json +34 -0
- sagemaker/core/image_uri_config/detailed-profiler.json +18 -0
- sagemaker/core/image_uri_config/djl-deepspeed.json +385 -0
- sagemaker/core/image_uri_config/djl-fastertransformer.json +167 -0
- sagemaker/core/image_uri_config/djl-lmi.json +136 -0
- sagemaker/core/image_uri_config/djl-neuronx.json +258 -0
- sagemaker/core/image_uri_config/djl-tensorrtllm.json +262 -0
- sagemaker/core/image_uri_config/factorization-machines.json +50 -0
- sagemaker/core/image_uri_config/forecasting-deepar.json +50 -0
- sagemaker/core/image_uri_config/huggingface-llm-neuronx.json +660 -0
- sagemaker/core/image_uri_config/huggingface-llm.json +1158 -0
- sagemaker/core/image_uri_config/huggingface-neuron.json +52 -0
- sagemaker/core/image_uri_config/huggingface-neuronx.json +510 -0
- sagemaker/core/image_uri_config/huggingface-tei-cpu.json +298 -0
- sagemaker/core/image_uri_config/huggingface-tei.json +298 -0
- sagemaker/core/image_uri_config/huggingface-training-compiler.json +195 -0
- sagemaker/core/image_uri_config/huggingface.json +2138 -0
- sagemaker/core/image_uri_config/hyperpod-recipes-neuron.json +52 -0
- sagemaker/core/image_uri_config/image-classification-neo.json +43 -0
- sagemaker/core/image_uri_config/image-classification.json +50 -0
- sagemaker/core/image_uri_config/inferentia-mxnet.json +88 -0
- sagemaker/core/image_uri_config/inferentia-pytorch.json +127 -0
- sagemaker/core/image_uri_config/inferentia-tensorflow.json +88 -0
- sagemaker/core/image_uri_config/instance_gpu_info.json +782 -0
- sagemaker/core/image_uri_config/ipinsights.json +50 -0
- sagemaker/core/image_uri_config/kmeans.json +50 -0
- sagemaker/core/image_uri_config/knn.json +50 -0
- sagemaker/core/image_uri_config/lda.json +26 -0
- sagemaker/core/image_uri_config/linear-learner.json +50 -0
- sagemaker/core/image_uri_config/model-monitor.json +42 -0
- sagemaker/core/image_uri_config/mxnet.json +1154 -0
- sagemaker/core/image_uri_config/neo-mxnet.json +64 -0
- sagemaker/core/image_uri_config/neo-pytorch.json +341 -0
- sagemaker/core/image_uri_config/neo-tensorflow.json +109 -0
- sagemaker/core/image_uri_config/ntm.json +50 -0
- sagemaker/core/image_uri_config/object-detection.json +50 -0
- sagemaker/core/image_uri_config/object2vec.json +50 -0
- sagemaker/core/image_uri_config/pca.json +50 -0
- sagemaker/core/image_uri_config/pytorch-neuron.json +43 -0
- sagemaker/core/image_uri_config/pytorch-smp.json +218 -0
- sagemaker/core/image_uri_config/pytorch-training-compiler.json +80 -0
- sagemaker/core/image_uri_config/pytorch.json +3101 -0
- sagemaker/core/image_uri_config/randomcutforest.json +50 -0
- sagemaker/core/image_uri_config/ray-pytorch.json +46 -0
- sagemaker/core/image_uri_config/ray-tensorflow.json +194 -0
- sagemaker/core/image_uri_config/sagemaker-base-python.json +46 -0
- sagemaker/core/image_uri_config/sagemaker-distribution.json +37 -0
- sagemaker/core/image_uri_config/sagemaker-geospatial.json +13 -0
- sagemaker/core/image_uri_config/sagemaker-tritonserver.json +212 -0
- sagemaker/core/image_uri_config/semantic-segmentation.json +50 -0
- sagemaker/core/image_uri_config/seq2seq.json +50 -0
- sagemaker/core/image_uri_config/sklearn.json +446 -0
- sagemaker/core/image_uri_config/spark.json +280 -0
- sagemaker/core/image_uri_config/sparkml-serving.json +97 -0
- sagemaker/core/image_uri_config/stabilityai.json +53 -0
- sagemaker/core/image_uri_config/tensorflow.json +5086 -0
- sagemaker/core/image_uri_config/vw.json +25 -0
- sagemaker/core/image_uri_config/xgboost-neo.json +43 -0
- sagemaker/core/image_uri_config/xgboost.json +888 -0
- sagemaker/core/image_uris.py +810 -0
- sagemaker/core/inference_config.py +144 -0
- sagemaker/core/inference_recommender/__init__.py +18 -0
- sagemaker/core/inference_recommender/inference_recommender_mixin.py +622 -0
- sagemaker/core/inputs.py +366 -0
- sagemaker/core/instance_group.py +61 -0
- sagemaker/core/instance_types.py +164 -0
- sagemaker/core/instance_types_gpu_info.py +43 -0
- sagemaker/core/interactive_apps/__init__.py +41 -0
- sagemaker/core/interactive_apps/base_interactive_app.py +204 -0
- sagemaker/core/interactive_apps/detail_profiler_app.py +139 -0
- sagemaker/core/interactive_apps/tensorboard.py +149 -0
- sagemaker/core/iterators.py +186 -0
- sagemaker/core/job.py +380 -0
- sagemaker/core/jumpstart/__init__.py +156 -0
- sagemaker/core/jumpstart/accessors.py +390 -0
- sagemaker/core/jumpstart/artifacts/__init__.py +69 -0
- sagemaker/core/jumpstart/artifacts/environment_variables.py +252 -0
- sagemaker/core/jumpstart/artifacts/hyperparameters.py +120 -0
- sagemaker/core/jumpstart/artifacts/image_uris.py +139 -0
- sagemaker/core/jumpstart/artifacts/incremental_training.py +87 -0
- sagemaker/core/jumpstart/artifacts/instance_types.py +223 -0
- sagemaker/core/jumpstart/artifacts/kwargs.py +289 -0
- sagemaker/core/jumpstart/artifacts/metric_definitions.py +117 -0
- sagemaker/core/jumpstart/artifacts/model_packages.py +202 -0
- sagemaker/core/jumpstart/artifacts/model_uris.py +252 -0
- sagemaker/core/jumpstart/artifacts/payloads.py +96 -0
- sagemaker/core/jumpstart/artifacts/predictors.py +540 -0
- sagemaker/core/jumpstart/artifacts/resource_names.py +86 -0
- sagemaker/core/jumpstart/artifacts/resource_requirements.py +162 -0
- sagemaker/core/jumpstart/artifacts/script_uris.py +172 -0
- sagemaker/core/jumpstart/cache.py +663 -0
- sagemaker/core/jumpstart/configs.py +50 -0
- sagemaker/core/jumpstart/constants.py +198 -0
- sagemaker/core/jumpstart/deserializers.py +81 -0
- sagemaker/core/jumpstart/document.py +76 -0
- sagemaker/core/jumpstart/enums.py +168 -0
- sagemaker/core/jumpstart/exceptions.py +236 -0
- sagemaker/core/jumpstart/factory/utils.py +833 -0
- sagemaker/core/jumpstart/filters.py +597 -0
- sagemaker/core/jumpstart/hub/__init__.py +0 -0
- sagemaker/core/jumpstart/hub/constants.py +16 -0
- sagemaker/core/jumpstart/hub/hub.py +291 -0
- sagemaker/core/jumpstart/hub/interfaces.py +936 -0
- sagemaker/core/jumpstart/hub/parser_utils.py +70 -0
- sagemaker/core/jumpstart/hub/parsers.py +288 -0
- sagemaker/core/jumpstart/hub/types.py +35 -0
- sagemaker/core/jumpstart/hub/utils.py +260 -0
- sagemaker/core/jumpstart/models.py +499 -0
- sagemaker/core/jumpstart/notebook_utils.py +575 -0
- sagemaker/core/jumpstart/parameters.py +20 -0
- sagemaker/core/jumpstart/payload_utils.py +239 -0
- sagemaker/core/jumpstart/region_config.json +163 -0
- sagemaker/core/jumpstart/search.py +171 -0
- sagemaker/core/jumpstart/serializers.py +81 -0
- sagemaker/core/jumpstart/session_utils.py +234 -0
- sagemaker/core/jumpstart/types.py +3044 -0
- sagemaker/core/jumpstart/utils.py +1731 -0
- sagemaker/core/jumpstart/validators.py +257 -0
- sagemaker/core/lambda_helper.py +312 -0
- sagemaker/core/lineage/__init__.py +42 -0
- sagemaker/core/lineage/_api_types.py +239 -0
- sagemaker/core/lineage/_utils.py +49 -0
- sagemaker/core/lineage/action.py +345 -0
- sagemaker/core/lineage/artifact.py +646 -0
- sagemaker/core/lineage/association.py +190 -0
- sagemaker/core/lineage/context.py +505 -0
- sagemaker/core/lineage/lineage_trial_component.py +191 -0
- sagemaker/core/lineage/query.py +732 -0
- sagemaker/core/lineage/visualizer.py +346 -0
- sagemaker/core/local/__init__.py +18 -0
- sagemaker/core/local/data.py +413 -0
- sagemaker/core/local/entities.py +678 -0
- sagemaker/core/local/exceptions.py +17 -0
- sagemaker/core/local/image.py +1243 -0
- sagemaker/core/local/local_session.py +739 -0
- sagemaker/core/local/utils.py +245 -0
- sagemaker/core/logs.py +181 -0
- sagemaker/core/metadata_properties.py +56 -0
- sagemaker/core/metric_definitions.py +91 -0
- sagemaker/core/mlflow/__init__.py +38 -0
- sagemaker/core/mlflow/forward_sagemaker_metrics.py +44 -0
- sagemaker/core/model_card/__init__.py +26 -0
- sagemaker/core/model_life_cycle.py +51 -0
- sagemaker/core/model_metrics.py +160 -0
- sagemaker/core/model_monitor/__init__.py +66 -0
- sagemaker/core/model_monitor/clarify_model_monitoring.py +1495 -0
- sagemaker/core/model_monitor/cron_expression_generator.py +82 -0
- sagemaker/core/model_monitor/data_capture_config.py +115 -0
- sagemaker/core/model_monitor/data_quality_monitoring_config.py +66 -0
- sagemaker/core/model_monitor/dataset_format.py +102 -0
- sagemaker/core/model_monitor/model_monitoring.py +4266 -0
- sagemaker/core/model_monitor/monitoring_alert.py +76 -0
- sagemaker/core/model_monitor/monitoring_files.py +506 -0
- sagemaker/core/model_monitor/utils.py +793 -0
- sagemaker/core/model_registry.py +480 -0
- sagemaker/core/model_uris.py +97 -0
- sagemaker/core/modules/__init__.py +19 -0
- sagemaker/core/modules/configs.py +226 -0
- sagemaker/core/modules/constants.py +37 -0
- sagemaker/core/modules/distributed.py +182 -0
- sagemaker/core/modules/local_core/__init__.py +0 -0
- sagemaker/core/modules/local_core/local_container.py +605 -0
- sagemaker/core/modules/templates.py +83 -0
- sagemaker/core/modules/train/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/common/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/common/utils.py +213 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/basic_script_driver.py +81 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_driver.py +123 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_utils.py +302 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/torchrun_driver.py +129 -0
- sagemaker/core/modules/train/container_drivers/scripts/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/scripts/environment.py +305 -0
- sagemaker/core/modules/train/sm_recipes/__init__.py +0 -0
- sagemaker/core/modules/train/sm_recipes/utils.py +330 -0
- sagemaker/core/modules/types.py +19 -0
- sagemaker/core/modules/utils.py +194 -0
- sagemaker/core/network.py +185 -0
- sagemaker/core/parameter.py +173 -0
- sagemaker/core/payloads.py +185 -0
- sagemaker/core/processing.py +1597 -0
- sagemaker/core/remote_function/__init__.py +19 -0
- sagemaker/core/remote_function/checkpoint_location.py +47 -0
- sagemaker/core/remote_function/client.py +1285 -0
- sagemaker/core/remote_function/core/__init__.py +0 -0
- sagemaker/core/remote_function/core/_custom_dispatch_table.py +72 -0
- sagemaker/core/remote_function/core/pipeline_variables.py +353 -0
- sagemaker/core/remote_function/core/serialization.py +422 -0
- sagemaker/core/remote_function/core/stored_function.py +226 -0
- sagemaker/core/remote_function/custom_file_filter.py +128 -0
- sagemaker/core/remote_function/errors.py +104 -0
- sagemaker/core/remote_function/invoke_function.py +172 -0
- sagemaker/core/remote_function/job.py +2140 -0
- sagemaker/core/remote_function/logging_config.py +38 -0
- sagemaker/core/remote_function/runtime_environment/__init__.py +14 -0
- sagemaker/core/remote_function/runtime_environment/bootstrap_runtime_environment.py +605 -0
- sagemaker/core/remote_function/runtime_environment/mpi_utils_remote.py +252 -0
- sagemaker/core/remote_function/runtime_environment/runtime_environment_manager.py +554 -0
- sagemaker/core/remote_function/runtime_environment/spark_app.py +18 -0
- sagemaker/core/remote_function/spark_config.py +149 -0
- sagemaker/core/resource_requirements.py +168 -0
- {sagemaker_core/main → sagemaker/core}/resources.py +20121 -11728
- sagemaker/core/s3/__init__.py +41 -0
- sagemaker/core/s3/client.py +367 -0
- sagemaker/core/s3/utils.py +175 -0
- sagemaker/core/script_uris.py +93 -0
- sagemaker/core/serializers/__init__.py +11 -0
- sagemaker/core/serializers/base.py +510 -0
- sagemaker/core/serializers/implementations.py +159 -0
- sagemaker/core/serializers/utils.py +223 -0
- sagemaker/core/serverless_inference_config.py +63 -0
- sagemaker/core/session_settings.py +55 -0
- sagemaker/core/shapes/__init__.py +3 -0
- sagemaker/core/shapes/model_card_shapes.py +159 -0
- {sagemaker_core/main → sagemaker/core/shapes}/shapes.py +6384 -1865
- sagemaker/core/spark/__init__.py +16 -0
- sagemaker/core/spark/defaults.py +16 -0
- sagemaker/core/spark/processing.py +1380 -0
- sagemaker/core/telemetry/__init__.py +23 -0
- sagemaker/core/telemetry/constants.py +84 -0
- sagemaker/core/telemetry/telemetry_logging.py +284 -0
- sagemaker/core/tools/__init__.py +1 -0
- {sagemaker_core → sagemaker/core}/tools/codegen.py +4 -4
- {sagemaker_core → sagemaker/core}/tools/constants.py +23 -15
- {sagemaker_core → sagemaker/core}/tools/data_extractor.py +1 -1
- {sagemaker_core → sagemaker/core}/tools/method.py +1 -1
- sagemaker/core/tools/model_card/generate_model_card_from_schema.py +562 -0
- {sagemaker_core → sagemaker/core}/tools/resources_codegen.py +165 -98
- {sagemaker_core → sagemaker/core}/tools/resources_extractor.py +5 -13
- {sagemaker_core → sagemaker/core}/tools/shapes_codegen.py +16 -17
- {sagemaker_core → sagemaker/core}/tools/shapes_extractor.py +29 -67
- {sagemaker_core → sagemaker/core}/tools/templates.py +39 -17
- sagemaker/core/training/__init__.py +14 -0
- sagemaker/core/training/configs.py +333 -0
- sagemaker/core/training/constants.py +37 -0
- sagemaker/core/training/utils.py +77 -0
- sagemaker/core/training_compiler/__init__.py +16 -0
- sagemaker/core/training_compiler/config.py +197 -0
- sagemaker/core/training_compiler_config.py +197 -0
- sagemaker/core/transformer.py +793 -0
- sagemaker/core/user_agent.py +76 -0
- sagemaker/core/utilities/__init__.py +24 -0
- sagemaker/core/utilities/cache.py +169 -0
- sagemaker/core/utilities/search_expression.py +133 -0
- sagemaker/core/utils/__init__.py +48 -0
- sagemaker/core/utils/code_injection/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/codec.py +2 -2
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/shape_dag.py +6479 -136
- {sagemaker_core/main → sagemaker/core/utils}/exceptions.py +8 -8
- sagemaker_core/main/default_configs_helper.py → sagemaker/core/utils/intelligent_defaults_helper.py +5 -6
- {sagemaker_core/main → sagemaker/core/utils}/logs.py +1 -2
- {sagemaker_core/main → sagemaker/core/utils}/utils.py +25 -20
- sagemaker/core/workflow/__init__.py +152 -0
- sagemaker/core/workflow/conditions.py +313 -0
- sagemaker/core/workflow/entities.py +58 -0
- sagemaker/core/workflow/execution_variables.py +89 -0
- sagemaker/core/workflow/functions.py +193 -0
- sagemaker/core/workflow/parameters.py +222 -0
- sagemaker/core/workflow/pipeline_context.py +394 -0
- sagemaker/core/workflow/pipeline_definition_config.py +31 -0
- sagemaker/core/workflow/properties.py +285 -0
- sagemaker/core/workflow/step_outputs.py +65 -0
- sagemaker/core/workflow/utilities.py +507 -0
- sagemaker/lineage/__init__.py +33 -0
- sagemaker/lineage/action.py +28 -0
- sagemaker/lineage/artifact.py +28 -0
- sagemaker/lineage/context.py +28 -0
- sagemaker/lineage/lineage_trial_component.py +28 -0
- {sagemaker_core-1.0.47.dist-info → sagemaker_core-2.1.1.dist-info}/METADATA +28 -9
- sagemaker_core-2.1.1.dist-info/RECORD +355 -0
- sagemaker_core-2.1.1.dist-info/top_level.txt +1 -0
- sagemaker_core/__init__.py +0 -4
- sagemaker_core/_version.py +0 -3
- sagemaker_core/helper/session_helper.py +0 -769
- sagemaker_core/resources/__init__.py +0 -1
- sagemaker_core/shapes/__init__.py +0 -1
- sagemaker_core/tools/__init__.py +0 -1
- sagemaker_core-1.0.47.dist-info/RECORD +0 -35
- sagemaker_core-1.0.47.dist-info/top_level.txt +0 -1
- {sagemaker_core → sagemaker/core}/helper/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/huggingface/training_compiler}/__init__.py +0 -0
- {sagemaker_core/main/code_injection → sagemaker/core/jumpstart/factory}/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/base.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/constants.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/user_agent.py +0 -0
- {sagemaker_core-1.0.47.dist-info → sagemaker_core-2.1.1.dist-info}/WHEEL +0 -0
- {sagemaker_core-1.0.47.dist-info → sagemaker_core-2.1.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -16,17 +16,13 @@ import pprint
|
|
|
16
16
|
from functools import lru_cache
|
|
17
17
|
from typing import Optional, Any
|
|
18
18
|
|
|
19
|
-
from
|
|
20
|
-
|
|
21
|
-
SHAPE_DAG_FILE_PATH,
|
|
22
|
-
SHAPES_WITH_JSON_FIELD_ALIAS,
|
|
23
|
-
)
|
|
24
|
-
from sagemaker_core.main.utils import (
|
|
19
|
+
from sagemaker.core.tools.constants import BASIC_JSON_TYPES_TO_PYTHON_TYPES, SHAPE_DAG_FILE_PATH
|
|
20
|
+
from sagemaker.core.utils.utils import (
|
|
25
21
|
reformat_file_with_black,
|
|
26
22
|
convert_to_snake_case,
|
|
27
23
|
snake_to_pascal,
|
|
28
24
|
)
|
|
29
|
-
from
|
|
25
|
+
from sagemaker.core.tools.data_extractor import load_combined_shapes_data
|
|
30
26
|
|
|
31
27
|
|
|
32
28
|
class ShapesExtractor:
|
|
@@ -103,11 +99,6 @@ class ShapesExtractor:
|
|
|
103
99
|
_dag[shape] = {"type": "structure", "members": []}
|
|
104
100
|
for member, member_attrs in shape_data["members"].items():
|
|
105
101
|
shape_node_member = {"name": member, "shape": member_attrs["shape"]}
|
|
106
|
-
# Add alias if field name is json, to address the Bug: https://github.com/aws/sagemaker-python-sdk/issues/4944
|
|
107
|
-
if shape in SHAPES_WITH_JSON_FIELD_ALIAS and member == "Json":
|
|
108
|
-
shape_node_member["name"] = "JsonFormat"
|
|
109
|
-
shape_node_member["alias"] = "json"
|
|
110
|
-
|
|
111
102
|
member_shape_dict = _all_shapes[member_attrs["shape"]]
|
|
112
103
|
shape_node_member["type"] = member_shape_dict["type"]
|
|
113
104
|
_dag[shape]["members"].append(shape_node_member)
|
|
@@ -126,21 +117,19 @@ class ShapesExtractor:
|
|
|
126
117
|
_dag[shape]["value_type"] = _all_shapes[_map_value_shape]["type"]
|
|
127
118
|
return _dag
|
|
128
119
|
|
|
129
|
-
def _evaluate_list_type(self, member_shape
|
|
120
|
+
def _evaluate_list_type(self, member_shape):
|
|
130
121
|
list_shape_name = member_shape["member"]["shape"]
|
|
131
122
|
list_shape_member = self.combined_shapes[list_shape_name]
|
|
132
123
|
list_shape_type = list_shape_member["type"]
|
|
133
124
|
if list_shape_type == "list":
|
|
134
|
-
member_type = f"List[{self._evaluate_list_type(list_shape_member
|
|
125
|
+
member_type = f"List[{self._evaluate_list_type(list_shape_member)}]"
|
|
135
126
|
elif list_shape_type == "map":
|
|
136
|
-
member_type = f"List[{self._evaluate_map_type(list_shape_member
|
|
127
|
+
member_type = f"List[{self._evaluate_map_type(list_shape_member)}]"
|
|
137
128
|
elif list_shape_type == "structure":
|
|
138
129
|
# handling an edge case of nested structure
|
|
139
130
|
if list_shape_name == "SearchExpression":
|
|
140
131
|
member_type = f"List['{list_shape_name}']"
|
|
141
132
|
else:
|
|
142
|
-
if add_shapes_prefix:
|
|
143
|
-
list_shape_name = f"shapes.{list_shape_name}"
|
|
144
133
|
member_type = f"List[{list_shape_name}]"
|
|
145
134
|
elif list_shape_type in BASIC_JSON_TYPES_TO_PYTHON_TYPES.keys():
|
|
146
135
|
member_type = f"List[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[list_shape_type]}]"
|
|
@@ -150,7 +139,7 @@ class ShapesExtractor:
|
|
|
150
139
|
)
|
|
151
140
|
return member_type
|
|
152
141
|
|
|
153
|
-
def _evaluate_map_type(self, member_shape
|
|
142
|
+
def _evaluate_map_type(self, member_shape):
|
|
154
143
|
map_key_shape_name = member_shape["key"]["shape"]
|
|
155
144
|
map_value_shape_name = member_shape["value"]["shape"]
|
|
156
145
|
map_key_shape = self.combined_shapes[map_key_shape_name]
|
|
@@ -163,8 +152,6 @@ class ShapesExtractor:
|
|
|
163
152
|
"Unhandled map shape key type encountered, needs extra logic to handle this"
|
|
164
153
|
)
|
|
165
154
|
if map_value_shape_type == "structure":
|
|
166
|
-
if add_shapes_prefix:
|
|
167
|
-
map_value_shape_name = f"shapes.{map_value_shape_name}"
|
|
168
155
|
member_type = (
|
|
169
156
|
f"Dict[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_key_shape_type]}, "
|
|
170
157
|
f"{map_value_shape_name}]"
|
|
@@ -172,12 +159,12 @@ class ShapesExtractor:
|
|
|
172
159
|
elif map_value_shape_type == "list":
|
|
173
160
|
member_type = (
|
|
174
161
|
f"Dict[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_key_shape_type]}, "
|
|
175
|
-
f"{self._evaluate_list_type(map_value_shape
|
|
162
|
+
f"{self._evaluate_list_type(map_value_shape)}]"
|
|
176
163
|
)
|
|
177
164
|
elif map_value_shape_type == "map":
|
|
178
165
|
member_type = (
|
|
179
166
|
f"Dict[{BASIC_JSON_TYPES_TO_PYTHON_TYPES[map_key_shape_type]}, "
|
|
180
|
-
f"{self._evaluate_map_type(map_value_shape
|
|
167
|
+
f"{self._evaluate_map_type(map_value_shape)}]"
|
|
181
168
|
)
|
|
182
169
|
else:
|
|
183
170
|
member_type = (
|
|
@@ -187,13 +174,9 @@ class ShapesExtractor:
|
|
|
187
174
|
return member_type
|
|
188
175
|
|
|
189
176
|
def generate_data_shape_members_and_string_body(
|
|
190
|
-
self,
|
|
191
|
-
shape,
|
|
192
|
-
resource_plan: Optional[Any] = None,
|
|
193
|
-
required_override=(),
|
|
194
|
-
add_shapes_prefix=True,
|
|
177
|
+
self, shape, resource_plan: Optional[Any] = None, required_override=()
|
|
195
178
|
):
|
|
196
|
-
shape_members = self.generate_shape_members(shape, required_override
|
|
179
|
+
shape_members = self.generate_shape_members(shape, required_override)
|
|
197
180
|
resource_names = None
|
|
198
181
|
if resource_plan is not None:
|
|
199
182
|
resource_names = [row["resource_name"] for _, row in resource_plan.iterrows()]
|
|
@@ -207,31 +190,29 @@ class ShapesExtractor:
|
|
|
207
190
|
and snake_to_pascal(attr[: -len("_name")]) in resource_names
|
|
208
191
|
):
|
|
209
192
|
if value.startswith("Optional"):
|
|
210
|
-
init_data_body +=
|
|
193
|
+
init_data_body += (
|
|
194
|
+
f"{attr}: Optional[Union[StrPipeVar, object]] = Unassigned()\n"
|
|
195
|
+
)
|
|
211
196
|
else:
|
|
212
|
-
init_data_body += f"{attr}: Union[
|
|
197
|
+
init_data_body += f"{attr}: Union[StrPipeVar, object]\n"
|
|
213
198
|
elif attr == "lambda":
|
|
214
199
|
init_data_body += f"# {attr}: {value}\n"
|
|
215
200
|
else:
|
|
216
201
|
init_data_body += f"{attr}: {value}\n"
|
|
217
202
|
return shape_members, init_data_body
|
|
218
203
|
|
|
219
|
-
def generate_data_shape_string_body(
|
|
220
|
-
self, shape, resource_plan, required_override=(), add_shapes_prefix=True
|
|
221
|
-
):
|
|
204
|
+
def generate_data_shape_string_body(self, shape, resource_plan, required_override=()):
|
|
222
205
|
return self.generate_data_shape_members_and_string_body(
|
|
223
|
-
shape, resource_plan, required_override
|
|
206
|
+
shape, resource_plan, required_override
|
|
224
207
|
)[1]
|
|
225
208
|
|
|
226
|
-
def generate_data_shape_members(
|
|
227
|
-
self, shape, resource_plan, required_override=(), add_shapes_prefix=True
|
|
228
|
-
):
|
|
209
|
+
def generate_data_shape_members(self, shape, resource_plan, required_override=()):
|
|
229
210
|
return self.generate_data_shape_members_and_string_body(
|
|
230
|
-
shape, resource_plan, required_override
|
|
211
|
+
shape, resource_plan, required_override
|
|
231
212
|
)[0]
|
|
232
213
|
|
|
233
214
|
@lru_cache
|
|
234
|
-
def generate_shape_members(self, shape, required_override=()
|
|
215
|
+
def generate_shape_members(self, shape, required_override=()):
|
|
235
216
|
shape_dict = self.combined_shapes[shape]
|
|
236
217
|
members = shape_dict["members"]
|
|
237
218
|
required_args = list(required_override) or shape_dict.get("required", [])
|
|
@@ -239,48 +220,29 @@ class ShapesExtractor:
|
|
|
239
220
|
# bring the required members in front
|
|
240
221
|
ordered_members = {key: members[key] for key in required_args if key in members}
|
|
241
222
|
ordered_members.update(members)
|
|
242
|
-
field_aliases = {}
|
|
243
|
-
|
|
244
223
|
for member_name, member_attrs in ordered_members.items():
|
|
245
224
|
member_shape_name = member_attrs["shape"]
|
|
246
225
|
if self.combined_shapes[member_shape_name]:
|
|
247
226
|
member_shape = self.combined_shapes[member_shape_name]
|
|
248
227
|
member_shape_type = member_shape["type"]
|
|
249
228
|
if member_shape_type == "structure":
|
|
250
|
-
|
|
251
|
-
member_shape_name = f"shapes.{member_shape_name}"
|
|
252
|
-
member_type = f"{member_shape_name}"
|
|
229
|
+
member_type = member_shape_name
|
|
253
230
|
elif member_shape_type == "list":
|
|
254
|
-
member_type = self._evaluate_list_type(member_shape
|
|
231
|
+
member_type = self._evaluate_list_type(member_shape)
|
|
255
232
|
elif member_shape_type == "map":
|
|
256
|
-
member_type = self._evaluate_map_type(member_shape
|
|
233
|
+
member_type = self._evaluate_map_type(member_shape)
|
|
257
234
|
else:
|
|
258
235
|
# Shape is a simple type like string
|
|
259
236
|
member_type = BASIC_JSON_TYPES_TO_PYTHON_TYPES[member_shape_type]
|
|
260
237
|
else:
|
|
261
238
|
raise Exception("The Shape definition mush exist. The Json Data might be corrupt")
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
if shape in SHAPES_WITH_JSON_FIELD_ALIAS and member_name == "Json":
|
|
266
|
-
updated_member_name_snake_case = "json_format"
|
|
267
|
-
field_aliases[updated_member_name_snake_case] = "json"
|
|
268
|
-
init_data_body[f"{updated_member_name_snake_case}"] = (
|
|
269
|
-
(
|
|
270
|
-
f"{member_type} = Field(alias='{field_aliases[updated_member_name_snake_case]}')"
|
|
271
|
-
)
|
|
272
|
-
if is_required
|
|
273
|
-
else f"Optional[{member_type}] = Field(default=Unassigned(), alias='json')"
|
|
274
|
-
)
|
|
239
|
+
member_name_snake_case = convert_to_snake_case(member_name)
|
|
240
|
+
if member_name in required_args:
|
|
241
|
+
init_data_body[f"{member_name_snake_case}"] = f"{member_type}"
|
|
275
242
|
else:
|
|
276
|
-
member_name_snake_case =
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
else:
|
|
280
|
-
init_data_body[f"{member_name_snake_case}"] = (
|
|
281
|
-
f"Optional[{member_type}] = Unassigned()"
|
|
282
|
-
)
|
|
283
|
-
|
|
243
|
+
init_data_body[f"{member_name_snake_case}"] = (
|
|
244
|
+
f"Optional[{member_type}] = Unassigned()"
|
|
245
|
+
)
|
|
284
246
|
return init_data_body
|
|
285
247
|
|
|
286
248
|
@lru_cache
|
|
@@ -40,7 +40,7 @@ def create(
|
|
|
40
40
|
cls,
|
|
41
41
|
{create_args}
|
|
42
42
|
session: Optional[Session] = None,
|
|
43
|
-
region: Optional[
|
|
43
|
+
region: Optional[StrPipeVar] = None,
|
|
44
44
|
) -> Optional["{resource_name}"]:
|
|
45
45
|
{docstring}
|
|
46
46
|
logger.info("Creating {resource_lower} resource.")
|
|
@@ -71,7 +71,7 @@ def create(
|
|
|
71
71
|
cls,
|
|
72
72
|
{create_args}
|
|
73
73
|
session: Optional[Session] = None,
|
|
74
|
-
region: Optional[
|
|
74
|
+
region: Optional[StrPipeVar] = None,
|
|
75
75
|
) -> Optional["{resource_name}"]:
|
|
76
76
|
{docstring}
|
|
77
77
|
logger.info("Creating {resource_lower} resource.")
|
|
@@ -102,7 +102,7 @@ def load(
|
|
|
102
102
|
cls,
|
|
103
103
|
{import_args}
|
|
104
104
|
session: Optional[Session] = None,
|
|
105
|
-
region: Optional[
|
|
105
|
+
region: Optional[StrPipeVar] = None,
|
|
106
106
|
) -> Optional["{resource_name}"]:
|
|
107
107
|
{docstring}
|
|
108
108
|
logger.info(f"Importing {resource_lower} resource.")
|
|
@@ -214,7 +214,7 @@ def get(
|
|
|
214
214
|
cls,
|
|
215
215
|
{describe_args}
|
|
216
216
|
session: Optional[Session] = None,
|
|
217
|
-
region: Optional[
|
|
217
|
+
region: Optional[StrPipeVar] = None,
|
|
218
218
|
) -> Optional["{resource_name}"]:
|
|
219
219
|
{docstring}
|
|
220
220
|
operation_input_args = {{
|
|
@@ -454,7 +454,7 @@ if "delete_failed" in current_status.lower() or "deletefailed" in current_status
|
|
|
454
454
|
|
|
455
455
|
DELETED_STATUS_CHECK = """
|
|
456
456
|
if current_status.lower() == "deleted":
|
|
457
|
-
|
|
457
|
+
logger.info("Resource was deleted.")
|
|
458
458
|
return
|
|
459
459
|
"""
|
|
460
460
|
|
|
@@ -504,7 +504,7 @@ def get_all(
|
|
|
504
504
|
cls,
|
|
505
505
|
{get_all_args}
|
|
506
506
|
session: Optional[Session] = None,
|
|
507
|
-
region: Optional[
|
|
507
|
+
region: Optional[StrPipeVar] = None,
|
|
508
508
|
) -> ResourceIterator["{resource}"]:
|
|
509
509
|
{docstring}
|
|
510
510
|
client = Base.get_sagemaker_client(session=session, region_name=region, service_name="{service_name}")
|
|
@@ -512,7 +512,6 @@ def get_all(
|
|
|
512
512
|
operation_input_args = {{
|
|
513
513
|
{operation_input_args}
|
|
514
514
|
}}
|
|
515
|
-
{extract_name_mapping}
|
|
516
515
|
{custom_key_mapping}
|
|
517
516
|
# serialize the input request
|
|
518
517
|
operation_input_args = serialize(operation_input_args)
|
|
@@ -529,7 +528,7 @@ GET_ALL_METHOD_NO_ARGS_TEMPLATE = '''
|
|
|
529
528
|
def get_all(
|
|
530
529
|
cls,
|
|
531
530
|
session: Optional[Session] = None,
|
|
532
|
-
region: Optional[
|
|
531
|
+
region: Optional[StrPipeVar] = None,
|
|
533
532
|
) -> ResourceIterator["{resource}"]:
|
|
534
533
|
"""
|
|
535
534
|
Get all {resource} resources.
|
|
@@ -543,7 +542,6 @@ def get_all(
|
|
|
543
542
|
|
|
544
543
|
"""
|
|
545
544
|
client = Base.get_sagemaker_client(session=session, region_name=region, service_name="{service_name}")
|
|
546
|
-
{extract_name_mapping}
|
|
547
545
|
{custom_key_mapping}
|
|
548
546
|
return ResourceIterator(
|
|
549
547
|
{resource_iterator_args}
|
|
@@ -602,7 +600,8 @@ DESERIALIZE_INPUT_AND_RESPONSE_TO_CLS_TEMPLATE = """
|
|
|
602
600
|
|
|
603
601
|
RESOURCE_BASE_CLASS_TEMPLATE = """
|
|
604
602
|
class Base(BaseModel):
|
|
605
|
-
model_config = ConfigDict(protected_namespaces=(), validate_assignment=True, extra="forbid")
|
|
603
|
+
model_config = ConfigDict(protected_namespaces=(), validate_assignment=True, extra="forbid", arbitrary_types_allowed=True)
|
|
604
|
+
config_manager: ClassVar[SageMakerConfig] = SageMakerConfig()
|
|
606
605
|
|
|
607
606
|
@classmethod
|
|
608
607
|
def get_sagemaker_client(cls, session = None, region_name = None, service_name = 'sagemaker'):
|
|
@@ -615,17 +614,17 @@ class Base(BaseModel):
|
|
|
615
614
|
try:
|
|
616
615
|
for configurable_attribute in config_schema_for_resource:
|
|
617
616
|
if kwargs.get(configurable_attribute) is None:
|
|
618
|
-
resource_defaults = load_default_configs_for_resource_name(
|
|
617
|
+
resource_defaults = Base.config_manager.load_default_configs_for_resource_name(
|
|
619
618
|
resource_name=resource_name
|
|
620
619
|
)
|
|
621
|
-
global_defaults = load_default_configs_for_resource_name(
|
|
620
|
+
global_defaults = Base.config_manager.load_default_configs_for_resource_name(
|
|
622
621
|
resource_name="GlobalDefaults"
|
|
623
622
|
)
|
|
624
|
-
if config_value :=
|
|
623
|
+
if config_value := Base.config_manager.get_resolved_config_value(
|
|
625
624
|
configurable_attribute, resource_defaults, global_defaults
|
|
626
625
|
):
|
|
627
626
|
resource_name = snake_to_pascal(configurable_attribute)
|
|
628
|
-
class_object =
|
|
627
|
+
class_object = globals()[resource_name]
|
|
629
628
|
kwargs[configurable_attribute] = class_object(**config_value)
|
|
630
629
|
except BaseException as e:
|
|
631
630
|
logger.debug("Could not load Default Configs. Continuing.", exc_info=True)
|
|
@@ -671,9 +670,7 @@ class Base(BaseModel):
|
|
|
671
670
|
@staticmethod
|
|
672
671
|
def _get_chained_attribute(item_value: Any):
|
|
673
672
|
resource_name = type(item_value).__name__
|
|
674
|
-
class_object = globals()
|
|
675
|
-
if class_object is None:
|
|
676
|
-
return item_value
|
|
673
|
+
class_object = globals()[resource_name]
|
|
677
674
|
return class_object(**Base.populate_chained_attributes(
|
|
678
675
|
resource_name=resource_name,
|
|
679
676
|
operation_input_args=vars(item_value)
|
|
@@ -714,3 +711,28 @@ Raises:
|
|
|
714
711
|
error_message = e.response['Error']['Message']
|
|
715
712
|
error_code = e.response['Error']['Code']
|
|
716
713
|
```"""
|
|
714
|
+
|
|
715
|
+
SERIALIZE_INPUT_ENDPOINT_TEMPLATE = """
|
|
716
|
+
use_serializer = False
|
|
717
|
+
if ((self.serializer is not None and self.deserializer is None) or
|
|
718
|
+
(self.serializer is None and self.deserializer is not None)):
|
|
719
|
+
raise ValueError("Both serializer and deserializer must be provided together, or neither should be provided")
|
|
720
|
+
if self.serializer is not None and self.deserializer is not None:
|
|
721
|
+
use_serializer = True
|
|
722
|
+
if use_serializer:
|
|
723
|
+
body = self.serializer.serialize(body)
|
|
724
|
+
operation_input_args = {{
|
|
725
|
+
{operation_input_args}
|
|
726
|
+
}}
|
|
727
|
+
# serialize the input request
|
|
728
|
+
operation_input_args = serialize(operation_input_args)
|
|
729
|
+
logger.debug(f"Serialized input request: {{operation_input_args}}")"""
|
|
730
|
+
|
|
731
|
+
DESERIALIZE_RESPONSE_ENDPOINT_TEMPLATE = """
|
|
732
|
+
transformed_response = transform(response, 'InvokeEndpointOutput')
|
|
733
|
+
# Deserialize the body if a deserializer is provided
|
|
734
|
+
if use_serializer:
|
|
735
|
+
body_content = transformed_response["body"]
|
|
736
|
+
deserialized_body = self.deserializer.deserialize(body_content, transformed_response["content_type"])
|
|
737
|
+
transformed_response["body"] = deserialized_body
|
|
738
|
+
return {return_type_conversion}(**transformed_response)"""
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
"""Training configuration and utilities."""
|
|
14
|
+
from __future__ import absolute_import
|