{-# LANGUAGE OverloadedStrings #-} module DataFrame ( module D, (|>), printSessionSchema ) where import DataFrame.Internal.Types as D import DataFrame.Internal.Expression as D import DataFrame.Internal.Parsing as D import DataFrame.Internal.Column as D import DataFrame.Internal.DataFrame as D hiding (columnIndices, columns) import DataFrame.Internal.Row as D hiding (mkRowRep) import DataFrame.Errors as D import DataFrame.Operations.Core as D import DataFrame.Operations.Merge as D import DataFrame.Operations.Join as D import DataFrame.Operations.Subset as D import DataFrame.Operations.Sorting as D import DataFrame.Operations.Statistics as D import DataFrame.Operations.Transformations as D import DataFrame.Operations.Typing as D import DataFrame.Operations.Aggregation as D import DataFrame.Display.Terminal.Plot as D import DataFrame.IO.CSV as D import Data.Function import Data.List import qualified Data.Text as T import qualified Data.Text.IO as T |> :: a -> (a -> b) -> b (|>) = a -> (a -> b) -> b forall a b. a -> (a -> b) -> b (&) printSessionSchema :: D.DataFrame -> IO () printSessionSchema :: DataFrame -> IO () printSessionSchema DataFrame df = Text -> IO () T.putStrLn (Text -> IO ()) -> Text -> IO () forall a b. (a -> b) -> a -> b $ let ([Text] lhs, [Text] rhs) = (Text -> ([Text], [Text]) -> ([Text], [Text])) -> ([Text], [Text]) -> [Text] -> ([Text], [Text]) forall a b. (a -> b -> b) -> b -> [a] -> b forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr Text -> ([Text], [Text]) -> ([Text], [Text]) go ([], []) (DataFrame -> [Text] D.columnNames DataFrame df) columnRep :: Text -> Text columnRep Text name = let colType :: Text colType = String -> Text T.pack (Column -> String D.columnTypeString (Text -> DataFrame -> Column D.unsafeGetColumn Text name DataFrame df)) in Text "F.col @(" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text colType Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ") \"" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text name Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "\"" go :: Text -> ([Text], [Text]) -> ([Text], [Text]) go Text name ([Text] l, [Text] r) = (Text -> Text T.toLower Text nameText -> [Text] -> [Text] forall a. a -> [a] -> [a] :[Text] l, Text -> Text columnRep Text nameText -> [Text] -> [Text] forall a. a -> [a] -> [a] :[Text] r) in [Text] -> Text T.unlines [Text ":{", Text "{-# LANGUAGE TypeApplications #-}", Text "import qualified DataFrame.Functions as F", Text "import Data.Text (Text)", Text "(" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -> [Text] -> Text T.intercalate Text "," [Text] lhs Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ")" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text " = " Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "(" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -> [Text] -> Text T.intercalate Text "," [Text] rhs Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ")", Text ":}"]