# ---------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# ---------------------------------------------------------

from marshmallow import fields

from azure.ai.ml._schema.core.fields import NestedField, StringTransformedEnum
from azure.ai.ml._schema.job.input_output_fields_provider import InputsField, OutputsField
from azure.ai.ml.constants import JobType

from .base_job import BaseJobSchema
from .job_limits import CommandJobLimitsSchema
from .parameterized_command import ParameterizedCommandSchema


class CommandJobSchema(ParameterizedCommandSchema, BaseJobSchema):
    type = StringTransformedEnum(allowed_values=JobType.COMMAND)
    # do not promote it as CommandComponent has no field named 'limits'
    limits = NestedField(CommandJobLimitsSchema)
    parameters = fields.Dict(dump_only=True)
    inputs = InputsField()
    outputs = OutputsField()
    parent_job_name = fields.Str()
