Name: project-m36
Version: 0.4
License: PublicDomain
Build-Type: Simple
Homepage: https://github.com/agentm/project-m36
Bug-Reports: https://github.com/agentm/project-m36/issues
Author: AgentM
Stability: experimental
Category: Relational Algebra
Maintainer: agentm@themactionfaction.com
Cabal-Version: >= 1.10
Synopsis: Relational Algebra Engine
Description: A relational algebra engine which can be used to persist and query Haskell data types.
Extra-Source-Files: Changelog.markdown README.markdown

Source-Repository head
    Type: git
    location: https://github.com/agentm/project-m36

Flag profiler
  Description: Enable Haskell-specific profiling support
  Default: False
  Manual: True

Library
    Build-Depends: base>=4.8 && < 6.0
                   ,ghc >= 7.8 && < 8.3
                   ,ghc-paths
                   ,mtl
                   ,containers
                   ,unordered-containers
                   ,hashable
                   ,haskeline
                   ,directory
                   ,MonadRandom
                   ,random-shuffle
                   --critical uuid bug in lesser versions https://www.reddit.com/r/haskell/comments/4myot5/psa_make_sure_to_use_uuid_1312/
                   ,uuid >= 1.3.12
                   ,cassava >= 0.4.5.1 && < 0.6
                   ,text
                   ,bytestring
                   ,deepseq
                   ,deepseq-generics
                   ,vector
                   ,parallel
                   ,monad-parallel
                   ,exceptions
                   ,transformers
                   ,gnuplot
                   ,binary
                   ,filepath
                   ,zlib
                   ,directory
                   ,vector-binary-instances
                   ,temporary
                   ,stm
                   ,time
                   ,hashable-time
                   ,old-locale
                   ,rset
                   --used for CSV parsing
                   ,attoparsec
                   ,either
                   ,base64-bytestring
                   ,data-interval
                   ,extended-reals
                   ,network-transport
                   -- aeson 1.1 and above includes instances for UUID types
                   ,aeson >= 1.1
                   ,path-pieces
                   ,conduit
                   ,resourcet
                   ,http-api-data
                   -- used for arbitrary tuples
                   ,QuickCheck
--needed for remote access
                   ,distributed-process-client-server >= 0.2.3
                   ,distributed-process >= 0.6.6
                   ,distributed-process-extras >= 0.3.2
                   ,distributed-process-async >= 0.2.4
                   ,network-transport-tcp
                   ,network-transport
                   ,list-t
                   ,stm-containers >= 0.2.15
                   ,optparse-applicative
                   ,Glob
--used for hashing the transaction graph file to check for differences
                   ,cryptohash-sha256
    Exposed-Modules: ProjectM36.Error,
                     ProjectM36.Transaction,
                     ProjectM36.TransactionGraph,
                     ProjectM36.TransactionGraph.Show,
                     ProjectM36.TransactionGraph.Persist,
                     ProjectM36.TransactionGraph.Merge,
                     ProjectM36.TransGraphRelationalExpression,
                     ProjectM36.Base,
                     ProjectM36.Attribute,
                     ProjectM36.AttributeNames,
                     ProjectM36.Tuple,
                     ProjectM36.TupleSet,
                     ProjectM36.Atom,
                     ProjectM36.AtomFunction,
                     ProjectM36.AtomFunctionError,
                     ProjectM36.ScriptSession,
                     ProjectM36.DatabaseContextFunction,
                     ProjectM36.DatabaseContextFunctionError,
                     ProjectM36.DatabaseContextFunctionUtils,
                     ProjectM36.Key,
                     ProjectM36.FunctionalDependency,
                     ProjectM36.DatabaseContext,
                     ProjectM36.DateExamples,
                     ProjectM36.DisconnectedTransaction,
                     ProjectM36.AtomFunctionBody,
                     ProjectM36.RelationalExpression,
                     ProjectM36.Relation.Show.HTML,
                     ProjectM36.StaticOptimizer,
                     ProjectM36.Relation.Show.Term,
                     ProjectM36.WCWidth,
                     ProjectM36.Relation.Show.CSV,
                     ProjectM36.Relation.Show.Gnuplot,
                     ProjectM36.Relation.Parse.CSV,
                     ProjectM36.IsomorphicSchema,
                     ProjectM36.InclusionDependency,
                     ProjectM36.Client,
                     ProjectM36.Client.Simple,
                     ProjectM36.Persist,
                     ProjectM36.AtomType,
                     ProjectM36.AttributeExpr,
                     ProjectM36.AtomFunctions.Basic,
                     ProjectM36.AtomFunctions.Primitive,
                     ProjectM36.Atomable,
                     ProjectM36.Tupleable,
                     ProjectM36.DataConstructorDef,
                     ProjectM36.DataTypes.Basic,
                     ProjectM36.DataTypes.Day,
                     ProjectM36.DataTypes.DateTime,
                     ProjectM36.DataTypes.Either,
                     ProjectM36.DataTypes.Maybe,
                     ProjectM36.DataTypes.List,
                     ProjectM36.DataTypes.Primitive,
                     ProjectM36.DataTypes.Interval,
                     ProjectM36.DataTypes.ByteString,
                     ProjectM36.MiscUtils,
                     ProjectM36.Notifications,
                     ProjectM36.Relation,
                     ProjectM36.Server,
                     ProjectM36.Server.Config,
                     ProjectM36.Server.EntryPoints,
                     ProjectM36.Server.ParseArgs,
                     ProjectM36.Server.RemoteCallTypes,
                     ProjectM36.Session,
                     ProjectM36.Sessions,
                     ProjectM36.Transaction.Persist,
                     ProjectM36.TypeConstructor,
                     ProjectM36.TypeConstructorDef,
                     ProjectM36.FileLock,
                     ProjectM36.FSType,
                     ProjectM36.Arbitrary
    GHC-Options: -Wall -rdynamic
    if os(windows)
      Build-Depends: Win32 >= 2.3
      Other-Modules: ProjectM36.Win32Handle
    else
      C-sources: cbits/DirectoryFsync.c, cbits/darwin_statfs.c
      Build-Depends: unix
    CC-Options: -fPIC 
    Hs-Source-Dirs: ./src/lib
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings, CPP
    if impl(ghc>= 8)
      build-depends:
        ghc-boot, ghci

Executable tutd
    Build-Depends: base >=4.8 && <5.0,
                   ghc >= 7.8 && < 8.3,
                   ghc-paths,
                   project-m36,
                   containers,
                   unordered-containers,
                   hashable,
                   transformers,
                   semigroups,
                   mtl,
                   uuid,
                   deepseq-generics,
                   MonadRandom, MonadRandom,
                   vector,
                   text,
                   vector-binary-instances,
                   time,
                   hashable-time,
                   bytestring,
                   stm,
                   deepseq,
                   binary,
                   data-interval,
                   parallel,
                   cassava,
                   gnuplot,
                   directory,
                   filepath,
                   temporary,
                   megaparsec >= 5.2.0 && < 5.4,
                   haskeline,
                   random, MonadRandom,
                   base64-bytestring,
                   optparse-applicative,
                   attoparsec,
                   stm-containers,
                   list-t
    Other-Modules: TutorialD.Interpreter,
                   TutorialD.Interpreter.Base,
                   TutorialD.Interpreter.DatabaseContextExpr,
                   TutorialD.Interpreter.RODatabaseContextOperator,
                   TutorialD.Interpreter.TransactionGraphOperator,
                   TutorialD.Interpreter.Import.BasicExamples,
                   TutorialD.Interpreter.InformationOperator,
                   TutorialD.Interpreter.Export.Base,
                   TutorialD.Interpreter.Export.CSV,
                   TutorialD.Interpreter.DatabaseContextIOOperator,
                   TutorialD.Interpreter.Import.Base,
                   TutorialD.Interpreter.Import.CSV,
                   TutorialD.Interpreter.Import.TutorialD,
                   TutorialD.Interpreter.RelationalExpr,
                   TutorialD.Interpreter.Types,
                   TutorialD.Interpreter.SchemaOperator,
                   TutorialD.Interpreter.TransGraphRelationalOperator,
                   TutorialD.Interpreter.SchemaOperator
    main-is: TutorialD/tutd.hs
    CC-Options: -fPIC
    GHC-Options: -Wall -rdynamic
    Hs-Source-Dirs: ./src/bin
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings

Executable project-m36-server
    Build-Depends: base,
                   ghc >= 7.8 && < 8.3,
                   ghc-paths,
                   project-m36,
                   binary,
                   transformers,
                   temporary,
                   data-interval,
                   deepseq,
                   uuid,
                   stm,
                   filepath,
                   directory,
                   parallel,
                   bytestring,
                   optparse-applicative,
                   hashable-time,
                   time,
                   vector-binary-instances,
                   text,
                   deepseq-generics,
                   mtl,
                   containers,
                   hashable,
                   unordered-containers,
                   vector,
                   http-api-data,
                   stm-containers,
                   list-t,
                   base64-bytestring
    Main-Is: ./src/bin/ProjectM36/Server/project-m36-server.hs
    GHC-Options: -Wall -threaded -rtsopts
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings

Executable bigrel
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, optparse-applicative, stm-containers, list-t, ghc, ghc-paths, transformers, project-m36, random, MonadRandom, semigroups
    Other-Modules: TutorialD.Interpreter.Base,
                   TutorialD.Interpreter.DatabaseContextExpr,
                   TutorialD.Interpreter.RelationalExpr,
                   TutorialD.Interpreter.Types
    main-is: benchmark/bigrel.hs
    GHC-Options: -Wall -threaded -rtsopts
    HS-Source-Dirs: ./src/bin
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall

Benchmark basic-benchmark
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, criterion, project-m36, text, vector, transformers, containers, temporary, directory, filepath
    Main-Is: benchmark/Basic.hs
    Type: exitcode-stdio-1.0
    GHC-Options: -Wall -threaded -rtsopts
    HS-Source-Dirs: ./src/bin
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall

Test-Suite test-tutoriald
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/TutorialD/Interpreter.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, list-t, project-m36, random, MonadRandom, semigroups
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ., test

Test-Suite test-tutoriald-atomfunctionscript
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.SchemaOperator
    main-is: test/TutorialD/Interpreter/AtomFunctionScript.hs
    Build-Depends: base, HUnit, project-m36, uuid, containers, megaparsec, text, vector, directory, bytestring, mtl, haskeline, random, MonadRandom, semigroups, time
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ./test, .

Test-Suite test-tutoriald-databasecontextfunctionscript
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.SchemaOperator
    main-is: test/TutorialD/Interpreter/DatabaseContextFunctionScript.hs
    Build-Depends: base, HUnit, project-m36, uuid, containers, megaparsec, text, vector, directory, bytestring, mtl, haskeline, random, MonadRandom, semigroups, time
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ./test, .

Test-Suite test-relation
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/Relation/Basic.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring,  uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36, transformers
    GHC-Options: -Wall

Test-Suite test-static-optimizer
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/Relation/StaticOptimizer.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36, transformers
    GHC-Options: -Wall

Test-Suite test-transactiongraph-persist
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/TransactionGraph/Persist.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36, random, MonadRandom, semigroups
    Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.BasicExamples
    Hs-Source-Dirs: ., ./src/bin
    GHC-Options: -Wall

Test-Suite test-relation-import-csv
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/Relation/Import/CSV.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36
    GHC-Options: -Wall

Test-Suite test-tutoriald-import-tutoriald
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/TutorialD/Interpreter/Import/TutorialD.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36, random, MonadRandom, semigroups
    Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.BasicExamples
    GHC-Options: -Wall
    Hs-Source-Dirs: ., ./src/bin

Test-Suite test-relation-export-csv
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/Relation/Export/CSV.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, project-m36
    GHC-Options: -Wall

Test-Suite test-transactiongraph-merge
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/TransactionGraph/Merge.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, template-haskell, transformers, aeson, conduit, either, path-pieces, http-api-data, stm-containers, list-t, project-m36
    GHC-Options: -Wall

benchmark bench
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: benchmark/Relation.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, criterion, stm-containers, project-m36
    GHC-Options: -Wall -rtsopts
    Hs-Source-Dirs: ./src/bin

Test-Suite test-server
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/Server/Main.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, network-transport-tcp, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, project-m36, network-transport, semigroups
    HS-Source-Dirs: ., ./src/bin
    GHC-Options: -Wall

Executable Example-SimpleClient
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, ghc, ghc-paths, project-m36, random, MonadRandom
    Main-Is: examples/SimpleClient.hs
    GHC-Options: -Wall

Executable Example-OutOfTheTarpit
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36
    Main-Is: examples/out_of_the_tarpit.hs
    GHC-Options: -Wall

Executable Example-Blog
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36, scotty, blaze-html, http-types
    Main-Is: examples/blog.hs
    GHC-Options: -Wall


Executable Example-Hair
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36
    Main-Is: examples/hair.hs
    GHC-Options: -Wall

Executable Example-CustomTupleable
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36
    Main-Is: examples/CustomTupleable.hs
    GHC-Options: -Wall
    
Test-Suite test-scripts
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    type: exitcode-stdio-1.0
    main-is: test/scripts.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, network-transport-tcp, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, project-m36, random, MonadRandom, semigroups
    Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.Import.BasicExamples
    GHC-Options: -Wall
    Hs-Source-Dirs: ., ./src/bin

Executable project-m36-websocket-server
    Default-Language: Haskell2010
    Build-Depends: base, aeson, path-pieces, either, conduit, http-api-data, template-haskell, websockets, aeson, optparse-applicative, project-m36, containers, bytestring, text, vector, uuid, megaparsec, haskeline, mtl, directory, base64-bytestring, random, MonadRandom, time, network-transport-tcp, semigroups, attoparsec
    Main-Is: ProjectM36/Server/WebSocket/websocket-server.hs
    Other-Modules:  ProjectM36.Client.Json, ProjectM36.Server.RemoteCallTypes.Json, ProjectM36.Server.WebSocket, TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin
    Default-Extensions: OverloadedStrings

Test-Suite test-websocket-server
    Default-Language: Haskell2010
    type: exitcode-stdio-1.0
    main-is: test/Server/WebSocket.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, network-transport-tcp, semigroups
    Other-Modules: TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.TransactionGraphOperator, ProjectM36.Client.Json, ProjectM36.Server.RemoteCallTypes.Json, ProjectM36.Server.WebSocket, TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, .

Test-Suite test-isomorphic-schemas
    Default-Language: Haskell2010
    type: exitcode-stdio-1.0
    main-is: test/IsomorphicSchema.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, .

Test-Suite test-atomable
    Default-Language: Haskell2010
    type: exitcode-stdio-1.0
    main-is: test/Relation/Atomable.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.SchemaOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ., test/

Test-Suite test-multiprocess-access
    Default-Language: Haskell2010
    type: exitcode-stdio-1.0
    main-is: test/MultiProcessDatabaseAccess.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ., test/

Test-Suite test-transactiongraph-automerge
    Default-Language: Haskell2010
    type: exitcode-stdio-1.0
    main-is: test/TransactionGraph/Automerge.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.SchemaOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ., test/

Test-Suite test-tupleable
    Default-Language: Haskell2010
    type: exitcode-stdio-1.0
    main-is: test/Relation/Tupleable.hs
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ., test/

Test-Suite test-client-simple
    Default-Language: Haskell2010
    Main-Is: test/Client/Simple.hs
    type: exitcode-stdio-1.0
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall
    Hs-Source-Dirs: ./src/bin, ., test/

-- test for file handle leaks
Executable handles
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, vector-binary-instances, time, hashable-time, bytestring, uuid, stm, deepseq, deepseq-generics, binary, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, optparse-applicative, stm-containers, list-t, ghc, ghc-paths, transformers, project-m36, random, MonadRandom, semigroups
    main-is: benchmark/Handles.hs
    Other-Modules: TutorialD.Interpreter,
      TutorialD.Interpreter.Base,
      TutorialD.Interpreter.DatabaseContextExpr,
      TutorialD.Interpreter.DatabaseContextIOOperator,
      TutorialD.Interpreter.Export.Base,
      TutorialD.Interpreter.Export.CSV,
      TutorialD.Interpreter.Import.Base,
      TutorialD.Interpreter.Import.BasicExamples,
      TutorialD.Interpreter.Import.CSV,
      TutorialD.Interpreter.Import.TutorialD,
      TutorialD.Interpreter.InformationOperator,
      TutorialD.Interpreter.RODatabaseContextOperator,
      TutorialD.Interpreter.RelationalExpr,
      TutorialD.Interpreter.SchemaOperator,
      TutorialD.Interpreter.TransGraphRelationalOperator,
      TutorialD.Interpreter.TransactionGraphOperator,
      TutorialD.Interpreter.Types
    GHC-Options: -Wall -threaded -rtsopts
    HS-Source-Dirs: ./src/bin
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall