packages feed

binary-instances 1 → 1.0.6

raw patch · 12 files changed

Files

CHANGELOG.md view
@@ -1,3 +1,30 @@+## 1.0.6++- Support GHC-9.12.1+- Fix a small bug QuarterOfYear instance++## 1.0.5++- Support GHC-8.6.5...9.10.1++## 1.0.4++- Add instances for `ByteArray` from `data-array-byte` or `base`+- Support `primitive-0.8`+- Support `tagged-0.8.7`++## 1.0.3++- Add instance for `primitive`s `ByteArray`.++## 1.0.2++- Support `aeson-2.0.0.0`++## 1.0.1++- Add instances for `time-1.11` types: `Month`, `Quarter`, `QuarterOfYear`+ ## 1  - **Breaking change** rename this package to `binary-instances`.
binary-instances.cabal view
@@ -1,60 +1,72 @@+cabal-version:      2.2 name:               binary-instances-version:            1+version:            1.0.6 synopsis:           Orphan instances for binary description:-  `binary-orphans` defines orphan instances for types in some popular packages.+  `binary-instances` defines orphan instances for types in some popular packages.  category:           Web-homepage:           https://github.com/phadej/binary-orphans#readme-bug-reports:        https://github.com/phadej/binary-orphans/issues+homepage:           https://github.com/haskellari/binary-instances#readme+bug-reports:        https://github.com/haskellari/binary-instances/issues author:             Oleg Grenrus <oleg.grenrus@iki.fi> maintainer:         Oleg Grenrus <oleg.grenrus@iki.fi>-license:            BSD3+license:            BSD-3-Clause license-file:       LICENSE build-type:         Simple-cabal-version:      >=1.10 tested-with:-  GHC ==8.8.1 || ==8.6.5 || ==8.4.4 || ==8.2.2 || ==8.0.2 || ==7.10.3 || ==7.8.4 || ==7.6.3+  GHC ==8.6.5+   || ==8.8.4+   || ==8.10.7+   || ==9.0.2+   || ==9.2.8+   || ==9.4.8+   || ==9.6.6+   || ==9.8.4+   || ==9.10.1+   || ==9.12.2 -extra-source-files:-  CHANGELOG.md+extra-source-files: CHANGELOG.md  source-repository head   type:     git-  location: https://github.com/phadej/binary-orphans+  location: https://github.com/haskellari/binary-instances  library+  default-language: Haskell2010   hs-source-dirs:   src   build-depends:-      aeson                    >=0.7.0.6   && <1.5-    , base                     >=4.6.0.1   && <4.13-    , binary                   >=0.5.1.1   && <0.8.7-    , binary-orphans           >=1.0.1     && <1.1-    , case-insensitive         >=1.2.0.4   && <1.2.2-    , hashable                 >=1.2.3.3   && <1.4-    , scientific               >=0.3.3.8   && <0.4-    , tagged                   >=0.7.3     && <0.8.7-    , text                     >=1.2.0.6   && <1.3-    , text-binary              >=0.2.1.1   && <0.3-    , time-compat              >=1.9.2.2   && <1.10-    , unordered-containers     >=0.2.5.1   && <0.3-    , vector                   >=0.10.12.3 && <0.13-    , vector-binary-instances  >=0.2.1.0   && <0.3+    , base    >=4.6.0.1 && <4.22+    , binary  >=0.5.1.1 && <0.8.10+    , text    >=1.2.3.0 && <1.3    || >=2.0 && <2.2 +  build-depends:+    , case-insensitive  >=1.2.1.0 && <1.2.2+    , tagged            >=0.8.8   && <0.8.10++  build-depends:+    , aeson                    ^>=2.2.2.0+    , binary-orphans           ^>=1.0.5+    , hashable                 ^>=1.4.4.0  || ^>=1.5.0.0+    , primitive                ^>=0.9.0.0+    , scientific               ^>=0.3.8.0+    , time-compat              ^>=1.9.7+    , unordered-containers     ^>=0.2.20+    , vector                   ^>=0.13.1.0+    , vector-binary-instances  ^>=0.2.5.2+   exposed-modules:     Data.Binary.Instances     Data.Binary.Instances.Aeson     Data.Binary.Instances.CaseInsensitive+    Data.Binary.Instances.Hashable+    Data.Binary.Instances.Primitive     Data.Binary.Instances.Scientific+    Data.Binary.Instances.Tagged     Data.Binary.Instances.Text     Data.Binary.Instances.Time-    Data.Binary.Instances.Tagged-    Data.Binary.Instances.Hashable     Data.Binary.Instances.UnorderedContainers     Data.Binary.Instances.Vector -  default-language: Haskell2010- test-suite binary-instances-test   default-language: Haskell2010   type:             exitcode-stdio-1.0@@ -62,20 +74,24 @@   hs-source-dirs:   test   ghc-options:      -Wall -fno-warn-orphans   build-depends:-      aeson+    , aeson     , base     , binary     , binary-instances+    , bytestring     , case-insensitive     , hashable-    , QuickCheck            >=2.13.1   && <2.14-    , quickcheck-instances  >=0.3.21   && <0.4+    , primitive+    , QuickCheck            ^>=2.14.3 || ^>=2.15.0.1+    , quickcheck-instances  ^>=0.3.31     , scientific     , tagged-    , tasty                 >=0.10.1.2 && <1.3-    , tasty-quickcheck      >=0.8.3.2  && <0.11+    , tasty                 ^>=1.5+    , tasty-quickcheck      ^>=0.10.3 || ^>=0.11     , text     , time-compat     , unordered-containers     , vector +  if impl(ghc >=8.0 && <9.4)+    build-depends: data-array-byte
src/Data/Binary/Instances.hs view
@@ -28,6 +28,7 @@ import Data.Binary.Instances.Aeson () import Data.Binary.Instances.CaseInsensitive () import Data.Binary.Instances.Hashable ()+import Data.Binary.Instances.Primitive () import Data.Binary.Instances.Scientific () import Data.Binary.Instances.Tagged () import Data.Binary.Instances.Text ()
src/Data/Binary/Instances/Aeson.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.Binary.Instances.Aeson where -import Data.Binary (Binary, Get, get, put)+import Data.Binary         (Binary, Get, get, put) import Data.Binary.Orphans ()  import Data.Binary.Instances.Scientific ()@@ -9,7 +9,9 @@ import Data.Binary.Instances.UnorderedContainers () import Data.Binary.Instances.Vector () -import qualified Data.Aeson as A+import qualified Data.Aeson        as A+import qualified Data.Aeson.Key    as Key+import qualified Data.Aeson.KeyMap as KM  instance Binary A.Value where     get = do@@ -29,3 +31,11 @@     put (A.Number v) = put (3 :: Int) >> put v     put (A.Bool v)   = put (4 :: Int) >> put v     put A.Null       = put (5 :: Int)++instance Binary Key.Key where+    get = Key.fromText <$> get+    put = put . Key.toText++instance Binary v => Binary (KM.KeyMap v) where+    get = fmap KM.fromList get+    put = put . KM.toList
src/Data/Binary/Instances/Hashable.hs view
@@ -1,14 +1,11 @@-{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.Binary.Instances.Hashable where  import Data.Binary.Orphans () -#if MIN_VERSION_hashable(1,2,5) import           Data.Binary   (Binary, get, put) import qualified Data.Hashable as Hashable  instance (Hashable.Hashable a, Binary a) => Binary (Hashable.Hashed a) where     get = fmap Hashable.hashed get     put = put . Hashable.unhashed-#endif
+ src/Data/Binary/Instances/Primitive.hs view
@@ -0,0 +1,4 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Data.Binary.Instances.Primitive where++import Data.Binary.Orphans ()
src/Data/Binary/Instances/Scientific.hs view
@@ -1,16 +1,4 @@-{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.Binary.Instances.Scientific where  import Data.Binary.Orphans ()--#if !(MIN_VERSION_scientific(0,3,4))-import Control.Monad (liftM2)-import Data.Binary   (Binary, Get, Put, get, put)--import qualified Data.Scientific as S--instance Binary S.Scientific where-    get = liftM2 S.scientific get get-    put s = put (S.coefficient s) >> put (S.base10Exponent s)-#endif
src/Data/Binary/Instances/Tagged.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP       #-} {-# OPTIONS_GHC -fno-warn-orphans #-} #if __GLASGOW_HASKELL__ >= 706 {-# LANGUAGE PolyKinds #-}
src/Data/Binary/Instances/Text.hs view
@@ -3,7 +3,3 @@ module Data.Binary.Instances.Text where  import Data.Binary.Orphans ()--#if !(MIN_VERSION_text(1,2,1))-import Data.Text.Binary ()-#endif
src/Data/Binary/Instances/Time.hs view
@@ -6,12 +6,14 @@ import Data.Binary.Orphans () import Data.Word           (Word8) -import qualified Data.Fixed                    as Fixed-import qualified Data.Time.Calendar.Compat     as Time-import qualified Data.Time.Clock.Compat        as Time-import qualified Data.Time.Clock.System.Compat as Time-import qualified Data.Time.Clock.TAI.Compat    as Time-import qualified Data.Time.LocalTime.Compat    as Time+import qualified Data.Fixed                        as Fixed+import qualified Data.Time.Calendar.Compat         as Time+import qualified Data.Time.Calendar.Month.Compat   as Time+import qualified Data.Time.Calendar.Quarter.Compat as Time+import qualified Data.Time.Clock.Compat            as Time+import qualified Data.Time.Clock.System.Compat     as Time+import qualified Data.Time.Clock.TAI.Compat        as Time+import qualified Data.Time.LocalTime.Compat        as Time  instance Binary Time.Day where   get = fmap Time.ModifiedJulianDay get@@ -84,4 +86,27 @@             4 -> Time.Thursday             5 -> Time.Friday             6 -> Time.Saturday-            _ -> error "panic: get @DayOfWeek"+            j -> error $ "panic: get @DayOfWeek: " ++ show (i, j)++instance Binary Time.Month where+    put (Time.MkMonth m) = put m+    get = fmap Time.MkMonth get++instance Binary Time.Quarter where+    put (Time.MkQuarter m) = put m+    get = fmap Time.MkQuarter get++instance Binary Time.QuarterOfYear where+    put Time.Q1 = put (1 :: Word8)+    put Time.Q2 = put (2 :: Word8)+    put Time.Q3 = put (3 :: Word8)+    put Time.Q4 = put (4 :: Word8)++    get = do+        i <- get+        return $ case mod (i :: Word8) 4 of+            1 -> Time.Q1+            2 -> Time.Q2+            3 -> Time.Q3+            0 -> Time.Q4+            j -> error $ "panic: get @QuarterOfYear: " ++ show (i, j)
src/Data/Binary/Instances/UnorderedContainers.hs view
@@ -1,12 +1,12 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.Binary.Instances.UnorderedContainers where -import Data.Binary (Binary, get, put)+import Data.Binary         (Binary, get, put) import Data.Binary.Orphans () -import qualified Data.Hashable        as Hashable-import qualified Data.HashMap.Lazy    as HM-import qualified Data.HashSet         as HS+import qualified Data.Hashable     as Hashable+import qualified Data.HashMap.Lazy as HM+import qualified Data.HashSet      as HS  instance  (Hashable.Hashable k, Eq k, Binary k, Binary v) => Binary (HM.HashMap k v) where     get = fmap HM.fromList get
test/Tests.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP                 #-} {-# LANGUAGE ScopedTypeVariables #-} module Main (main) where @@ -10,6 +11,7 @@ import Test.Tasty            (TestTree, defaultMain, testGroup) import Test.Tasty.QuickCheck (testProperty) +import Data.ByteString      (ByteString) import Data.CaseInsensitive (CI) import Data.HashMap.Lazy    (HashMap) import Data.HashSet         (HashSet)@@ -21,12 +23,19 @@  import qualified Data.Vector.Unboxed as VU -import qualified Data.Time.Calendar.Compat     as Time-import qualified Data.Time.Clock.Compat        as Time-import qualified Data.Time.Clock.System.Compat as Time-import qualified Data.Time.Clock.TAI.Compat    as Time-import qualified Data.Time.LocalTime.Compat    as Time+import qualified Data.Primitive                    as Prim+import qualified Data.Time.Calendar.Compat         as Time+import qualified Data.Time.Calendar.Month.Compat   as Time+import qualified Data.Time.Calendar.Quarter.Compat as Time+import qualified Data.Time.Clock.Compat            as Time+import qualified Data.Time.Clock.System.Compat     as Time+import qualified Data.Time.Clock.TAI.Compat        as Time+import qualified Data.Time.LocalTime.Compat        as Time +#if MIN_VERSION_base(4,9,0)+import qualified Data.Array.Byte as AB+#endif+ main :: IO () main = defaultMain tests @@ -48,8 +57,15 @@     , roundtripProperty (undefined :: Time.TimeOfDay)     , roundtripProperty (undefined :: Time.TimeZone)     , roundtripProperty (undefined :: Time.UTCTime)+    , roundtripProperty (undefined :: Time.QuarterOfYear)+    , roundtripProperty (undefined :: Time.Quarter)+    , roundtripProperty (undefined :: Time.Month)     -- case-insensitive & text+#if __GLASGOW_HASKELL__ <807+    -- https://github.com/haskell/text/issues/227     , roundtripProperty (undefined :: (CI Text))+#endif+    , roundtripProperty (undefined :: (CI ByteString))     -- semigroups / monoids     , roundtripProperty (undefined :: (Sum Int))     -- tagged@@ -59,6 +75,10 @@     -- vector     , roundtripProperty (undefined :: Vector Char)     , roundtripProperty (undefined :: VU.Vector Char)+    , roundtripProperty (undefined :: Prim.ByteArray)+#if MIN_VERSION_base(4,9,0)+    , roundtripProperty (undefined :: AB.ByteArray)+#endif     ]  roundtrip :: (Eq a, Show a, Binary a) => a -> a -> Property