packages feed

dependency 1.0.0.0 → 1.1.0.0

raw patch · 6 files changed

+24/−58 lines, 6 filesdep +micro-recursion-schemesdep +microlensdep −lensdep −recursion-schemesdep −transformersPVP ok

version bump matches the API change (PVP)

Dependencies added: micro-recursion-schemes, microlens

Dependencies removed: lens, recursion-schemes, transformers

API changes (from Hackage documentation)

- Data.Dependency: buildSequence :: [Dependency] -> [[Dependency]]
- Data.Dependency: check :: Dependency -> [Dependency] -> Bool
+ Data.Dependency: CircularDependencies :: String -> String -> ResolveError

Files

dependency.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: dependency-version: 1.0.0.0+version: 1.1.0.0 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018 Vanessa McHale@@ -35,15 +35,14 @@     default-language: Haskell2010     other-extensions: DeriveAnyClass DeriveGeneric OverloadedStrings                       DeriveFoldable DeriveFunctor DeriveGeneric DeriveTraversable-                      OverloadedStrings TemplateHaskell TypeFamilies+                      OverloadedStrings TemplateHaskell TypeFamilies TupleSections     ghc-options: -Wall     build-depends:         base >=4.8 && <5,         ansi-wl-pprint -any,         containers >=0.5.9,-        recursion-schemes -any,-        lens -any,-        transformers -any,+        micro-recursion-schemes -any,+        microlens -any,         binary -any,         deepseq -any     
src/Data/Dependency.hs view
@@ -1,8 +1,8 @@+{-# LANGUAGE TupleSections #-}+ module Data.Dependency     ( -- * Functions       resolveDependencies-    , buildSequence-    , check     -- * Types     , Dependency (..)     , PackageSet (..)@@ -50,22 +50,9 @@           g (Just x') = Left (Conflicts (_libName <$> ds') (_libName x'))             where ds' = filter (\d -> not (check x' [d])) ds --- This does check for compatibility with past packages, but doesn't do the--- fancy tardis shenanigans it's supposed to when package resolution fails. latest :: PackageSet Dependency -> [Dependency] -> Dependency -> DepM (String, Dependency)-latest (PackageSet ps) ds d@(Dependency ln _ _) = do-    s <- lookupMap ln ps-    finish ln (lookupSet (Just d) ds s)--finish :: String -> DepM Dependency -> DepM (String, Dependency)-finish ln dep' =-    case dep' of--        Right dep ->-            pure (ln, dep)--        Left err ->-            Left err+latest (PackageSet ps) ds d@(Dependency ln _ _) =+    (ln,) <$> (lookupSet (Just d) ds =<< lookupMap ln ps)  -- | This splits dependencies into phases buildSequence :: [Dependency] -> [[Dependency]]@@ -104,8 +91,11 @@ -- 6. Present a solution whenever one exists. -- -- This doesn't do any package resolution beyond versioning.-resolveDependencies :: PackageSet Dependency -> [Dependency] -> DepM [[Dependency]]-resolveDependencies ps = select . getLatest <=< fmap ((buildSequence &&& id) . toList) . saturate+resolveDependencies :: PackageSet Dependency -- ^ Package set+                    -> [Dependency] -- ^ Dependencies requested+                    -> DepM [[Dependency]] -- ^ Phased build+resolveDependencies ps = select . getLatest <=< fmap prepare . saturate     where select = fmap (fmap (fmap snd))           saturate = fmap S.unions . traverse (saturateDeps ps)-          getLatest (p, q) = traverse (traverse (latest ps q)) p+          prepare = (buildSequence &&& id) . toList+          getLatest (stepped, allDeps) = traverse (traverse (latest ps allDeps)) stepped
src/Data/Dependency/Error.hs view
@@ -16,11 +16,11 @@ data ResolveError = InternalError                   | NotPresent String                   | Conflicts [String] String+                  | CircularDependencies String String                   deriving (Show, Eq, NFData, Generic)-                  -- CircularDependencies String String-                  -- Conflict String String (Constraint Version) (Constraint Version)  instance Pretty ResolveError where     pretty InternalError = red "Error:" <+> "the" <+> squotes "dependency" <+> "package enountered an internal error. Please report this as a bug:\n" <> hang 2 "https://hub.darcs.net/vmchale/ats/issues"     pretty (NotPresent s) = red "Error:" <+> "the package" <+> squotes (text s) <+> "could not be found.\n"     pretty (Conflicts ss s) = red "Error:" <+> "the package" <+> squotes (text s) <+> "conflicts with already in-scope packages: " <+> mconcat (punctuate ", " (fmap (squotes . text) ss))+    pretty (CircularDependencies s s') = red "Error:" <+> "package" <+> squotes (text s) <+> "and package" <+> squotes (text s') <+> "form a cycle of dependencies"
src/Data/Dependency/Sort.hs view
@@ -1,9 +1,10 @@ module Data.Dependency.Sort ( sortDeps                             ) where -import           Control.Lens import           Data.Dependency.Type import           Data.Graph+import           Lens.Micro+import           Lens.Micro.Extras  asGraph :: [Dependency] -> (Graph, Vertex -> Dependency) asGraph ds = (f triple, keys)
src/Data/Dependency/Type.hs view
@@ -38,7 +38,6 @@     show (Version is) = intercalate "." (show <$> is)  instance Ord Version where-    (Version []) <= (Version []) = True     (Version []) <= _ = True     _ <= (Version []) = False     (Version (x:xs)) <= (Version (y:ys))@@ -70,16 +69,9 @@                              }                              deriving (Show, Eq, Ord, Generic, NFData) -check' :: Dependency -> [Dependency] -> Bool-check' (Dependency _ lds _) ds =-    and [ compatible (Eq v') c | (Dependency ln _ v') <- ds, (str, c) <- lds, ln == str ]- -- | Check a given dependency is compatible with in-scope dependencies. check :: Dependency -> [Dependency] -> Bool-check d = (&&) <$> check' d <*> check'' d--check'' :: Dependency -> [Dependency] -> Bool-check'' (Dependency ln _ v) ds = and [ g ds' | (Dependency _ ds' _) <- ds ]+check (Dependency ln _ v) ds = and [ g ds' | (Dependency _ ds' _) <- ds ]     where g = all ((`satisfies` v) . snd) . filter ((== ln) . fst)  satisfies :: (Ord a) => Constraint a -> a -> Bool@@ -88,16 +80,6 @@ satisfies (Eq x) y            = x == y satisfies (Bounded x y) z     = satisfies x z && satisfies y z satisfies None _              = True--compatible :: (Ord a) => Constraint a -> Constraint a -> Bool-compatible LessThanEq{} LessThanEq{}        = True-compatible (LessThanEq x) (GreaterThanEq y) = y <= x-compatible (Eq x) (Eq y)                    = x == y-compatible (Bounded x y) z                  = compatible x z && compatible y z-compatible GreaterThanEq{} GreaterThanEq{}  = True-compatible (LessThanEq x) (Eq y)            = y <= x-compatible None _                           = True-compatible x y                              = compatible y x  makeBaseFunctor ''Constraint 
test/Spec.hs view
@@ -24,9 +24,6 @@ ghcMod :: Dependency ghcMod = Dependency "ghc-mod" [("lens", LessThanEq defV)] defV -deps :: [Dependency]-deps = [free, lens, comonad]- mapSingles :: [(d, b)] -> [(d, S.Set b)] mapSingles = fmap (second S.singleton) @@ -36,12 +33,9 @@         mapSingles [("ghc-mod", ghcMod), ("comonad", comonad), ("free", free)])  main :: IO ()-main = hspec $ parallel $ do-    describe "buildSequence" $-        it "correctly orders dependencies" $-            buildSequence deps `shouldBe` [[free, comonad], [lens]]+main = hspec $ parallel $     describe "resolveDependencies" $ do-        it "correctly resolves dependencies in a package set" $-            resolveDependencies set [newLens] `shouldBe` Right [[free, comonad], [newLens]]-        it "correctly resolves dependencies in a package set" $-            resolveDependencies set [ghcMod] `shouldBe` Right [[free, comonad], [lens], [ghcMod]]+    it "correctly resolves dependencies in a package set" $+        resolveDependencies set [newLens] `shouldBe` Right [[free, comonad], [newLens]]+    it "correctly resolves dependencies in a package set" $+        resolveDependencies set [ghcMod] `shouldBe` Right [[free, comonad], [lens], [ghcMod]]