{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.SageMaker.Types.ModelBiasJobInput
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SageMaker.Types.ModelBiasJobInput where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.BatchTransformInput
import Amazonka.SageMaker.Types.EndpointInput
import Amazonka.SageMaker.Types.MonitoringGroundTruthS3Input

-- | Inputs for the model bias job.
--
-- /See:/ 'newModelBiasJobInput' smart constructor.
data ModelBiasJobInput = ModelBiasJobInput'
  { -- | Input object for the batch transform job.
    ModelBiasJobInput -> Maybe BatchTransformInput
batchTransformInput :: Prelude.Maybe BatchTransformInput,
    ModelBiasJobInput -> Maybe EndpointInput
endpointInput :: Prelude.Maybe EndpointInput,
    -- | Location of ground truth labels to use in model bias job.
    ModelBiasJobInput -> MonitoringGroundTruthS3Input
groundTruthS3Input :: MonitoringGroundTruthS3Input
  }
  deriving (ModelBiasJobInput -> ModelBiasJobInput -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModelBiasJobInput -> ModelBiasJobInput -> Bool
$c/= :: ModelBiasJobInput -> ModelBiasJobInput -> Bool
== :: ModelBiasJobInput -> ModelBiasJobInput -> Bool
$c== :: ModelBiasJobInput -> ModelBiasJobInput -> Bool
Prelude.Eq, ReadPrec [ModelBiasJobInput]
ReadPrec ModelBiasJobInput
Int -> ReadS ModelBiasJobInput
ReadS [ModelBiasJobInput]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModelBiasJobInput]
$creadListPrec :: ReadPrec [ModelBiasJobInput]
readPrec :: ReadPrec ModelBiasJobInput
$creadPrec :: ReadPrec ModelBiasJobInput
readList :: ReadS [ModelBiasJobInput]
$creadList :: ReadS [ModelBiasJobInput]
readsPrec :: Int -> ReadS ModelBiasJobInput
$creadsPrec :: Int -> ReadS ModelBiasJobInput
Prelude.Read, Int -> ModelBiasJobInput -> ShowS
[ModelBiasJobInput] -> ShowS
ModelBiasJobInput -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModelBiasJobInput] -> ShowS
$cshowList :: [ModelBiasJobInput] -> ShowS
show :: ModelBiasJobInput -> String
$cshow :: ModelBiasJobInput -> String
showsPrec :: Int -> ModelBiasJobInput -> ShowS
$cshowsPrec :: Int -> ModelBiasJobInput -> ShowS
Prelude.Show, forall x. Rep ModelBiasJobInput x -> ModelBiasJobInput
forall x. ModelBiasJobInput -> Rep ModelBiasJobInput x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ModelBiasJobInput x -> ModelBiasJobInput
$cfrom :: forall x. ModelBiasJobInput -> Rep ModelBiasJobInput x
Prelude.Generic)

-- |
-- Create a value of 'ModelBiasJobInput' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'batchTransformInput', 'modelBiasJobInput_batchTransformInput' - Input object for the batch transform job.
--
-- 'endpointInput', 'modelBiasJobInput_endpointInput' - Undocumented member.
--
-- 'groundTruthS3Input', 'modelBiasJobInput_groundTruthS3Input' - Location of ground truth labels to use in model bias job.
newModelBiasJobInput ::
  -- | 'groundTruthS3Input'
  MonitoringGroundTruthS3Input ->
  ModelBiasJobInput
newModelBiasJobInput :: MonitoringGroundTruthS3Input -> ModelBiasJobInput
newModelBiasJobInput MonitoringGroundTruthS3Input
pGroundTruthS3Input_ =
  ModelBiasJobInput'
    { $sel:batchTransformInput:ModelBiasJobInput' :: Maybe BatchTransformInput
batchTransformInput =
        forall a. Maybe a
Prelude.Nothing,
      $sel:endpointInput:ModelBiasJobInput' :: Maybe EndpointInput
endpointInput = forall a. Maybe a
Prelude.Nothing,
      $sel:groundTruthS3Input:ModelBiasJobInput' :: MonitoringGroundTruthS3Input
groundTruthS3Input = MonitoringGroundTruthS3Input
pGroundTruthS3Input_
    }

-- | Input object for the batch transform job.
modelBiasJobInput_batchTransformInput :: Lens.Lens' ModelBiasJobInput (Prelude.Maybe BatchTransformInput)
modelBiasJobInput_batchTransformInput :: Lens' ModelBiasJobInput (Maybe BatchTransformInput)
modelBiasJobInput_batchTransformInput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelBiasJobInput' {Maybe BatchTransformInput
batchTransformInput :: Maybe BatchTransformInput
$sel:batchTransformInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe BatchTransformInput
batchTransformInput} -> Maybe BatchTransformInput
batchTransformInput) (\s :: ModelBiasJobInput
s@ModelBiasJobInput' {} Maybe BatchTransformInput
a -> ModelBiasJobInput
s {$sel:batchTransformInput:ModelBiasJobInput' :: Maybe BatchTransformInput
batchTransformInput = Maybe BatchTransformInput
a} :: ModelBiasJobInput)

-- | Undocumented member.
modelBiasJobInput_endpointInput :: Lens.Lens' ModelBiasJobInput (Prelude.Maybe EndpointInput)
modelBiasJobInput_endpointInput :: Lens' ModelBiasJobInput (Maybe EndpointInput)
modelBiasJobInput_endpointInput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelBiasJobInput' {Maybe EndpointInput
endpointInput :: Maybe EndpointInput
$sel:endpointInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe EndpointInput
endpointInput} -> Maybe EndpointInput
endpointInput) (\s :: ModelBiasJobInput
s@ModelBiasJobInput' {} Maybe EndpointInput
a -> ModelBiasJobInput
s {$sel:endpointInput:ModelBiasJobInput' :: Maybe EndpointInput
endpointInput = Maybe EndpointInput
a} :: ModelBiasJobInput)

-- | Location of ground truth labels to use in model bias job.
modelBiasJobInput_groundTruthS3Input :: Lens.Lens' ModelBiasJobInput MonitoringGroundTruthS3Input
modelBiasJobInput_groundTruthS3Input :: Lens' ModelBiasJobInput MonitoringGroundTruthS3Input
modelBiasJobInput_groundTruthS3Input = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelBiasJobInput' {MonitoringGroundTruthS3Input
groundTruthS3Input :: MonitoringGroundTruthS3Input
$sel:groundTruthS3Input:ModelBiasJobInput' :: ModelBiasJobInput -> MonitoringGroundTruthS3Input
groundTruthS3Input} -> MonitoringGroundTruthS3Input
groundTruthS3Input) (\s :: ModelBiasJobInput
s@ModelBiasJobInput' {} MonitoringGroundTruthS3Input
a -> ModelBiasJobInput
s {$sel:groundTruthS3Input:ModelBiasJobInput' :: MonitoringGroundTruthS3Input
groundTruthS3Input = MonitoringGroundTruthS3Input
a} :: ModelBiasJobInput)

instance Data.FromJSON ModelBiasJobInput where
  parseJSON :: Value -> Parser ModelBiasJobInput
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ModelBiasJobInput"
      ( \Object
x ->
          Maybe BatchTransformInput
-> Maybe EndpointInput
-> MonitoringGroundTruthS3Input
-> ModelBiasJobInput
ModelBiasJobInput'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BatchTransformInput")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EndpointInput")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"GroundTruthS3Input")
      )

instance Prelude.Hashable ModelBiasJobInput where
  hashWithSalt :: Int -> ModelBiasJobInput -> Int
hashWithSalt Int
_salt ModelBiasJobInput' {Maybe EndpointInput
Maybe BatchTransformInput
MonitoringGroundTruthS3Input
groundTruthS3Input :: MonitoringGroundTruthS3Input
endpointInput :: Maybe EndpointInput
batchTransformInput :: Maybe BatchTransformInput
$sel:groundTruthS3Input:ModelBiasJobInput' :: ModelBiasJobInput -> MonitoringGroundTruthS3Input
$sel:endpointInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe EndpointInput
$sel:batchTransformInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe BatchTransformInput
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BatchTransformInput
batchTransformInput
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EndpointInput
endpointInput
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MonitoringGroundTruthS3Input
groundTruthS3Input

instance Prelude.NFData ModelBiasJobInput where
  rnf :: ModelBiasJobInput -> ()
rnf ModelBiasJobInput' {Maybe EndpointInput
Maybe BatchTransformInput
MonitoringGroundTruthS3Input
groundTruthS3Input :: MonitoringGroundTruthS3Input
endpointInput :: Maybe EndpointInput
batchTransformInput :: Maybe BatchTransformInput
$sel:groundTruthS3Input:ModelBiasJobInput' :: ModelBiasJobInput -> MonitoringGroundTruthS3Input
$sel:endpointInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe EndpointInput
$sel:batchTransformInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe BatchTransformInput
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe BatchTransformInput
batchTransformInput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EndpointInput
endpointInput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MonitoringGroundTruthS3Input
groundTruthS3Input

instance Data.ToJSON ModelBiasJobInput where
  toJSON :: ModelBiasJobInput -> Value
toJSON ModelBiasJobInput' {Maybe EndpointInput
Maybe BatchTransformInput
MonitoringGroundTruthS3Input
groundTruthS3Input :: MonitoringGroundTruthS3Input
endpointInput :: Maybe EndpointInput
batchTransformInput :: Maybe BatchTransformInput
$sel:groundTruthS3Input:ModelBiasJobInput' :: ModelBiasJobInput -> MonitoringGroundTruthS3Input
$sel:endpointInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe EndpointInput
$sel:batchTransformInput:ModelBiasJobInput' :: ModelBiasJobInput -> Maybe BatchTransformInput
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"BatchTransformInput" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BatchTransformInput
batchTransformInput,
            (Key
"EndpointInput" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EndpointInput
endpointInput,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"GroundTruthS3Input" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MonitoringGroundTruthS3Input
groundTruthS3Input)
          ]
      )