Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-colour for openSUSE:Factory 
checked in at 2026-06-10 15:58:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-colour (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-colour.new.2375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-colour"

Wed Jun 10 15:58:21 2026 rev:14 rq:1358340 version:2.3.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-colour/ghc-colour.changes    2023-04-04 
21:19:14.476739337 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-colour.new.2375/ghc-colour.changes  
2026-06-10 15:58:57.399147606 +0200
@@ -1,0 +2,9 @@
+Thu Mar 19 00:44:13 UTC 2026 - Peter Simons <[email protected]>
+
+- Update colour to version 2.3.7.
+  New in version 2.3.7:
+  - Removed uses of head and tail.
+  - Updated dependencies (for testing).
+  - Added support for Oklab and Oklch colour spaces from kqr.
+
+-------------------------------------------------------------------

Old:
----
  colour-2.3.6.tar.gz

New:
----
  colour-2.3.7.tar.gz

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

Other differences:
------------------
++++++ ghc-colour.spec ++++++
--- /var/tmp/diff_new_pack.27sISD/_old  2026-06-10 15:58:58.439190704 +0200
+++ /var/tmp/diff_new_pack.27sISD/_new  2026-06-10 15:58:58.439190704 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-colour
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2026 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        2.3.6
+Version:        2.3.7
 Release:        0
 Summary:        A model for human colour/color perception
 License:        MIT
@@ -32,11 +32,15 @@
 BuildRequires:  ghc-rpm-macros
 ExcludeArch:    %{ix86}
 %if %{with tests}
+BuildRequires:  ghc-HUnit-devel
+BuildRequires:  ghc-HUnit-prof
 BuildRequires:  ghc-QuickCheck-devel
 BuildRequires:  ghc-QuickCheck-prof
 BuildRequires:  ghc-random-devel
 BuildRequires:  ghc-random-prof
 BuildRequires:  ghc-test-framework-devel
+BuildRequires:  ghc-test-framework-hunit-devel
+BuildRequires:  ghc-test-framework-hunit-prof
 BuildRequires:  ghc-test-framework-prof
 BuildRequires:  ghc-test-framework-quickcheck2-devel
 BuildRequires:  ghc-test-framework-quickcheck2-prof

++++++ colour-2.3.6.tar.gz -> colour-2.3.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/colour-2.3.6/CHANGELOG new/colour-2.3.7/CHANGELOG
--- old/colour-2.3.6/CHANGELOG  2021-06-24 17:40:47.000000000 +0200
+++ new/colour-2.3.7/CHANGELOG  2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,8 @@
+New in version 2.3.7:
+- Removed uses of head and tail.
+- Updated dependencies (for testing).
+- Added support for Oklab and Oklch colour spaces from kqr.
+
 New in version 2.3.6:
 - Minimum base of 4.13.
 - Locked down non-colour imports.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/colour-2.3.6/Data/Colour/Ok.hs 
new/colour-2.3.7/Data/Colour/Ok.hs
--- old/colour-2.3.6/Data/Colour/Ok.hs  1970-01-01 01:00:00.000000000 +0100
+++ new/colour-2.3.7/Data/Colour/Ok.hs  2001-09-09 03:46:40.000000000 +0200
@@ -0,0 +1,125 @@
+{-
+Copyright (c) 2008, 2009, 2026
+Russell O'Connor, Christoffer Stjernlöf
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+-}
+-- | Functions for converting 'Colour' values to and from the Oklab space, and
+-- convenience functions for the derived Oklch space.
+-- See <https://bottosson.github.io/posts/oklab/>.
+module Data.Colour.Ok
+ (okLab, okLabView
+ ,okLCh, okLChView
+ )
+where
+
+import Data.Complex (Complex((:+)), magnitude, mkPolar, phase)
+import Data.Fixed (mod')
+
+import Data.Colour.CIE
+import Data.Colour.CIE.Illuminant
+import Data.Colour.Matrix
+
+-- |Returns the Oklab coordinates of a colour, which is a
+-- perceptually uniform colour space inspired by CIELAB
+-- but which handles blue hues more accurately.
+--
+-- A white point is not specified because Oklab assumes
+-- a standard 'd65' daylight illuminant.
+okLabView :: Floating a => Colour a -> (a,a,a)
+okLabView colour = (l,a,b)
+ where
+  (x,y,z) = cieXYZView colour
+  lms = mult okM1 [x,y,z]
+  cbrt v = signum v * (abs v)**(1/3)
+  lms' = map cbrt lms
+  [l,a,b] = mult (inverse okM2inv) lms'
+
+-- |Returns the colour for given Oklab coordinates, which
+-- is a perceptually uniform colour space inspired by
+-- CIELAB but which handles blue hues more accurately.
+--
+-- A white point is not specified because Oklab assumes
+-- a standard 'd65' daylight illuminant.
+okLab :: Floating a => a -- ^L* coordinate (lightness)
+                    -> a -- ^a* coordinate
+                    -> a -- ^b* coordinate
+                    -> Colour a
+okLab l a b = cieXYZ x y z
+ where
+  lms' = mult okM2inv [l, a, b]
+  lms = map (**3) lms'
+  [x,y,z] = mult (inverse okM1) lms
+
+-- |Returns the Oklab LCh coordinates of a colour. The
+-- lightness coordinate is the same as in Oklab, while
+-- the chroma C and hue h are the (a,b)-coordinates
+-- expressed in polar form.
+okLChView :: RealFloat a => Colour a -> (a,a,a)
+okLChView colour = (l,c, h `mod'` 360)
+ where
+  (l,a,b) = okLabView colour
+  z = a :+ b
+  c = magnitude z
+  h = phase z * 180 / pi
+
+-- |Constructs a colour from a lightness, chroma, and
+-- hue given in LCh polar coordinates correspondong to
+-- an Oklab coordinate.
+okLCh :: Floating a => a -- ^L* coordinate (lightness)
+                    -> a -- ^C* coordinate (chroma)
+                    -> a -- ^h* coordinate (hue)
+                    -> Colour a
+okLCh l c h = okLab l a b
+ where
+  (a :+ b) = mkPolar c (h * pi / 180)
+
+--------------------------------------------------------------------------
+{- not for export -}
+
+-- |Converts XYZ coordinates to approximate human cone responses.
+-- See 
<https://github.com/color-js/color.js/blob/6b487db289f7c41b78d2933d9cb83bf8c06f3c5e/scripts/oklab_matrix_maker.py>
+oklms ::  Fractional a => Chromaticity a -- ^White point
+                       -> [[a]]
+oklms white_ch = zipWith f m0 lmsWhite
+ where
+  white = chromaColour white_ch 1.0
+  (xw,yw,zw) = cieXYZView white
+  lmsWhite = mult m0 [xw, yw, zw]
+  f v w = (/w) <$> v
+  m0 = [[0.77849780, 0.34399940, -0.12249720]
+       ,[0.03303601, 0.93076195, 0.03620204]
+       ,[0.05092917, 0.27933344, 0.66973739]
+       ]
+
+-- |The M1 matrix from the Oklab specification. This converts XYZ coordinates
+-- to approximate human cone responses.
+okM1 :: Fractional a => [[a]]
+okM1 = oklms d65
+
+-- |The inverse M2 matrix from the Oklab specification. This converts
+-- perceptually uniform LAB coordinates into
+-- non-linearly-transformed (l', m', s') coordinates.
+-- See 
<https://github.com/color-js/color.js/blob/6b487db289f7c41b78d2933d9cb83bf8c06f3c5e/scripts/oklab_matrix_maker.py>
+okM2inv :: Fractional a => [[a]]
+okM2inv =
+ [[1.0, 0.3963377774, 0.2158037573]
+ ,[1.0, -0.1055613458, -0.0638541728]
+ ,[1.0, -0.0894841775, -1.2914855480]
+ ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/colour-2.3.6/Data/Colour/SRGB.hs 
new/colour-2.3.7/Data/Colour/SRGB.hs
--- old/colour-2.3.6/Data/Colour/SRGB.hs        2021-06-24 17:40:46.000000000 
+0200
+++ new/colour-2.3.7/Data/Colour/SRGB.hs        2001-09-09 03:46:40.000000000 
+0200
@@ -110,11 +110,11 @@
 -- |Read a colour in hexadecimal form, e.g. \"#00aaff\" or \"00aaff\"
 sRGB24reads :: (Ord b, Floating b) => ReadS (Colour b)
 sRGB24reads "" = []
-sRGB24reads x =
+sRGB24reads x@(hdx : tlx) =
   [(sRGB24 a b c, c0)
   |(a,a0) <- readPair x', (b,b0) <- readPair a0, (c,c0) <- readPair b0]
  where
-  x' | head x == '#' = tail x
+  x' | hdx == '#' = tlx
      | otherwise = x
   readPair [] = []
   readPair [_] = []
@@ -124,11 +124,9 @@
 
 -- |Read a colour in hexadecimal form, e.g. \"#00aaff\" or \"00aaff\"
 sRGB24read :: (Ord b, Floating b) => String -> (Colour b)
-sRGB24read x | length rx /= 1 || not (null (snd (head rx))) =
-  error "Data.Colour.SRGB.sRGB24read: no parse"
-             | otherwise = fst (head rx)
- where
-  rx = sRGB24reads x
+sRGB24read x = case sRGB24reads x of
+  [(x,"")] -> x
+  _ -> error "Data.Colour.SRGB.sRGB24read: no parse"
 
 -- |The sRGB colour space
 sRGBSpace :: (Ord a, Floating a) => RGBSpace a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/colour-2.3.6/Data/Colour.hs 
new/colour-2.3.7/Data/Colour.hs
--- old/colour-2.3.6/Data/Colour.hs     2021-06-24 17:40:46.000000000 +0200
+++ new/colour-2.3.7/Data/Colour.hs     2001-09-09 03:46:40.000000000 +0200
@@ -34,6 +34,8 @@
 --
 -- - "Data.Colour.CIE"
 --
+-- - "Data.Colour.Ok"
+--
 -- Colours can be specified in a generic 'Data.Colour.RGBSpace.RGBSpace'
 -- by using
 --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/colour-2.3.6/Tests.hs new/colour-2.3.7/Tests.hs
--- old/colour-2.3.6/Tests.hs   2021-06-24 17:40:46.000000000 +0200
+++ new/colour-2.3.7/Tests.hs   2001-09-09 03:46:40.000000000 +0200
@@ -23,13 +23,16 @@
 -}
 module Main where
 
+import Data.Fixed (Milli, resolution)
 import Data.Word (Word8)
 import Control.Monad (liftM, liftM2, liftM3)
 import Test.QuickCheck ( Arbitrary, CoArbitrary, Gen, Property
                        , (==>), arbitrary, choose, coarbitrary, forAll
                        )
+import Test.HUnit (Assertion, (@?=))
 import Test.Framework (defaultMain, defaultMainWithOpts, testGroup)
 import Test.Framework.Providers.QuickCheck2 (testProperty)
+import Test.Framework.Providers.HUnit (testCase)
 
 import Data.Colour.Matrix
 import Data.Colour
@@ -37,6 +40,7 @@
 import Data.Colour.SRGB.Linear
 import Data.Colour.CIE
 import Data.Colour.CIE.Illuminant (d65)
+import Data.Colour.Ok
 import Data.Colour.Names
 --import Data.Colour.HDTV as HDTV
 --import qualified Data.Colour.SDTV as SDTV
@@ -161,6 +165,18 @@
   (l,a,b) = cieLABView wp c
   cc = toSRGB24
 
+prop_toFromOklab :: DColour -> Bool
+prop_toFromOklab c = cc (okLab l a b) == cc c
+ where
+  (l,a,b) = okLabView c
+  cc = toSRGB24
+
+prop_toFromOklch :: DColour -> Bool
+prop_toFromOklch c = cc (okLCh l a b) == cc c
+ where
+  (l,a,b) = okLChView c
+  cc = toSRGB24
+
 {-
 prop_fromToY'CbCr709 :: Word8 -> Word8 -> Word8 -> Bool
 prop_fromToY'CbCr709 y' cb cr =
@@ -286,6 +302,21 @@
     snd (properFraction ((h0-h1)/360)::(Integer,Rational)) == 0
     && s0 == s1 && v0 == v1
 
+-- |Pairs of XYZ and LAB colours provided for verification in the Oklab
+-- specification.
+case_xyzToOklab :: Assertion
+case_xyzToOklab = do
+ xyzToOklab 0.950 1.000 1.089 @?= [ 1.000, 0.000, 0.000]
+ xyzToOklab 1.000 0.000 0.000 @?= [ 0.450, 1.236,-0.019]
+ xyzToOklab 0.000 1.000 0.000 @?= [ 0.922,-0.671, 0.263]
+ xyzToOklab 0.000 0.000 1.000 @?= [ 0.153,-1.415,-0.449]
+ where
+  xyzToOklab x y z = rounded (okLabView (cieXYZ x y z))
+  rounded (l,a,b) = map roundFixed [l,a,b] :: [Milli]
+  roundFixed x = result
+    where
+     result = fromRational $ toRational x + (0.5/fromInteger (resolution 
result))
+
 tests = [ testProperty "matrix-mult" prop_matrixMult
         , testProperty "RGB-to-from" prop_toFromRGB
         , testProperty "RGB-from-to" prop_fromToRGB
@@ -294,6 +325,8 @@
         , testProperty "sRGB-to-from" prop_toFromSRGB
         , testProperty "sRGB-from-to" prop_fromToSRGB
         , testProperty "cieLAB-to-from" (prop_toFromLAB d65)
+        , testProperty "Oklab-to-from" prop_toFromOklab
+        , testProperty "Oklch-to-from" prop_toFromOklch
 --        , testProperty "Y'CbCr-709-from-to" prop_fromToY'CbCr709
 --        , testProperty "Y'CbCr-601-from-to" prop_fromToY'CbCr601
         , testProperty "dissolve-id" prop_disolveId
@@ -326,6 +359,7 @@
         , testProperty "fromToHSL" prop_fromToHSL
         , testProperty "toFromHSV" prop_toFromHSV
         , testProperty "fromToHSV" prop_fromToHSV
+        , testCase "example-xyz-oklab-pairs" case_xyzToOklab
         ]
 
 main = defaultMain tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/colour-2.3.6/colour.cabal 
new/colour-2.3.7/colour.cabal
--- old/colour-2.3.6/colour.cabal       2021-06-24 17:40:47.000000000 +0200
+++ new/colour-2.3.7/colour.cabal       2001-09-09 03:46:40.000000000 +0200
@@ -1,5 +1,5 @@
 Name:                colour
-Version:             2.3.6
+Version:             2.3.7
 Cabal-Version:       >= 1.10
 License:             MIT
 License-file:        LICENSE
@@ -13,7 +13,7 @@
                      Colours can be blended and composed.
                      Various colour spaces are supported.
                      A module of colour names ("Data.Colour.Names") is 
provided.
-Tested-with:         GHC == 8.8.4
+Tested-with:         GHC == 9.10.3
 data-files:          README CHANGELOG
 
 Library
@@ -28,6 +28,7 @@
                      Data.Colour.RGBSpace.HSL
                      Data.Colour.RGBSpace.HSV
                      Data.Colour.Names
+                     Data.Colour.Ok
   Other-Modules:     Data.Colour.Internal
                      Data.Colour.Chan
                      Data.Colour.RGB
@@ -39,15 +40,18 @@
   main-is:           Tests.hs
   build-depends: base >= 4.13 && < 5,
                  colour,
-                 QuickCheck >= 2.5 && < 2.15,
-                 random >= 1.0 && < 1.2,
+                 QuickCheck >= 2.5 && < 2.16,
+                 random >= 1.0 && < 1.3,
                  test-framework >= 0.8 && < 0.9,
-                 test-framework-quickcheck2 >= 0.3 && < 0.4
+                 test-framework-quickcheck2 >= 0.3 && < 0.4,
+                 test-framework-hunit >= 0.3 && < 0.4,
+                 HUnit >= 1.4 && <1.7
   Other-Modules:   Data.Colour
                    Data.Colour.SRGB
                    Data.Colour.SRGB.Linear
                    Data.Colour.CIE
                    Data.Colour.CIE.Illuminant
+                   Data.Colour.Ok
                    Data.Colour.RGBSpace
                    Data.Colour.RGBSpace.HSL
                    Data.Colour.RGBSpace.HSV

Reply via email to