about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets')
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/__init__.py5
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/artifact.py24
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/asset.py42
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/code_asset.py47
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/data.py25
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/environment.py160
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/federated_learning_silo.py24
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/index.py30
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/model.py65
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/__init__.py5
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/base_environment_source.py23
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/inference_server.py51
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_configuration.py30
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package.py41
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/model_package_input.py81
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/online_inference_configuration.py30
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/package/route.py22
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_schema/assets/workspace_asset_reference.py27
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)