packages feed

base-compat-batteries 0.12.3 → 0.13.0

raw patch · 19 files changed

+234/−122 lines, 19 filesdep +bifunctor-classes-compatdep +foldable1-classes-compatdep −bifunctorsdep ~OneTupledep ~base-compatPVP ok

version bump matches the API change (PVP)

Dependencies added: bifunctor-classes-compat, foldable1-classes-compat

Dependencies removed: bifunctors

Dependency ranges changed: OneTuple, base-compat

API changes (from Hackage documentation)

+ Data.List.NonEmpty.Compat: inits1 :: NonEmpty a -> NonEmpty (NonEmpty a)
+ Data.List.NonEmpty.Compat: tails1 :: NonEmpty a -> NonEmpty (NonEmpty a)
+ Data.Tuple.Compat: pattern MkSolo :: a -> Solo a
+ Numeric.Natural.Compat: minusNaturalMaybe :: Natural -> Natural -> Maybe Natural

Files

CHANGES.markdown view
@@ -1,5 +1,17 @@-## Changes in 0.12.3 [2023.07.12]- - Allow building with `OneTuple-0.4.*`.+## Changes in 0.13.0 [2023.03.10]+ - This coincides with the `base-compat-0.13.0` release. Refer to the+   [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0130-20230310)+   for more details.+ - Require `OneTuple-0.4` or later on GHC 7.4+, as that is the first `OneTuple`+   release to backport the `MkSolo` data constuctor for `Solo`. See+   `Data.Tuple.Compat`.+ - Introduce `Data.Foldable1.Compat` and `Data.Bifoldable1.Compat` modules,+   which correspond to changes made in `base-4.18.0.0`. `base-compat-batteries`+   uses the `foldable1-classes-compat` library to backport this code to older+   versions of `base`.+ - Depend on `bifunctor-classes-compat` to backport the `Bifunctor`,+   `Bifoldable`, and `Bitraversable` classes instead of the+   `bifunctors` library, which has more dependencies.  ## Changes in 0.12.2 [2022.08.11]  - This coincides with the `base-compat-0.12.2` release. Refer to the
base-compat-batteries.cabal view
@@ -1,5 +1,5 @@ name:             base-compat-batteries-version:          0.12.3+version:          0.13.0 license:          MIT license-file:     LICENSE copyright:        (c) 2012-2018 Simon Hengel,@@ -35,22 +35,6 @@                   for a more comprehensive list of differences between                   @base-compat@ and @base-compat-batteries@. extra-source-files: CHANGES.markdown, README.markdown-tested-with:        GHC == 7.0.4-                  , GHC == 7.2.2-                  , GHC == 7.4.2-                  , GHC == 7.6.3-                  , GHC == 7.8.4-                  , GHC == 7.10.3-                  , GHC == 8.0.2-                  , GHC == 8.2.2-                  , GHC == 8.4.4-                  , GHC == 8.6.5-                  , GHC == 8.8.4-                  , GHC == 8.10.7-                  , GHC == 9.0.2-                  , GHC == 9.2.7-                  , GHC == 9.4.5-                  , GHC == 9.6.2  source-repository head   type: git@@ -64,7 +48,7 @@       Haskell2010   build-depends:       base        >= 4.3 && < 5,-      base-compat == 0.12.3,+      base-compat == 0.13.0,       ghc-prim   if !impl(ghc >= 7.8)     build-depends:@@ -81,24 +65,15 @@       transformers-compat >= 0.6     && < 0.8   if !impl(ghc >= 8.2)     build-depends:-      bifunctors           >= 5.5.2 && < 5.6,-      type-equality        >= 1     && < 1.1+      bifunctor-classes-compat >= 0.1 && < 0.2,+      type-equality            >= 1   && < 1.1   if !impl(ghc >= 8.6)     build-depends:       contravariant >= 1.5 && < 1.6-  if !impl(ghc >= 9.0)+  if !impl(ghc >= 9.6)     build-depends:-      OneTuple >= 0.3 && < 0.5--    -- We want to consistently use `Solo` as the name of the data constructor-    -- for the base-compat-0.12.* series when building with a pre-9.6 version-    -- of GHC. This is only possible on pre-7.8 versions of GHC (which do not-    -- support pattern synonyms) with OneTuple-0.3.*, which defines a `Solo`-    -- data constructor. (In OneTuple-0.4.* and later, the data constructor is-    -- instead named `MkSolo`.)-    if !impl(ghc >= 7.8)-      build-depends:-        OneTuple == 0.3.*+      foldable1-classes-compat >= 0.1 && < 0.2,+      OneTuple                 >= 0.4 && < 0.5   ghc-options:       -fno-warn-duplicate-exports   if impl(ghc >= 7.10)@@ -117,6 +92,7 @@       Control.Monad.ST.Lazy.Unsafe.Compat       Control.Monad.ST.Unsafe.Compat       Data.Bifoldable.Compat+      Data.Bifoldable1.Compat       Data.Bifunctor.Compat       Data.Bitraversable.Compat       Data.Bits.Compat@@ -124,6 +100,7 @@       Data.Complex.Compat       Data.Either.Compat       Data.Foldable.Compat+      Data.Foldable1.Compat       Data.Function.Compat       Data.Functor.Compat       Data.Functor.Compose.Compat@@ -141,7 +118,9 @@       Data.Semigroup.Compat       Data.STRef.Compat       Data.String.Compat+      Data.Traversable.Compat       Data.Tuple.Compat+      Data.Typeable.Compat       Data.Type.Coercion.Compat       Data.Type.Equality.Compat       Data.Version.Compat@@ -179,6 +158,7 @@       Control.Monad.ST.Lazy.Unsafe.Compat.Repl.Batteries       Control.Monad.ST.Unsafe.Compat.Repl.Batteries       Data.Bifoldable.Compat.Repl.Batteries+      Data.Bifoldable1.Compat.Repl.Batteries       Data.Bifunctor.Compat.Repl.Batteries       Data.Bitraversable.Compat.Repl.Batteries       Data.Bits.Compat.Repl.Batteries@@ -186,6 +166,7 @@       Data.Complex.Compat.Repl.Batteries       Data.Either.Compat.Repl.Batteries       Data.Foldable.Compat.Repl.Batteries+      Data.Foldable1.Compat.Repl.Batteries       Data.Function.Compat.Repl.Batteries       Data.Functor.Compat.Repl.Batteries       Data.Functor.Compose.Compat.Repl.Batteries@@ -203,7 +184,9 @@       Data.Semigroup.Compat.Repl.Batteries       Data.STRef.Compat.Repl.Batteries       Data.String.Compat.Repl.Batteries+      Data.Traversable.Compat.Repl.Batteries       Data.Tuple.Compat.Repl.Batteries+      Data.Typeable.Compat.Repl.Batteries       Data.Type.Coercion.Compat.Repl.Batteries       Data.Type.Equality.Compat.Repl.Batteries       Data.Version.Compat.Repl.Batteries@@ -266,7 +249,6 @@       -- Other tests       SafeHaskellSpec       TestHspecTrustworthy-      T91Spec   build-depends:       base >= 4.3 && < 5     , base-compat-batteries
src/Data/Bifoldable/Compat.hs view
@@ -6,5 +6,5 @@ #if MIN_VERSION_base(4,10,0) import "base-compat" Data.Bifoldable.Compat as Base #else-import "bifunctors" Data.Bifoldable as Base+import "bifunctor-classes-compat" Data.Bifoldable as Base #endif
+ src/Data/Bifoldable1/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Bifoldable1.Compat (+  module Base+) where++#if MIN_VERSION_base(4,18,0)+import "base-compat" Data.Bifoldable1.Compat as Base+#else+import "foldable1-classes-compat" Data.Bifoldable1 as Base+#endif
+ src/Data/Bifoldable1/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Bifoldable1.Compat"+-- from a globally unique namespace.+module Data.Bifoldable1.Compat.Repl.Batteries (+  module Data.Bifoldable1.Compat+) where+import "this" Data.Bifoldable1.Compat
src/Data/Bifunctor/Compat.hs view
@@ -6,5 +6,5 @@ #if MIN_VERSION_base(4,8,0) import "base-compat" Data.Bifunctor.Compat as Base #else-import "bifunctors" Data.Bifunctor as Base+import "bifunctor-classes-compat" Data.Bifunctor as Base #endif
src/Data/Bitraversable/Compat.hs view
@@ -6,5 +6,5 @@ #if MIN_VERSION_base(4,10,0) import "base-compat" Data.Bitraversable.Compat as Base #else-import "bifunctors" Data.Bitraversable as Base+import "bifunctor-classes-compat" Data.Bitraversable as Base #endif
+ src/Data/Foldable1/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Foldable1.Compat (+  module Base+) where++#if MIN_VERSION_base(4,18,0)+import "base-compat" Data.Foldable1.Compat as Base+#else+import "foldable1-classes-compat" Data.Foldable1 as Base+#endif
+ src/Data/Foldable1/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Foldable1.Compat"+-- from a globally unique namespace.+module Data.Foldable1.Compat.Repl.Batteries (+  module Data.Foldable1.Compat+) where+import "this" Data.Foldable1.Compat
src/Data/List/NonEmpty/Compat.hs view
@@ -4,76 +4,84 @@     NonEmpty(..)    -- * Non-empty stream transformations-  , map         -  , intersperse -  , scanl       -  , scanr       -  , scanl1      -  , scanr1      -  , transpose   -  , sortBy      -  , sortWith      +  , map+  , intersperse+  , scanl+  , scanr+  , scanl1+  , scanr1+  , transpose+  , sortBy+  , sortWith   -- * Basic functions-  , length      -  , head        -  , tail        -  , last        -  , init        +  , length+  , head+  , tail+  , last+  , init   , singleton-  , (<|), cons  -  , uncons      -  , unfoldr     -  , sort        -  , reverse     -  , inits       -  , tails       +  , (<|), cons+  , uncons+  , unfoldr+  , sort+  , reverse+  , inits+  , inits1+  , tails+  , tails1   -- * Building streams-  , iterate     -  , repeat      -  , cycle       -  , unfold      -  , insert      -  , some1       +  , iterate+  , repeat+  , cycle+  , unfold+  , insert+  , some1   -- * Extracting sublists-  , take        -  , drop        -  , splitAt     -  , takeWhile   -  , dropWhile   -  , span        -  , break       -  , filter      -  , partition   -  , group       -  , groupBy     -  , groupWith     -  , groupAllWith  -  , group1      -  , groupBy1    -  , groupWith1     -  , groupAllWith1  +  , take+  , drop+  , splitAt+  , takeWhile+  , dropWhile+  , span+  , break+  , filter+  , partition+  , group+  , groupBy+  , groupWith+  , groupAllWith+  , group1+  , groupBy1+  , groupWith1+  , groupAllWith1   -- * Sublist predicates-  , isPrefixOf  +  , isPrefixOf   -- * \"Set\" operations-  , nub         -  , nubBy       +  , nub+  , nubBy   -- * Indexing streams-  , (!!)        +  , (!!)   -- * Zipping and unzipping streams-  , zip         -  , zipWith     -  , unzip       +  , zip+  , zipWith+  , unzip   -- * Converting to and from a list-  , fromList    -  , toList      -  , nonEmpty    -  , xor         +  , fromList+  , toList+  , nonEmpty+  , xor ) where  #if MIN_VERSION_base(4,9,0) import "base-compat" Data.List.NonEmpty.Compat #else import "semigroups" Data.List.NonEmpty++import qualified "this" Prelude.Compat as Prelude+import           "this" Prelude.Compat ((.))++import qualified "this" Data.Foldable.Compat as Foldable+import qualified "this" Data.List.Compat as List #endif  #if !(MIN_VERSION_base(4,9,0))@@ -82,4 +90,40 @@ -- /Since: 4.15/ singleton :: a -> NonEmpty a singleton a = a :| []++-- | The 'inits1' function takes a 'NonEmpty' stream @xs@ and returns all the+-- 'NonEmpty' finite prefixes of @xs@, starting with the shortest.+--+-- > inits1 (1 :| [2,3]) == (1 :| []) :| [1 :| [2], 1 :| [2,3]]+-- > inits1 (1 :| []) == (1 :| []) :| []+--+-- /Since: 4.18/+inits1 :: NonEmpty a -> NonEmpty (NonEmpty a)+inits1 =+  -- fromList is an unsafe function, but this usage should be safe, since:+  -- - `inits xs = [[], ..., init (init xs), init xs, xs]`+  -- - If `xs` is nonempty, it follows that `inits xs` contains at least one nonempty+  --   list, since `last (inits xs) = xs`.+  -- - The only empty element of `inits xs` is the first one (by the definition of `inits`)+  -- - Therefore, if we take all but the first element of `inits xs` i.e.+  --   `tail (inits xs)`, we have a nonempty list of nonempty lists+  fromList . Prelude.map fromList . List.tail . List.inits . Foldable.toList++-- | The 'tails1' function takes a 'NonEmpty' stream @xs@ and returns all the+-- non-empty suffixes of @xs@, starting with the longest.+--+-- > tails1 (1 :| [2,3]) == (1 :| [2,3]) :| [2 :| [3], 3 :| []]+-- > tails1 (1 :| []) == (1 :| []) :| []+--+-- /Since: 4.18/+tails1 :: NonEmpty a -> NonEmpty (NonEmpty a)+tails1 =+  -- fromList is an unsafe function, but this usage should be safe, since:+  -- - `tails xs = [xs, tail xs, tail (tail xs), ..., []]`+  -- - If `xs` is nonempty, it follows that `tails xs` contains at least one nonempty+  --   list, since `head (tails xs) = xs`.+  -- - The only empty element of `tails xs` is the last one (by the definition of `tails`)+  -- - Therefore, if we take all but the last element of `tails xs` i.e.+  --   `init (tails xs)`, we have a nonempty list of nonempty lists+  fromList . Prelude.map fromList . List.init . List.tails . Foldable.toList #endif
+ src/Data/Traversable/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Traversable.Compat (+  module Base+) where++import "base-compat" Data.Traversable.Compat as Base
+ src/Data/Traversable/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Traversable.Compat"+-- from a globally unique namespace.+module Data.Traversable.Compat.Repl.Batteries (+  module Data.Traversable.Compat+) where+import "this" Data.Traversable.Compat
src/Data/Tuple/Compat.hs view
@@ -2,21 +2,25 @@ #if __GLASGOW_HASKELL__ >= 708 {-# LANGUAGE PatternSynonyms #-} #endif+-- | This uses the @OneTuple@ compatibility library to backport 'Solo' to old+-- versions of GHC. Note that @OneTuple@ makes use of pattern synonyms, which+-- cannot be defined on pre-7.8 versions of GHC. As such, it is not feasible+-- to backport the @Solo@ data constructor on pre-7.8 versions of GHC, as+-- @OneTuple@ defines this as a pattern synonym. module Data.Tuple.Compat   ( #if MIN_VERSION_ghc_prim(0,10,0)     Solo(MkSolo, Solo)-#elif __GLASGOW_HASKELL__ >= 708 && \-      __GLASGOW_HASKELL__ < 800 && \-      defined(MIN_VERSION_OneTuple)-# if MIN_VERSION_OneTuple(0,4,0)-    Solo-  , pattern Solo-# else+#elif MIN_VERSION_ghc_prim(0,7,0)     Solo(Solo)-# endif+  , pattern MkSolo+#elif __GLASGOW_HASKELL__ >= 800+    Solo(MkSolo, Solo)+#elif __GLASGOW_HASKELL__ >= 708+    Solo(MkSolo)+  , pattern Solo #else-    Solo(Solo)+    Solo(MkSolo) #endif   , fst   , snd@@ -25,8 +29,11 @@   , swap   ) where -#if MIN_VERSION_ghc_prim(0,7,0)+#if MIN_VERSION_ghc_prim(0,10,0) import "base-compat" Data.Tuple.Compat+#elif MIN_VERSION_ghc_prim(0,7,0)+import "base-compat" Data.Tuple.Compat+import "OneTuple" Data.Tuple.Solo (pattern MkSolo) #else import "base" Data.Tuple import "OneTuple" Data.Tuple.Solo
+ src/Data/Typeable/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Typeable.Compat (+  module Base+) where++import "base-compat" Data.Typeable.Compat as Base
+ src/Data/Typeable/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Typeable.Compat"+-- from a globally unique namespace.+module Data.Typeable.Compat.Repl.Batteries (+  module Data.Typeable.Compat+) where+import "this" Data.Typeable.Compat
src/Numeric/Natural/Compat.hs view
@@ -1,10 +1,24 @@ {-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+#if __GLASGOW_HASKELL__ >= 702+{-# LANGUAGE Trustworthy #-}+#endif module Numeric.Natural.Compat (   module Base+, minusNaturalMaybe ) where  #if MIN_VERSION_base(4,8,0) import "base-compat" Numeric.Natural.Compat as Base #else import "nats" Numeric.Natural as Base++import "this" Prelude.Compat++-- | 'Natural' subtraction. Returns 'Nothing's for non-positive results.+--+-- /Since: 4.18.0.0/+minusNaturalMaybe :: Natural -> Natural -> Maybe Natural+minusNaturalMaybe x y+  | x < y     = Nothing+  | otherwise = Just (x - y) #endif
test/SafeHaskellSpec.hs view
@@ -14,6 +14,7 @@ import Control.Monad.Fail.Compat () import Control.Monad.IO.Class.Compat () import Data.Bifoldable.Compat ()+import Data.Bifoldable1.Compat () import Data.Bifunctor.Compat () import Data.Bitraversable.Compat () import Data.Bits.Compat ()@@ -21,6 +22,7 @@ import Data.Complex.Compat () import Data.Either.Compat () import Data.Foldable.Compat ()+import Data.Foldable1.Compat () import Data.Function.Compat () import Data.Functor.Compat () import Data.Functor.Compose.Compat ()@@ -38,7 +40,9 @@ import Data.Semigroup.Compat () import Data.STRef.Compat () import Data.String.Compat ()+import Data.Traversable.Compat () import Data.Tuple.Compat ()+import Data.Typeable.Compat () import Data.Type.Coercion.Compat () import Data.Type.Equality.Compat () import Data.Version.Compat ()
test/System/Environment/CompatSpec.hs view
@@ -2,7 +2,7 @@ module System.Environment.CompatSpec (main, spec) where  import           Test.Hspec-#if __GLASGOW_HASKELL__ >= 704+#if __GLASGOW_HASKELL__ >= 702 import           Test.QuickCheck #endif @@ -56,7 +56,7 @@     it "throws an exception if key contains '='" $ do       unsetEnv "some=key" `shouldThrow` (== InvalidArgument) . ioeGetErrorType -#if __GLASGOW_HASKELL__ >= 704+#if __GLASGOW_HASKELL__ >= 702     it "works for arbitrary keys" $       property $ \k -> ('\NUL' `notElem` k && '=' `notElem` k && (not . null) k) ==> do         setEnv k "foo"@@ -96,7 +96,7 @@       setEnv "FOO\NULBAR" "foo"       getEnv "FOO" `shouldReturn` "foo" -#if __GLASGOW_HASKELL__ >= 704+#if __GLASGOW_HASKELL__ >= 702     it "works for unicode" $ do       unsetEnv "FOO"       setEnv "FOO" "foo-\955-bar"@@ -118,7 +118,7 @@     it "throws an exception if key contains '='" $ do       setEnv "some=key" "foo" `shouldThrow` (== InvalidArgument) . ioeGetErrorType -#if __GLASGOW_HASKELL__ >= 704+#if __GLASGOW_HASKELL__ >= 702     it "works for arbitrary keys" $       property $ \k -> ('\NUL' `notElem` k && '=' `notElem` k && (not . null) k) ==> do         setEnv k "foo"
− test/T91Spec.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -fno-warn-deprecations #-}--- | A regression test for https://github.com/haskell-compat/base-compat/issues/91.-module T91Spec (main, spec) where--import Data.Tuple.Compat-import Test.Hspec (Expectation, Spec, describe, hspec, it)--main :: IO ()-main = hspec spec--spec :: Spec-spec =-  describe "Solo data constructor" $-    it "is always available" $ do-      Solo () `seq` return () :: Expectation