diff options
| author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
|---|---|---|
| committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
| commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
| tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets | |
| parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
| download | gn-ai-master.tar.gz | |
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets')
18 files changed, 732 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/__init__.py new file mode 100644 index 00000000..29a4fcd3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/__init__.py @@ -0,0 +1,5 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/artifact.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/artifact.py new file mode 100644 index 00000000..fc107a78 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/artifact.py @@ -0,0 +1,24 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import fields, post_load + +from azure.ai.ml.constants._common import BASE_PATH_CONTEXT_KEY + +from .asset import AssetSchema + +module_logger = logging.getLogger(__name__) + + +class ArtifactSchema(AssetSchema): + datastore = fields.Str(metadata={"description": "Name of the datastore to upload to."}, required=False) + + @post_load + def make(self, data, **kwargs): + data[BASE_PATH_CONTEXT_KEY] = self.context[BASE_PATH_CONTEXT_KEY] + return data diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/asset.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/asset.py new file mode 100644 index 00000000..09edb115 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/asset.py @@ -0,0 +1,42 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import ValidationError, fields +from marshmallow.decorators import pre_load + +from azure.ai.ml._schema.core.auto_delete_setting import AutoDeleteSettingSchema +from azure.ai.ml._schema.core.fields import NestedField, VersionField, ExperimentalField +from azure.ai.ml._schema.job.creation_context import CreationContextSchema + +from ..core.resource import ResourceSchema + +module_logger = logging.getLogger(__name__) + + +class AssetSchema(ResourceSchema): + version = VersionField() + creation_context = NestedField(CreationContextSchema, dump_only=True) + latest_version = fields.Str(dump_only=True) + auto_delete_setting = ExperimentalField(NestedField(AutoDeleteSettingSchema)) + + +class AnonymousAssetSchema(AssetSchema): + version = VersionField(dump_only=True) + name = fields.Str(dump_only=True) + + @pre_load + def warn_if_named(self, data, **kwargs): + if isinstance(data, str): + raise ValidationError("Anonymous assets must be defined inline") + name = data.pop("name", None) + data.pop("version", None) + if name is not None: + module_logger.warning( + "Warning: the provided asset name '%s' will not be used for anonymous registration.", name + ) + return data diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/code_asset.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/code_asset.py new file mode 100644 index 00000000..0610caff --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/code_asset.py @@ -0,0 +1,47 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import ValidationError, fields, post_load, pre_dump + +from azure.ai.ml._schema.core.fields import ArmStr +from azure.ai.ml.constants._common import BASE_PATH_CONTEXT_KEY, AzureMLResourceType + +from .artifact import ArtifactSchema +from .asset import AnonymousAssetSchema + +module_logger = logging.getLogger(__name__) + + +class CodeAssetSchema(ArtifactSchema): + id = ArmStr(azureml_type=AzureMLResourceType.CODE, dump_only=True) + path = fields.Str( + metadata={ + "description": "A local path or a Blob URI pointing to a file or directory where code asset is located." + } + ) + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets import Code + + return Code(base_path=self.context[BASE_PATH_CONTEXT_KEY], **data) + + +class AnonymousCodeAssetSchema(CodeAssetSchema, AnonymousAssetSchema): + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets import Code + + return Code(is_anonymous=True, base_path=self.context[BASE_PATH_CONTEXT_KEY], **data) + + @pre_dump + def validate(self, data, **kwargs): + # AnonymousCodeAssetSchema does not support None or arm string(fall back to ArmVersionedStr) + if data is None or not hasattr(data, "get"): + raise ValidationError("Code cannot be None") + return data diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/data.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/data.py new file mode 100644 index 00000000..e14afd9b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/data.py @@ -0,0 +1,25 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +from marshmallow import fields, validate + +from azure.ai.ml.constants._common import AssetTypes + +from .artifact import ArtifactSchema +from .asset import AnonymousAssetSchema + + +class DataSchema(ArtifactSchema): + path = fields.Str(metadata={"description": "URI pointing to a file or folder."}, required=True) + properties = fields.Dict(dump_only=True) + type = fields.Str( + metadata={"description": "the type of data. Valid values are uri_file, uri_folder, or mltable."}, + validate=validate.OneOf([AssetTypes.URI_FILE, AssetTypes.URI_FOLDER, AssetTypes.MLTABLE]), + dump_default=AssetTypes.URI_FOLDER, + error_messages={"validator_failed": "value must be uri_file, uri_folder, or mltable."}, + ) + + +class AnonymousDataSchema(DataSchema, AnonymousAssetSchema): + pass diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/environment.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/environment.py new file mode 100644 index 00000000..3ca5333f --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/environment.py @@ -0,0 +1,160 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import ValidationError, fields, post_load, pre_dump, pre_load + +from azure.ai.ml._restclient.v2022_05_01.models import ( + InferenceContainerProperties, + OperatingSystemType, + Route, +) +from azure.ai.ml._schema.core.fields import ExperimentalField, NestedField, UnionField, LocalPathField +from azure.ai.ml._schema.core.intellectual_property import IntellectualPropertySchema + +from azure.ai.ml._schema.core.schema import PatchedSchemaMeta +from azure.ai.ml.constants._common import ( + ANONYMOUS_ENV_NAME, + BASE_PATH_CONTEXT_KEY, + CREATE_ENVIRONMENT_ERROR_MESSAGE, + AzureMLResourceType, + YAMLRefDocLinks, +) + +from ..core.fields import ArmStr, RegistryStr, StringTransformedEnum, VersionField +from .asset import AnonymousAssetSchema, AssetSchema + +module_logger = logging.getLogger(__name__) + + +class BuildContextSchema(metaclass=PatchedSchemaMeta): + dockerfile_path = fields.Str() + path = UnionField( + [ + LocalPathField(), + # build context also support http url + fields.URL(), + ] + ) + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets.environment import BuildContext + + return BuildContext(**data) + + +class RouteSchema(metaclass=PatchedSchemaMeta): + port = fields.Int(required=True) + path = fields.Str(required=True) + + @post_load + def make(self, data, **kwargs): + return Route(**data) + + +class InferenceConfigSchema(metaclass=PatchedSchemaMeta): + liveness_route = NestedField(RouteSchema, required=True) + scoring_route = NestedField(RouteSchema, required=True) + readiness_route = NestedField(RouteSchema, required=True) + + @post_load + def make(self, data, **kwargs): + return InferenceContainerProperties(**data) + + +class _BaseEnvironmentSchema(AssetSchema): + id = UnionField( + [ + RegistryStr(dump_only=True), + ArmStr(azureml_type=AzureMLResourceType.ENVIRONMENT, dump_only=True), + ] + ) + build = NestedField( + BuildContextSchema, + metadata={"description": "Docker build context to create the environment. Mutually exclusive with image"}, + ) + image = fields.Str() + conda_file = UnionField([fields.Raw(), fields.Str()]) + inference_config = NestedField(InferenceConfigSchema) + os_type = StringTransformedEnum( + allowed_values=[OperatingSystemType.Linux, OperatingSystemType.Windows], + required=False, + ) + datastore = fields.Str( + metadata={ + "description": "Name of the datastore to upload to.", + "arm_type": AzureMLResourceType.DATASTORE, + }, + required=False, + ) + intellectual_property = ExperimentalField(NestedField(IntellectualPropertySchema), dump_only=True) + + @pre_load + def pre_load(self, data, **kwargs): + if isinstance(data, str): + raise ValidationError("Environment schema data cannot be a string") + # validates that "channels" and "dependencies" are not included in the data creation. + # These properties should only be on environment conda files not in the environment creation file + if "channels" in data or "dependencies" in data: + environmentMessage = CREATE_ENVIRONMENT_ERROR_MESSAGE.format(YAMLRefDocLinks.ENVIRONMENT) + raise ValidationError(environmentMessage) + return data + + @pre_dump + def validate(self, data, **kwargs): + from azure.ai.ml.entities._assets import Environment + + if isinstance(data, Environment): + if data._intellectual_property: # pylint: disable=protected-access + ipp_field = data._intellectual_property # pylint: disable=protected-access + if ipp_field: + setattr(data, "intellectual_property", ipp_field) + return data + if data is None or not hasattr(data, "get"): + raise ValidationError("Environment cannot be None") + return data + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets import Environment + + try: + obj = Environment(base_path=self.context[BASE_PATH_CONTEXT_KEY], **data) + except FileNotFoundError as e: + # Environment.__init__() will raise FileNotFoundError if build.path is not found when trying to calculate + # the hash for anonymous. Raise ValidationError instead to collect all errors in schema validation. + raise ValidationError("Environment file not found: {}".format(e)) from e + return obj + + +class EnvironmentSchema(_BaseEnvironmentSchema): + name = fields.Str(required=True) + version = VersionField() + + +class AnonymousEnvironmentSchema(_BaseEnvironmentSchema, AnonymousAssetSchema): + @pre_load + # pylint: disable-next=docstring-missing-param,docstring-missing-return,docstring-missing-rtype + def trim_dump_only(self, data, **kwargs): + """trim_dump_only in PathAwareSchema removes all properties which are dump only. + + By the time we reach this schema name and version properties are removed so no warning is shown. This method + overrides trim_dump_only in PathAwareSchema to check for name and version and raise warning if present. And then + calls the it + """ + if isinstance(data, str) or data is None: + return data + name = data.pop("name", None) + data.pop("version", None) + # CliV2AnonymousEnvironment is a default name for anonymous environment + if name is not None and name != ANONYMOUS_ENV_NAME: + module_logger.warning( + "Warning: the provided asset name '%s' will not be used for anonymous registration", + name, + ) + return super(AnonymousEnvironmentSchema, self).trim_dump_only(data, **kwargs) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/federated_learning_silo.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/federated_learning_silo.py new file mode 100644 index 00000000..80c4ba7e --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/federated_learning_silo.py @@ -0,0 +1,24 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- +# # TODO determine where this file should live. +from marshmallow import fields + +from azure.ai.ml._schema.core.resource import YamlFileSchema +from azure.ai.ml._utils._experimental import experimental +from azure.ai.ml._schema.job.input_output_fields_provider import InputsField + + +# Inherits from YamlFileSchema instead of something for specific because +# this does not represent a server-side resource. +@experimental +class FederatedLearningSiloSchema(YamlFileSchema): + """The YAML definition of a silo for describing a federated learning data target. + Unlike most SDK/CLI schemas, this schema does not represent an AML resource; + it is merely used to simplify the loading and validation of silos which are used + to create FL pipeline nodes. + """ + + compute = fields.Str() + datastore = fields.Str() + inputs = InputsField() diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/index.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/index.py new file mode 100644 index 00000000..4a97c0ab --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/index.py @@ -0,0 +1,30 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + + +from marshmallow import fields, post_load + +from azure.ai.ml._schema.core.fields import ArmStr +from azure.ai.ml.constants._common import BASE_PATH_CONTEXT_KEY, AzureMLResourceType + +from .artifact import ArtifactSchema + + +class IndexAssetSchema(ArtifactSchema): + name = fields.Str(required=True, allow_none=False) + id = ArmStr(azureml_type=AzureMLResourceType.INDEX, dump_only=True) + stage = fields.Str(default="Development") + path = fields.Str( + required=True, + metadata={ + "description": "A local path or a Blob URI pointing to a file or directory where index files are located." + }, + ) + properties = fields.Dict(keys=fields.Str(), values=fields.Str()) + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets import Index + + return Index(base_path=self.context[BASE_PATH_CONTEXT_KEY], **data) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/model.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/model.py new file mode 100644 index 00000000..60c17f63 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/model.py @@ -0,0 +1,65 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import fields, post_load, pre_dump + +from azure.ai.ml._schema.core.fields import ExperimentalField, NestedField +from azure.ai.ml._schema.core.intellectual_property import IntellectualPropertySchema +from azure.ai.ml._schema.core.schema import PathAwareSchema +from azure.ai.ml._schema.job import CreationContextSchema +from azure.ai.ml.constants._common import BASE_PATH_CONTEXT_KEY, AssetTypes, AzureMLResourceType + +from ..core.fields import ArmVersionedStr, StringTransformedEnum, VersionField + +module_logger = logging.getLogger(__name__) + + +class ModelSchema(PathAwareSchema): + name = fields.Str(required=True) + id = ArmVersionedStr(azureml_type=AzureMLResourceType.MODEL, dump_only=True) + type = StringTransformedEnum( + allowed_values=[ + AssetTypes.CUSTOM_MODEL, + AssetTypes.MLFLOW_MODEL, + AssetTypes.TRITON_MODEL, + ], + metadata={"description": "The storage format for this entity. Used for NCD."}, + ) + path = fields.Str() + version = VersionField() + description = fields.Str() + properties = fields.Dict() + tags = fields.Dict() + stage = fields.Str() + utc_time_created = fields.DateTime(format="iso", dump_only=True) + flavors = fields.Dict() + creation_context = NestedField(CreationContextSchema, dump_only=True) + job_name = fields.Str(dump_only=True) + latest_version = fields.Str(dump_only=True) + datastore = fields.Str(metadata={"description": "Name of the datastore to upload to."}, required=False) + intellectual_property = ExperimentalField(NestedField(IntellectualPropertySchema, required=False), dump_only=True) + system_metadata = fields.Dict() + + @pre_dump + def validate(self, data, **kwargs): + if data._intellectual_property: # pylint: disable=protected-access + ipp_field = data._intellectual_property # pylint: disable=protected-access + if ipp_field: + setattr(data, "intellectual_property", ipp_field) + return data + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets import Model + + return Model(base_path=self.context[BASE_PATH_CONTEXT_KEY], **data) + + +class AnonymousModelSchema(ModelSchema): + name = fields.Str() + version = VersionField() diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/__init__.py new file mode 100644 index 00000000..29a4fcd3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/__init__.py @@ -0,0 +1,5 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/base_environment_source.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/base_environment_source.py new file mode 100644 index 00000000..09e0a56c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/base_environment_source.py @@ -0,0 +1,23 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging +from marshmallow import fields, post_load +from azure.ai.ml._schema.core.schema import PathAwareSchema + + +module_logger = logging.getLogger(__name__) + + +class BaseEnvironmentSourceSchema(PathAwareSchema): + type = fields.Str() + resource_id = fields.Str() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities import BaseEnvironment + + return BaseEnvironment(**data) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/inference_server.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/inference_server.py new file mode 100644 index 00000000..c6e38331 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/inference_server.py @@ -0,0 +1,51 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument,no-else-return + +import logging + +from marshmallow import post_load +from azure.ai.ml._schema._deployment.code_configuration_schema import CodeConfigurationSchema +from azure.ai.ml._schema.core.fields import StringTransformedEnum, NestedField +from azure.ai.ml._schema.core.schema import PathAwareSchema +from azure.ai.ml.constants._common import InferenceServerType +from .online_inference_configuration import OnlineInferenceConfigurationSchema + + +module_logger = logging.getLogger(__name__) + + +class InferenceServerSchema(PathAwareSchema): + type = StringTransformedEnum( + allowed_values=[ + InferenceServerType.AZUREML_ONLINE, + InferenceServerType.AZUREML_BATCH, + InferenceServerType.CUSTOM, + InferenceServerType.TRITON, + ], + required=True, + ) + code_configuration = NestedField(CodeConfigurationSchema) # required for batch and online + inference_configuration = NestedField(OnlineInferenceConfigurationSchema) # required for custom and Triton + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities import ( + AzureMLOnlineInferencingServer, + AzureMLBatchInferencingServer, + CustomInferencingServer, + TritonInferencingServer, + ) + + if data["type"] == InferenceServerType.AZUREML_ONLINE: + return AzureMLOnlineInferencingServer(**data) + elif data["type"] == InferenceServerType.AZUREML_BATCH: + return AzureMLBatchInferencingServer(**data) + elif data["type"] == InferenceServerType.CUSTOM: + return CustomInferencingServer(**data) + elif data["type"] == InferenceServerType.TRITON: + return TritonInferencingServer(**data) + else: + return None diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_configuration.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_configuration.py new file mode 100644 index 00000000..0e5a54a5 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_configuration.py @@ -0,0 +1,30 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import fields, post_load +from azure.ai.ml._schema.core.schema import PathAwareSchema +from azure.ai.ml._schema.core.fields import StringTransformedEnum + + +module_logger = logging.getLogger(__name__) + + +class ModelConfigurationSchema(PathAwareSchema): + mode = StringTransformedEnum( + allowed_values=[ + "copy", + "download", + ] + ) + mount_path = fields.Str() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities import ModelConfiguration + + return ModelConfiguration(**data) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package.py new file mode 100644 index 00000000..142c85c8 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package.py @@ -0,0 +1,41 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import fields, post_load + +from azure.ai.ml._schema.core.schema import PathAwareSchema +from azure.ai.ml._schema.core.fields import UnionField, NestedField, StringTransformedEnum +from .inference_server import InferenceServerSchema +from .model_configuration import ModelConfigurationSchema +from .model_package_input import ModelPackageInputSchema +from .base_environment_source import BaseEnvironmentSourceSchema + +module_logger = logging.getLogger(__name__) + + +class ModelPackageSchema(PathAwareSchema): + target_environment = UnionField( + union_fields=[ + fields.Dict(keys=StringTransformedEnum(allowed_values=["name"]), values=fields.Str()), + fields.Str(required=True), + ] + ) + base_environment_source = NestedField(BaseEnvironmentSourceSchema) + inferencing_server = NestedField(InferenceServerSchema) + model_configuration = NestedField(ModelConfigurationSchema) + inputs = fields.List(NestedField(ModelPackageInputSchema)) + tags = fields.Dict() + environment_variables = fields.Dict( + metadata={"description": "Environment variables configuration for the model package."} + ) + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities import ModelPackage + + return ModelPackage(**data) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package_input.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package_input.py new file mode 100644 index 00000000..a1a1dd8b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package_input.py @@ -0,0 +1,81 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import fields, post_load +from azure.ai.ml._utils.utils import camel_to_snake +from azure.ai.ml._schema.core.schema import PathAwareSchema +from azure.ai.ml._schema.core.fields import StringTransformedEnum, UnionField, NestedField + +module_logger = logging.getLogger(__name__) + + +class PathBaseSchema(PathAwareSchema): + input_path_type = StringTransformedEnum( + allowed_values=[ + "path_id", + "url", + "path_version", + ], + casing_transform=camel_to_snake, + ) + + +class PackageInputPathIdSchema(PathBaseSchema): + resource_id = fields.Str() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets._artifacts._package.model_package import PackageInputPathId + + return PackageInputPathId(**data) + + +class PackageInputPathUrlSchema(PathBaseSchema): + url = fields.Str() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets._artifacts._package.model_package import PackageInputPathUrl + + return PackageInputPathUrl(**data) + + +class PackageInputPathSchema(PathBaseSchema): + resource_name = fields.Str() + resource_version = fields.Str() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets._artifacts._package.model_package import PackageInputPathVersion + + return PackageInputPathVersion(**data) + + +class ModelPackageInputSchema(PathAwareSchema): + type = StringTransformedEnum(allowed_values=["uri_file", "uri_folder"], casing_transform=camel_to_snake) + mode = StringTransformedEnum( + allowed_values=[ + "read_only_mount", + "download", + ], + casing_transform=camel_to_snake, + ) + path = UnionField( + [ + NestedField(PackageInputPathIdSchema), + NestedField(PackageInputPathUrlSchema), + NestedField(PackageInputPathSchema), + ] + ) + mount_path = fields.Str() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets._artifacts._package.model_package import ModelPackageInput + + return ModelPackageInput(**data) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/online_inference_configuration.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/online_inference_configuration.py new file mode 100644 index 00000000..b5c313ed --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/online_inference_configuration.py @@ -0,0 +1,30 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging +from marshmallow import fields, post_load +from azure.ai.ml._schema.core.fields import NestedField +from azure.ai.ml._schema.core.schema import PathAwareSchema +from .route import RouteSchema + + +module_logger = logging.getLogger(__name__) + + +class OnlineInferenceConfigurationSchema(PathAwareSchema): + liveness_route = NestedField(RouteSchema) + readiness_route = NestedField(RouteSchema) + scoring_route = NestedField(RouteSchema) + entry_script = fields.Str() + configuration = fields.Dict() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets._artifacts._package.inferencing_server import ( + OnlineInferenceConfiguration, + ) + + return OnlineInferenceConfiguration(**data) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/route.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/route.py new file mode 100644 index 00000000..86f37e06 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/route.py @@ -0,0 +1,22 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument,bad-mcs-method-argument + +import logging +from marshmallow import fields, post_load +from azure.ai.ml._schema.core.schema_meta import PatchedSchemaMeta + +module_logger = logging.getLogger(__name__) + + +class RouteSchema(PatchedSchemaMeta): + port = fields.Str() + path = fields.Str() + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets._artifacts._package.inferencing_server import Route + + return Route(**data) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/workspace_asset_reference.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/workspace_asset_reference.py new file mode 100644 index 00000000..83d6d793 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/workspace_asset_reference.py @@ -0,0 +1,27 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +# pylint: disable=unused-argument + +import logging + +from marshmallow import fields, post_load + +from azure.ai.ml.constants._common import BASE_PATH_CONTEXT_KEY + +from .asset import AssetSchema + +module_logger = logging.getLogger(__name__) + + +class WorkspaceAssetReferenceSchema(AssetSchema): + destination_name = fields.Str() + destination_version = fields.Str() + source_asset_id = fields.Str(required=True) + + @post_load + def make(self, data, **kwargs): + from azure.ai.ml.entities._assets.workspace_asset_reference import WorkspaceAssetReference + + return WorkspaceAssetReference(base_path=self.context[BASE_PATH_CONTEXT_KEY], **data) |
