packages feed

asif 4.0.1 → 4.1.0

raw patch · 3 files changed

+114/−75 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Arbor.File.Format.Asif.Extract: listLazy :: Get a -> ByteString -> [Either String a]

Files

asif.cabal view
@@ -1,10 +1,7 @@--- This file has been generated from package.yaml by hpack version 0.18.1.------ see: https://github.com/sol/hpack- name:           asif-version:        4.0.1-description:    Please see the README on Github at <https://github.com/packetloop/asif#readme>+version:        4.1.0+description:    Library for creating and querying segmented feeds. Please see <https://github.com/packetloop/asif#readme>+synopsis:       Library for creating and querying segmented feeds category:       Services homepage:       https://github.com/packetloop/asif#readme bug-reports:    https://github.com/packetloop/asif/issues@@ -15,7 +12,6 @@ license-file:   LICENSE build-type:     Simple cabal-version:  >= 1.10- extra-source-files:     ChangeLog.md     README.md@@ -25,37 +21,6 @@   location: https://github.com/packetloop/asif  library-  hs-source-dirs:-      src-  default-extensions: BangPatterns FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings TupleSections-  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints-  build-depends:-      base >= 4.7 && < 5-    , attoparsec-    , binary-    , bytestring-    , conduit-    , conduit-combinators-    , conduit-extra-    , containers-    , cpu-    , either-    , exceptions-    , foldl-    , generic-lens-    , hw-bits-    , hw-ip-    , iproute-    , lens-    , network-    , old-locale-    , profunctors-    , resourcet-    , temporary-resourcet-    , text-    , thyme-    , transformers-    , vector   exposed-modules:       Arbor.File.Format.Asif       Arbor.File.Format.Asif.ByIndex@@ -81,17 +46,13 @@       Arbor.File.Format.Asif.Maybe       Arbor.File.Format.Asif.Text       Paths_asif-  default-language: Haskell2010--executable asif-  main-is: Main.hs   hs-source-dirs:-      app+      src   default-extensions: BangPatterns FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings TupleSections-  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -threaded -rtsopts -O2 -msse4.2+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints   build-depends:-      base >= 4.7 && < 5-    , attoparsec+      attoparsec+    , base >=4.7 && <5     , binary     , bytestring     , conduit@@ -116,9 +77,10 @@     , thyme     , transformers     , vector-    , asif-    , directory-    , optparse-applicative+  default-language: Haskell2010++executable asif+  main-is: Main.hs   other-modules:       App.Commands       App.Commands.Dump@@ -131,18 +93,15 @@       App.Commands.Options.Type       App.Dump       App.IO-  default-language: Haskell2010--test-suite asif-test-  type: exitcode-stdio-1.0-  main-is: Spec.hs+      Paths_asif   hs-source-dirs:-      test+      app   default-extensions: BangPatterns FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings TupleSections-  ghc-options: -threaded -rtsopts -with-rtsopts=-N+  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -threaded -rtsopts -O2 -msse4.2   build-depends:-      base >= 4.7 && < 5+      asif     , attoparsec+    , base >=4.7 && <5     , binary     , bytestring     , conduit@@ -150,6 +109,7 @@     , conduit-extra     , containers     , cpu+    , directory     , either     , exceptions     , foldl@@ -160,6 +120,7 @@     , lens     , network     , old-locale+    , optparse-applicative     , profunctors     , resourcet     , temporary-resourcet@@ -167,13 +128,15 @@     , thyme     , transformers     , vector-    , asif-    , hspec-    , hedgehog-    , hw-hspec-hedgehog+  default-language: Haskell2010++test-suite asif-test+  type: exitcode-stdio-1.0+  main-is: Spec.hs   other-modules:       Arbor.File.Format.Asif.ByteString.BuilderSpec       Arbor.File.Format.Asif.Data.IpSpec+      Arbor.File.Format.Asif.ExtractSpec       Arbor.File.Format.Asif.Format.SegmentValueSpec       Arbor.File.Format.Asif.Format.TextSpec       Arbor.File.Format.Asif.WriteSpec@@ -181,4 +144,40 @@       Arbor.TestUtils       Gen.Feed       TestApp+      Paths_asif+  hs-source-dirs:+      test+  default-extensions: BangPatterns FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings TupleSections+  ghc-options: -threaded -rtsopts -with-rtsopts=-N+  build-depends:+      asif+    , attoparsec+    , base >=4.7 && <5+    , binary+    , bytestring+    , conduit+    , conduit-combinators+    , conduit-extra+    , containers+    , cpu+    , either+    , exceptions+    , foldl+    , generic-lens+    , hedgehog+    , hspec+    , hw-bits+    , hw-hspec-hedgehog+    , hw-ip+    , iproute+    , lens+    , network+    , old-locale+    , profunctors+    , resourcet+    , temporary-resourcet+    , text+    , thyme+    , transformers+    , vector   default-language: Haskell2010
src/Arbor/File/Format/Asif/Extract.hs view
@@ -8,26 +8,28 @@ module Arbor.File.Format.Asif.Extract   ( formats   , list+  , listLazy   , map   , vectorBoxed   , vectorUnboxed   ) where -import           Arbor.File.Format.Asif.Format.Type (Format)-import           Arbor.File.Format.Asif.Whatever-import           Control.Lens-import           Data.Binary.Get-import           Data.List                          hiding (map)-import           Data.Text                          (Text)-import           Data.Text.Encoding                 (decodeUtf8')-import           Data.Text.Encoding.Error-import           Prelude                            hiding (map)+import Arbor.File.Format.Asif.Format.Type (Format)+import Arbor.File.Format.Asif.Whatever+import Control.Lens+import Data.Binary.Get+import Data.List                          hiding (map)+import Data.Text                          (Text)+import Data.Text.Encoding                 (decodeUtf8')+import Data.Text.Encoding.Error+import Prelude                            hiding (map) -import qualified Data.Binary.Get                    as G-import qualified Data.ByteString.Lazy               as LBS-import qualified Data.Map.Strict                    as M-import qualified Data.Vector                        as V-import qualified Data.Vector.Unboxed                as VU+import qualified Data.Binary.Get      as G+import qualified Data.ByteString.Lazy as LBS+import qualified Data.List            as L+import qualified Data.Map.Strict      as M+import qualified Data.Vector          as V+import qualified Data.Vector.Unboxed  as VU  vectorBoxed :: Get a -> LBS.ByteString -> V.Vector a vectorBoxed g = V.unfoldr step@@ -48,6 +50,14 @@           if not empty             then (:) <$> g <*> go             else return []++listLazy :: Get a -> LBS.ByteString -> [Either String a]+listLazy g bs =+  flip L.unfoldr bs $ \acc ->+    if LBS.null acc then Nothing+    else case runGetOrFail g acc of+      Left (_, _, err)  -> Just (Left err, LBS.empty)+      Right (bs', _, a) -> Just (Right a, bs')  map :: (Ord a) => LBS.ByteString -> Get a -> LBS.ByteString -> Get b -> M.Map a b map ks kf vs vf = foldr (\(k, v) m -> M.insert k v m) M.empty $ zip keys values
+ test/Arbor/File/Format/Asif/ExtractSpec.hs view
@@ -0,0 +1,30 @@+{-# LANGUAGE DataKinds           #-}+{-# LANGUAGE ScopedTypeVariables #-}++module Arbor.File.Format.Asif.ExtractSpec+  ( spec+  ) where++import Arbor.File.Format.Asif.Extract+import Control.Lens++import qualified Data.Binary.Get         as G+import qualified Data.ByteString.Builder as BB+import qualified Data.ByteString.Lazy    as LBS++import HaskellWorks.Hspec.Hedgehog+import Hedgehog+import Test.Hspec++import qualified Data.List      as L+import qualified Hedgehog.Gen   as Gen+import qualified Hedgehog.Range as Range++{-# ANN module ("HLint: ignore Redundant do"  :: String) #-}++spec :: Spec+spec = describe "Arbor.File.Format.Asif.ExtractSpec" $ do+  it "listLazy should extract correct values" $ require $ property $ do+    ts <- forAll $ Gen.list (Range.linear 0 20) (Gen.int64 (Range.linear 0 maxBound))+    let body = ts <&> BB.int64LE & mconcat & BB.toLazyByteString+    listLazy G.getInt64le body === fmap Right ts