packages feed

conduit-vfs 0.1.0.2 → 0.1.0.3

raw patch · 3 files changed

+16/−12 lines, 3 filesdep +exceptionsdep +mtlPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

Dependencies added: exceptions, mtl

API changes (from Hackage documentation)

+ Data.Conduit.VFS.Disk: instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Data.Conduit.VFS.Disk.DiskVFS m)
+ Data.Conduit.VFS.Disk: instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (Data.Conduit.VFS.Disk.DiskVFS m)
+ Data.Conduit.VFS.Disk: instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Data.Conduit.VFS.Disk.DiskVFS m)
+ Data.Conduit.VFS.Disk: instance Control.Monad.Trans.Resource.Internal.MonadResource m => Control.Monad.Trans.Resource.Internal.MonadResource (Data.Conduit.VFS.Disk.DiskVFS m)

Files

README.md view
@@ -37,5 +37,7 @@ * `Zip` -- Treat a `.zip` file as a filesystem, and provide conduits that will auto-expand zip entries provided by upstream VFS conduits. * `Tar` -- Treat a `.tar` file as a filesystem, and provide conduits that will auto-expand tar entries provided by upstream VFS conduits. * `S3` -- Treat an AWS S3 bucket as a filesystem.+* `Twitter` -- Treat Twitter as a file system.  (eg: `/users/AnthroPunk/status/1042294921216978944` goes to [`https://twitter.com/AnthroPunk/status/1042294921216978944`](https://twitter.com/AnthroPunk/status/1042294921216978944)).+* `SQL` -- Treat an HDBC implementation as a filesystem. (eg: `/foos/id/12345` retrieves the tuple from the `foos` table where the `id` field is `12345`)  In addition, we are looking to implement a conduit which automatically uncompresses or compresses `.xz`, `.lzma`, `.z`, and `.gz` files provided by upstream VFS conduits.
conduit-vfs.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 4d186f4f49fa7de0b6b2fc30db08191e3e9e0e42781693c78593f6768cdea4cb+-- hash: 5e83ddcca6c556ca0bc9433f2fcbaaf81c6103cacf95c756d99f13b9e4422831  name:           conduit-vfs-version:        0.1.0.2+version:        0.1.0.3 synopsis:       Virtual file system for Conduit; disk, pure, and in-memory impls. description:    The goal of this package is to provide a common library and the core implementations for things that can be made to look like filesystems. In this package, a "filesystem" is tree of nodes, where the leaf nodes are files and the rest are directories. A "directory" is defined as a node that contains other nodes, and those other nodes are each keyed by a name. A "file" is defined as a collection of (possibly empty) bytes.                 This package includes the core types for a Virtual File System (VFS) abstraction for conduit, along with three implementations. The implementations are "disk" (write to the underlying filesystem), "in-memory" (store files in an MVar), and "pure" (pass state in a State monad). Because of the nature of conduits, this library defaults to lazy implementations of various data structures, including lazy ByteStrings and lazy HashMaps. Any overhead in space should be more than warranted by the savings through just-in-time computations.@@ -42,7 +42,7 @@   hs-source-dirs:       src   default-extensions: AutoDeriveTypeable BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DoAndIfThenElse EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MonadFailDesugaring MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TypeFamilies TypeSynonymInstances ViewPatterns TemplateHaskell TupleSections UnboxedTuples QuasiQuotes DeriveLift ExtendedDefaultRules-  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -fno-warn-type-defaults -fno-warn-tabs -fno-warn-unused-top-binds+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -fno-warn-type-defaults -fno-warn-tabs -fno-warn-unused-top-binds -flate-dmd-anal -fmax-simplifier-iterations=12 -fregs-iterative -fsimplifier-phases=6 -flate-specialise -fstatic-argument-transformation -fstrictness-before=4 -funfolding-keeness-factor=3   build-depends:       base >=4.7 && <5     , bytestring >=0.10.8.2 && <0.11@@ -50,10 +50,12 @@     , conduit >=1.3.1.1 && <1.4     , conduit-extra >=1.3.1.1 && <1.4     , directory >=1.3.3.0 && <1.4+    , exceptions >=0.10.2 && <0.11     , extra >=1.6.16 && <1.7     , filepath >=1.4.2.1 && <1.5     , monad-loops >=0.4.3 && <0.5     , mono-traversable >=1.0.11.0 && <1.1+    , mtl >=2.2.2 && <2.3     , resourcet >=1.2.2 && <1.3     , text >=1.2.3.1 && <1.3     , transformers >=0.5.6.2 && <0.6@@ -70,7 +72,7 @@   hs-source-dirs:       test   default-extensions: AutoDeriveTypeable BangPatterns BinaryLiterals ConstraintKinds DataKinds DefaultSignatures DeriveDataTypeable DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable DoAndIfThenElse EmptyDataDecls ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MonadFailDesugaring MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude OverloadedStrings PartialTypeSignatures PatternGuards PolyKinds RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TypeFamilies TypeSynonymInstances ViewPatterns TemplateHaskell TupleSections UnboxedTuples QuasiQuotes DeriveLift ExtendedDefaultRules-  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -fno-warn-type-defaults -fno-warn-tabs -fno-warn-unused-top-binds -threaded -rtsopts -with-rtsopts=-N+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -optP-Wno-nonportable-include-path -fno-warn-type-defaults -fno-warn-tabs -fno-warn-unused-top-binds -O0 -threaded -rtsopts -with-rtsopts=-N   build-depends:       base >=4.7 && <5     , bytestring >=0.10.8.2 && <0.11@@ -79,10 +81,12 @@     , conduit-extra >=1.3.1.1 && <1.4     , conduit-vfs     , directory >=1.3.3.0 && <1.4+    , exceptions >=0.10.2 && <0.11     , extra >=1.6.16 && <1.7     , filepath >=1.4.2.1 && <1.5     , monad-loops >=0.4.3 && <0.5     , mono-traversable >=1.0.11.0 && <1.1+    , mtl >=2.2.2 && <2.3     , resourcet >=1.2.2 && <1.3     , text >=1.2.3.1 && <1.3     , transformers >=0.5.6.2 && <0.6
src/Data/Conduit/VFS/Disk.hs view
@@ -17,30 +17,27 @@   import ClassyPrelude hiding (ByteString, handle, hash, bracket)+import Control.Monad.Catch (MonadCatch, MonadMask) import Control.Monad.Extra (ifM) import Control.Monad.Fail (MonadFail) import Control.Monad.Loops (whileM_) import Data.Conduit.VFS.Import+import System.Directory (removeFile) import System.IO.Extra (openBinaryFile) import System.Posix (getFileStatus, isRegularFile, isDirectory)-import System.Directory (removeFile) import UnliftIO.Directory (doesFileExist, listDirectory) import qualified Data.ByteString as SBS import qualified Data.ByteString.Lazy as LBS  -- | The basic implementation of the VFS. newtype DiskVFS m a = DiskVFS { unDVFS :: m a }-	deriving (Applicative, Functor, MonadFail, Monad)--instance (MonadIO m) => MonadIO (DiskVFS m) where-	liftIO = DiskVFS . liftIO-	{-# INLINE liftIO #-}+	deriving (Applicative, Functor, MonadFail, Monad, MonadThrow, MonadCatch, MonadMask, MonadResource, MonadIO)  instance (MonadUnliftIO m) => MonadUnliftIO (DiskVFS m) where 	askUnliftIO = do 		(UnliftIO interiorUnliftIO) <- lift askUnliftIO 		return $ UnliftIO $ \(DiskVFS interior) -> interiorUnliftIO interior-	{-# INLINE askUnliftIO #-}+	{-# INLINEABLE askUnliftIO #-}  instance MonadTrans DiskVFS where 	lift = DiskVFS@@ -122,10 +119,11 @@  	vfsRemoveSink = awaitForever $ \filename -> 			whenM (isExistingRegularFile filename) (liftIO $ removeFile filename)-	{-# INLINE vfsRemoveSink #-}+	{-# INLINEABLE vfsRemoveSink #-}  isExistingRegularFile :: MonadIO m => FilePath -> m Bool isExistingRegularFile filepath = liftIO $ liftM2 (&&) (doesFileExist filepath) (isRegularFile <$> getFileStatus filepath)+{-# INLINEABLE isExistingRegularFile #-}  -- | A class denoting that the type is usable as VFS conduits for reading and writing. instance (MonadUnliftIO m) => VFSC (DiskVFS m)