sagemaker-core 1.0.62__py3-none-any.whl → 2.3.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/__init__.py +2 -0
- 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 +2399 -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 +408 -3
- 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 +247 -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 +1220 -0
- sagemaker/core/git_utils.py +415 -0
- sagemaker/core/helper/pipeline_variable.py +82 -0
- sagemaker/core/helper/session_helper.py +2977 -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 +509 -0
- sagemaker/core/image_retriever/test.py +7 -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 +770 -0
- sagemaker/core/image_uri_config/huggingface-llm.json +1267 -0
- sagemaker/core/image_uri_config/huggingface-neuron.json +52 -0
- sagemaker/core/image_uri_config/huggingface-neuronx.json +686 -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-vllm-neuronx.json +38 -0
- sagemaker/core/image_uri_config/huggingface.json +2287 -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 +252 -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 +494 -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 +972 -0
- sagemaker/core/image_uris.py +816 -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 +197 -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/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 +501 -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 +171 -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 +423 -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 +246 -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 +1497 -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 +239 -0
- sagemaker/core/modules/constants.py +37 -0
- sagemaker/core/modules/distributed.py +182 -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 +205 -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 +1599 -0
- sagemaker/core/remote_function/__init__.py +19 -0
- sagemaker/core/remote_function/checkpoint_location.py +47 -0
- sagemaker/core/remote_function/client.py +1310 -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 +347 -0
- sagemaker/core/remote_function/core/serialization.py +410 -0
- sagemaker/core/remote_function/core/stored_function.py +223 -0
- sagemaker/core/remote_function/custom_file_filter.py +128 -0
- sagemaker/core/remote_function/errors.py +102 -0
- sagemaker/core/remote_function/invoke_function.py +167 -0
- sagemaker/core/remote_function/job.py +2121 -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 +19098 -10895
- 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 +5810 -1806
- 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 +82 -0
- sagemaker/core/telemetry/telemetry_logging.py +285 -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 +345 -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 +5979 -176
- {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 +27 -22
- 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 +514 -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.62.dist-info → sagemaker_core-2.3.1.dist-info}/METADATA +28 -9
- sagemaker_core-2.3.1.dist-info/RECORD +351 -0
- sagemaker_core-2.3.1.dist-info/top_level.txt +1 -0
- 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.62.dist-info/RECORD +0 -35
- sagemaker_core-1.0.62.dist-info/top_level.txt +0 -1
- {sagemaker_core → sagemaker/core/helper}/__init__.py +0 -0
- {sagemaker_core/helper → sagemaker/core/jumpstart/factory}/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/jumpstart/hub}/__init__.py +0 -0
- {sagemaker_core/main/code_injection → sagemaker/core/modules/local_core}/__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.62.dist-info → sagemaker_core-2.3.1.dist-info}/WHEEL +0 -0
- {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.3.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
"""Utilities for providing a more pythonic style wrapper of boto."""
|
|
@@ -0,0 +1,228 @@
|
|
|
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
|
+
"""Provides utilities for custom boto type objects."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
from sagemaker.core.apiutils import _boto_functions, _utils
|
|
17
|
+
from sagemaker.core.common_utils import format_tags
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ApiObject(object):
|
|
21
|
+
"""A Python class representation of a boto API object.
|
|
22
|
+
|
|
23
|
+
Converts boto dicts of 'UpperCamelCase' names to dicts into/from a Python object with standard
|
|
24
|
+
python members. Clients invoke to_boto on an instance of ApiObject to transform the ApiObject
|
|
25
|
+
into a boto representation. Clients invoke from_boto on a sub-class of ApiObject to
|
|
26
|
+
instantiate an instance of that class from a boto representation.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
# A map from boto 'UpperCamelCase' name to member name. If a boto name does not appear in
|
|
30
|
+
# this dict then it is converted to lower_snake_case.
|
|
31
|
+
_custom_boto_names = {}
|
|
32
|
+
|
|
33
|
+
# A map from name to an ApiObject subclass. Allows ApiObjects to contain ApiObject members.
|
|
34
|
+
_custom_boto_types = {}
|
|
35
|
+
|
|
36
|
+
def __init__(self, **kwargs):
|
|
37
|
+
"""Init ApiObject."""
|
|
38
|
+
self.__dict__.update(kwargs)
|
|
39
|
+
|
|
40
|
+
@classmethod
|
|
41
|
+
def _boto_ignore(cls):
|
|
42
|
+
"""Response fields to ignore by default."""
|
|
43
|
+
return ["ResponseMetadata"]
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_boto(cls, boto_dict, **kwargs):
|
|
47
|
+
"""Construct an instance of this ApiObject from a boto response.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
boto_dict (dict): A dictionary of a boto response.
|
|
51
|
+
**kwargs: Arbitrary keyword arguments
|
|
52
|
+
"""
|
|
53
|
+
if boto_dict is None:
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
boto_dict = {k: v for k, v in boto_dict.items() if k not in cls._boto_ignore()}
|
|
57
|
+
custom_boto_names_to_member_names = {a: b for b, a in cls._custom_boto_names.items()}
|
|
58
|
+
cls_kwargs = _boto_functions.from_boto(
|
|
59
|
+
boto_dict, custom_boto_names_to_member_names, cls._custom_boto_types
|
|
60
|
+
)
|
|
61
|
+
cls_kwargs.update(kwargs)
|
|
62
|
+
return cls(**cls_kwargs)
|
|
63
|
+
|
|
64
|
+
@classmethod
|
|
65
|
+
def to_boto(cls, obj):
|
|
66
|
+
"""Convert an object to a boto representation.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
obj (dict): The object to convert to boto.
|
|
70
|
+
"""
|
|
71
|
+
if not isinstance(obj, dict):
|
|
72
|
+
var_dict = vars(obj)
|
|
73
|
+
else:
|
|
74
|
+
var_dict = obj
|
|
75
|
+
return _boto_functions.to_boto(var_dict, cls._custom_boto_names, cls._custom_boto_types)
|
|
76
|
+
|
|
77
|
+
def __eq__(self, other):
|
|
78
|
+
"""Return True if this ApiObject equals other."""
|
|
79
|
+
if isinstance(other, self.__class__):
|
|
80
|
+
return self.__dict__ == other.__dict__
|
|
81
|
+
return False
|
|
82
|
+
|
|
83
|
+
def __ne__(self, other):
|
|
84
|
+
"""Return True if this ApiObject does not equal other."""
|
|
85
|
+
return not self.__eq__(other)
|
|
86
|
+
|
|
87
|
+
def __hash__(self):
|
|
88
|
+
"""Return a hashcode for this ApiObject."""
|
|
89
|
+
return hash(tuple(sorted(self.__dict__.items())))
|
|
90
|
+
|
|
91
|
+
def __repr__(self):
|
|
92
|
+
"""Return a string representation of this ApiObject."""
|
|
93
|
+
return "{}({})".format(
|
|
94
|
+
type(self).__name__,
|
|
95
|
+
",".join(["{}={}".format(k, repr(v)) for k, v in vars(self).items()]),
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class Record(ApiObject):
|
|
100
|
+
"""A boto based Active Record class based on convention of CRUD operations."""
|
|
101
|
+
|
|
102
|
+
# update / delete / list method names
|
|
103
|
+
_boto_update_method = None
|
|
104
|
+
_boto_delete_method = None
|
|
105
|
+
_boto_list_method = None
|
|
106
|
+
|
|
107
|
+
# List of member names to convert to boto representations and pass to the update method.
|
|
108
|
+
_boto_update_members = []
|
|
109
|
+
|
|
110
|
+
# List of member names to convert to boto representations and pass to the delete method.
|
|
111
|
+
_boto_delete_members = []
|
|
112
|
+
|
|
113
|
+
def __init__(self, sagemaker_session=None, **kwargs):
|
|
114
|
+
"""Init Record."""
|
|
115
|
+
self.sagemaker_session = sagemaker_session
|
|
116
|
+
super(Record, self).__init__(**kwargs)
|
|
117
|
+
|
|
118
|
+
@classmethod
|
|
119
|
+
def _list(
|
|
120
|
+
cls,
|
|
121
|
+
boto_list_method,
|
|
122
|
+
list_item_factory,
|
|
123
|
+
boto_list_items_name,
|
|
124
|
+
boto_next_token_name="NextToken",
|
|
125
|
+
sagemaker_session=None,
|
|
126
|
+
**kwargs,
|
|
127
|
+
):
|
|
128
|
+
"""List objects from the SageMaker API."""
|
|
129
|
+
sagemaker_session = sagemaker_session or _utils.default_session()
|
|
130
|
+
sagemaker_client = sagemaker_session.sagemaker_client
|
|
131
|
+
next_token = None
|
|
132
|
+
try:
|
|
133
|
+
while True:
|
|
134
|
+
list_request_kwargs = _boto_functions.to_boto(
|
|
135
|
+
kwargs, cls._custom_boto_names, cls._custom_boto_types
|
|
136
|
+
)
|
|
137
|
+
if next_token:
|
|
138
|
+
list_request_kwargs[boto_next_token_name] = next_token
|
|
139
|
+
list_method = getattr(sagemaker_client, boto_list_method)
|
|
140
|
+
list_method_response = list_method(**list_request_kwargs)
|
|
141
|
+
list_items = list_method_response.get(boto_list_items_name, [])
|
|
142
|
+
next_token = list_method_response.get(boto_next_token_name)
|
|
143
|
+
for item in list_items:
|
|
144
|
+
yield list_item_factory(item)
|
|
145
|
+
if not next_token:
|
|
146
|
+
break
|
|
147
|
+
except StopIteration:
|
|
148
|
+
return
|
|
149
|
+
|
|
150
|
+
@classmethod
|
|
151
|
+
def _search(
|
|
152
|
+
cls,
|
|
153
|
+
search_resource,
|
|
154
|
+
search_item_factory,
|
|
155
|
+
boto_next_token_name="NextToken",
|
|
156
|
+
sagemaker_session=None,
|
|
157
|
+
**kwargs,
|
|
158
|
+
):
|
|
159
|
+
"""Search for objects with the SageMaker API."""
|
|
160
|
+
sagemaker_session = sagemaker_session or _utils.default_session()
|
|
161
|
+
sagemaker_client = sagemaker_session.sagemaker_client
|
|
162
|
+
|
|
163
|
+
next_token = None
|
|
164
|
+
try:
|
|
165
|
+
while True:
|
|
166
|
+
search_request_kwargs = _boto_functions.to_boto(
|
|
167
|
+
kwargs, cls._custom_boto_names, cls._custom_boto_types
|
|
168
|
+
)
|
|
169
|
+
search_request_kwargs["Resource"] = search_resource
|
|
170
|
+
if next_token:
|
|
171
|
+
search_request_kwargs[boto_next_token_name] = next_token
|
|
172
|
+
search_method = getattr(sagemaker_client, "search")
|
|
173
|
+
search_method_response = search_method(**search_request_kwargs)
|
|
174
|
+
search_items = search_method_response.get("Results", [])
|
|
175
|
+
next_token = search_method_response.get(boto_next_token_name)
|
|
176
|
+
for item in search_items:
|
|
177
|
+
# _TrialComponent class in experiments module is not public currently
|
|
178
|
+
class_name = cls.__name__.lstrip("_")
|
|
179
|
+
if class_name in item:
|
|
180
|
+
yield search_item_factory(item[class_name])
|
|
181
|
+
if not next_token:
|
|
182
|
+
break
|
|
183
|
+
except StopIteration:
|
|
184
|
+
return
|
|
185
|
+
|
|
186
|
+
@classmethod
|
|
187
|
+
def _construct(cls, boto_method_name, sagemaker_session=None, **kwargs):
|
|
188
|
+
"""Create and invoke a SageMaker API call request."""
|
|
189
|
+
sagemaker_session = sagemaker_session or _utils.default_session()
|
|
190
|
+
instance = cls(sagemaker_session, **kwargs)
|
|
191
|
+
return instance._invoke_api(boto_method_name, kwargs)
|
|
192
|
+
|
|
193
|
+
def _set_tags(self, resource_arn=None, tags=None):
|
|
194
|
+
"""Set tags on this ApiObject.
|
|
195
|
+
|
|
196
|
+
Args:
|
|
197
|
+
resource_arn (str): The arn of the Record
|
|
198
|
+
tags (Optional[Tags]): An array of Tag objects that set to Record
|
|
199
|
+
|
|
200
|
+
Returns:
|
|
201
|
+
A list of key, value pair objects. i.e. [{"key":"value"}]
|
|
202
|
+
"""
|
|
203
|
+
tag_list = self.sagemaker_session.sagemaker_client.add_tags(
|
|
204
|
+
ResourceArn=resource_arn, Tags=format_tags(tags)
|
|
205
|
+
)["Tags"]
|
|
206
|
+
return tag_list
|
|
207
|
+
|
|
208
|
+
def with_boto(self, boto_dict):
|
|
209
|
+
"""Update this ApiObject with a boto response.
|
|
210
|
+
|
|
211
|
+
Args:
|
|
212
|
+
boto_dict (dict): A dictionary of a boto response.
|
|
213
|
+
"""
|
|
214
|
+
custom_boto_names_to_member_names = {a: b for b, a in self._custom_boto_names.items()}
|
|
215
|
+
self.__dict__.update(
|
|
216
|
+
**_boto_functions.from_boto(
|
|
217
|
+
boto_dict, custom_boto_names_to_member_names, self._custom_boto_types
|
|
218
|
+
)
|
|
219
|
+
)
|
|
220
|
+
return self
|
|
221
|
+
|
|
222
|
+
def _invoke_api(self, boto_method, boto_method_members):
|
|
223
|
+
"""Invoke a SageMaker API."""
|
|
224
|
+
api_values = {k: v for k, v in vars(self).items() if k in boto_method_members}
|
|
225
|
+
api_kwargs = self.to_boto(api_values)
|
|
226
|
+
api_method = getattr(self.sagemaker_session.sagemaker_client, boto_method)
|
|
227
|
+
api_boto_response = api_method(**api_kwargs)
|
|
228
|
+
return self.with_boto(api_boto_response)
|
|
@@ -0,0 +1,130 @@
|
|
|
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
|
+
"""Provides utilities for converting between python style and boto style."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
import re
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def to_camel_case(snake_case):
|
|
20
|
+
"""Convert a snake case string to camel case.
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
snake_case (str): String to convert to camel case.
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
str: String converted to camel case.
|
|
27
|
+
"""
|
|
28
|
+
return "".join([x.title() for x in snake_case.split("_")])
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def to_pascal_case(snake_case):
|
|
32
|
+
"""Convert a snake case string to PascalCase.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
snake_case (str): String to convert to PascalCase.
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
str: String converted to PascalCase.
|
|
39
|
+
"""
|
|
40
|
+
return "".join(word.capitalize() for word in snake_case.split("_"))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def to_snake_case(name):
|
|
44
|
+
"""Convert a camel case string to snake case.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
name (str): String to convert to snake case.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
str: String converted to snake case.
|
|
51
|
+
"""
|
|
52
|
+
s1 = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", name)
|
|
53
|
+
return re.sub("([a-z0-9])([A-Z])", r"\1_\2", s1).lower()
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def from_boto(boto_dict, boto_name_to_member_name, member_name_to_type):
|
|
57
|
+
"""Convert an UpperCamelCase boto response to a snake case representation.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
boto_dict (dict[str, ?]): A boto response dictionary.
|
|
61
|
+
boto_name_to_member_name (dict[str, str]): A map from boto name to snake_case name.
|
|
62
|
+
If a given boto name is not in the map then a default mapping is applied.
|
|
63
|
+
member_name_to_type (dict[str, (_base_types.ApiObject, boolean)]): A map from snake case
|
|
64
|
+
name to a type description tuple. The first element of the tuple, a subclass of
|
|
65
|
+
ApiObject, is the type of the mapped object. The second element indicates whether the
|
|
66
|
+
mapped element is a collection or singleton.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
dict: Boto response in snake case.
|
|
70
|
+
"""
|
|
71
|
+
from_boto_values = {}
|
|
72
|
+
for boto_name, boto_value in boto_dict.items():
|
|
73
|
+
# Convert the boto_name to a snake-case name by preferentially looking up the boto name in
|
|
74
|
+
# boto_name_to_member_name before defaulting to the snake case representation
|
|
75
|
+
member_name = boto_name_to_member_name.get(boto_name, to_snake_case(boto_name))
|
|
76
|
+
|
|
77
|
+
# If the member name maps to a subclass of _base_types.ApiObject
|
|
78
|
+
# (i.e. it's in member_name_to_type), then transform its boto dictionary using that type:
|
|
79
|
+
if member_name in member_name_to_type:
|
|
80
|
+
api_type, is_collection = member_name_to_type[member_name]
|
|
81
|
+
if is_collection:
|
|
82
|
+
if isinstance(boto_value, dict):
|
|
83
|
+
member_value = {
|
|
84
|
+
key: api_type.from_boto(value) for key, value in boto_value.items()
|
|
85
|
+
}
|
|
86
|
+
else:
|
|
87
|
+
member_value = [api_type.from_boto(item) for item in boto_value]
|
|
88
|
+
else:
|
|
89
|
+
member_value = api_type.from_boto(boto_value)
|
|
90
|
+
# If the member name does not have a custom type definition then simply assign it the
|
|
91
|
+
# boto value. Appropriate if the type is simple and requires not further conversion (e.g.
|
|
92
|
+
# a number or list of strings).
|
|
93
|
+
else:
|
|
94
|
+
member_value = boto_value
|
|
95
|
+
from_boto_values[member_name] = member_value
|
|
96
|
+
return from_boto_values
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def to_boto(member_vars, member_name_to_boto_name, member_name_to_type):
|
|
100
|
+
"""Convert a dict of of snake case names to values into a boto UpperCamelCase representation.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
member_vars dict[str, ?]: A map from snake case name to value.
|
|
104
|
+
member_name_to_boto_name dict[str, ?]: A map from snake_case name to boto name.
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
dict: boto dict converted to snake case
|
|
108
|
+
|
|
109
|
+
"""
|
|
110
|
+
to_boto_values = {}
|
|
111
|
+
# Strip out all entries in member_vars that have a None value. None values are treated as
|
|
112
|
+
# not having a value
|
|
113
|
+
# set, required as API operations can have optional parameters that may not take a null value.
|
|
114
|
+
member_vars = {k: v for k, v in member_vars.items() if v is not None}
|
|
115
|
+
|
|
116
|
+
# Iterate over each snake_case name and its value and map to a camel case name. If the value
|
|
117
|
+
# is an ApiObject subclass then recursively map its entries.
|
|
118
|
+
for member_name, member_value in member_vars.items():
|
|
119
|
+
boto_name = member_name_to_boto_name.get(member_name, to_camel_case(member_name))
|
|
120
|
+
api_type, is_api_collection_type = member_name_to_type.get(member_name, (None, None))
|
|
121
|
+
if is_api_collection_type and isinstance(member_value, dict):
|
|
122
|
+
boto_value = {
|
|
123
|
+
k: api_type.to_boto(v) if api_type else v for k, v in member_value.items()
|
|
124
|
+
}
|
|
125
|
+
elif is_api_collection_type and isinstance(member_value, list):
|
|
126
|
+
boto_value = [api_type.to_boto(v) if api_type else v for v in member_value]
|
|
127
|
+
else:
|
|
128
|
+
boto_value = api_type.to_boto(member_value) if api_type else member_value
|
|
129
|
+
to_boto_values[boto_name] = boto_value
|
|
130
|
+
return to_boto_values
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
"""Provides utilities for instantiating dependencies to boto-python objects."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
import random
|
|
17
|
+
import time
|
|
18
|
+
from sagemaker.core.helper.session_helper import Session
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def suffix():
|
|
22
|
+
"""Generate a random string of length 4."""
|
|
23
|
+
alph = "abcdefghijklmnopqrstuvwxyz"
|
|
24
|
+
return "-".join([time.strftime("%Y-%m-%d-%H%M%S"), "".join(random.sample(alph, 4))])
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def name(prefix):
|
|
28
|
+
"""Generate a new name with the specified prefix."""
|
|
29
|
+
return "-".join([prefix, suffix()])
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def default_session():
|
|
33
|
+
"""Create a default session."""
|
|
34
|
+
return Session()
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
"""Backward compatibility module for base deserializers.
|
|
14
|
+
|
|
15
|
+
This module provides backward compatibility for code importing from
|
|
16
|
+
sagemaker.core.base_deserializers. The actual implementation is in
|
|
17
|
+
sagemaker.core.deserializers.
|
|
18
|
+
|
|
19
|
+
.. deprecated:: 3.0.0
|
|
20
|
+
Use :mod:`sagemaker.core.deserializers` instead.
|
|
21
|
+
"""
|
|
22
|
+
from __future__ import absolute_import
|
|
23
|
+
|
|
24
|
+
import warnings
|
|
25
|
+
|
|
26
|
+
# Re-export all deserializers from the correct location
|
|
27
|
+
from sagemaker.core.deserializers import * # noqa: F401, F403
|
|
28
|
+
|
|
29
|
+
# Issue deprecation warning
|
|
30
|
+
warnings.warn(
|
|
31
|
+
"Importing from sagemaker.core.base_deserializers is deprecated. "
|
|
32
|
+
"Use sagemaker.core.deserializers instead.",
|
|
33
|
+
DeprecationWarning,
|
|
34
|
+
stacklevel=2,
|
|
35
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
"""Backward compatibility module for base serializers.
|
|
14
|
+
|
|
15
|
+
This module provides backward compatibility for code importing from
|
|
16
|
+
sagemaker.core.base_serializers. The actual implementation is in
|
|
17
|
+
sagemaker.core.serializers.
|
|
18
|
+
|
|
19
|
+
.. deprecated:: 3.0.0
|
|
20
|
+
Use :mod:`sagemaker.core.serializers` instead.
|
|
21
|
+
"""
|
|
22
|
+
from __future__ import absolute_import
|
|
23
|
+
|
|
24
|
+
import warnings
|
|
25
|
+
|
|
26
|
+
# Re-export all serializers from the correct location
|
|
27
|
+
from sagemaker.core.serializers import * # noqa: F401, F403
|
|
28
|
+
|
|
29
|
+
# Issue deprecation warning
|
|
30
|
+
warnings.warn(
|
|
31
|
+
"Importing from sagemaker.core.base_serializers is deprecated. "
|
|
32
|
+
"Use sagemaker.core.serializers instead.",
|
|
33
|
+
DeprecationWarning,
|
|
34
|
+
stacklevel=2,
|
|
35
|
+
)
|