packages feed

inline-python-0.3.0.0: inline-python.cabal

Cabal-Version:  3.0
Build-Type:     Custom
                
Name:           inline-python
Version:        0.3.0.0
Synopsis:       Python interpreter embedded into haskell.
Description:
  This package embeds python interpreter into haskell program and
  allows to write python snippets as quasiquotes. Values could be
  easily transferred between python and haskell. It's possible to
  call haskell from python as well.

License:        BSD-3-Clause
License-File:   LICENSE
Author:         Aleksey Khudyakov <alexey.skladnoy@gmail.com>
Maintainer:     Aleksey Khudyakov <alexey.skladnoy@gmail.com>
Homepage:       https://github.com/Shimuuar/inline-python
Bug-reports:    https://github.com/Shimuuar/inline-python/issues
Category:       FFI
extra-doc-files:
  ChangeLog.md
extra-source-files:
  include/inline-python.h
  py/bound-vars.py

Tested-With:
  GHC == 9.4.8
  GHC == 9.6.7
  GHC == 9.8.4
  GHC == 9.10.2
  GHC == 9.12.2
  GHC == 9.14.1


custom-setup
  setup-depends: base          >=4.15 && <5
               , Cabal         >=3.0  && <4
               , Cabal-syntax  >=3.6  && <4
               , process       >=1.6  && <2

flag python3-config
    Description: Use python3-config instead of pkg-config
    Manual:  True
    Default: False

source-repository head
  type:     git
  location: http://github.com/Shimuuar/inline-python

common language
  Ghc-options:          -Wall
  Default-Language:     GHC2021
  Default-Extensions:
    NoPolyKinds
    --
    DeriveAnyClass
    DerivingVia
    PatternSynonyms
    ViewPatterns
    LambdaCase
    MultiWayIf
    --
    NoFieldSelectors
    DuplicateRecordFields
    OverloadedRecordDot

----------------------------------------------------------------
Library
  import:            language
  Build-Depends:     base             >=4.15 && <5
                   , primitive        >=0.6.2
                   , deepseq          >=1.4
                   , vector           >=0.13.2
                   , containers       >=0.5
                   , process
                   , transformers     >=0.4
                   , inline-c         >=0.9.1
                   , stm              >=2.4
                   , template-haskell -any
                   , text             >=2
                   , bytestring       >=0.11.2
                   , exceptions       >=0.10
                   , vector           >=0.13.2
  hs-source-dirs:    src
  include-dirs:      include
  c-sources:         cbits/python.c
  cc-options:        -g -Wall
  -- Else we use python3-config in Setup.hs
  if !flag(python3-config)
    pkgconfig-depends: python3-embed >= 3.10
  --
  Exposed-modules:
    Python.Inline
    Python.Inline.Async
    Python.Inline.Eval
    Python.Inline.Literal
    Python.Inline.Monad
    Python.Inline.Monad.QQ
    Python.Inline.QQ
    Python.Inline.Types
  Other-modules:
    Python.Internal.CAPI
    Python.Internal.Eval
    Python.Internal.EvalQQ
    Python.Internal.Program
    Python.Internal.Types
    Python.Internal.Util

common tests
  Default-Extensions:
    QuasiQuotes
  hs-source-dirs:   test
  build-depends:    base
                  , inline-python
                  , tasty                >=1.2
                  , tasty-hunit          >=0.10
                  , tasty-quickcheck     >=0.10
                  , stm
                  , quickcheck-instances >=0.3.33
                  , exceptions
                  , containers
                  , vector
                  , bytestring
                  , text


-- Running tests using several threads does very good job at finding threading
-- bugs. Especially deadlocks
test-suite inline-python-tests
  import:           language, tests
  type:             exitcode-stdio-1.0
  Ghc-options:      -threaded -rtsopts -with-rtsopts=-N2
  main-is:          exe/main.hs
  Other-modules:
    TST.Run
    TST.ToPy
    TST.FromPy
    TST.Callbacks
    TST.Roundtrip
    TST.Util
    TST.Module

test-suite inline-python-tests1
  import:           language, tests
  type:             exitcode-stdio-1.0
  Ghc-options:      -rtsopts
  main-is:          exe/main.hs
  Other-modules:
    TST.Run
    TST.ToPy
    TST.FromPy
    TST.Callbacks
    TST.Roundtrip
    TST.Util
    TST.Module

benchmark pysmall
  import:           language
  type:             exitcode-stdio-1.0
  Ghc-options:      -threaded
  main-is:          Main.hs
  hs-source-dirs:   bench
  build-depends:
        base >= 2 && < 5
      , inline-python
      , tasty
      , tasty-bench >= 0.2.1

benchmark pysmall1
  import:           language
  type:             exitcode-stdio-1.0
  main-is:          Main.hs
  hs-source-dirs:   bench
  build-depends:
        base >= 2 && < 5
      , inline-python
      , tasty
      , tasty-bench >= 0.2.1