packages feed

serokell-util 0.9.0 → 0.10.0

raw patch · 8 files changed

+49/−64 lines, 8 filesdep −text-formatdep ~formattingdep ~o-clockdep ~universum

Dependencies removed: text-format

Dependency ranges changed: formatting, o-clock, universum

Files

serokell-util.cabal view
@@ -1,5 +1,5 @@ name:                serokell-util-version:             0.9.0+version:             0.10.0 synopsis:            General-purpose functions by Serokell homepage:            https://github.com/serokell/serokell-util license:             MIT@@ -16,6 +16,9 @@                      functions from existing projects and don't want to                      copy-paste them. cabal-version:       >=2.0+tested-with:         GHC == 8.0.2+                   , GHC == 8.2.2+                   , GHC == 8.4.3  library   hs-source-dirs:      src@@ -58,12 +61,12 @@                      , deepseq                      , exceptions                      , fmt-                     , formatting >= 6.2.0 && < 6.3+                     , formatting ^>= 6.3.4                      , hashable >= 1.2.4.0                      , microlens                      , microlens-mtl                      , mtl-                     , o-clock ^>= 0.1.1+                     , o-clock ^>= 1.0.0                      , parsec                      , process                      , QuickCheck >= 2.8.1@@ -71,10 +74,9 @@                      , scientific                      , template-haskell                      , text-                     , text-format                      , th-lift-instances                      , transformers-                     , universum ^>= 1.1.0+                     , universum ^>= 1.2.0                      , unordered-containers >= 0.2.7.0                      , vector @@ -104,12 +106,13 @@   build-depends:       aeson >= 1.0 && < 1.4                      , base >=4.8                      , extra >= 1.6+                     , formatting ^>= 6.3.4                      , hspec >= 2.1.10                      , QuickCheck >= 2.8.1                      , quickcheck-instances                      , scientific                      , serokell-util-                     , universum ^>= 1.1.0+                     , universum ^>= 1.2.0                      , unordered-containers >= 0.2.7.0                      , vector   hs-source-dirs:      test
src/Serokell/Data/Variant/Serialization.hs view
@@ -10,6 +10,7 @@ import Universum  import Data.Scientific (floatingOrInteger)+import Formatting (build, sformat)  import Serokell.Data.Variant.Variant (VarMap, Variant (..)) import Serokell.Util.Base64 (JsonByteString (JsonByteString))@@ -32,7 +33,8 @@ --    result type depends on sign (negative ⇒ Int, otherwise UInt).  varMapToObject :: VarMap -> Aeson.Object-varMapToObject = HM.fromList . map (bimap pretty Aeson.toJSON) . toPairs+varMapToObject =+    HM.fromList . map (bimap (sformat build) Aeson.toJSON) . toPairs  instance Aeson.ToJSON Variant where     toJSON VarNone       = Aeson.Null
src/Serokell/Data/Variant/Variant.hs view
@@ -12,7 +12,7 @@  import Universum -import Data.Text.Buildable (Buildable (build))+import qualified Formatting.Buildable as B import GHC.Exts (IsList (..))  import Serokell.Util.Text (listBuilderJSONIndent, mapBuilder)@@ -37,14 +37,14 @@     | VarMap !VarMap        -- ^ Map (with unique keys) from Variant to Variant.     deriving (Show,Eq,Generic) -instance Buildable Variant where+instance B.Buildable Variant where     build VarNone       = "None"-    build (VarBool v)   = build v-    build (VarInt v)    = build v-    build (VarUInt v)   = build v-    build (VarFloat v)  = build v-    build (VarBytes v)  = build . B16.encode $ v-    build (VarString v) = build v+    build (VarBool v)   = B.build v+    build (VarInt v)    = B.build v+    build (VarUInt v)   = B.build v+    build (VarFloat v)  = B.build v+    build (VarBytes v)  = B.build . B16.encode $ v+    build (VarString v) = B.build v     build (VarList v)   = listBuilderJSONIndent 2 v     build (VarMap v)    = mapBuilder . toPairs $ v 
src/Serokell/Util/Bench.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE CPP                 #-} {-# LANGUAGE ExplicitForAll      #-}+{-# LANGUAGE FlexibleContexts    #-}+{-# LANGUAGE MonoLocalBinds      #-} {-# LANGUAGE ScopedTypeVariables #-}  -- | Benchmark related utils.@@ -17,17 +18,24 @@  import Fmt (Buildable (build), (+||), (||+)) import System.Clock (Clock (..), TimeSpec, diffTimeSpec, getTime, toNanoSecs)-import Time (KnownRat, Time, ns, toUnit)+import Time (KnownDivRat, Nanosecond, Time, ns, toUnit)  -- | Get current wall-clock time as any time unit.-getWallTime :: forall unit m . (MonadIO m, KnownRat unit) => m (Time unit)+getWallTime ::+       forall unit m. (MonadIO m, KnownDivRat Nanosecond unit)+    => m (Time unit) getWallTime = timeSpecToUnit <$> getTime' Realtime  -- | Get current CPU time as any time unit.-getCpuTime :: forall unit m . (MonadIO m, KnownRat unit) => m (Time unit)+getCpuTime ::+       forall unit m. (MonadIO m, KnownDivRat Nanosecond unit)+    => m (Time unit) getCpuTime = timeSpecToUnit <$> getTime' ProcessCPUTime -timeSpecToUnit :: forall unit . KnownRat unit => TimeSpec -> Time unit+timeSpecToUnit ::+       forall unit. KnownDivRat Nanosecond unit+    => TimeSpec+    -> Time unit timeSpecToUnit = toUnit @unit . ns . fromIntegral . toNanoSecs  -- | Data type describing time passed during execution of something.
src/Serokell/Util/Exceptions.hs view
@@ -17,10 +17,9 @@ import Formatting (bprint, stext, string, (%))  import qualified Control.Monad as Monad-import qualified Data.Text.Buildable-import qualified Data.Text.Format as F+import qualified Formatting.Buildable -instance Buildable SomeException where+instance Formatting.Buildable.Buildable SomeException where     build e =         case fromException e of             Nothing                  -> bprint string (displayException e)@@ -33,8 +32,8 @@  instance Exception TextException -instance Buildable TextException where-    build = F.build "TextException: {}" . F.Only . teMessage+instance Formatting.Buildable.Buildable TextException where+    build = bprint ("TextException: " %stext) . teMessage  throwText :: MonadThrow m           => Text -> m a
src/Serokell/Util/Text.hs view
@@ -35,13 +35,6 @@        , mapBuilder        , mapBuilderJson -       -- * @text-format@ utilities-       , format-       , format'-       , formatSingle-       , formatSingle'-       , buildSingle-        -- * String readers        , readFractional        , readDouble@@ -51,21 +44,21 @@  import Prelude -import Data.Text.Buildable (Buildable (build))-import Data.Text.Format.Params (Params) import Data.Text.Lazy.Builder.RealFloat (FPFormat (Exponent, Fixed, Generic))+import Formatting (bprint, (%)) import Formatting (Format, fixed, later, sformat)+import Formatting.Buildable (Buildable (build)) import GHC.Exts (IsList (..))  import Serokell.Util.Common (chunksOf)  import qualified Data.Text as T-import qualified Data.Text.Format as F import qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy.Builder as B import qualified Data.Text.Lazy.Builder.Int as B import qualified Data.Text.Lazy.Builder.RealFloat as B import qualified Data.Text.Read as T+import qualified Formatting.Formatters as F import qualified Universum as U  -- | Render a floating point number using normal notation, with the@@ -126,13 +119,14 @@ pairBuilder     :: (Buildable a, Buildable b)     => (a, b) -> B.Builder-pairBuilder = F.build "({}, {})"+pairBuilder (a, b) = bprint ("(" % F.build % ", " % F.build % ")") a b  -- | Prints triple (a, b, c) like "(a, b, c)" tripleBuilder     :: (Buildable a, Buildable b, Buildable c)     => (a, b, c) -> B.Builder-tripleBuilder = F.build "({}, {}, {})"+tripleBuilder (a, b, c) =+    bprint ("("%F.build%", "%F.build%", "%F.build%")") a b c  -- | Generic list builder. Prints prefix, then values separated by delimiter and finally suffix listBuilder@@ -202,31 +196,8 @@ mapBuilderJson     :: (IsList t, Item t ~ (k, v), Buildable k, Buildable v)     => t -> B.Builder-mapBuilderJson = _listBuilder "{" ", " "}" . map (F.build "{}: {}") . toList--{-# DEPRECATED format, format', formatSingle, formatSingle' "Not typesafe. Use formatting library instead" #-}---- | Re-export Data.Text.Format.format for convenience-format :: Params ps-       => F.Format -> ps -> LT.Text-format = F.format---- | Version of Data.Text.Format.format which returns strict Text-format' :: Params ps-        => F.Format -> ps -> T.Text-format' f = LT.toStrict . F.format f--formatSingle :: Buildable a-             => F.Format -> a -> LT.Text-formatSingle f = format f . F.Only--formatSingle' :: Buildable a-              => F.Format -> a -> T.Text-formatSingle' f = LT.toStrict . formatSingle f--buildSingle :: Buildable a-            => F.Format -> a -> B.Builder-buildSingle f = F.build f . F.Only+mapBuilderJson = _listBuilder "{" ", " "}" .+    map (\(a, b) -> bprint (F.build % ": " % F.build) a b) . toList  -- | Read fractional number. Returns error (i. e. Left) if there is something else readFractional :: Fractional a => T.Text -> Either String a
test/Test/Serokell/Data/Variant/VariantSpec.hs view
@@ -8,6 +8,7 @@ import Universum  import Data.Scientific (floatingOrInteger, fromFloatDigits)+import Formatting (build, sformat) import Test.Hspec (Spec, describe) import Test.Hspec.QuickCheck (prop) import Test.QuickCheck ((===))@@ -46,7 +47,7 @@ jsonFixer v = v  toStr :: S.Variant -> S.Variant-toStr = S.VarString . pretty+toStr = S.VarString . sformat build  jsonMid :: S.Variant -> S.Variant jsonMid = maybe err id . A.decode . A.encode
test/Test/Serokell/Util/TextSpec.hs view
@@ -7,6 +7,7 @@  import Universum +import Formatting (Buildable, build, sformat) import Test.Hspec (Spec, describe) import Test.Hspec.QuickCheck (prop) import Test.QuickCheck ((===))@@ -31,4 +32,4 @@                     \(a :: Word64)  -> Right a === showReadIntegral a  showReadIntegral :: (Buildable a, Integral a) => a -> Either String a-showReadIntegral = S.readDecimal . pretty+showReadIntegral = S.readDecimal . sformat build