{- This file was auto-generated from tensorflow/core/protobuf/saver.proto by the proto-lens-protoc program. -}
{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
  UndecidableInstances, MultiParamTypeClasses, FlexibleContexts,
  FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude
  #-}
{-# OPTIONS_GHC -fno-warn-unused-imports#-}
module Proto.Tensorflow.Core.Protobuf.Saver where
import qualified Data.ProtoLens.Reexport.Prelude as Prelude
import qualified Data.ProtoLens.Reexport.Data.Int as Data.Int
import qualified Data.ProtoLens.Reexport.Data.Word as Data.Word
import qualified Data.ProtoLens.Reexport.Data.ProtoLens
       as Data.ProtoLens
import qualified
       Data.ProtoLens.Reexport.Data.ProtoLens.Message.Enum
       as Data.ProtoLens.Message.Enum
import qualified Data.ProtoLens.Reexport.Lens.Family2
       as Lens.Family2
import qualified Data.ProtoLens.Reexport.Lens.Family2.Unchecked
       as Lens.Family2.Unchecked
import qualified Data.ProtoLens.Reexport.Data.Default.Class
       as Data.Default.Class
import qualified Data.ProtoLens.Reexport.Data.Text as Data.Text
import qualified Data.ProtoLens.Reexport.Data.Map as Data.Map
import qualified Data.ProtoLens.Reexport.Data.ByteString
       as Data.ByteString
import qualified Data.ProtoLens.Reexport.Lens.Labels as Lens.Labels

data SaverDef = SaverDef{_SaverDef'filenameTensorName ::
                         !Data.Text.Text,
                         _SaverDef'saveTensorName :: !Data.Text.Text,
                         _SaverDef'restoreOpName :: !Data.Text.Text,
                         _SaverDef'maxToKeep :: !Data.Int.Int32,
                         _SaverDef'sharded :: !Prelude.Bool,
                         _SaverDef'keepCheckpointEveryNHours :: !Prelude.Float,
                         _SaverDef'version :: !SaverDef'CheckpointFormatVersion}
              deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "filenameTensorName" f SaverDef SaverDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaverDef'filenameTensorName
                 (\ x__ y__ -> x__{_SaverDef'filenameTensorName = y__}))
              Prelude.id

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "saveTensorName" f SaverDef SaverDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaverDef'saveTensorName
                 (\ x__ y__ -> x__{_SaverDef'saveTensorName = y__}))
              Prelude.id

instance (a ~ Data.Text.Text, b ~ Data.Text.Text,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "restoreOpName" f SaverDef SaverDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaverDef'restoreOpName
                 (\ x__ y__ -> x__{_SaverDef'restoreOpName = y__}))
              Prelude.id

instance (a ~ Data.Int.Int32, b ~ Data.Int.Int32,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "maxToKeep" f SaverDef SaverDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaverDef'maxToKeep
                 (\ x__ y__ -> x__{_SaverDef'maxToKeep = y__}))
              Prelude.id

instance (a ~ Prelude.Bool, b ~ Prelude.Bool, Prelude.Functor f) =>
         Lens.Labels.HasLens "sharded" f SaverDef SaverDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaverDef'sharded
                 (\ x__ y__ -> x__{_SaverDef'sharded = y__}))
              Prelude.id

instance (a ~ Prelude.Float, b ~ Prelude.Float,
          Prelude.Functor f) =>
         Lens.Labels.HasLens "keepCheckpointEveryNHours" f SaverDef SaverDef
           a
           b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaverDef'keepCheckpointEveryNHours
                 (\ x__ y__ -> x__{_SaverDef'keepCheckpointEveryNHours = y__}))
              Prelude.id

instance (a ~ SaverDef'CheckpointFormatVersion,
          b ~ SaverDef'CheckpointFormatVersion, Prelude.Functor f) =>
         Lens.Labels.HasLens "version" f SaverDef SaverDef a b
         where
        lensOf _
          = (Prelude..)
              (Lens.Family2.Unchecked.lens _SaverDef'version
                 (\ x__ y__ -> x__{_SaverDef'version = y__}))
              Prelude.id

instance Data.Default.Class.Default SaverDef where
        def
          = SaverDef{_SaverDef'filenameTensorName =
                       Data.ProtoLens.fieldDefault,
                     _SaverDef'saveTensorName = Data.ProtoLens.fieldDefault,
                     _SaverDef'restoreOpName = Data.ProtoLens.fieldDefault,
                     _SaverDef'maxToKeep = Data.ProtoLens.fieldDefault,
                     _SaverDef'sharded = Data.ProtoLens.fieldDefault,
                     _SaverDef'keepCheckpointEveryNHours = Data.ProtoLens.fieldDefault,
                     _SaverDef'version = Data.Default.Class.def}

instance Data.ProtoLens.Message SaverDef where
        descriptor
          = let filenameTensorName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "filename_tensor_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         filenameTensorName)
                      :: Data.ProtoLens.FieldDescriptor SaverDef
                saveTensorName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "save_tensor_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional saveTensorName)
                      :: Data.ProtoLens.FieldDescriptor SaverDef
                restoreOpName__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "restore_op_name"
                      (Data.ProtoLens.StringField ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional restoreOpName)
                      :: Data.ProtoLens.FieldDescriptor SaverDef
                maxToKeep__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "max_to_keep"
                      (Data.ProtoLens.Int32Field ::
                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional maxToKeep)
                      :: Data.ProtoLens.FieldDescriptor SaverDef
                sharded__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "sharded"
                      (Data.ProtoLens.BoolField ::
                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional sharded)
                      :: Data.ProtoLens.FieldDescriptor SaverDef
                keepCheckpointEveryNHours__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "keep_checkpoint_every_n_hours"
                      (Data.ProtoLens.FloatField ::
                         Data.ProtoLens.FieldTypeDescriptor Prelude.Float)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional
                         keepCheckpointEveryNHours)
                      :: Data.ProtoLens.FieldDescriptor SaverDef
                version__field_descriptor
                  = Data.ProtoLens.FieldDescriptor "version"
                      (Data.ProtoLens.EnumField ::
                         Data.ProtoLens.FieldTypeDescriptor
                           SaverDef'CheckpointFormatVersion)
                      (Data.ProtoLens.PlainField Data.ProtoLens.Optional version)
                      :: Data.ProtoLens.FieldDescriptor SaverDef
              in
              Data.ProtoLens.MessageDescriptor
                (Data.Text.pack "tensorflow.SaverDef")
                (Data.Map.fromList
                   [(Data.ProtoLens.Tag 1, filenameTensorName__field_descriptor),
                    (Data.ProtoLens.Tag 2, saveTensorName__field_descriptor),
                    (Data.ProtoLens.Tag 3, restoreOpName__field_descriptor),
                    (Data.ProtoLens.Tag 4, maxToKeep__field_descriptor),
                    (Data.ProtoLens.Tag 5, sharded__field_descriptor),
                    (Data.ProtoLens.Tag 6,
                     keepCheckpointEveryNHours__field_descriptor),
                    (Data.ProtoLens.Tag 7, version__field_descriptor)])
                (Data.Map.fromList
                   [("filename_tensor_name", filenameTensorName__field_descriptor),
                    ("save_tensor_name", saveTensorName__field_descriptor),
                    ("restore_op_name", restoreOpName__field_descriptor),
                    ("max_to_keep", maxToKeep__field_descriptor),
                    ("sharded", sharded__field_descriptor),
                    ("keep_checkpoint_every_n_hours",
                     keepCheckpointEveryNHours__field_descriptor),
                    ("version", version__field_descriptor)])

data SaverDef'CheckpointFormatVersion = SaverDef'LEGACY
                                      | SaverDef'V1
                                      | SaverDef'V2
                                      deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)

instance Data.Default.Class.Default
           SaverDef'CheckpointFormatVersion
         where
        def = SaverDef'LEGACY

instance Data.ProtoLens.FieldDefault
           SaverDef'CheckpointFormatVersion
         where
        fieldDefault = SaverDef'LEGACY

instance Data.ProtoLens.MessageEnum
           SaverDef'CheckpointFormatVersion
         where
        maybeToEnum 0 = Prelude.Just SaverDef'LEGACY
        maybeToEnum 1 = Prelude.Just SaverDef'V1
        maybeToEnum 2 = Prelude.Just SaverDef'V2
        maybeToEnum _ = Prelude.Nothing
        showEnum SaverDef'LEGACY = "LEGACY"
        showEnum SaverDef'V1 = "V1"
        showEnum SaverDef'V2 = "V2"
        readEnum "LEGACY" = Prelude.Just SaverDef'LEGACY
        readEnum "V1" = Prelude.Just SaverDef'V1
        readEnum "V2" = Prelude.Just SaverDef'V2
        readEnum _ = Prelude.Nothing

instance Prelude.Enum SaverDef'CheckpointFormatVersion where
        toEnum k__
          = Prelude.maybe
              (Prelude.error
                 ((Prelude.++)
                    "toEnum: unknown value for enum CheckpointFormatVersion: "
                    (Prelude.show k__)))
              Prelude.id
              (Data.ProtoLens.maybeToEnum k__)
        fromEnum SaverDef'LEGACY = 0
        fromEnum SaverDef'V1 = 1
        fromEnum SaverDef'V2 = 2
        succ SaverDef'V2
          = Prelude.error
              "SaverDef'CheckpointFormatVersion.succ: bad argument SaverDef'V2. This value would be out of bounds."
        succ SaverDef'LEGACY = SaverDef'V1
        succ SaverDef'V1 = SaverDef'V2
        pred SaverDef'LEGACY
          = Prelude.error
              "SaverDef'CheckpointFormatVersion.pred: bad argument SaverDef'LEGACY. This value would be out of bounds."
        pred SaverDef'V1 = SaverDef'LEGACY
        pred SaverDef'V2 = SaverDef'V1
        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo

instance Prelude.Bounded SaverDef'CheckpointFormatVersion where
        minBound = SaverDef'LEGACY
        maxBound = SaverDef'V2

filenameTensorName ::
                   forall f s t a b .
                     (Lens.Labels.HasLens "filenameTensorName" f s t a b) =>
                     Lens.Family2.LensLike f s t a b
filenameTensorName
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "filenameTensorName")

keepCheckpointEveryNHours ::
                          forall f s t a b .
                            (Lens.Labels.HasLens "keepCheckpointEveryNHours" f s t a b) =>
                            Lens.Family2.LensLike f s t a b
keepCheckpointEveryNHours
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) ::
         (Lens.Labels.Proxy#) "keepCheckpointEveryNHours")

maxToKeep ::
          forall f s t a b . (Lens.Labels.HasLens "maxToKeep" f s t a b) =>
            Lens.Family2.LensLike f s t a b
maxToKeep
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maxToKeep")

restoreOpName ::
              forall f s t a b .
                (Lens.Labels.HasLens "restoreOpName" f s t a b) =>
                Lens.Family2.LensLike f s t a b
restoreOpName
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "restoreOpName")

saveTensorName ::
               forall f s t a b .
                 (Lens.Labels.HasLens "saveTensorName" f s t a b) =>
                 Lens.Family2.LensLike f s t a b
saveTensorName
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "saveTensorName")

sharded ::
        forall f s t a b . (Lens.Labels.HasLens "sharded" f s t a b) =>
          Lens.Family2.LensLike f s t a b
sharded
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sharded")

version ::
        forall f s t a b . (Lens.Labels.HasLens "version" f s t a b) =>
          Lens.Family2.LensLike f s t a b
version
  = Lens.Labels.lensOf
      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "version")