cauldron 0.9.0.0 → 0.9.0.1
raw patch · 4 files changed
+41/−7 lines, 4 filesdep ~containersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: containers
API changes (from Hackage documentation)
- Cauldron: (|=|) :: forall {recipelike} {m :: Type -> Type}. (ToRecipe recipelike, HasCallStack) => forall bean -> Typeable bean => recipelike m bean -> Cauldron m
- Cauldron: (䷱) :: forall {recipelike} {m :: Type -> Type}. (ToRecipe recipelike, HasCallStack) => forall bean -> Typeable bean => recipelike m bean -> Cauldron m
- Cauldron: infixr 0 ䷱
- Cauldron: instance GHC.Internal.Base.Monoid (Cauldron.Cauldron m)
- Cauldron: instance GHC.Internal.Base.Monoid Cauldron.BeanGetter
- Cauldron: instance GHC.Internal.Base.Monoid Cauldron.DependencyGraph
- Cauldron: instance GHC.Internal.Base.Semigroup (Cauldron.Cauldron m)
- Cauldron: instance GHC.Internal.Base.Semigroup Cauldron.BeanGetter
- Cauldron: instance GHC.Internal.Base.Semigroup Cauldron.DependencyGraph
- Cauldron: instance GHC.Internal.Exception.Type.Exception Cauldron.CookingError
- Cauldron: instance GHC.Internal.IsList.IsList (Cauldron.Cauldron m)
- Cauldron: instance GHC.Internal.Show.Show Cauldron.BeanConstructionStep
- Cauldron: instance GHC.Internal.Show.Show Cauldron.CookingError
- Cauldron: instance GHC.Internal.Show.Show Cauldron.DependencyCycle
- Cauldron: instance GHC.Internal.Show.Show Cauldron.DependencyGraph
- Cauldron: instance GHC.Internal.Show.Show Cauldron.DoubleDutyBean
- Cauldron: instance GHC.Internal.Show.Show Cauldron.MissingDependencies
- Cauldron.Beans: instance GHC.Internal.Base.Monoid Cauldron.Beans.Beans
- Cauldron.Beans: instance GHC.Internal.Base.Semigroup Cauldron.Beans.Beans
- Cauldron.Beans: instance GHC.Internal.IsList.IsList Cauldron.Beans.Beans
- Cauldron.Beans: instance GHC.Internal.Show.Show Cauldron.Beans.Beans
- Cauldron.Beans: instance GHC.Internal.Show.Show Cauldron.Beans.SomeMonoidTypeRep
- Cauldron.Builder: instance GHC.Internal.Base.Applicative (Cauldron.Builder.Builder m)
- Cauldron.Builder: instance GHC.Internal.Base.Functor (Cauldron.Builder.Builder m)
- Cauldron.Builder: instance GHC.Internal.Base.Monad (Cauldron.Builder.Builder m)
- Cauldron.Builder: instance GHC.Internal.Base.Monad m => Cauldron.Builder.MonadWiring (Cauldron.Builder.Builder m)
- Cauldron.Builder: instance GHC.Internal.Control.Monad.Fix.MonadFix (Cauldron.Builder.Builder m)
- Cauldron.Builder: instance GHC.Internal.Exception.Type.Exception Cauldron.Builder.DuplicateBeans
- Cauldron.Builder: instance GHC.Internal.Show.Show Cauldron.Builder.DuplicateBeans
- Cauldron.Managed: instance GHC.Internal.Base.Applicative Cauldron.Managed.Managed
- Cauldron.Managed: instance GHC.Internal.Base.Functor Cauldron.Managed.Managed
- Cauldron.Managed: instance GHC.Internal.Base.Monad Cauldron.Managed.Managed
- Cauldron.Managed: instance GHC.Internal.Base.Monoid a => GHC.Internal.Base.Monoid (Cauldron.Managed.Managed a)
- Cauldron.Managed: instance GHC.Internal.Base.Semigroup a => GHC.Internal.Base.Semigroup (Cauldron.Managed.Managed a)
- Cauldron.Managed: instance GHC.Internal.Control.Monad.Fail.MonadFail Cauldron.Managed.Managed
- Cauldron.Managed: instance GHC.Internal.Control.Monad.Fix.MonadFix Cauldron.Managed.Managed
- Cauldron.Managed: instance GHC.Internal.Control.Monad.IO.Class.MonadIO Cauldron.Managed.Managed
+ Cauldron: instance GHC.Base.Monoid (Cauldron.Cauldron m)
+ Cauldron: instance GHC.Base.Monoid Cauldron.BeanGetter
+ Cauldron: instance GHC.Base.Monoid Cauldron.DependencyGraph
+ Cauldron: instance GHC.Base.Semigroup (Cauldron.Cauldron m)
+ Cauldron: instance GHC.Base.Semigroup Cauldron.BeanGetter
+ Cauldron: instance GHC.Base.Semigroup Cauldron.DependencyGraph
+ Cauldron: instance GHC.Exception.Type.Exception Cauldron.CookingError
+ Cauldron: instance GHC.IsList.IsList (Cauldron.Cauldron m)
+ Cauldron: instance GHC.Show.Show Cauldron.BeanConstructionStep
+ Cauldron: instance GHC.Show.Show Cauldron.CookingError
+ Cauldron: instance GHC.Show.Show Cauldron.DependencyCycle
+ Cauldron: instance GHC.Show.Show Cauldron.DependencyGraph
+ Cauldron: instance GHC.Show.Show Cauldron.DoubleDutyBean
+ Cauldron: instance GHC.Show.Show Cauldron.MissingDependencies
+ Cauldron.Beans: instance GHC.Base.Monoid Cauldron.Beans.Beans
+ Cauldron.Beans: instance GHC.Base.Semigroup Cauldron.Beans.Beans
+ Cauldron.Beans: instance GHC.IsList.IsList Cauldron.Beans.Beans
+ Cauldron.Beans: instance GHC.Show.Show Cauldron.Beans.Beans
+ Cauldron.Beans: instance GHC.Show.Show Cauldron.Beans.SomeMonoidTypeRep
+ Cauldron.Builder: instance Control.Monad.Fix.MonadFix (Cauldron.Builder.Builder m)
+ Cauldron.Builder: instance GHC.Base.Applicative (Cauldron.Builder.Builder m)
+ Cauldron.Builder: instance GHC.Base.Functor (Cauldron.Builder.Builder m)
+ Cauldron.Builder: instance GHC.Base.Monad (Cauldron.Builder.Builder m)
+ Cauldron.Builder: instance GHC.Base.Monad m => Cauldron.Builder.MonadWiring (Cauldron.Builder.Builder m)
+ Cauldron.Builder: instance GHC.Exception.Type.Exception Cauldron.Builder.DuplicateBeans
+ Cauldron.Builder: instance GHC.Show.Show Cauldron.Builder.DuplicateBeans
+ Cauldron.Managed: instance Control.Monad.Fail.MonadFail Cauldron.Managed.Managed
+ Cauldron.Managed: instance Control.Monad.Fix.MonadFix Cauldron.Managed.Managed
+ Cauldron.Managed: instance Control.Monad.IO.Class.MonadIO Cauldron.Managed.Managed
+ Cauldron.Managed: instance GHC.Base.Applicative Cauldron.Managed.Managed
+ Cauldron.Managed: instance GHC.Base.Functor Cauldron.Managed.Managed
+ Cauldron.Managed: instance GHC.Base.Monad Cauldron.Managed.Managed
+ Cauldron.Managed: instance GHC.Base.Monoid a => GHC.Base.Monoid (Cauldron.Managed.Managed a)
+ Cauldron.Managed: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Cauldron.Managed.Managed a)
Files
- CHANGELOG.md +4/−0
- cauldron.cabal +3/−3
- lib-graph/Cauldron/Graph/Algorithm.hs +4/−1
- lib/Cauldron.hs +30/−3
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for cauldron +## 0.9.0.1++* compat with GHC 9.8.4.+ ## 0.9.0.0 * breaking change: `SomeRecipe` type hidden.
cauldron.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: cauldron-version: 0.9.0.0+version: 0.9.0.1 synopsis: Dependency injection library description: Dependency injection library that wires things at runtime. license: BSD-3-Clause@@ -12,7 +12,7 @@ extra-doc-files: README.md, CHANGELOG.md -- extra-source-files: category: Dependency Injection-tested-with: GHC ==9.10.1, GHC==9.12.2+tested-with: GHC == {9.8.4, 9.10.1, 9.12.2} source-repository head type: git location: https://github.com/danidiaz/cauldron.git@@ -26,7 +26,7 @@ common common-lib import: common-base build-depends:- containers >= 0.7 && < 0.9,+ containers >= 0.6.8 && < 0.9, common common-tests import: common-lib
lib-graph/Cauldron/Graph/Algorithm.hs view
@@ -24,7 +24,10 @@ sccs = Data.Graph.stronglyConnComp theEdges for_ sccs $ \case Data.Graph.AcyclicSCC _ -> pure ()- Data.Graph.NECyclicSCC vs -> do+ -- we should use + -- @Data.Graph.NECyclicSCC vs@+ -- for containers >= 0.7+ Data.Graph.CyclicSCC (Data.List.NonEmpty.fromList -> vs) -> do let aCycle = findCycleInSCC g vs Left aCycle let (g', nodeFromVertex, _) = Data.Graph.graphFromEdges theEdges
lib/Cauldron.hs view
@@ -1,13 +1,17 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE BlockArguments #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-}-{-# LANGUAGE RequiredTypeArguments #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-} {-# LANGUAGE NoFieldSelectors #-}+{-# LANGUAGE TypeAbstractions #-}+#if MIN_VERSION_GLASGOW_HASKELL(9,10,1,0)+{-# LANGUAGE RequiredTypeArguments #-}+#endif -- | This is a library for performing dependency injection. It's an alternative -- to manually wiring your functions and passing all required parameters@@ -70,8 +74,10 @@ empty, recipe, singleton,+#if MIN_VERSION_GLASGOW_HASKELL(9,10,1,0) (|=|), (䷱),+#endif insert, adjust, Cauldron.lookup,@@ -475,6 +481,9 @@ recipe theRecipe = withFrozenCallStack do mempty & insert theRecipe ++#if MIN_VERSION_GLASGOW_HASKELL(9,10,1,0)+ -- | Operator variant of 'recipe' where the @bean@ type is a [required type argument](https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/required_type_arguments.html). -- -- '(|=|)' and '(䷱)' are the same function.@@ -499,6 +508,8 @@ infixr 0 ䷱ +#endif+ -- | Put a 'Recipe' into the 'Cauldron'. -- -- Only one recipe is allowed for each bean type, so 'insert' for a@@ -1531,17 +1542,33 @@ -- :} -- "Sum Int is aggregate and primary" +#if MIN_VERSION_GLASGOW_HASKELL(9,10,1,0) -- $setup+-- >>> :set -XRequiredTypeArguments -- >>> :set -XBlockArguments -- >>> :set -XApplicativeDo -- >>> :set -XOverloadedLists--- >>> :set -XRequiredTypeArguments -- >>> :set -XExplicitNamespaces -- >>> :set -Wno-incomplete-uni-patterns -- >>> import Data.Functor.Identity -- >>> import Data.Function ((&)) -- >>> import Data.Monoid--- >>> import Data.Either (either, isLeft)+-- >>> import Data.Either (either) -- >>> import Control.Exception (throwIO) -- >>> import System.IO -- >>> import Cauldron.Managed+#else+-- $setup+-- >>> :set -XBlockArguments+-- >>> :set -XApplicativeDo+-- >>> :set -XOverloadedLists+-- >>> :set -XExplicitNamespaces+-- >>> :set -Wno-incomplete-uni-patterns+-- >>> import Data.Functor.Identity+-- >>> import Data.Function ((&))+-- >>> import Data.Monoid+-- >>> import Data.Either (either)+-- >>> import Control.Exception (throwIO)+-- >>> import System.IO+-- >>> import Cauldron.Managed+#endif