# generated by datamodel-codegen:
#   filename:  process_schema.json
#   timestamp: 2024-02-07T08:08:38+00:00

from __future__ import annotations

from datetime import date, datetime
from enum import Enum
from typing import List, Optional, Union

from pydantic import BaseModel, constr, Extra, Field

from . import (comment_schema,
               data_schema,
               material_schema,
               process_parameter_value_schema,
               protocol_schema,
               sample_schema,
               source_schema)


class FieldType(Enum):
    Process = 'Process'


class IsaProcessOrProtocolApplicationSchemaCorrespondsToProtocolRefColumnsInTheStudyAndAssayFiles(
        BaseModel):
    class Config:
        extra = Extra.forbid

    field_id: Optional[str] = Field(None, alias='@id')
    field_context: Optional[str] = Field(None, alias='@context')
    field_type: Optional[FieldType] = Field(None, alias='@type')
    name: Optional[str] = None
    executesProtocol: Optional[protocol_schema.IsaProtocolSchema] = None
    parameterValues: Optional[List[
        process_parameter_value_schema.IsaProcessParameterValueSchema]] = None
    performer: Optional[str] = None
    date: Optional[Union[datetime, date, constr(max_length=0)]] = None
    previousProcess: Optional[
        IsaProcessOrProtocolApplicationSchemaCorrespondsToProtocolRefColumnsInTheStudyAndAssayFiles] = None
    nextProcess: Optional[
        IsaProcessOrProtocolApplicationSchemaCorrespondsToProtocolRefColumnsInTheStudyAndAssayFiles] = None
    inputs: Optional[List[Union[source_schema.IsaSourceSchema,
                                sample_schema.IsaSampleSchema,
                                data_schema.IsaDataSchema,
                                material_schema.IsaMaterialSchema,]]] = None
    outputs: Optional[List[Union[sample_schema.IsaSampleSchema,
                                 data_schema.IsaDataSchema,
                                 material_schema.IsaMaterialSchema,]]] = None
    comments: Optional[List[
        comment_schema.IsaCommentSchemaItCorrespondsToIsaCommentConstruct]] = None


IsaProcessOrProtocolApplicationSchemaCorrespondsToProtocolRefColumnsInTheStudyAndAssayFiles.update_forward_refs(
)
