{-# 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.Rekognition.Types.ProjectVersionDescription
-- 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.Rekognition.Types.ProjectVersionDescription 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.Rekognition.Types.EvaluationResult
import Amazonka.Rekognition.Types.GroundTruthManifest
import Amazonka.Rekognition.Types.OutputConfig
import Amazonka.Rekognition.Types.ProjectVersionStatus
import Amazonka.Rekognition.Types.TestingDataResult
import Amazonka.Rekognition.Types.TrainingDataResult

-- | A description of a version of an Amazon Rekognition Custom Labels model.
--
-- /See:/ 'newProjectVersionDescription' smart constructor.
data ProjectVersionDescription = ProjectVersionDescription'
  { -- | The duration, in seconds, that you were billed for a successful training
    -- of the model version. This value is only returned if the model version
    -- has been successfully trained.
    ProjectVersionDescription -> Maybe Natural
billableTrainingTimeInSeconds :: Prelude.Maybe Prelude.Natural,
    -- | The Unix datetime for the date and time that training started.
    ProjectVersionDescription -> Maybe POSIX
creationTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The training results. @EvaluationResult@ is only returned if training is
    -- successful.
    ProjectVersionDescription -> Maybe EvaluationResult
evaluationResult :: Prelude.Maybe EvaluationResult,
    -- | The identifer for the AWS Key Management Service key (AWS KMS key) that
    -- was used to encrypt the model during training.
    ProjectVersionDescription -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The location of the summary manifest. The summary manifest provides
    -- aggregate data validation results for the training and test datasets.
    ProjectVersionDescription -> Maybe GroundTruthManifest
manifestSummary :: Prelude.Maybe GroundTruthManifest,
    -- | The maximum number of inference units Amazon Rekognition Custom Labels
    -- uses to auto-scale the model. For more information, see
    -- StartProjectVersion.
    ProjectVersionDescription -> Maybe Natural
maxInferenceUnits :: Prelude.Maybe Prelude.Natural,
    -- | The minimum number of inference units used by the model. For more
    -- information, see StartProjectVersion.
    ProjectVersionDescription -> Maybe Natural
minInferenceUnits :: Prelude.Maybe Prelude.Natural,
    -- | The location where training results are saved.
    ProjectVersionDescription -> Maybe OutputConfig
outputConfig :: Prelude.Maybe OutputConfig,
    -- | The Amazon Resource Name (ARN) of the model version.
    ProjectVersionDescription -> Maybe Text
projectVersionArn :: Prelude.Maybe Prelude.Text,
    -- | If the model version was copied from a different project,
    -- @SourceProjectVersionArn@ contains the ARN of the source model version.
    ProjectVersionDescription -> Maybe Text
sourceProjectVersionArn :: Prelude.Maybe Prelude.Text,
    -- | The current status of the model version.
    ProjectVersionDescription -> Maybe ProjectVersionStatus
status :: Prelude.Maybe ProjectVersionStatus,
    -- | A descriptive message for an error or warning that occurred.
    ProjectVersionDescription -> Maybe Text
statusMessage :: Prelude.Maybe Prelude.Text,
    -- | Contains information about the testing results.
    ProjectVersionDescription -> Maybe TestingDataResult
testingDataResult :: Prelude.Maybe TestingDataResult,
    -- | Contains information about the training results.
    ProjectVersionDescription -> Maybe TrainingDataResult
trainingDataResult :: Prelude.Maybe TrainingDataResult,
    -- | The Unix date and time that training of the model ended.
    ProjectVersionDescription -> Maybe POSIX
trainingEndTimestamp :: Prelude.Maybe Data.POSIX
  }
  deriving (ProjectVersionDescription -> ProjectVersionDescription -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ProjectVersionDescription -> ProjectVersionDescription -> Bool
$c/= :: ProjectVersionDescription -> ProjectVersionDescription -> Bool
== :: ProjectVersionDescription -> ProjectVersionDescription -> Bool
$c== :: ProjectVersionDescription -> ProjectVersionDescription -> Bool
Prelude.Eq, ReadPrec [ProjectVersionDescription]
ReadPrec ProjectVersionDescription
Int -> ReadS ProjectVersionDescription
ReadS [ProjectVersionDescription]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ProjectVersionDescription]
$creadListPrec :: ReadPrec [ProjectVersionDescription]
readPrec :: ReadPrec ProjectVersionDescription
$creadPrec :: ReadPrec ProjectVersionDescription
readList :: ReadS [ProjectVersionDescription]
$creadList :: ReadS [ProjectVersionDescription]
readsPrec :: Int -> ReadS ProjectVersionDescription
$creadsPrec :: Int -> ReadS ProjectVersionDescription
Prelude.Read, Int -> ProjectVersionDescription -> ShowS
[ProjectVersionDescription] -> ShowS
ProjectVersionDescription -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ProjectVersionDescription] -> ShowS
$cshowList :: [ProjectVersionDescription] -> ShowS
show :: ProjectVersionDescription -> String
$cshow :: ProjectVersionDescription -> String
showsPrec :: Int -> ProjectVersionDescription -> ShowS
$cshowsPrec :: Int -> ProjectVersionDescription -> ShowS
Prelude.Show, forall x.
Rep ProjectVersionDescription x -> ProjectVersionDescription
forall x.
ProjectVersionDescription -> Rep ProjectVersionDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ProjectVersionDescription x -> ProjectVersionDescription
$cfrom :: forall x.
ProjectVersionDescription -> Rep ProjectVersionDescription x
Prelude.Generic)

-- |
-- Create a value of 'ProjectVersionDescription' 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:
--
-- 'billableTrainingTimeInSeconds', 'projectVersionDescription_billableTrainingTimeInSeconds' - The duration, in seconds, that you were billed for a successful training
-- of the model version. This value is only returned if the model version
-- has been successfully trained.
--
-- 'creationTimestamp', 'projectVersionDescription_creationTimestamp' - The Unix datetime for the date and time that training started.
--
-- 'evaluationResult', 'projectVersionDescription_evaluationResult' - The training results. @EvaluationResult@ is only returned if training is
-- successful.
--
-- 'kmsKeyId', 'projectVersionDescription_kmsKeyId' - The identifer for the AWS Key Management Service key (AWS KMS key) that
-- was used to encrypt the model during training.
--
-- 'manifestSummary', 'projectVersionDescription_manifestSummary' - The location of the summary manifest. The summary manifest provides
-- aggregate data validation results for the training and test datasets.
--
-- 'maxInferenceUnits', 'projectVersionDescription_maxInferenceUnits' - The maximum number of inference units Amazon Rekognition Custom Labels
-- uses to auto-scale the model. For more information, see
-- StartProjectVersion.
--
-- 'minInferenceUnits', 'projectVersionDescription_minInferenceUnits' - The minimum number of inference units used by the model. For more
-- information, see StartProjectVersion.
--
-- 'outputConfig', 'projectVersionDescription_outputConfig' - The location where training results are saved.
--
-- 'projectVersionArn', 'projectVersionDescription_projectVersionArn' - The Amazon Resource Name (ARN) of the model version.
--
-- 'sourceProjectVersionArn', 'projectVersionDescription_sourceProjectVersionArn' - If the model version was copied from a different project,
-- @SourceProjectVersionArn@ contains the ARN of the source model version.
--
-- 'status', 'projectVersionDescription_status' - The current status of the model version.
--
-- 'statusMessage', 'projectVersionDescription_statusMessage' - A descriptive message for an error or warning that occurred.
--
-- 'testingDataResult', 'projectVersionDescription_testingDataResult' - Contains information about the testing results.
--
-- 'trainingDataResult', 'projectVersionDescription_trainingDataResult' - Contains information about the training results.
--
-- 'trainingEndTimestamp', 'projectVersionDescription_trainingEndTimestamp' - The Unix date and time that training of the model ended.
newProjectVersionDescription ::
  ProjectVersionDescription
newProjectVersionDescription :: ProjectVersionDescription
newProjectVersionDescription =
  ProjectVersionDescription'
    { $sel:billableTrainingTimeInSeconds:ProjectVersionDescription' :: Maybe Natural
billableTrainingTimeInSeconds =
        forall a. Maybe a
Prelude.Nothing,
      $sel:creationTimestamp:ProjectVersionDescription' :: Maybe POSIX
creationTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:evaluationResult:ProjectVersionDescription' :: Maybe EvaluationResult
evaluationResult = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:ProjectVersionDescription' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:manifestSummary:ProjectVersionDescription' :: Maybe GroundTruthManifest
manifestSummary = forall a. Maybe a
Prelude.Nothing,
      $sel:maxInferenceUnits:ProjectVersionDescription' :: Maybe Natural
maxInferenceUnits = forall a. Maybe a
Prelude.Nothing,
      $sel:minInferenceUnits:ProjectVersionDescription' :: Maybe Natural
minInferenceUnits = forall a. Maybe a
Prelude.Nothing,
      $sel:outputConfig:ProjectVersionDescription' :: Maybe OutputConfig
outputConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:projectVersionArn:ProjectVersionDescription' :: Maybe Text
projectVersionArn = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceProjectVersionArn:ProjectVersionDescription' :: Maybe Text
sourceProjectVersionArn = forall a. Maybe a
Prelude.Nothing,
      $sel:status:ProjectVersionDescription' :: Maybe ProjectVersionStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:statusMessage:ProjectVersionDescription' :: Maybe Text
statusMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:testingDataResult:ProjectVersionDescription' :: Maybe TestingDataResult
testingDataResult = forall a. Maybe a
Prelude.Nothing,
      $sel:trainingDataResult:ProjectVersionDescription' :: Maybe TrainingDataResult
trainingDataResult = forall a. Maybe a
Prelude.Nothing,
      $sel:trainingEndTimestamp:ProjectVersionDescription' :: Maybe POSIX
trainingEndTimestamp = forall a. Maybe a
Prelude.Nothing
    }

-- | The duration, in seconds, that you were billed for a successful training
-- of the model version. This value is only returned if the model version
-- has been successfully trained.
projectVersionDescription_billableTrainingTimeInSeconds :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.Natural)
projectVersionDescription_billableTrainingTimeInSeconds :: Lens' ProjectVersionDescription (Maybe Natural)
projectVersionDescription_billableTrainingTimeInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe Natural
billableTrainingTimeInSeconds :: Maybe Natural
$sel:billableTrainingTimeInSeconds:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
billableTrainingTimeInSeconds} -> Maybe Natural
billableTrainingTimeInSeconds) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe Natural
a -> ProjectVersionDescription
s {$sel:billableTrainingTimeInSeconds:ProjectVersionDescription' :: Maybe Natural
billableTrainingTimeInSeconds = Maybe Natural
a} :: ProjectVersionDescription)

-- | The Unix datetime for the date and time that training started.
projectVersionDescription_creationTimestamp :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.UTCTime)
projectVersionDescription_creationTimestamp :: Lens' ProjectVersionDescription (Maybe UTCTime)
projectVersionDescription_creationTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe POSIX
creationTimestamp :: Maybe POSIX
$sel:creationTimestamp:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe POSIX
creationTimestamp} -> Maybe POSIX
creationTimestamp) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe POSIX
a -> ProjectVersionDescription
s {$sel:creationTimestamp:ProjectVersionDescription' :: Maybe POSIX
creationTimestamp = Maybe POSIX
a} :: ProjectVersionDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The training results. @EvaluationResult@ is only returned if training is
-- successful.
projectVersionDescription_evaluationResult :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe EvaluationResult)
projectVersionDescription_evaluationResult :: Lens' ProjectVersionDescription (Maybe EvaluationResult)
projectVersionDescription_evaluationResult = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe EvaluationResult
evaluationResult :: Maybe EvaluationResult
$sel:evaluationResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe EvaluationResult
evaluationResult} -> Maybe EvaluationResult
evaluationResult) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe EvaluationResult
a -> ProjectVersionDescription
s {$sel:evaluationResult:ProjectVersionDescription' :: Maybe EvaluationResult
evaluationResult = Maybe EvaluationResult
a} :: ProjectVersionDescription)

-- | The identifer for the AWS Key Management Service key (AWS KMS key) that
-- was used to encrypt the model during training.
projectVersionDescription_kmsKeyId :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.Text)
projectVersionDescription_kmsKeyId :: Lens' ProjectVersionDescription (Maybe Text)
projectVersionDescription_kmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe Text
a -> ProjectVersionDescription
s {$sel:kmsKeyId:ProjectVersionDescription' :: Maybe Text
kmsKeyId = Maybe Text
a} :: ProjectVersionDescription)

-- | The location of the summary manifest. The summary manifest provides
-- aggregate data validation results for the training and test datasets.
projectVersionDescription_manifestSummary :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe GroundTruthManifest)
projectVersionDescription_manifestSummary :: Lens' ProjectVersionDescription (Maybe GroundTruthManifest)
projectVersionDescription_manifestSummary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe GroundTruthManifest
manifestSummary :: Maybe GroundTruthManifest
$sel:manifestSummary:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe GroundTruthManifest
manifestSummary} -> Maybe GroundTruthManifest
manifestSummary) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe GroundTruthManifest
a -> ProjectVersionDescription
s {$sel:manifestSummary:ProjectVersionDescription' :: Maybe GroundTruthManifest
manifestSummary = Maybe GroundTruthManifest
a} :: ProjectVersionDescription)

-- | The maximum number of inference units Amazon Rekognition Custom Labels
-- uses to auto-scale the model. For more information, see
-- StartProjectVersion.
projectVersionDescription_maxInferenceUnits :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.Natural)
projectVersionDescription_maxInferenceUnits :: Lens' ProjectVersionDescription (Maybe Natural)
projectVersionDescription_maxInferenceUnits = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe Natural
maxInferenceUnits :: Maybe Natural
$sel:maxInferenceUnits:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
maxInferenceUnits} -> Maybe Natural
maxInferenceUnits) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe Natural
a -> ProjectVersionDescription
s {$sel:maxInferenceUnits:ProjectVersionDescription' :: Maybe Natural
maxInferenceUnits = Maybe Natural
a} :: ProjectVersionDescription)

-- | The minimum number of inference units used by the model. For more
-- information, see StartProjectVersion.
projectVersionDescription_minInferenceUnits :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.Natural)
projectVersionDescription_minInferenceUnits :: Lens' ProjectVersionDescription (Maybe Natural)
projectVersionDescription_minInferenceUnits = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe Natural
minInferenceUnits :: Maybe Natural
$sel:minInferenceUnits:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
minInferenceUnits} -> Maybe Natural
minInferenceUnits) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe Natural
a -> ProjectVersionDescription
s {$sel:minInferenceUnits:ProjectVersionDescription' :: Maybe Natural
minInferenceUnits = Maybe Natural
a} :: ProjectVersionDescription)

-- | The location where training results are saved.
projectVersionDescription_outputConfig :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe OutputConfig)
projectVersionDescription_outputConfig :: Lens' ProjectVersionDescription (Maybe OutputConfig)
projectVersionDescription_outputConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe OutputConfig
outputConfig :: Maybe OutputConfig
$sel:outputConfig:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe OutputConfig
outputConfig} -> Maybe OutputConfig
outputConfig) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe OutputConfig
a -> ProjectVersionDescription
s {$sel:outputConfig:ProjectVersionDescription' :: Maybe OutputConfig
outputConfig = Maybe OutputConfig
a} :: ProjectVersionDescription)

-- | The Amazon Resource Name (ARN) of the model version.
projectVersionDescription_projectVersionArn :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.Text)
projectVersionDescription_projectVersionArn :: Lens' ProjectVersionDescription (Maybe Text)
projectVersionDescription_projectVersionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe Text
projectVersionArn :: Maybe Text
$sel:projectVersionArn:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
projectVersionArn} -> Maybe Text
projectVersionArn) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe Text
a -> ProjectVersionDescription
s {$sel:projectVersionArn:ProjectVersionDescription' :: Maybe Text
projectVersionArn = Maybe Text
a} :: ProjectVersionDescription)

-- | If the model version was copied from a different project,
-- @SourceProjectVersionArn@ contains the ARN of the source model version.
projectVersionDescription_sourceProjectVersionArn :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.Text)
projectVersionDescription_sourceProjectVersionArn :: Lens' ProjectVersionDescription (Maybe Text)
projectVersionDescription_sourceProjectVersionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe Text
sourceProjectVersionArn :: Maybe Text
$sel:sourceProjectVersionArn:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
sourceProjectVersionArn} -> Maybe Text
sourceProjectVersionArn) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe Text
a -> ProjectVersionDescription
s {$sel:sourceProjectVersionArn:ProjectVersionDescription' :: Maybe Text
sourceProjectVersionArn = Maybe Text
a} :: ProjectVersionDescription)

-- | The current status of the model version.
projectVersionDescription_status :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe ProjectVersionStatus)
projectVersionDescription_status :: Lens' ProjectVersionDescription (Maybe ProjectVersionStatus)
projectVersionDescription_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe ProjectVersionStatus
status :: Maybe ProjectVersionStatus
$sel:status:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe ProjectVersionStatus
status} -> Maybe ProjectVersionStatus
status) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe ProjectVersionStatus
a -> ProjectVersionDescription
s {$sel:status:ProjectVersionDescription' :: Maybe ProjectVersionStatus
status = Maybe ProjectVersionStatus
a} :: ProjectVersionDescription)

-- | A descriptive message for an error or warning that occurred.
projectVersionDescription_statusMessage :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.Text)
projectVersionDescription_statusMessage :: Lens' ProjectVersionDescription (Maybe Text)
projectVersionDescription_statusMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe Text
statusMessage :: Maybe Text
$sel:statusMessage:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
statusMessage} -> Maybe Text
statusMessage) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe Text
a -> ProjectVersionDescription
s {$sel:statusMessage:ProjectVersionDescription' :: Maybe Text
statusMessage = Maybe Text
a} :: ProjectVersionDescription)

-- | Contains information about the testing results.
projectVersionDescription_testingDataResult :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe TestingDataResult)
projectVersionDescription_testingDataResult :: Lens' ProjectVersionDescription (Maybe TestingDataResult)
projectVersionDescription_testingDataResult = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe TestingDataResult
testingDataResult :: Maybe TestingDataResult
$sel:testingDataResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe TestingDataResult
testingDataResult} -> Maybe TestingDataResult
testingDataResult) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe TestingDataResult
a -> ProjectVersionDescription
s {$sel:testingDataResult:ProjectVersionDescription' :: Maybe TestingDataResult
testingDataResult = Maybe TestingDataResult
a} :: ProjectVersionDescription)

-- | Contains information about the training results.
projectVersionDescription_trainingDataResult :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe TrainingDataResult)
projectVersionDescription_trainingDataResult :: Lens' ProjectVersionDescription (Maybe TrainingDataResult)
projectVersionDescription_trainingDataResult = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe TrainingDataResult
trainingDataResult :: Maybe TrainingDataResult
$sel:trainingDataResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe TrainingDataResult
trainingDataResult} -> Maybe TrainingDataResult
trainingDataResult) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe TrainingDataResult
a -> ProjectVersionDescription
s {$sel:trainingDataResult:ProjectVersionDescription' :: Maybe TrainingDataResult
trainingDataResult = Maybe TrainingDataResult
a} :: ProjectVersionDescription)

-- | The Unix date and time that training of the model ended.
projectVersionDescription_trainingEndTimestamp :: Lens.Lens' ProjectVersionDescription (Prelude.Maybe Prelude.UTCTime)
projectVersionDescription_trainingEndTimestamp :: Lens' ProjectVersionDescription (Maybe UTCTime)
projectVersionDescription_trainingEndTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProjectVersionDescription' {Maybe POSIX
trainingEndTimestamp :: Maybe POSIX
$sel:trainingEndTimestamp:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe POSIX
trainingEndTimestamp} -> Maybe POSIX
trainingEndTimestamp) (\s :: ProjectVersionDescription
s@ProjectVersionDescription' {} Maybe POSIX
a -> ProjectVersionDescription
s {$sel:trainingEndTimestamp:ProjectVersionDescription' :: Maybe POSIX
trainingEndTimestamp = Maybe POSIX
a} :: ProjectVersionDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Data.FromJSON ProjectVersionDescription where
  parseJSON :: Value -> Parser ProjectVersionDescription
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ProjectVersionDescription"
      ( \Object
x ->
          Maybe Natural
-> Maybe POSIX
-> Maybe EvaluationResult
-> Maybe Text
-> Maybe GroundTruthManifest
-> Maybe Natural
-> Maybe Natural
-> Maybe OutputConfig
-> Maybe Text
-> Maybe Text
-> Maybe ProjectVersionStatus
-> Maybe Text
-> Maybe TestingDataResult
-> Maybe TrainingDataResult
-> Maybe POSIX
-> ProjectVersionDescription
ProjectVersionDescription'
            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
"BillableTrainingTimeInSeconds")
            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
"CreationTimestamp")
            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
"EvaluationResult")
            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
"KmsKeyId")
            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
"ManifestSummary")
            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
"MaxInferenceUnits")
            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
"MinInferenceUnits")
            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
"OutputConfig")
            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
"ProjectVersionArn")
            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
"SourceProjectVersionArn")
            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
"Status")
            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
"StatusMessage")
            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
"TestingDataResult")
            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
"TrainingDataResult")
            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
"TrainingEndTimestamp")
      )

instance Prelude.Hashable ProjectVersionDescription where
  hashWithSalt :: Int -> ProjectVersionDescription -> Int
hashWithSalt Int
_salt ProjectVersionDescription' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe OutputConfig
Maybe ProjectVersionStatus
Maybe GroundTruthManifest
Maybe EvaluationResult
Maybe TrainingDataResult
Maybe TestingDataResult
trainingEndTimestamp :: Maybe POSIX
trainingDataResult :: Maybe TrainingDataResult
testingDataResult :: Maybe TestingDataResult
statusMessage :: Maybe Text
status :: Maybe ProjectVersionStatus
sourceProjectVersionArn :: Maybe Text
projectVersionArn :: Maybe Text
outputConfig :: Maybe OutputConfig
minInferenceUnits :: Maybe Natural
maxInferenceUnits :: Maybe Natural
manifestSummary :: Maybe GroundTruthManifest
kmsKeyId :: Maybe Text
evaluationResult :: Maybe EvaluationResult
creationTimestamp :: Maybe POSIX
billableTrainingTimeInSeconds :: Maybe Natural
$sel:trainingEndTimestamp:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe POSIX
$sel:trainingDataResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe TrainingDataResult
$sel:testingDataResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe TestingDataResult
$sel:statusMessage:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:status:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe ProjectVersionStatus
$sel:sourceProjectVersionArn:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:projectVersionArn:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:outputConfig:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe OutputConfig
$sel:minInferenceUnits:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
$sel:maxInferenceUnits:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
$sel:manifestSummary:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe GroundTruthManifest
$sel:kmsKeyId:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:evaluationResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe EvaluationResult
$sel:creationTimestamp:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe POSIX
$sel:billableTrainingTimeInSeconds:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
billableTrainingTimeInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EvaluationResult
evaluationResult
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GroundTruthManifest
manifestSummary
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxInferenceUnits
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
minInferenceUnits
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OutputConfig
outputConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
projectVersionArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceProjectVersionArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectVersionStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
statusMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TestingDataResult
testingDataResult
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TrainingDataResult
trainingDataResult
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
trainingEndTimestamp

instance Prelude.NFData ProjectVersionDescription where
  rnf :: ProjectVersionDescription -> ()
rnf ProjectVersionDescription' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe OutputConfig
Maybe ProjectVersionStatus
Maybe GroundTruthManifest
Maybe EvaluationResult
Maybe TrainingDataResult
Maybe TestingDataResult
trainingEndTimestamp :: Maybe POSIX
trainingDataResult :: Maybe TrainingDataResult
testingDataResult :: Maybe TestingDataResult
statusMessage :: Maybe Text
status :: Maybe ProjectVersionStatus
sourceProjectVersionArn :: Maybe Text
projectVersionArn :: Maybe Text
outputConfig :: Maybe OutputConfig
minInferenceUnits :: Maybe Natural
maxInferenceUnits :: Maybe Natural
manifestSummary :: Maybe GroundTruthManifest
kmsKeyId :: Maybe Text
evaluationResult :: Maybe EvaluationResult
creationTimestamp :: Maybe POSIX
billableTrainingTimeInSeconds :: Maybe Natural
$sel:trainingEndTimestamp:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe POSIX
$sel:trainingDataResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe TrainingDataResult
$sel:testingDataResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe TestingDataResult
$sel:statusMessage:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:status:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe ProjectVersionStatus
$sel:sourceProjectVersionArn:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:projectVersionArn:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:outputConfig:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe OutputConfig
$sel:minInferenceUnits:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
$sel:maxInferenceUnits:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
$sel:manifestSummary:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe GroundTruthManifest
$sel:kmsKeyId:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Text
$sel:evaluationResult:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe EvaluationResult
$sel:creationTimestamp:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe POSIX
$sel:billableTrainingTimeInSeconds:ProjectVersionDescription' :: ProjectVersionDescription -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
billableTrainingTimeInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EvaluationResult
evaluationResult
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GroundTruthManifest
manifestSummary
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxInferenceUnits
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
minInferenceUnits
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OutputConfig
outputConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
projectVersionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceProjectVersionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectVersionStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
statusMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TestingDataResult
testingDataResult
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TrainingDataResult
trainingDataResult
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
trainingEndTimestamp