Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-attoparsec-iso8601 for
openSUSE:Factory checked in at 2022-08-01 21:29:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-attoparsec-iso8601 (Old)
and /work/SRC/openSUSE:Factory/.ghc-attoparsec-iso8601.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-attoparsec-iso8601"
Mon Aug 1 21:29:32 2022 rev:16 rq:987018 version:1.1.0.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/ghc-attoparsec-iso8601/ghc-attoparsec-iso8601.changes
2022-02-11 23:09:33.234971030 +0100
+++
/work/SRC/openSUSE:Factory/.ghc-attoparsec-iso8601.new.1533/ghc-attoparsec-iso8601.changes
2022-08-01 21:29:37.517523290 +0200
@@ -1,0 +2,8 @@
+Wed Jun 15 14:53:41 UTC 2022 - Peter Simons <[email protected]>
+
+- Update attoparsec-iso8601 to version 1.1.0.0.
+ Upstream added a new change log file in this release. With no
+ previous version to compare against, the automatic updater cannot
+ reliable determine the relevante entries for this release.
+
+-------------------------------------------------------------------
Old:
----
attoparsec-iso8601-1.0.2.1.tar.gz
New:
----
attoparsec-iso8601-1.1.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-attoparsec-iso8601.spec ++++++
--- /var/tmp/diff_new_pack.JzO5Kt/_old 2022-08-01 21:29:38.077524896 +0200
+++ /var/tmp/diff_new_pack.JzO5Kt/_new 2022-08-01 21:29:38.081524908 +0200
@@ -18,7 +18,7 @@
%global pkg_name attoparsec-iso8601
Name: ghc-%{pkg_name}
-Version: 1.0.2.1
+Version: 1.1.0.0
Release: 0
Summary: Parsing of ISO 8601 dates, originally from aeson
License: BSD-3-Clause
@@ -66,6 +66,6 @@
%license LICENSE
%files devel -f %{name}-devel.files
-%doc README.md
+%doc README.md changelog.md
%changelog
++++++ attoparsec-iso8601-1.0.2.1.tar.gz -> attoparsec-iso8601-1.1.0.0.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/attoparsec-iso8601-1.0.2.1/attoparsec-iso8601.cabal
new/attoparsec-iso8601-1.1.0.0/attoparsec-iso8601.cabal
--- old/attoparsec-iso8601-1.0.2.1/attoparsec-iso8601.cabal 2001-09-09
03:46:40.000000000 +0200
+++ new/attoparsec-iso8601-1.1.0.0/attoparsec-iso8601.cabal 2001-09-09
03:46:40.000000000 +0200
@@ -1,5 +1,5 @@
name: attoparsec-iso8601
-version: 1.0.2.1
+version: 1.1.0.0
synopsis: Parsing of ISO 8601 dates, originally from aeson
description: Parsing of ISO 8601 dates, originally from aeson.
license: BSD3
@@ -14,19 +14,10 @@
homepage: https://github.com/haskell/aeson
bug-reports: https://github.com/haskell/aeson/issues
build-type: Simple
-tested-with: GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC
== 8.8.4, GHC == 8.10.4, GHC == 9.0.1
+tested-with: 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.3, GHC==9.4.1
extra-source-files:
README.md
-
-flag developer
- description: operate in developer mode
- default: False
- manual: True
-
-flag fast
- description: compile without optimizations
- default: False
- manual: True
+ changelog.md
library
hs-source-dirs: src
@@ -43,15 +34,6 @@
text >= 1.2.3.0 && < 1.3.0.0 || >= 2.0 && <2.1,
time >= 1.6.0.1 && < 1.13
- if flag(fast)
- ghc-options: -O0
- else
- ghc-options: -O2
-
- if flag(developer)
- ghc-options: -Werror
- ghc-prof-options: -auto-all
-
source-repository head
type: git
location: git://github.com/haskell/aeson.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/attoparsec-iso8601-1.0.2.1/changelog.md
new/attoparsec-iso8601-1.1.0.0/changelog.md
--- old/attoparsec-iso8601-1.0.2.1/changelog.md 1970-01-01 01:00:00.000000000
+0100
+++ new/attoparsec-iso8601-1.1.0.0/changelog.md 2001-09-09 03:46:40.000000000
+0200
@@ -0,0 +1,19 @@
+For the latest version of this document, please see
[https://github.com/bos/aeson/blob/master/attoparsec-iso8601/changelog.md](https://github.com/bos/aeson/blob/master/attoparsec-iso8601/changelog.md).
+
+### 1.1.0.0
+
+- Change parsers of types with year (`Day`, `UTCTime`) to require years with
at least 4 digits.
+- Remove `fast` and `developer` package flags
+
+### 1.0.2.1
+
+* Code (re)organization.
+* Avoid wildcard imports
+
+### 1.0.2.0
+
+* Add `month :: Parser Month` and `quarter :: Parser Quarter`
+
+### 1.0.1.0
+
+* Fixes handling of `UTCTime` wrt. leap seconds , thanks to Adam Sch??nemann
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/attoparsec-iso8601-1.0.2.1/src/Data/Attoparsec/Time.hs
new/attoparsec-iso8601-1.1.0.0/src/Data/Attoparsec/Time.hs
--- old/attoparsec-iso8601-1.0.2.1/src/Data/Attoparsec/Time.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/attoparsec-iso8601-1.1.0.0/src/Data/Attoparsec/Time.hs 2001-09-09
03:46:40.000000000 +0200
@@ -19,6 +19,7 @@
, timeZone
, utcTime
, zonedTime
+ , year
, month
, quarter
) where
@@ -27,7 +28,7 @@
import Control.Applicative ((<|>))
import Control.Monad (void, when)
-import Data.Attoparsec.Text (Parser, char, decimal, digit, option, anyChar,
peekChar, peekChar', takeWhile1, satisfy)
+import Data.Attoparsec.Text (Parser, char, digit, option, anyChar, peekChar,
peekChar', takeWhile1, satisfy)
import Data.Attoparsec.Time.Internal (toPico)
import Data.Bits ((.&.))
import Data.Char (isDigit, ord)
@@ -35,6 +36,7 @@
import Data.Int (Int64)
import Data.Maybe (fromMaybe)
import Data.Time.Calendar (Day, fromGregorianValid)
+import Data.Time.Calendar.Compat (Year)
import Data.Time.Calendar.Quarter.Compat (Quarter, QuarterOfYear (..),
fromYearQuarter)
import Data.Time.Calendar.Month.Compat (Month, fromYearMonthValid)
import Data.Time.Clock (UTCTime(..))
@@ -42,27 +44,37 @@
import qualified Data.Time.LocalTime as Local
-- | Parse a date of the form @[+,-]YYYY-MM-DD@.
+--
+-- The year must contain at least 4 digits, to avoid the Y2K problem:
+-- a two-digit year @YY@ may mean @YY@, @19YY@, or @20YY@, and we make it
+-- an error to prevent the ambiguity.
+-- Years from @0000@ to @0999@ must thus be zero-padded.
+-- The year may have more than 4 digits.
day :: Parser Day
day = do
absOrNeg <- negate <$ char '-' <|> id <$ char '+' <|> pure id
- y <- (decimal <* char '-') <|> fail "date must be of form [+,-]YYYY-MM-DD"
+ y <- (year <* char '-') <|> fail "date must be of form [+,-]YYYY-MM-DD"
m <- (twoDigits <* char '-') <|> fail "date must be of form [+,-]YYYY-MM-DD"
d <- twoDigits <|> fail "date must be of form [+,-]YYYY-MM-DD"
maybe (fail "invalid date") return (fromGregorianValid (absOrNeg y) m d)
-- | Parse a month of the form @[+,-]YYYY-MM@.
+--
+-- See also 'day' for details about the year format.
month :: Parser Month
month = do
absOrNeg <- negate <$ char '-' <|> id <$ char '+' <|> pure id
- y <- (decimal <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"
+ y <- (year <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"
m <- twoDigits <|> fail "month must be of form [+,-]YYYY-MM"
maybe (fail "invalid month") return (fromYearMonthValid (absOrNeg y) m)
-- | Parse a quarter of the form @[+,-]YYYY-QN@.
+--
+-- See also 'day' for details about the year format.
quarter :: Parser Quarter
quarter = do
absOrNeg <- negate <$ char '-' <|> id <$ char '+' <|> pure id
- y <- (decimal <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"
+ y <- (year <* char '-') <|> fail "month must be of form [+,-]YYYY-MM"
_ <- char 'q' <|> char 'Q'
q <- parseQ
return $! fromYearQuarter (absOrNeg y) q
@@ -72,6 +84,19 @@
<|> Q3 <$ char '3'
<|> Q4 <$ char '4'
+-- | Parse a year @YYYY@, with at least 4 digits. Does not include any sign.
+--
+-- Note: 'Year' is a type synonym for 'Integer'.
+--
+-- @since 1.1.0.0
+year :: Parser Year
+year = do
+ ds <- takeWhile1 isDigit
+ if T.length ds < 4 then
+ fail "expected year with at least 4 digits"
+ else
+ pure (txtToInteger ds)
+
-- | Parse a two-digit integer (e.g. day of month, hour).
twoDigits :: Parser Int
twoDigits = do
@@ -172,3 +197,53 @@
utc :: Local.TimeZone
utc = Local.TimeZone 0 False ""
+
+------------------ Copy-pasted and adapted from base ------------------------
+
+txtToInteger :: T.Text -> Integer
+txtToInteger bs
+ | l > 40 = valInteger 10 l [ fromIntegral (ord w - 48) | w <- T.unpack
bs ]
+ | otherwise = txtToIntegerSimple bs
+ where
+ l = T.length bs
+
+txtToIntegerSimple :: T.Text -> Integer
+txtToIntegerSimple = T.foldl' step 0 where
+ step a b = a * 10 + fromIntegral (ord b - 48) -- 48 = '0'
+
+-- A sub-quadratic algorithm for Integer. Pairs of adjacent radix b
+-- digits are combined into a single radix b^2 digit. This process is
+-- repeated until we are left with a single digit. This algorithm
+-- performs well only on large inputs, so we use the simple algorithm
+-- for smaller inputs.
+valInteger :: Integer -> Int -> [Integer] -> Integer
+valInteger = go
+ where
+ go :: Integer -> Int -> [Integer] -> Integer
+ go _ _ [] = 0
+ go _ _ [d] = d
+ go b l ds
+ | l > 40 = b' `seq` go b' l' (combine b ds')
+ | otherwise = valSimple b ds
+ where
+ -- ensure that we have an even number of digits
+ -- before we call combine:
+ ds' = if even l then ds else 0 : ds
+ b' = b * b
+ l' = (l + 1) `quot` 2
+
+ combine b (d1 : d2 : ds) = d `seq` (d : combine b ds)
+ where
+ d = d1 * b + d2
+ combine _ [] = []
+ combine _ [_] = errorWithoutStackTrace "this should not happen"
+
+-- The following algorithm is only linear for types whose Num operations
+-- are in constant time.
+valSimple :: Integer -> [Integer] -> Integer
+valSimple base = go 0
+ where
+ go r [] = r
+ go r (d : ds) = r' `seq` go r' ds
+ where
+ r' = r * base + fromIntegral d