packages feed

cron 0.4.1.2 → 0.4.2

raw patch · 4 files changed

+60/−22 lines, 4 filesdep +generics-sopdep −derivedep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: generics-sop

Dependencies removed: derive

Dependency ranges changed: base

API changes (from Hackage documentation)

- System.Cron.Internal.Check: domF :: Expanded -> EField
- System.Cron.Internal.Check: dowF :: Expanded -> EField
- System.Cron.Internal.Check: hourF :: Expanded -> EField
- System.Cron.Internal.Check: instance Show Expanded
- System.Cron.Internal.Check: minF :: Expanded -> EField
- System.Cron.Internal.Check: monthF :: Expanded -> EField
- System.Cron.Schedule: instance (Monad m, Functor m) => Applicative (ScheduleT m)
- System.Cron.Schedule: instance Functor m => Functor (ScheduleT m)
- System.Cron.Schedule: instance Monad m => Monad (ScheduleT m)
- System.Cron.Schedule: instance Monad m => MonadError ScheduleError (ScheduleT m)
- System.Cron.Schedule: instance Monad m => MonadSchedule (ScheduleT m)
- System.Cron.Schedule: instance Monad m => MonadState Jobs (ScheduleT m)
- System.Cron.Schedule: instance Show Job
- System.Cron.Schedule: instance Show ScheduleError
- System.Cron.Schedule: unSchedule :: ScheduleT m a -> StateT Jobs (ExceptT ScheduleError m) a
- System.Cron.Types: cronCommand :: CronCommand -> Text
- System.Cron.Types: crontabEntries :: Crontab -> [CrontabEntry]
- System.Cron.Types: dayOfMonth :: CronSchedule -> DayOfMonthSpec
- System.Cron.Types: dayOfWeek :: CronSchedule -> DayOfWeekSpec
- System.Cron.Types: hour :: CronSchedule -> HourSpec
- System.Cron.Types: instance Eq BaseField
- System.Cron.Types: instance Eq CronCommand
- System.Cron.Types: instance Eq CronField
- System.Cron.Types: instance Eq CronSchedule
- System.Cron.Types: instance Eq Crontab
- System.Cron.Types: instance Eq CrontabEntry
- System.Cron.Types: instance Eq DayOfMonthSpec
- System.Cron.Types: instance Eq DayOfWeekSpec
- System.Cron.Types: instance Eq HourSpec
- System.Cron.Types: instance Eq MinuteSpec
- System.Cron.Types: instance Eq MonthSpec
- System.Cron.Types: instance Eq RangeField
- System.Cron.Types: instance Eq SpecificField
- System.Cron.Types: instance Eq StepField
- System.Cron.Types: instance Ord CronCommand
- System.Cron.Types: instance Show BaseField
- System.Cron.Types: instance Show CronCommand
- System.Cron.Types: instance Show CronField
- System.Cron.Types: instance Show CronSchedule
- System.Cron.Types: instance Show Crontab
- System.Cron.Types: instance Show CrontabEntry
- System.Cron.Types: instance Show DayOfMonthSpec
- System.Cron.Types: instance Show DayOfWeekSpec
- System.Cron.Types: instance Show HourSpec
- System.Cron.Types: instance Show MinuteSpec
- System.Cron.Types: instance Show MonthSpec
- System.Cron.Types: instance Show RangeField
- System.Cron.Types: instance Show SpecificField
- System.Cron.Types: instance Show StepField
- System.Cron.Types: instance ShowT BaseField
- System.Cron.Types: instance ShowT CronCommand
- System.Cron.Types: instance ShowT CronField
- System.Cron.Types: instance ShowT CronSchedule
- System.Cron.Types: instance ShowT Crontab
- System.Cron.Types: instance ShowT CrontabEntry
- System.Cron.Types: instance ShowT DayOfMonthSpec
- System.Cron.Types: instance ShowT DayOfWeekSpec
- System.Cron.Types: instance ShowT HourSpec
- System.Cron.Types: instance ShowT Int
- System.Cron.Types: instance ShowT MinuteSpec
- System.Cron.Types: instance ShowT MonthSpec
- System.Cron.Types: instance ShowT RangeField
- System.Cron.Types: instance ShowT SpecificField
- System.Cron.Types: instance ShowT StepField
- System.Cron.Types: instance ShowT Text
- System.Cron.Types: minute :: CronSchedule -> MinuteSpec
- System.Cron.Types: month :: CronSchedule -> MonthSpec
+ System.Cron.Internal.Check: [domF] :: Expanded -> EField
+ System.Cron.Internal.Check: [dowF] :: Expanded -> EField
+ System.Cron.Internal.Check: [hourF] :: Expanded -> EField
+ System.Cron.Internal.Check: [minF] :: Expanded -> EField
+ System.Cron.Internal.Check: [monthF] :: Expanded -> EField
+ System.Cron.Internal.Check: instance GHC.Show.Show System.Cron.Internal.Check.Expanded
+ System.Cron.Schedule: [unSchedule] :: ScheduleT m a -> StateT Jobs (ExceptT ScheduleError m) a
+ System.Cron.Schedule: instance GHC.Base.Functor m => GHC.Base.Functor (System.Cron.Schedule.ScheduleT m)
+ System.Cron.Schedule: instance GHC.Base.Monad m => Control.Monad.Error.Class.MonadError System.Cron.Schedule.ScheduleError (System.Cron.Schedule.ScheduleT m)
+ System.Cron.Schedule: instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState System.Cron.Schedule.Jobs (System.Cron.Schedule.ScheduleT m)
+ System.Cron.Schedule: instance GHC.Base.Monad m => GHC.Base.Applicative (System.Cron.Schedule.ScheduleT m)
+ System.Cron.Schedule: instance GHC.Base.Monad m => GHC.Base.Monad (System.Cron.Schedule.ScheduleT m)
+ System.Cron.Schedule: instance GHC.Base.Monad m => System.Cron.Schedule.MonadSchedule (System.Cron.Schedule.ScheduleT m)
+ System.Cron.Schedule: instance GHC.Show.Show System.Cron.Schedule.Job
+ System.Cron.Schedule: instance GHC.Show.Show System.Cron.Schedule.ScheduleError
+ System.Cron.Types: [cronCommand] :: CronCommand -> Text
+ System.Cron.Types: [crontabEntries] :: Crontab -> [CrontabEntry]
+ System.Cron.Types: [dayOfMonth] :: CronSchedule -> DayOfMonthSpec
+ System.Cron.Types: [dayOfWeek] :: CronSchedule -> DayOfWeekSpec
+ System.Cron.Types: [hour] :: CronSchedule -> HourSpec
+ System.Cron.Types: [minute] :: CronSchedule -> MinuteSpec
+ System.Cron.Types: [month] :: CronSchedule -> MonthSpec
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.BaseField
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.CronCommand
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.CronField
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.CronSchedule
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.Crontab
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.CrontabEntry
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.DayOfMonthSpec
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.DayOfWeekSpec
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.HourSpec
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.MinuteSpec
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.MonthSpec
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.RangeField
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.SpecificField
+ System.Cron.Types: instance GHC.Classes.Eq System.Cron.Types.StepField
+ System.Cron.Types: instance GHC.Classes.Ord System.Cron.Types.CronCommand
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0BaseField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0CronCommand
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0CronField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0CronSchedule
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0Crontab
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0CrontabEntry
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0DayOfMonthSpec
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0DayOfWeekSpec
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0HourSpec
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0MinuteSpec
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0MonthSpec
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0RangeField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0SpecificField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_0StepField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_1BaseField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_1CronField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_1CrontabEntry
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_2BaseField
+ System.Cron.Types: instance GHC.Generics.Constructor System.Cron.Types.C1_2CronField
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1BaseField
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1CronCommand
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1CronField
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1CronSchedule
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1Crontab
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1CrontabEntry
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1DayOfMonthSpec
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1DayOfWeekSpec
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1HourSpec
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1MinuteSpec
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1MonthSpec
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1RangeField
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1SpecificField
+ System.Cron.Types: instance GHC.Generics.Datatype System.Cron.Types.D1StepField
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.BaseField
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.CronCommand
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.CronField
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.CronSchedule
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.Crontab
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.CrontabEntry
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.DayOfMonthSpec
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.DayOfWeekSpec
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.HourSpec
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.MinuteSpec
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.MonthSpec
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.RangeField
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.SpecificField
+ System.Cron.Types: instance GHC.Generics.Generic System.Cron.Types.StepField
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0CronCommand
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0CronSchedule
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0Crontab
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0DayOfMonthSpec
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0DayOfWeekSpec
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0HourSpec
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0MinuteSpec
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0MonthSpec
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0RangeField
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0SpecificField
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_0StepField
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_1CronSchedule
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_1RangeField
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_1StepField
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_2CronSchedule
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_3CronSchedule
+ System.Cron.Types: instance GHC.Generics.Selector System.Cron.Types.S1_0_4CronSchedule
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.BaseField
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.CronCommand
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.CronField
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.CronSchedule
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.Crontab
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.CrontabEntry
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.DayOfMonthSpec
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.DayOfWeekSpec
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.HourSpec
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.MinuteSpec
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.MonthSpec
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.RangeField
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.SpecificField
+ System.Cron.Types: instance GHC.Show.Show System.Cron.Types.StepField
+ System.Cron.Types: instance System.Cron.Types.ShowT Data.Text.Internal.Text
+ System.Cron.Types: instance System.Cron.Types.ShowT GHC.Types.Int
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.BaseField
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.CronCommand
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.CronField
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.CronSchedule
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.Crontab
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.CrontabEntry
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.DayOfMonthSpec
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.DayOfWeekSpec
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.HourSpec
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.MinuteSpec
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.MonthSpec
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.RangeField
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.SpecificField
+ System.Cron.Types: instance System.Cron.Types.ShowT System.Cron.Types.StepField

Files

changelog view
@@ -1,3 +1,6 @@+# 0.4.2+* Drop dependency on derive in tests.+* Add some Generic and Typeable instances. # 0.4.1.1 * Bug fix for checking nextMatch where either the day of month or day of week fields were a singleton list of star. # 0.4.1.1
cron.cabal view
@@ -1,5 +1,5 @@ Name:                cron-Version:             0.4.1.2+Version:             0.4.2 Description:   Cron data structure and Attoparsec parser. The idea is to embed it in larger   systems which want to roll their own scheduled tasks in a format that people@@ -77,13 +77,13 @@                   , tasty                   , tasty-hunit                   , tasty-quickcheck-                  , derive                   , attoparsec                   , text                   , time                   , transformers-compat                   , semigroups                   , quickcheck-instances+                  , generics-sop >= 0.2    if flag(lib-Werror)     ghc-options: -Werror
src/System/Cron/Types.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE DeriveDataTypeable         #-}+{-# LANGUAGE DeriveGeneric              #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings          #-} {-# LANGUAGE RecordWildCards            #-}@@ -56,6 +58,8 @@ import           Data.Monoid import           Data.Text           (Text) import qualified Data.Text           as T+import           Data.Typeable       (Typeable)+import           GHC.Generics        (Generic) -------------------------------------------------------------------------------  @@ -124,7 +128,7 @@     , dayOfMonth :: DayOfMonthSpec -- ^ Which days of the month to run. Third field in a cron specification.     , month      :: MonthSpec      -- ^ Which months to run. Fourth field in a cron specification.     , dayOfWeek  :: DayOfWeekSpec  -- ^ Which days of the week to run. Fifth field in a cron specification.-    } deriving (Eq)+    } deriving (Eq, Generic, Typeable)   instance Show CronSchedule where@@ -147,7 +151,7 @@ -- | Crontab file, omitting comments. newtype Crontab = Crontab {       crontabEntries :: [CrontabEntry]-    } deriving (Eq)+    } deriving (Eq, Generic, Typeable)   instance ShowT Crontab where@@ -165,7 +169,7 @@ ------------------------------------------------------------------------------- newtype CronCommand = CronCommand {       cronCommand :: Text-    } deriving (Show, Eq, Ord, ShowT)+    } deriving (Show, Eq, Ord, ShowT, Generic, Typeable)   -------------------------------------------------------------------------------@@ -173,7 +177,7 @@ -- command after it or setting an environment variable (e.g. FOO=BAR) data CrontabEntry = CommandEntry CronSchedule CronCommand                   | EnvVariable Text Text-                  deriving (Eq)+                  deriving (Eq, Generic, Typeable)   instance ShowT CrontabEntry where@@ -188,7 +192,7 @@ -- | Minutes field of a cron expression newtype MinuteSpec = Minutes {       minuteSpec :: CronField-    } deriving (Eq, ShowT)+    } deriving (Eq, ShowT, Generic, Typeable)   instance Show MinuteSpec where@@ -206,7 +210,7 @@ -- | Hours field of a cron expression newtype HourSpec = Hours {       hourSpec :: CronField-    } deriving (Eq, ShowT)+    } deriving (Eq, ShowT, Generic, Typeable)   instance Show HourSpec where@@ -223,7 +227,7 @@ -- | Day of month field of a cron expression newtype DayOfMonthSpec = DaysOfMonth {       dayOfMonthSpec :: CronField-    } deriving (Eq, ShowT)+    } deriving (Eq, ShowT, Generic, Typeable)   instance Show DayOfMonthSpec where@@ -240,7 +244,7 @@ -- | Month field of a cron expression newtype MonthSpec = Months {       monthSpec :: CronField-    } deriving (Eq, ShowT)+    } deriving (Eq, ShowT, Generic, Typeable)   instance Show MonthSpec where@@ -257,7 +261,7 @@ -- | Day of week field of a cron expression newtype DayOfWeekSpec = DaysOfWeek {       dayOfWeekSpec :: CronField-    } deriving (Eq, ShowT)+    } deriving (Eq, ShowT, Generic, Typeable)   instance Show DayOfWeekSpec where@@ -304,7 +308,7 @@ data BaseField = Star                         -- ^ Matches anything                | SpecificField' SpecificField -- ^ Matches a specific value (e.g. 1)                | RangeField' RangeField       -- ^ Matches a range of values (e.g. 1-3)-               deriving (Eq)+               deriving (Eq, Generic, Typeable)   instance ShowT BaseField where@@ -320,7 +324,7 @@ ------------------------------------------------------------------------------- newtype SpecificField = SpecificField {       specificField :: Int-    } deriving (Eq, ShowT)+    } deriving (Eq, ShowT, Generic, Typeable)   instance Show SpecificField where@@ -337,7 +341,7 @@ data RangeField = RangeField {       rfBegin :: Int     , rfEnd   :: Int-    } deriving (Eq)+    } deriving (Eq, Generic, Typeable)   instance ShowT RangeField where@@ -359,6 +363,7 @@ data CronField = Field BaseField                | ListField (NonEmpty BaseField) -- ^ Matches a list of expressions.                | StepField' StepField           -- ^ Matches a stepped expression, e.g. (*/2).+               deriving (Generic)   instance Eq CronField where@@ -383,7 +388,7 @@ ------------------------------------------------------------------------------- data StepField = StepField { sfField    :: BaseField                            , sfStepping :: Int-                           } deriving (Eq)+                           } deriving (Eq, Generic)   instance ShowT StepField where
test/SpecHelper.hs view
@@ -1,5 +1,7 @@+{-# LANGUAGE FlexibleContexts      #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TemplateHaskell       #-} module SpecHelper     ( module X     , module SpecHelper@@ -9,16 +11,19 @@ ------------------------------------------------------------------------------- import           Control.Applicative       as X import           Data.Attoparsec.Text      as X (Parser, parseOnly)-import           Data.DeriveTH-import           Data.List.NonEmpty        (NonEmpty (..))+import qualified Data.List.NonEmpty        as NE import           Data.Maybe                as X import           Data.Monoid               as X+import           Data.Proxy                (Proxy (..)) import           Data.Text                 (Text) import qualified Data.Text                 as T import           Data.Time.Calendar        as X import           Data.Time.Clock           as X import           Data.Time.LocalTime       as X import           Debug.Trace               as X+import qualified Generics.SOP              as SOP+import qualified Generics.SOP.GGP          as SOP+import           GHC.Generics              (Generic) import           Test.QuickCheck.Instances () import           Test.Tasty                as X import           Test.Tasty.HUnit          as X@@ -28,10 +33,35 @@ -------------------------------------------------------------------------------  -$(derive makeArbitrary ''NonEmpty)-$(derive makeArbitrary ''BaseField)-$(derive makeArbitrary ''CronField)-$(derive makeArbitrary ''CronSchedule)+-- this workaround is in place until we successfully beat down the+-- doors of castle QuickCheck and get generic deriving through. See+-- <https://github.com/nick8325/quickcheck/pull/40>+sopArbitrary :: (Generic a, SOP.GTo a, SOP.All SOP.SListI (SOP.GCode a), SOP.All2 Arbitrary (SOP.GCode a)) => Gen a+sopArbitrary = fmap SOP.gto sopArbitrary'+++sopArbitrary' :: (SOP.All SOP.SListI xss, SOP.All2 Arbitrary xss) => Gen (SOP.SOP SOP.I xss)+sopArbitrary' = oneof (map SOP.hsequence $ SOP.apInjs_POP $ SOP.hcpure p arbitrary)+  where+    p :: Proxy Arbitrary+    p = Proxy+++instance Arbitrary BaseField where+  arbitrary = sopArbitrary+  shrink = genericShrink+++instance Arbitrary CronField where+  arbitrary = oneof [ Field <$> arbitrary+                    , ListField . NE.fromList . getNonEmpty <$> arbitrary+                    , StepField' <$> arbitrary+                    ]+++instance Arbitrary CronSchedule where+  arbitrary = sopArbitrary+  shrink = genericShrink   instance Arbitrary Crontab where