Hello community,

here is the log from the commit of package ghc-yaml for openSUSE:Factory 
checked in at 2018-05-30 12:16:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-yaml (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-yaml.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-yaml"

Wed May 30 12:16:07 2018 rev:27 rq:607958 version:0.8.30

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-yaml/ghc-yaml.changes        2017-09-15 
22:27:45.485497850 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-yaml.new/ghc-yaml.changes   2018-05-30 
12:28:00.172815882 +0200
@@ -1,0 +2,17 @@
+Mon May 14 17:02:11 UTC 2018 - psim...@suse.com
+
+- Update yaml to version 0.8.30.
+  * Removed `AppSettings` mentioned in `loadYamlSettings` error message.
+  * Deprecated `decodeFile` [#129](https://github.com/snoyberg/yaml/issues/129)
+  * Turn off executables by default 
[#103](https://github.com/snoyberg/yaml/issues/103)
+  * Add `Data.Yaml.TH.yamlQQ`
+  * Support conduit 1.3
+  * Add `Semigroup` instance [#123](https://github.com/snoyberg/yaml/pull/123)
+  * Use `throwM` instead of `monadThrow`
+  * Drop aeson-qq dep (incompatible with Stackage Nightly)
+  * Tweaks to the executable `yaml2json` 
[#119](https://github.com/snoyberg/yaml/pull/119): 
+      - Add command-line option `-h` and `--help` to show help message
+      - Error messages are now written to `stderr` instead of `stdout`
+  * New encodePretty option `setConfDropNull` to drop null values from objects 
[#116](https://github.com/snoyberg/yaml/issues/116)
+
+-------------------------------------------------------------------

Old:
----
  yaml-0.8.23.3.tar.gz

New:
----
  yaml-0.8.30.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-yaml.spec ++++++
--- /var/tmp/diff_new_pack.7InOm0/_old  2018-05-30 12:28:00.920789482 +0200
+++ /var/tmp/diff_new_pack.7InOm0/_new  2018-05-30 12:28:00.924789341 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-yaml
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,14 +19,13 @@
 %global pkg_name yaml
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.8.23.3
+Version:        0.8.30
 Release:        0
 Summary:        Support for parsing and rendering YAML documents
 License:        BSD-3-Clause
 Group:          Development/Libraries/Haskell
 URL:            https://hackage.haskell.org/package/%{pkg_name}
 Source0:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
-BuildRequires:  chrpath
 BuildRequires:  ghc-Cabal-devel
 BuildRequires:  ghc-aeson-devel
 BuildRequires:  ghc-attoparsec-devel
@@ -46,7 +45,6 @@
 BuildRequires:  ghc-vector-devel
 %if %{with tests}
 BuildRequires:  ghc-HUnit-devel
-BuildRequires:  ghc-aeson-qq-devel
 BuildRequires:  ghc-base-compat-devel
 BuildRequires:  ghc-hspec-devel
 BuildRequires:  ghc-mockery-devel
@@ -54,7 +52,8 @@
 %endif
 
 %description
-Support for parsing and rendering YAML documents.
+README and API documentation are available at
+<https://www.stackage.org/package/yaml>.
 
 %package devel
 Summary:        Haskell %{pkg_name} library development files
@@ -75,7 +74,6 @@
 
 %install
 %ghc_lib_install
-%ghc_fix_rpath %{pkg_name}-%{version}
 
 %check
 %cabal_test
@@ -87,11 +85,9 @@
 %ghc_pkg_recache
 
 %files -f %{name}.files
-%doc LICENSE
-%{_bindir}/json2yaml
-%{_bindir}/yaml2json
+%license LICENSE
 
 %files devel -f %{name}-devel.files
-%doc ChangeLog.md README.md examples
+%doc ChangeLog.md README.md
 
 %changelog

++++++ yaml-0.8.23.3.tar.gz -> yaml-0.8.30.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/ChangeLog.md 
new/yaml-0.8.30/ChangeLog.md
--- old/yaml-0.8.23.3/ChangeLog.md      2017-07-14 09:17:46.000000000 +0200
+++ new/yaml-0.8.30/ChangeLog.md        2018-05-04 07:36:29.000000000 +0200
@@ -1,3 +1,42 @@
+## 0.8.30
+
+* Removed `AppSettings` mentioned in `loadYamlSettings` error message.
+
+## 0.8.29
+
+* Deprecated `decodeFile` [#129](https://github.com/snoyberg/yaml/issues/129)
+* Turn off executables by default 
[#103](https://github.com/snoyberg/yaml/issues/103)
+
+## 0.8.28
+
+* Add `Data.Yaml.TH.yamlQQ`
+
+## 0.8.27
+
+* Support conduit 1.3
+
+## 0.8.26
+
+* Add `Semigroup` instance [#123](https://github.com/snoyberg/yaml/pull/123)
+
+## 0.8.25.2
+
+* Use `throwM` instead of `monadThrow`
+
+## 0.8.25.1
+
+* Drop aeson-qq dep (incompatible with Stackage Nightly)
+
+## 0.8.25
+
+* Tweaks to the executable `yaml2json` 
[#119](https://github.com/snoyberg/yaml/pull/119): 
+    - Add command-line option `-h` and `--help` to show help message
+    - Error messages are now written to `stderr` instead of `stdout`
+
+## 0.8.24
+
+* New encodePretty option `setConfDropNull` to drop null values from objects 
[#116](https://github.com/snoyberg/yaml/issues/116)
+
 ## 0.8.23.3
 
 * Avoid over-escaping `*` [#113](https://github.com/snoyberg/yaml/issues/113)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml/Builder.hs 
new/yaml-0.8.30/Data/Yaml/Builder.hs
--- old/yaml-0.8.23.3/Data/Yaml/Builder.hs      2017-06-16 05:46:12.000000000 
+0200
+++ new/yaml-0.8.30/Data/Yaml/Builder.hs        2018-01-15 18:30:34.000000000 
+0100
@@ -21,7 +21,6 @@
 import Prelude hiding (null)
 
 import Control.Arrow (second)
-import Control.Monad.Trans.Resource (runResourceT)
 #if MIN_VERSION_aeson(1,0,0)
 import Data.Aeson.Text (encodeToTextBuilder)
 #else
@@ -107,11 +106,11 @@
 toEvents (YamlBuilder front) =
     EventStreamStart : EventDocumentStart : front [EventDocumentEnd, 
EventStreamEnd]
 
-toSource :: (Monad m, ToYaml a) => a -> Source m Event
+toSource :: (Monad m, ToYaml a) => a -> ConduitM i Event m ()
 toSource = mapM_ yield . toEvents . toYaml
 
 toByteString :: ToYaml a => a -> ByteString
-toByteString yb = unsafePerformIO $ runResourceT $ toSource yb $$ encode
+toByteString yb = unsafePerformIO $ runConduitRes $ toSource yb .| encode
 
 writeYamlFile :: ToYaml a => FilePath -> a -> IO ()
-writeYamlFile fp yb = runResourceT $ toSource yb $$ encodeFile fp
+writeYamlFile fp yb = runConduitRes $ toSource yb .| encodeFile fp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml/Config.hs 
new/yaml-0.8.30/Data/Yaml/Config.hs
--- old/yaml-0.8.23.3/Data/Yaml/Config.hs       2016-06-21 18:51:20.000000000 
+0200
+++ new/yaml-0.8.30/Data/Yaml/Config.hs 2018-05-04 07:36:29.000000000 +0200
@@ -195,7 +195,7 @@
             RequireCustomEnv env -> return $ applyEnvValue   True  env    
value'
 
     case fromJSON value of
-        Error s -> error $ "Could not convert to AppSettings: " ++ s
+        Error s -> error $ "Could not convert to expected type: " ++ s
         Success settings -> return settings
 
 -- | Same as @loadYamlSettings@, but get the list of runtime config files from
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml/Include.hs 
new/yaml-0.8.30/Data/Yaml/Include.hs
--- old/yaml-0.8.23.3/Data/Yaml/Include.hs      2017-01-25 12:17:27.000000000 
+0100
+++ new/yaml-0.8.30/Data/Yaml/Include.hs        2018-01-15 18:30:34.000000000 
+0100
@@ -27,19 +27,19 @@
 eventsFromFile
     :: MonadResource m
     => FilePath
-    -> Producer m Event
+    -> ConduitM i Event m ()
 eventsFromFile = go []
   where
-    go :: MonadResource m => [FilePath] -> FilePath -> Producer m Event
+    go :: MonadResource m => [FilePath] -> FilePath -> ConduitM i Event m ()
     go seen fp = do
         cfp <- liftIO $ handleNotFound $ canonicalizePath fp
         when (cfp `elem` seen) $ do
             liftIO $ throwIO CyclicIncludes
-        Y.decodeFile cfp $= do
+        Y.decodeFile cfp .| do
             awaitForever $ \event -> case event of
                 EventScalar f (UriTag "!include") _ _ -> do
                     let includeFile = takeDirectory cfp </> unpack (decodeUtf8 
f)
-                    go (cfp : seen) includeFile $= CL.filter (`notElem` 
irrelevantEvents)
+                    go (cfp : seen) includeFile .| CL.filter (`notElem` 
irrelevantEvents)
                 _ -> yield event
 
     irrelevantEvents = [EventStreamStart, EventDocumentStart, 
EventDocumentEnd, EventStreamEnd]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml/Internal.hs 
new/yaml-0.8.30/Data/Yaml/Internal.hs
--- old/yaml-0.8.23.3/Data/Yaml/Internal.hs     2017-07-14 09:17:05.000000000 
+0200
+++ new/yaml-0.8.30/Data/Yaml/Internal.hs       2018-01-15 18:30:34.000000000 
+0100
@@ -27,7 +27,7 @@
 import qualified Data.Attoparsec.Text as Atto
 import Data.ByteString (ByteString)
 import Data.Char (toUpper)
-import qualified Data.Conduit as C
+import Data.Conduit ((.|), ConduitM, runConduit)
 import qualified Data.Conduit.List as CL
 import qualified Data.HashMap.Strict as M
 import qualified Data.HashSet as HashSet
@@ -125,12 +125,12 @@
 
 type Parse = StateT (Map.Map String Value) (ResourceT IO)
 
-requireEvent :: Event -> C.Sink Event Parse ()
+requireEvent :: Event -> ConduitM Event o Parse ()
 requireEvent e = do
     f <- CL.head
     unless (f == Just e) $ liftIO $ throwIO $ UnexpectedEvent f $ Just e
 
-parse :: C.Sink Event Parse Value
+parse :: ConduitM Event o Parse Value
 parse = do
     streamStart <- CL.head
     case streamStart of
@@ -152,7 +152,7 @@
         _ -> liftIO $ throwIO $ UnexpectedEvent streamStart Nothing
 
 parseScalar :: ByteString -> Anchor -> Style -> Tag
-            -> C.Sink Event Parse Text
+            -> ConduitM Event o Parse Text
 parseScalar v a style tag = do
     let res = decodeUtf8With lenientDecode v
     case a of
@@ -178,7 +178,7 @@
 textToScientific :: Text -> Either String Scientific
 textToScientific = Atto.parseOnly (Atto.scientific <* Atto.endOfInput)
 
-parseO :: C.Sink Event Parse Value
+parseO :: ConduitM Event o Parse Value
 parseO = do
     me <- CL.head
     case me of
@@ -194,7 +194,7 @@
 
 parseS :: Y.Anchor
        -> ([Value] -> [Value])
-       -> C.Sink Event Parse Value
+       -> ConduitM Event o Parse Value
 parseS a front = do
     me <- CL.peek
     case me of
@@ -212,7 +212,7 @@
 
 parseM :: Y.Anchor
        -> M.HashMap Text Value
-       -> C.Sink Event Parse Value
+       -> ConduitM Event o Parse Value
 parseM a front = do
     me <- CL.peek
     case me of
@@ -249,13 +249,13 @@
           merge' al _           = al
 
 decodeHelper :: FromJSON a
-             => C.Source Parse Y.Event
+             => ConduitM () Y.Event Parse ()
              -> IO (Either ParseException (Either String a))
 decodeHelper src = do
     -- This used to be tryAny, but the fact is that catching async
     -- exceptions is fine here. We'll rethrow them immediately in the
     -- otherwise clause.
-    x <- try $ runResourceT $ flip evalStateT Map.empty $ src C.$$ parse
+    x <- try $ runResourceT $ flip evalStateT Map.empty $ runConduit $ src .| 
parse
     case x of
         Left e
             | Just pe <- fromException e -> return $ Left pe
@@ -264,10 +264,10 @@
         Right y -> return $ Right $ parseEither parseJSON y
 
 decodeHelper_ :: FromJSON a
-              => C.Source Parse Event
+              => ConduitM () Event Parse ()
               -> IO (Either ParseException a)
 decodeHelper_ src = do
-    x <- try $ runResourceT $ flip evalStateT Map.empty $ src C.$$ parse
+    x <- try $ runResourceT $ flip evalStateT Map.empty $ runConduit $ src .| 
parse
     return $ case x of
         Left e
             | Just pe <- fromException e -> Left pe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml/Parser.hs 
new/yaml-0.8.30/Data/Yaml/Parser.hs
--- old/yaml-0.8.23.3/Data/Yaml/Parser.hs       2017-06-16 05:46:12.000000000 
+0200
+++ new/yaml-0.8.30/Data/Yaml/Parser.hs 2018-01-15 18:30:34.000000000 +0100
@@ -9,7 +9,7 @@
 import Control.Exception (Exception)
 import Control.Monad (MonadPlus (..), liftM, ap)
 import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Resource (MonadThrow, monadThrow, runResourceT)
+import Control.Monad.Trans.Resource (MonadThrow, throwM)
 import Control.Monad.Trans.Writer.Strict (tell, WriterT)
 import Data.ByteString (ByteString)
 import Data.Conduit
@@ -18,6 +18,9 @@
 #if !MIN_VERSION_base(4,8,0)
 import Data.Monoid (Monoid (..))
 #endif
+#if !MIN_VERSION_base(4,11,0)
+import Data.Semigroup (Semigroup(..))
+#endif
 import Data.Text (Text, pack, unpack)
 import Data.Text.Encoding (decodeUtf8)
 import Data.Text.Read (signed, decimal)
@@ -36,9 +39,13 @@
 instance Alternative YamlParser where
     empty = fail "empty"
     (<|>) = mplus
+instance Semigroup (YamlParser a) where
+    (<>) = mplus
 instance Monoid (YamlParser a) where
     mempty = fail "mempty"
-    mappend = mplus
+#if !MIN_VERSION_base(4,11,0)
+    mappend = (<>)
+#endif
 instance Monad YamlParser where
     return = pure
     YamlParser f >>= g = YamlParser $ \am ->
@@ -124,7 +131,7 @@
 parseRawDoc :: (FromYaml a, MonadThrow m) => RawDoc -> m a
 parseRawDoc (RawDoc val am) =
     case unYamlParser (fromYaml val) am of
-        Left t -> monadThrow $ FromYamlException t
+        Left t -> throwM $ FromYamlException t
         Right x -> return x
 
 (.:) :: FromYaml a => [(Text, YamlValue)] -> Text -> YamlParser a
@@ -140,11 +147,11 @@
     deriving (Show, Typeable)
 instance Exception YamlParseException
 
-sinkValue :: MonadThrow m => Consumer Event (WriterT AnchorMap m) YamlValue
+sinkValue :: MonadThrow m => ConduitM Event o (WriterT AnchorMap m) YamlValue
 sinkValue =
     start
   where
-    start = await >>= maybe (monadThrow UnexpectedEndOfEvents) go
+    start = await >>= maybe (throwM UnexpectedEndOfEvents) go
 
     tell' Nothing val = return val
     tell' (Just name) val = do
@@ -164,12 +171,12 @@
         let val = Mapping pairs mname
         tell' mname val
 
-    go e = monadThrow $ UnexpectedEvent e
+    go e = throwM $ UnexpectedEvent e
 
     goS front = do
         me <- await
         case me of
-            Nothing -> monadThrow UnexpectedEndOfEvents
+            Nothing -> throwM UnexpectedEndOfEvents
             Just EventSequenceEnd -> return $ front []
             Just e -> do
                 val <- go e
@@ -178,17 +185,17 @@
     goM front = do
         mk <- await
         case mk of
-            Nothing -> monadThrow UnexpectedEndOfEvents
+            Nothing -> throwM UnexpectedEndOfEvents
             Just EventMappingEnd -> return $ front []
             Just (EventScalar a b c d) -> do
                 _ <- tell' d $ Scalar a b c d
                 let k = decodeUtf8 a
                 v <- start
                 goM (front . ((k, v):))
-            Just e -> monadThrow $ UnexpectedEvent e
+            Just e -> throwM $ UnexpectedEvent e
 
-sinkRawDoc :: MonadThrow m => Consumer Event m RawDoc
+sinkRawDoc :: MonadThrow m => ConduitM Event o m RawDoc
 sinkRawDoc = uncurry RawDoc <$> runWriterC sinkValue
 
 readYamlFile :: FromYaml a => FilePath -> IO a
-readYamlFile fp = runResourceT (decodeFile fp $$ sinkRawDoc) >>= parseRawDoc
+readYamlFile fp = runConduitRes (decodeFile fp .| sinkRawDoc) >>= parseRawDoc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml/Pretty.hs 
new/yaml-0.8.30/Data/Yaml/Pretty.hs
--- old/yaml-0.8.23.3/Data/Yaml/Pretty.hs       2016-02-15 10:15:08.000000000 
+0100
+++ new/yaml-0.8.30/Data/Yaml/Pretty.hs 2017-10-31 18:05:16.000000000 +0100
@@ -1,12 +1,14 @@
 {-# LANGUAGE CPP #-}
 -- | Prettier YAML encoding.
 --
--- Since 0.8.13
+-- @since 0.8.13
 module Data.Yaml.Pretty
     ( encodePretty
     , Config
     , getConfCompare
     , setConfCompare
+    , getConfDropNull
+    , setConfDropNull
     , defConfig
     ) where
 
@@ -29,30 +31,47 @@
 import Data.Yaml.Builder
 
 -- |
--- Since 0.8.13
+-- @since 0.8.13
 data Config = Config
   { confCompare :: Text -> Text -> Ordering -- ^ Function used to sort keys in 
objects
+  , confDropNull :: Bool
   }
 
--- | The default configuration: do not sort objects.
+-- | The default configuration: do not sort objects or drop keys
 --
--- Since 0.8.13
+-- @since 0.8.13
 defConfig :: Config
-defConfig = Config mempty
+defConfig = Config mempty False
 
 -- |
--- Since 0.8.13
+-- @since 0.8.13
 getConfCompare :: Config -> Text -> Text -> Ordering
 getConfCompare = confCompare
 
--- |
--- Since 0.8.13
+-- | Sets ordering for object keys
+--
+-- @since 0.8.13
 setConfCompare :: (Text -> Text -> Ordering) -> Config -> Config
 setConfCompare cmp c = c { confCompare = cmp }
 
+-- |
+-- @since 0.8.24
+getConfDropNull :: Config -> Bool
+getConfDropNull = confDropNull
+
+-- | Drop entries with `Null` value from objects, if set to `True`
+--
+-- @since 0.8.24
+setConfDropNull :: Bool -> Config -> Config
+setConfDropNull m c = c { confDropNull = m }
+
 pretty :: Config -> Value -> YamlBuilder
 pretty cfg = go
-  where go (Object o) = mapping (sortBy (confCompare cfg `on` fst) $ HM.toList 
$ HM.map go o)
+  where go (Object o) = let sort = sortBy (confCompare cfg `on` fst)
+                            select
+                              | confDropNull cfg = HM.filter (/= Null)
+                              | otherwise        = id
+                        in mapping (sort $ HM.toList $ HM.map go $ select o)
         go (Array a)  = array (go <$> V.toList a)
         go Null       = null
         go (String s) = string s
@@ -61,6 +80,6 @@
 
 -- | Configurable 'encode'.
 --
--- Since 0.8.13
+-- @since 0.8.13
 encodePretty :: ToJSON a => Config -> a -> ByteString
 encodePretty cfg = toByteString . pretty cfg . toJSON
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml/TH.hs 
new/yaml-0.8.30/Data/Yaml/TH.hs
--- old/yaml-0.8.23.3/Data/Yaml/TH.hs   2016-10-16 04:44:01.000000000 +0200
+++ new/yaml-0.8.30/Data/Yaml/TH.hs     2018-01-16 19:14:25.000000000 +0100
@@ -1,10 +1,13 @@
+{-# LANGUAGE CPP                 #-}
 {-# LANGUAGE LambdaCase          #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TemplateHaskell     #-}
 
 module Data.Yaml.TH
   ( -- * Decoding
-    decodeFile
+    yamlQQ
+#if MIN_VERSION_template_haskell(2,9,0)
+  , decodeFile
+#endif
     -- * Re-exports from "Data.Yaml"
   , Value (..)
   , Parser
@@ -19,11 +22,16 @@
   , FromJSON (..)
   ) where
 
-import Data.Yaml hiding (decodeFile)
-import Language.Haskell.TH
-import Language.Haskell.TH.Syntax
+import           Data.Text.Encoding
+import qualified Data.Text as T
+import           Language.Haskell.TH
+import           Language.Haskell.TH.Syntax
+import           Language.Haskell.TH.Quote
 
--- | Decode a @yaml@ file at compile time. Only available on GHC version 
@7.8.1@
+import           Data.Yaml hiding (decodeFile)
+
+#if MIN_VERSION_template_haskell(2,9,0)
+-- | Decode a YAML file at compile time. Only available on GHC version @7.8.1@
 -- or higher.
 --
 -- @since 0.8.19.0
@@ -42,3 +50,37 @@
   runIO (decodeFileEither path) >>= \case
     Left err -> fail (prettyPrintParseException err)
     Right x -> fmap TExp (lift (x :: a))
+#endif
+
+decodeValue :: String -> Either String Value
+decodeValue = decodeEither . encodeUtf8 . T.pack
+
+yamlExp :: String -> Q Exp
+yamlExp input = case decodeValue input of
+  Left err -> fail err
+  Right a -> lift a
+
+-- | A @QuasiQuoter@ for YAML.
+--
+-- @since 0.8.28.0
+--
+-- ==== __Examples__
+--
+-- @
+-- {-\# LANGUAGE QuasiQuotes \#-}
+-- import Data.Yaml.TH
+--
+-- value :: Value
+-- value = [yamlQQ|
+-- name: John Doe
+-- age: 23
+-- |]
+-- @
+yamlQQ :: QuasiQuoter
+yamlQQ = QuasiQuoter {
+  quoteExp  = yamlExp
+, quotePat  = notDefined "quotePat"
+, quoteType = notDefined "quoteType"
+, quoteDec  = notDefined "quoteDec"
+} where
+    notDefined name _ = fail (name ++ " is not defined for yamlQQ")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Data/Yaml.hs 
new/yaml-0.8.30/Data/Yaml.hs
--- old/yaml-0.8.23.3/Data/Yaml.hs      2017-07-14 09:16:50.000000000 +0200
+++ new/yaml-0.8.30/Data/Yaml.hs        2018-03-19 13:08:47.000000000 +0100
@@ -71,7 +71,6 @@
 import Control.Applicative((<$>))
 #endif
 import Control.Exception
-import Control.Monad.Trans.Resource (runResourceT)
 import Data.Aeson
     ( Value (..), ToJSON (..), FromJSON (..), object
     , (.=) , (.:) , (.:?) , (.!=)
@@ -85,7 +84,7 @@
 #endif
 import Data.Aeson.Types (Pair, parseMaybe, parseEither, Parser)
 import Data.ByteString (ByteString)
-import qualified Data.Conduit as C
+import Data.Conduit ((.|), runConduitRes)
 import qualified Data.Conduit.List as CL
 import qualified Data.HashMap.Strict as M
 import qualified Data.HashSet as HashSet
@@ -101,14 +100,14 @@
 import qualified Text.Libyaml as Y
 
 encode :: ToJSON a => a -> ByteString
-encode obj = unsafePerformIO $
-    runResourceT $ CL.sourceList (objToEvents $ toJSON obj)
-                C.$$ Y.encode
+encode obj = unsafePerformIO $ runConduitRes
+    $ CL.sourceList (objToEvents $ toJSON obj)
+   .| Y.encode
 
 encodeFile :: ToJSON a => FilePath -> a -> IO ()
-encodeFile fp obj = runResourceT
-            $ CL.sourceList (objToEvents $ toJSON obj)
-         C.$$ Y.encodeFile fp
+encodeFile fp obj = runConduitRes
+    $ CL.sourceList (objToEvents $ toJSON obj)
+   .| Y.encodeFile fp
 
 objToEvents :: Value -> [Y.Event]
 objToEvents o = (:) EventStreamStart
@@ -166,6 +165,7 @@
            => FilePath
            -> IO (Maybe a)
 decodeFile fp = decodeHelper (Y.decodeFile fp) >>= either throwIO (return . 
either (const Nothing) id)
+{-# DEPRECATED decodeFile "Please use decodeFileEither, which does not 
confused type-directed and runtime exceptions." #-}
 
 -- | A version of 'decodeFile' which should not throw runtime exceptions.
 --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/Text/Libyaml.hs 
new/yaml-0.8.30/Text/Libyaml.hs
--- old/yaml-0.8.23.3/Text/Libyaml.hs   2017-06-16 05:46:12.000000000 +0200
+++ new/yaml-0.8.30/Text/Libyaml.hs     2018-01-15 18:30:34.000000000 +0100
@@ -479,7 +479,7 @@
     deriving (Show, Typeable)
 instance Exception ToEventRawException
 
-decode :: MonadResource m => B.ByteString -> Producer m Event
+decode :: MonadResource m => B.ByteString -> ConduitM i Event m ()
 decode bs | B8.null bs = return ()
 decode bs =
     bracketP alloc cleanup (runParser . fst)
@@ -521,7 +521,7 @@
     then withCString openMode $ \openMode' -> c_fdopen fd openMode'
     else return nullPtr
 
-decodeFile :: MonadResource m => FilePath -> Producer m Event
+decodeFile :: MonadResource m => FilePath -> ConduitM i Event m ()
 decodeFile file =
     bracketP alloc cleanup (runParser . fst)
   where
@@ -549,7 +549,7 @@
         c_yaml_parser_delete ptr
         free ptr
 
-runParser :: MonadResource m => Parser -> Producer m Event
+runParser :: MonadResource m => Parser -> ConduitM i Event m ()
 runParser parser = do
     e <- liftIO $ parserParseOne' parser
     case e of
@@ -573,7 +573,7 @@
           return $ Left $ YamlParseException problem context problemMark
         else Right <$> getEvent er
 
-encode :: MonadResource m => Consumer Event m ByteString
+encode :: MonadResource m => ConduitM Event o m ByteString
 encode =
     runEmitter alloc close
   where
@@ -590,7 +590,7 @@
 
 encodeFile :: MonadResource m
            => FilePath
-           -> Consumer Event m ()
+           -> ConduitM Event o m ()
 encodeFile filePath =
     bracketP getFile c_fclose $ \file -> runEmitter (alloc file) (\u _ -> 
return u)
   where
@@ -605,7 +605,7 @@
 runEmitter :: MonadResource m
            => (Emitter -> IO a) -- ^ alloc
            -> (() -> a -> IO b) -- ^ close
-           -> Consumer Event m b
+           -> ConduitM Event o m b
 runEmitter allocI closeI =
     bracketP alloc cleanup go
   where
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/exe/json2yaml.hs 
new/yaml-0.8.30/exe/json2yaml.hs
--- old/yaml-0.8.23.3/exe/json2yaml.hs  2016-02-15 10:15:08.000000000 +0100
+++ new/yaml-0.8.30/exe/json2yaml.hs    2018-01-15 18:30:34.000000000 +0100
@@ -1,4 +1,3 @@
-import Control.Monad (when)
 import qualified Data.Aeson as J
 import qualified Data.ByteString as S
 import qualified Data.ByteString.Lazy as L
@@ -9,8 +8,9 @@
 main :: IO ()
 main = do
     args <- getArgs
-    when (length args > 2) $ error "Usage: json2yaml [in] [out]"
-    let (input:output:_) = args ++ repeat "-"
+    (input, output) <- case args ++ replicate (2 - length args) "-" of
+        [i, o] -> return (i, o)
+        _ -> fail "Usage: json2yaml [in] [out]"
     mval <- fmap J.decode $
         case input of
             "-" -> L.getContents
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/exe/yaml2json.hs 
new/yaml-0.8.30/exe/yaml2json.hs
--- old/yaml-0.8.23.3/exe/yaml2json.hs  2016-02-15 10:15:08.000000000 +0100
+++ new/yaml-0.8.30/exe/yaml2json.hs    2017-11-13 08:06:07.000000000 +0100
@@ -5,16 +5,17 @@
 import Data.ByteString.Lazy (putStr)
 import System.Environment (getArgs)
 import System.Exit
+import System.IO (stderr, hPutStrLn)
 
 import Data.Yaml (decodeFileEither, decodeEither')
 
 helpMessage :: IO ()
-helpMessage = putStrLn "yaml2json FILE\n  use - as FILE to indicate stdin" >> 
exitFailure
+helpMessage = putStrLn "Usage: yaml2json FILE\n\nuse '-' as FILE to indicate 
stdin" >> exitFailure
 
 showJSON :: Show a => Either a Value -> IO b
 showJSON ejson =
     case ejson of
-       Left err -> print err >> exitFailure
+       Left err -> hPutStrLn stderr (show err) >> exitFailure
        Right res -> putStr (encode (res :: Value)) >> exitSuccess
 
 main :: IO ()
@@ -22,7 +23,9 @@
     args <- getArgs
     case args of
        -- strict getContents will read in all of stdin at once
+       (["-h"]) -> helpMessage
+       (["--help"]) -> helpMessage
        (["-"]) -> getContents >>= showJSON . decodeEither'
        ([f])   -> decodeFileEither f >>= showJSON
        _ -> helpMessage
-       
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/libyaml/yaml.h 
new/yaml-0.8.30/libyaml/yaml.h
--- old/yaml-0.8.23.3/libyaml/yaml.h    2017-06-30 06:02:56.000000000 +0200
+++ new/yaml-0.8.30/libyaml/yaml.h      2017-10-31 18:05:16.000000000 +0100
@@ -1091,7 +1091,7 @@
     yaml_error_type_t error;
     /** Error description. */
     const char *problem;
-    /** The byte about which the problem occured. */
+    /** The byte about which the problem occurred. */
     size_t problem_offset;
     /** The problematic value (@c -1 is none). */
     int problem_value;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/test/Data/Yaml/IncludeSpec.hs 
new/yaml-0.8.30/test/Data/Yaml/IncludeSpec.hs
--- old/yaml-0.8.23.3/test/Data/Yaml/IncludeSpec.hs     2017-01-25 
12:17:27.000000000 +0100
+++ new/yaml-0.8.30/test/Data/Yaml/IncludeSpec.hs       2017-12-29 
07:47:09.000000000 +0100
@@ -1,10 +1,9 @@
-{-# LANGUAGE QuasiQuotes #-}
+{-# LANGUAGE OverloadedStrings #-}
 module Data.Yaml.IncludeSpec (main, spec) where
 
 import           Test.Hspec
 import           Data.List (isPrefixOf)
 import           Data.Aeson
-import           Data.Aeson.QQ
 import           Data.Yaml (ParseException(InvalidYaml))
 import           Data.Yaml.Include
 import           Text.Libyaml (YamlException(YamlException))
@@ -12,28 +11,33 @@
 main :: IO ()
 main = hspec spec
 
+asInt :: Int -> Int
+asInt = id
+
 spec :: Spec
 spec = do
   describe "decodeFile" $ do
     it "supports includes" $ do
-      decodeFile "test/resources/foo.yaml" `shouldReturn` Just [aesonQQ|
-        {
-          foo: 23,
-          bar: {one: 1, two: 2},
-          baz: 42
-        }
-      |]
+      decodeFile "test/resources/foo.yaml" `shouldReturn` Just (object
+          [ "foo" .= asInt 23
+          , "bar" .= object
+              [ "one" .= asInt 1
+              , "two" .= asInt 2
+              ]
+          , "baz" .= asInt 42
+          ])
 
     it "supports recursive includes" $ do
-      decodeFile "test/resources/baz.yaml" `shouldReturn` Just [aesonQQ|
-      {
-        foo: {
-          foo: 23,
-          bar: {one: 1, two: 2},
-          baz: 42
-        }
-      }
-      |]
+      decodeFile "test/resources/baz.yaml" `shouldReturn` Just (object
+        [ "foo" .= object
+          [ "foo" .= asInt 23
+          , "bar" .= object
+            [ "one" .= asInt 1
+            , "two" .= asInt 2
+            ]
+          , "baz" .= asInt 42
+          ]
+        ])
 
     it "aborts on cyclic includes" $ do
       (decodeFile "test/resources/loop/foo.yaml" :: IO (Maybe Value)) 
`shouldThrow` anyException
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/test/Data/Yaml/THSpec.hs 
new/yaml-0.8.30/test/Data/Yaml/THSpec.hs
--- old/yaml-0.8.23.3/test/Data/Yaml/THSpec.hs  1970-01-01 01:00:00.000000000 
+0100
+++ new/yaml-0.8.30/test/Data/Yaml/THSpec.hs    2018-01-16 19:14:25.000000000 
+0100
@@ -0,0 +1,17 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE QuasiQuotes #-}
+module Data.Yaml.THSpec (spec) where
+
+import           Test.Hspec
+import           Data.Aeson
+
+import           Data.Yaml.TH
+
+spec :: Spec
+spec = do
+  describe "yamlQQ" $ do
+    it "parses yaml" $ do
+      [yamlQQ|
+      name: John Doe
+      age: 23
+      |] `shouldBe` object ["name" .=  String "John Doe", "age" .= Number 23]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/test/Data/YamlSpec.hs 
new/yaml-0.8.30/test/Data/YamlSpec.hs
--- old/yaml-0.8.23.3/test/Data/YamlSpec.hs     2017-07-14 09:16:04.000000000 
+0200
+++ new/yaml-0.8.30/test/Data/YamlSpec.hs       2018-01-16 19:14:25.000000000 
+0100
@@ -11,8 +11,7 @@
 
 import Test.HUnit hiding (Test, path)
 
-import qualified Data.Conduit as C
-import qualified Control.Monad.Trans.Resource as C
+import Data.Conduit (runConduitRes, (.|), ConduitM)
 import qualified Data.Conduit.List as CL
 
 import Control.Monad
@@ -172,7 +171,7 @@
     , "foo\nbar\nbaz\n"
     ]
 
-counter :: Monad m => (Y.Event -> Bool) -> C.Sink Y.Event m Int
+counter :: Monad m => (Y.Event -> Bool) -> ConduitM Y.Event o m Int
 counter pred' =
     CL.fold (\cnt e -> (if pred' e then 1 else 0) + cnt) 0
 
@@ -181,7 +180,7 @@
            -> Int
            -> Assertion
 caseHelper yamlString pred' expRes = do
-    res <- C.runResourceT $ Y.decode (B8.pack yamlString) C.$$ counter pred'
+    res <- runConduitRes $ Y.decode (B8.pack yamlString) .| counter pred'
     res @?= expRes
 
 caseCountScalarsWithAnchor :: Assertion
@@ -218,7 +217,7 @@
 
 caseCountScalars :: Assertion
 caseCountScalars = do
-    res <- C.runResourceT $ Y.decode yamlBS C.$$ CL.fold adder accum
+    res <- runConduitRes $ Y.decode yamlBS .| CL.fold adder accum
     res @?= (7, 1, 2)
   where
     yamlString = "foo:\n  baz: [bin1, bin2, bin3]\nbaz: bazval"
@@ -231,7 +230,7 @@
 
 caseLargestString :: Assertion
 caseLargestString = do
-    res <- C.runResourceT $ Y.decodeFile filePath C.$$ CL.fold adder accum
+    res <- runConduitRes $ Y.decodeFile filePath .| CL.fold adder accum
     res @?= (length expected, expected)
     where
         expected = "this one is just a little bit bigger than the others"
@@ -251,9 +250,9 @@
 
 caseEncodeDecode :: Assertion
 caseEncodeDecode = do
-    eList <- C.runResourceT $ Y.decode yamlBS C.$$ CL.consume
-    bs <- C.runResourceT $ CL.sourceList eList C.$$ Y.encode
-    eList2 <- C.runResourceT $ Y.decode bs C.$$ CL.consume
+    eList <- runConduitRes $ Y.decode yamlBS .| CL.consume
+    bs <- runConduitRes $ CL.sourceList eList .| Y.encode
+    eList2 <- runConduitRes $ Y.decode bs .| CL.consume
     map MyEvent eList @=? map MyEvent eList2
   where
     yamlString = "foo: bar\nbaz:\n - bin1\n - bin2\n"
@@ -261,17 +260,17 @@
 
 caseEncodeDecodeFile :: Assertion
 caseEncodeDecodeFile = withFile "" $ \tmpPath -> do
-    eList <- C.runResourceT $ Y.decodeFile filePath C.$$ CL.consume
-    C.runResourceT $ CL.sourceList eList C.$$ Y.encodeFile tmpPath
-    eList2 <- C.runResourceT $ Y.decodeFile filePath C.$$ CL.consume
+    eList <- runConduitRes $ Y.decodeFile filePath .| CL.consume
+    runConduitRes $ CL.sourceList eList .| Y.encodeFile tmpPath
+    eList2 <- runConduitRes $ Y.decodeFile filePath .| CL.consume
     map MyEvent eList @=? map MyEvent eList2
   where
     filePath = "test/largest-string.yaml"
 
 caseInterleave :: Assertion
 caseInterleave = withFile "" $ \tmpPath -> withFile "" $ \tmpPath2 -> do
-    () <- C.runResourceT $ Y.decodeFile filePath C.$$ Y.encodeFile tmpPath
-    () <- C.runResourceT $ Y.decodeFile tmpPath C.$$ Y.encodeFile tmpPath2
+    () <- runConduitRes $ Y.decodeFile filePath .| Y.encodeFile tmpPath
+    () <- runConduitRes $ Y.decodeFile tmpPath .| Y.encodeFile tmpPath2
     f1 <- readFile tmpPath
     f2 <- readFile tmpPath2
     f1 @=? f2
@@ -280,7 +279,7 @@
 
 caseDecodeInvalidDocument :: Assertion
 caseDecodeInvalidDocument = do
-    x <- try $ C.runResourceT $ Y.decode yamlBS C.$$ CL.sinkNull
+    x <- try $ runConduitRes $ Y.decode yamlBS .| CL.sinkNull
     case x of
         Left (_ :: SomeException) -> return ()
         Right y -> do
@@ -338,12 +337,12 @@
     out1 <- D.decodeFile "accenté/bar.yaml"
     out1 @?= Just mySample
 
-  createDirectoryIfMissing True "test/resources/accenté/"
-
-  readFile "test/resources/accent/foo.yaml" >>=
-    writeFile "test/resources/accenté/foo.yaml"
-  out2 <- D.decodeFile "test/resources/accenté/foo.yaml"
-  out2 @?= Just mySample
+  c <- readFile "test/resources/accent/foo.yaml"
+  inTempDirectory $ do
+    createDirectoryIfMissing True "test/resources/unicode/accenté/"
+    writeFile "test/resources/unicode/accenté/foo.yaml" c
+    out2 <- D.decodeFile "test/resources/unicode/accenté/foo.yaml"
+    out2 @?= Just mySample
 
 caseEncodeDecodeStrings :: Assertion
 caseEncodeDecodeStrings = do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yaml-0.8.23.3/yaml.cabal new/yaml-0.8.30/yaml.cabal
--- old/yaml-0.8.23.3/yaml.cabal        2017-07-14 09:17:49.000000000 +0200
+++ new/yaml-0.8.30/yaml.cabal  2018-05-04 07:36:29.000000000 +0200
@@ -1,11 +1,11 @@
 name:            yaml
-version:         0.8.23.3
+version:         0.8.30
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <mich...@snoyman.com>, Anton Ageev 
<ant...@gmail.com>,Kirill Simonov
 maintainer:      Michael Snoyman <mich...@snoyman.com>
 synopsis:        Support for parsing and rendering YAML documents.
-description:     Please see the README.md file.
+description:     README and API documentation are available at 
<https://www.stackage.org/package/yaml>
 category:        Web
 stability:       stable
 cabal-version:   >= 1.8
@@ -30,7 +30,7 @@
 
 flag no-exe
   description: don't install the yaml2json or json2yaml executables
-  default: False
+  default: True
 
 flag no-examples
   description: don't build the examples
@@ -45,12 +45,13 @@
   default: False
 
 library
+    other-extensions: LambdaCase
     build-depends:   base >= 4 && < 5
                    , transformers >= 0.1
                    , bytestring >= 0.9.1.4
-                   , conduit >= 1.1.0 && < 1.3
-                   , resourcet >= 0.3 && < 1.2
-                   , aeson >= 0.7
+                   , conduit >= 1.2.8 && < 1.4
+                   , resourcet >= 0.3 && < 1.3
+                   , aeson >= 0.11
                    , containers
                    , unordered-containers
                    , vector
@@ -60,6 +61,7 @@
                    , filepath
                    , directory
                    , semigroups
+                   , template-haskell
     exposed-modules: Text.Libyaml
                      Data.Yaml
                      Data.Yaml.Aeson
@@ -68,9 +70,7 @@
                      Data.Yaml.Include
                      Data.Yaml.Parser
                      Data.Yaml.Pretty
-    if impl(ghc >= 7.8.1)
-      build-depends: template-haskell >= 2.8.0.0
-      exposed-modules: Data.Yaml.TH
+                     Data.Yaml.TH
     other-modules:
                      Data.Yaml.Internal
     ghc-options:     -Wall
@@ -126,6 +126,7 @@
     main-is:         Spec.hs
     other-modules:   Data.YamlSpec
                      Data.Yaml.IncludeSpec
+                     Data.Yaml.THSpec
     cpp-options:     -DTEST
     build-depends:   hspec >= 1.3
                    , HUnit
@@ -140,7 +141,6 @@
                    , directory
                    , vector
                    , resourcet
-                   , aeson-qq
                    , mockery
                    , base-compat
                    , temporary


Reply via email to