conduit-combinators 1.0.3.1 → 1.0.4
raw patch · 6 files changed
+75/−18 lines, 6 filesdep ~basedep ~chunked-datadep ~mono-traversablePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, chunked-data, mono-traversable
API changes (from Hackage documentation)
- Conduit: elemCE :: (Monad m, EqSequence seq) => Element seq -> Consumer seq m Bool
+ Conduit: elemCE :: (Monad m, IsSequence seq, Eq (Element seq)) => Element seq -> Consumer seq m Bool
- Conduit: lift :: (MonadTrans t, Monad m) => m a -> t m a
+ Conduit: lift :: Monad m => m a -> t m a
- Conduit: liftBase :: MonadBase b m => b α -> m α
+ Conduit: liftBase :: b α -> m α
- Conduit: liftIO :: MonadIO m => IO a -> m a
+ Conduit: liftIO :: IO a -> m a
- Conduit: maximumCE :: (Monad m, OrdSequence seq) => Consumer seq m (Maybe (Element seq))
+ Conduit: maximumCE :: (Monad m, IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))
- Conduit: minimumCE :: (Monad m, OrdSequence seq) => Consumer seq m (Maybe (Element seq))
+ Conduit: minimumCE :: (Monad m, IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))
- Conduit: notElemCE :: (Monad m, EqSequence seq) => Element seq -> Consumer seq m Bool
+ Conduit: notElemCE :: (Monad m, IsSequence seq, Eq (Element seq)) => Element seq -> Consumer seq m Bool
- Conduit: sourceFile :: (MonadResource m, IOData a) => FilePath -> Producer m a
+ Conduit: sourceFile :: (MonadResource m, IOData a, MonoFoldable a) => FilePath -> Producer m a
- Conduit: sourceHandle :: (MonadIO m, IOData a) => Handle -> Producer m a
+ Conduit: sourceHandle :: (MonadIO m, IOData a, MonoFoldable a) => Handle -> Producer m a
- Conduit: sourceIOHandle :: (MonadResource m, IOData a) => IO Handle -> Producer m a
+ Conduit: sourceIOHandle :: (MonadResource m, IOData a, MonoFoldable a) => IO Handle -> Producer m a
- Conduit: stdinC :: (MonadIO m, IOData a) => Producer m a
+ Conduit: stdinC :: (MonadIO m, IOData a, MonoFoldable a) => Producer m a
- Conduit: throwM :: (MonadThrow m, Exception e) => e -> m a
+ Conduit: throwM :: Exception e => e -> m a
- Data.Conduit.Combinators: elemE :: (Monad m, EqSequence seq) => Element seq -> Consumer seq m Bool
+ Data.Conduit.Combinators: elemE :: (Monad m, IsSequence seq, Eq (Element seq)) => Element seq -> Consumer seq m Bool
- Data.Conduit.Combinators: maximumE :: (Monad m, OrdSequence seq) => Consumer seq m (Maybe (Element seq))
+ Data.Conduit.Combinators: maximumE :: (Monad m, IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))
- Data.Conduit.Combinators: minimumE :: (Monad m, OrdSequence seq) => Consumer seq m (Maybe (Element seq))
+ Data.Conduit.Combinators: minimumE :: (Monad m, IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))
- Data.Conduit.Combinators: notElemE :: (Monad m, EqSequence seq) => Element seq -> Consumer seq m Bool
+ Data.Conduit.Combinators: notElemE :: (Monad m, IsSequence seq, Eq (Element seq)) => Element seq -> Consumer seq m Bool
- Data.Conduit.Combinators: sourceFile :: (MonadResource m, IOData a) => FilePath -> Producer m a
+ Data.Conduit.Combinators: sourceFile :: (MonadResource m, IOData a, MonoFoldable a) => FilePath -> Producer m a
- Data.Conduit.Combinators: sourceHandle :: (MonadIO m, IOData a) => Handle -> Producer m a
+ Data.Conduit.Combinators: sourceHandle :: (MonadIO m, IOData a, MonoFoldable a) => Handle -> Producer m a
- Data.Conduit.Combinators: sourceIOHandle :: (MonadResource m, IOData a) => IO Handle -> Producer m a
+ Data.Conduit.Combinators: sourceIOHandle :: (MonadResource m, IOData a, MonoFoldable a) => IO Handle -> Producer m a
- Data.Conduit.Combinators: stdin :: (MonadIO m, IOData a) => Producer m a
+ Data.Conduit.Combinators: stdin :: (MonadIO m, IOData a, MonoFoldable a) => Producer m a
- Data.Conduit.Combinators.Stream: sourceHandleS :: (MonadIO m, IOData a) => Handle -> StreamProducer m a
+ Data.Conduit.Combinators.Stream: sourceHandleS :: (MonadIO m, MonoFoldable a, IOData a) => Handle -> StreamProducer m a
Files
- ChangeLog.md +4/−0
- Data/Conduit/Combinators.hs +28/−6
- Data/Conduit/Combinators/Stream.hs +7/−2
- Data/Conduit/Combinators/Unqualified.hs +28/−6
- conduit-combinators.cabal +4/−4
- test/Spec.hs +4/−0
ChangeLog.md view
@@ -1,3 +1,7 @@+# 1.0.4++* Move into mono-traversable repo, support mono-traversable 1.0+ # 1.0.3.1 * Support for QuickCheck 2.8.2
Data/Conduit/Combinators.hs view
@@ -216,7 +216,6 @@ import Data.Monoid (Monoid (..)) import Data.MonoTraversable import qualified Data.Sequences as Seq-import Data.Sequences.Lazy import qualified Data.Vector.Generic as V import qualified Data.Vector.Generic.Mutable as VM import Data.Void (absurd)@@ -230,7 +229,6 @@ import qualified Prelude import System.IO (Handle) import qualified System.IO as SIO-import qualified Data.Textual.Encoding as DTE import qualified Data.Conduit.Text as CT import Data.ByteString (ByteString) import Data.Text (Text)@@ -241,6 +239,14 @@ import Data.Primitive.MutVar (MutVar, newMutVar, readMutVar, writeMutVar) +#if MIN_VERSION_mono_traversable(1,0,0)+import qualified Data.Sequences as DTE+import Data.Sequences (LazySequence (..))+#else+import Data.Sequences.Lazy+import qualified Data.Textual.Encoding as DTE+#endif+ -- Defines INLINE_RULE0, INLINE_RULE, STREAMING0, and STREAMING. #include "fusion-macros.h" @@ -409,7 +415,7 @@ -- including @ByteString@ and @Text@. -- -- Since 1.0.0-sourceFile :: (MonadResource m, IOData a) => FilePath -> Producer m a+sourceFile :: (MonadResource m, IOData a, MonoFoldable a) => FilePath -> Producer m a sourceFile fp = sourceIOHandle (SIO.openFile fp SIO.ReadMode) {-# INLINE sourceFile #-} @@ -420,7 +426,7 @@ -- Subject to fusion -- -- Since 1.0.0-sourceHandle, sourceHandleC :: (MonadIO m, IOData a) => Handle -> Producer m a+sourceHandle, sourceHandleC :: (MonadIO m, IOData a, MonoFoldable a) => Handle -> Producer m a sourceHandleC h = loop where@@ -437,7 +443,7 @@ -- Automatically closes the file at completion. -- -- Since 1.0.0-sourceIOHandle :: (MonadResource m, IOData a) => SIO.IO Handle -> Producer m a+sourceIOHandle :: (MonadResource m, IOData a, MonoFoldable a) => SIO.IO Handle -> Producer m a sourceIOHandle alloc = bracketP alloc SIO.hClose sourceHandle {-# INLINE sourceIOHandle #-} @@ -446,7 +452,7 @@ -- Subject to fusion -- -- Since 1.0.0-stdin :: (MonadIO m, IOData a) => Producer m a+stdin :: (MonadIO m, IOData a, MonoFoldable a) => Producer m a INLINE_RULE0(stdin, sourceHandle SIO.stdin) -- | Create an infinite stream of random values, seeding from the system random@@ -849,7 +855,11 @@ -- Subject to fusion -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+elemE :: (Monad m, Seq.IsSequence seq, Eq (Element seq))+#else elemE :: (Monad m, Seq.EqSequence seq)+#endif => Element seq -> Consumer seq m Bool #if MIN_VERSION_mono_traversable(0,8,0)@@ -875,7 +885,11 @@ -- Subject to fusion -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+notElemE :: (Monad m, Seq.IsSequence seq, Eq (Element seq))+#else notElemE :: (Monad m, Seq.EqSequence seq)+#endif => Element seq -> Consumer seq m Bool #if MIN_VERSION_mono_traversable(0,8,0)@@ -1124,7 +1138,11 @@ -- Subject to fusion -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+maximumE :: (Monad m, Seq.IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))+#else maximumE :: (Monad m, Seq.OrdSequence seq) => Consumer seq m (Maybe (Element seq))+#endif INLINE_RULE0(maximumE, foldl1E max) -- | Get the smallest value in the stream, if present.@@ -1140,7 +1158,11 @@ -- Subject to fusion -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+minimumE :: (Monad m, Seq.IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))+#else minimumE :: (Monad m, Seq.OrdSequence seq) => Consumer seq m (Maybe (Element seq))+#endif INLINE_RULE0(minimumE, foldl1E min) -- | True if there are no values in the stream.
Data/Conduit/Combinators/Stream.hs view
@@ -56,12 +56,17 @@ #endif import qualified Data.NonNull as NonNull import qualified Data.Sequences as Seq-import Data.Sequences.Lazy import qualified Data.Vector.Generic as V import qualified Data.Vector.Generic.Mutable as VM import Prelude import System.IO (Handle) +#if MIN_VERSION_mono_traversable(1,0,0)+import Data.Sequences (LazySequence (..))+#else+import Data.Sequences.Lazy+#endif+ -- END IMPORTS yieldManyS :: (Monad m, MonoFoldable mono)@@ -97,7 +102,7 @@ else Stop () {-# INLINE repeatWhileMS #-} -sourceHandleS :: (MonadIO m, IOData a) => Handle -> StreamProducer m a+sourceHandleS :: (MonadIO m, MonoFoldable a, IOData a) => Handle -> StreamProducer m a sourceHandleS h _ = Stream step (return ()) where
Data/Conduit/Combinators/Unqualified.hs view
@@ -194,7 +194,6 @@ import Data.Monoid (Monoid (..)) import Data.MonoTraversable import qualified Data.Sequences as Seq-import Data.Sequences.Lazy import qualified Data.Vector.Generic as V import Prelude (Bool (..), Eq (..), Int, Maybe (..), Monad (..), Num (..),@@ -204,12 +203,19 @@ import qualified Prelude import System.IO (Handle) import qualified System.IO as SIO-import qualified Data.Textual.Encoding as DTE import Data.ByteString (ByteString) import Data.Text (Text) import qualified System.Random.MWC as MWC +#if MIN_VERSION_mono_traversable(1,0,0)+import qualified Data.Sequences as DTE+import Data.Sequences (LazySequence (..))+#else+import Data.Sequences.Lazy+import qualified Data.Textual.Encoding as DTE+#endif + -- END IMPORTS -- | Yield each of the values contained by the given @MonoFoldable@.@@ -316,7 +322,7 @@ -- including @ByteString@ and @Text@. -- -- Since 1.0.0-sourceFile :: (MonadResource m, IOData a) => FilePath -> Producer m a+sourceFile :: (MonadResource m, IOData a, MonoFoldable a) => FilePath -> Producer m a sourceFile = CC.sourceFile {-# INLINE sourceFile #-} @@ -325,7 +331,7 @@ -- Does not close the @Handle@ at any point. -- -- Since 1.0.0-sourceHandle :: (MonadIO m, IOData a) => Handle -> Producer m a+sourceHandle :: (MonadIO m, IOData a, MonoFoldable a) => Handle -> Producer m a sourceHandle = CC.sourceHandle {-# INLINE sourceHandle #-} @@ -334,14 +340,14 @@ -- Automatically closes the file at completion. -- -- Since 1.0.0-sourceIOHandle :: (MonadResource m, IOData a) => SIO.IO Handle -> Producer m a+sourceIOHandle :: (MonadResource m, IOData a, MonoFoldable a) => SIO.IO Handle -> Producer m a sourceIOHandle = CC.sourceIOHandle {-# INLINE sourceIOHandle #-} -- | @sourceHandle@ applied to @stdin@. -- -- Since 1.0.0-stdinC :: (MonadIO m, IOData a) => Producer m a+stdinC :: (MonadIO m, IOData a, MonoFoldable a) => Producer m a stdinC = CC.stdin {-# INLINE stdinC #-} @@ -650,7 +656,11 @@ -- Stops consuming as soon as a match is found. -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+elemCE :: (Monad m, Seq.IsSequence seq, Eq (Element seq))+#else elemCE :: (Monad m, Seq.EqSequence seq)+#endif => Element seq -> Consumer seq m Bool elemCE = CC.elemE@@ -670,7 +680,11 @@ -- Stops consuming as soon as a match is found. -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+notElemCE :: (Monad m, Seq.IsSequence seq, Eq (Element seq))+#else notElemCE :: (Monad m, Seq.EqSequence seq)+#endif => Element seq -> Consumer seq m Bool notElemCE = CC.notElemE@@ -837,7 +851,11 @@ -- | Get the largest element in the chunked stream, if present. -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+maximumCE :: (Monad m, Seq.IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))+#else maximumCE :: (Monad m, Seq.OrdSequence seq) => Consumer seq m (Maybe (Element seq))+#endif maximumCE = CC.maximumE {-# INLINE maximumCE #-} @@ -851,7 +869,11 @@ -- | Get the smallest element in the chunked stream, if present. -- -- Since 1.0.0+#if MIN_VERSION_mono_traversable(1,0,0)+minimumCE :: (Monad m, Seq.IsSequence seq, Ord (Element seq)) => Consumer seq m (Maybe (Element seq))+#else minimumCE :: (Monad m, Seq.OrdSequence seq) => Consumer seq m (Maybe (Element seq))+#endif minimumCE = CC.minimumE {-# INLINE minimumCE #-}
conduit-combinators.cabal view
@@ -1,8 +1,8 @@ name: conduit-combinators-version: 1.0.3.1+version: 1.0.4 synopsis: Commonly used conduit functions, for both chunked and unchunked data description: Provides a replacement for Data.Conduit.List, as well as a convenient Conduit module.-homepage: https://github.com/fpco/conduit-combinators+homepage: https://github.com/snoyberg/mono-traversable license: MIT license-file: LICENSE author: Michael Snoyman@@ -42,7 +42,7 @@ else build-depends: unix include-dirs: .- ghc-options: -Wall -O2 -rtsopts+ ghc-options: -Wall -O2 test-suite test hs-source-dirs: test@@ -74,4 +74,4 @@ source-repository head type: git- location: git://github.com/fpco/conduit-combinators.git+ location: https://github.com/snoyberg/mono-traversable.git
test/Spec.hs view
@@ -28,8 +28,12 @@ import Control.Applicative ((<$>), (<*>)) #endif import Data.Builder+#if MIN_VERSION_mono_traversable(1,0,0)+import Data.Sequences (LazySequence (..), Utf8 (..))+#else import Data.Sequences.Lazy import Data.Textual.Encoding+#endif import qualified Data.NonNull as NN import System.IO.Silently (hCapture) import GHC.IO.Handle (hDuplicateTo)