cabal-version:      3.0
-- !!! ATTN: file autogenerated from pa-template.cabal.mustache on toplevel !!!
name:               pa-prelude
version:            0.2.0.0
synopsis:           The Possehl Analytics Prelude
description:        A prelude to be used in addition to `base`’s `Prelude`
license:            BSD-3-Clause
license-file:       LICENSE
-- author:
maintainer:         Philip Patsch <philip.patsch@possehl-analytics.com>
copyright:          2023 Possehl Analytics GmbH
homepage:           https://github.com/possehl-analytics/pa-hackage
category:           Data, Possehl-Analytics
build-type:         Simple
extra-doc-files:    CHANGELOG.md
                    README.md
-- extra-source-files:


common common-options
  ghc-options:
      -Wall
      -Wno-type-defaults
      -Wunused-packages
      -Wredundant-constraints
      -fwarn-missing-deriving-strategies

  -- See https://downloads.haskell.org/ghc/latest/docs/users_guide/exts.html
  -- for a description of all these extensions
  default-extensions:
      -- Infer Applicative instead of Monad where possible
    ApplicativeDo

    -- Allow literal strings to be Text
    OverloadedStrings

    -- Syntactic sugar improvements
    LambdaCase
    MultiWayIf

    -- Makes the (deprecated) usage of * instead of Data.Kind.Type an error
    NoStarIsType

    -- Convenient and crucial to deal with ambiguous field names, commonly
    -- known as RecordDotSyntax
    OverloadedRecordDot

    -- does not export record fields as functions, use OverloadedRecordDot to access instead
    NoFieldSelectors

    -- Record punning
    RecordWildCards

    -- Improved Deriving
    DerivingStrategies
    DerivingVia

    -- Type-level strings
    DataKinds

    -- to enable the `type` keyword in import lists (ormolu uses this automatically)
    ExplicitNamespaces

  default-language: GHC2021

library
    import:           common-options
    exposed-modules:
      PossehlAnalyticsPrelude,
    -- other-modules:
    -- other-extensions:
    hs-source-dirs:   src
    build-depends:
      base <5,
      error >0.1 && <1.1,
      exceptions,
      mtl,
      text,
      PyF,
      validation-selective,
      profunctors,
      semigroupoids,
      scientific,
      bytestring,
      containers,
      template-haskell,
      these,
      vector,