mirror of
https://github.com/tensorflow/haskell.git
synced 2024-11-23 03:19:44 +01:00
Update to LTS-11 (#187)
Fix Conduit 1.3 deprecation warnings - The `Conduit`, `Producer` and `Consumer` aliases are deprecated and `ConduitT` is used directly instead - `=$=` is deprecated and replaced by `.|`
This commit is contained in:
parent
baa501b262
commit
88dafe8f3a
4 changed files with 17 additions and 18 deletions
|
@ -1,4 +1,4 @@
|
||||||
resolver: lts-8.13
|
resolver: lts-11.9
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
- tensorflow
|
- tensorflow
|
||||||
|
@ -16,12 +16,11 @@ packages:
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- snappy-framing-0.1.1
|
- snappy-framing-0.1.1
|
||||||
- snappy-0.2.0.2
|
- snappy-0.2.0.2
|
||||||
# TODO: Remove these once the new versions are in lts-9.
|
# `haskell-src-exts < 1.20` is needed due the dependency on
|
||||||
|
# `proto-lens-protoc < 0.3` in the `tensorflow-proto` package:
|
||||||
|
- haskell-src-exts-1.19.1
|
||||||
- proto-lens-protobuf-types-0.2.2.0
|
- proto-lens-protobuf-types-0.2.2.0
|
||||||
- proto-lens-0.2.2.0
|
|
||||||
- proto-lens-descriptors-0.2.2.0
|
|
||||||
- proto-lens-protoc-0.2.2.3
|
- proto-lens-protoc-0.2.2.3
|
||||||
- lens-labels-0.1.0.2
|
|
||||||
|
|
||||||
# For Mac OS X, whose linker doesn't use this path by default
|
# For Mac OS X, whose linker doesn't use this path by default
|
||||||
# unless you run `xcode-select --install`.
|
# unless you run `xcode-select --install`.
|
||||||
|
|
|
@ -58,7 +58,7 @@ import Control.Monad.Catch (MonadMask, bracket)
|
||||||
import Control.Monad.IO.Class (MonadIO, liftIO)
|
import Control.Monad.IO.Class (MonadIO, liftIO)
|
||||||
import Control.Monad.Trans.Resource (runResourceT)
|
import Control.Monad.Trans.Resource (runResourceT)
|
||||||
import Data.ByteString (ByteString)
|
import Data.ByteString (ByteString)
|
||||||
import Data.Conduit ((=$=))
|
import Data.Conduit ((.|))
|
||||||
import Data.Conduit.TQueue (sourceTBMQueue)
|
import Data.Conduit.TQueue (sourceTBMQueue)
|
||||||
import Data.Default (def)
|
import Data.Default (def)
|
||||||
import Data.Int (Int64)
|
import Data.Int (Int64)
|
||||||
|
@ -113,8 +113,8 @@ newEventWriter logdir = do
|
||||||
let writer = EventWriter q done
|
let writer = EventWriter q done
|
||||||
consumeQueue = runResourceT $ Conduit.runConduit $
|
consumeQueue = runResourceT $ Conduit.runConduit $
|
||||||
sourceTBMQueue q
|
sourceTBMQueue q
|
||||||
=$= Conduit.map (L.fromStrict . encodeMessage)
|
.| Conduit.map (L.fromStrict . encodeMessage)
|
||||||
=$= sinkTFRecords filename
|
.| sinkTFRecords filename
|
||||||
_ <- forkFinally consumeQueue (\_ -> putMVar done ())
|
_ <- forkFinally consumeQueue (\_ -> putMVar done ())
|
||||||
logEvent writer $ def & wallTime .~ t
|
logEvent writer $ def & wallTime .~ t
|
||||||
& fileVersion .~ T.pack "brain.Event:2"
|
& fileVersion .~ T.pack "brain.Event:2"
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
module Main where
|
module Main where
|
||||||
|
|
||||||
import Control.Monad.Trans.Resource (runResourceT)
|
import Control.Monad.Trans.Resource (runResourceT)
|
||||||
import Data.Conduit ((=$=))
|
import Data.Conduit ((.|))
|
||||||
import Data.Default (def)
|
import Data.Default (def)
|
||||||
import Data.List ((\\))
|
import Data.List ((\\))
|
||||||
import Data.ProtoLens (encodeMessage, decodeMessageOrDie)
|
import Data.ProtoLens (encodeMessage, decodeMessageOrDie)
|
||||||
|
@ -53,7 +53,7 @@ testEventWriter = testCase "EventWriter" $
|
||||||
files <- listDirectory dir
|
files <- listDirectory dir
|
||||||
assertEqual "One file exists after" 1 (length files)
|
assertEqual "One file exists after" 1 (length files)
|
||||||
records <- runResourceT $ Conduit.runConduit $
|
records <- runResourceT $ Conduit.runConduit $
|
||||||
sourceTFRecords (dir </> head files) =$= Conduit.consume
|
sourceTFRecords (dir </> head files) .| Conduit.consume
|
||||||
assertBool "File is not empty" (not (null records))
|
assertBool "File is not empty" (not (null records))
|
||||||
let (header:body) = decodeMessageOrDie . BL.toStrict <$> records
|
let (header:body) = decodeMessageOrDie . BL.toStrict <$> records
|
||||||
assertEqual "Header has expected version"
|
assertEqual "Header has expected version"
|
||||||
|
@ -71,7 +71,7 @@ testLogGraph = testCase "LogGraph" $
|
||||||
logGraph eventWriter graphBuild
|
logGraph eventWriter graphBuild
|
||||||
files <- listDirectory dir
|
files <- listDirectory dir
|
||||||
records <- runResourceT $ Conduit.runConduit $
|
records <- runResourceT $ Conduit.runConduit $
|
||||||
sourceTFRecords (dir </> head files) =$= Conduit.consume
|
sourceTFRecords (dir </> head files) .| Conduit.consume
|
||||||
let (_:event:_) = decodeMessageOrDie . BL.toStrict <$> records
|
let (_:event:_) = decodeMessageOrDie . BL.toStrict <$> records
|
||||||
assertEqual "First record expected to be Event containing GraphDef" expectedGraphEvent event
|
assertEqual "First record expected to be Event containing GraphDef" expectedGraphEvent event
|
||||||
|
|
||||||
|
|
|
@ -30,24 +30,24 @@ import Control.Monad.Catch (MonadThrow)
|
||||||
import Control.Monad.Trans.Resource (MonadResource)
|
import Control.Monad.Trans.Resource (MonadResource)
|
||||||
import qualified Data.ByteString as B
|
import qualified Data.ByteString as B
|
||||||
import qualified Data.ByteString.Lazy as BL
|
import qualified Data.ByteString.Lazy as BL
|
||||||
import Data.Conduit ((=$=), Conduit, Consumer, Producer)
|
import Data.Conduit ((.|), ConduitT)
|
||||||
import Data.Conduit.Binary (sinkFile, sourceFile)
|
import Data.Conduit.Binary (sinkFile, sourceFile)
|
||||||
import Data.Conduit.Cereal (conduitGet2, conduitPut)
|
import Data.Conduit.Cereal (conduitGet2, conduitPut)
|
||||||
|
|
||||||
import TensorFlow.Records (getTFRecord, putTFRecord)
|
import TensorFlow.Records (getTFRecord, putTFRecord)
|
||||||
|
|
||||||
-- | Decode TFRecords from a stream of bytes.
|
-- | Decode TFRecords from a stream of bytes.
|
||||||
decodeTFRecords :: MonadThrow m => Conduit B.ByteString m BL.ByteString
|
decodeTFRecords :: MonadThrow m => ConduitT B.ByteString BL.ByteString m ()
|
||||||
decodeTFRecords = conduitGet2 getTFRecord
|
decodeTFRecords = conduitGet2 getTFRecord
|
||||||
|
|
||||||
-- | Read TFRecords from a file.
|
-- | Read TFRecords from a file.
|
||||||
sourceTFRecords :: (MonadResource m, MonadThrow m) => FilePath -> Producer m BL.ByteString
|
sourceTFRecords :: (MonadResource m, MonadThrow m) => FilePath -> ConduitT i BL.ByteString m ()
|
||||||
sourceTFRecords path = sourceFile path =$= decodeTFRecords
|
sourceTFRecords path = sourceFile path .| decodeTFRecords
|
||||||
|
|
||||||
-- | Encode TFRecords to a stream of bytes.
|
-- | Encode TFRecords to a stream of bytes.
|
||||||
encodeTFRecords :: Monad m => Conduit BL.ByteString m B.ByteString
|
encodeTFRecords :: Monad m => ConduitT BL.ByteString B.ByteString m ()
|
||||||
encodeTFRecords = conduitPut putTFRecord
|
encodeTFRecords = conduitPut putTFRecord
|
||||||
|
|
||||||
-- | Write TFRecords to a file.
|
-- | Write TFRecords to a file.
|
||||||
sinkTFRecords :: (MonadResource m) => FilePath -> Consumer BL.ByteString m ()
|
sinkTFRecords :: (MonadResource m) => FilePath -> ConduitT BL.ByteString o m ()
|
||||||
sinkTFRecords path = encodeTFRecords =$= sinkFile path
|
sinkTFRecords path = encodeTFRecords .| sinkFile path
|
||||||
|
|
Loading…
Reference in a new issue