-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Python language tools -- -- hpython provides an abstract syntax tree for Python 3.5, along -- with a parser, printer, and syntax checker. It also contains optics -- for working with the AST, and a DSL for writing Python programs -- directly in Haskell. -- -- For a high-level overview of the library, see the -- Language.Python module. -- -- For code examples, see the examples directory on GitHub. -- -- For general information about the project, see the project -- readme. @package hpython @version 0.1 -- | This module defines some helpful set-like functions for working with -- type-level lists. module Data.Type.Set -- | Remove adjacent equal elements from a type-level list type family Nub t -- | Determine whether type a is a member of type-level list -- s class Member a s instance forall a1 (a2 :: a1) (s :: [a1]). Data.Type.Set.Member a2 (a2 : s) instance forall a1 k (a2 :: k) (s :: [a1]) (b :: a1). Data.Type.Set.Member a2 s => Data.Type.Set.Member a2 (b : s) module Data.Validate.Monadic -- | The composition of Validation with another Applicative -- functor. -- -- Validation is not a Monad, and ValidateM is not a -- monad transformer. It is equipped with a useful bind function, but -- that function does not have the right type to make ValidateM a -- Monad (besides which it would break the laws) newtype ValidateM e m a ValidateM :: Compose m (Validation e) a -> ValidateM e m a [unValidateM] :: ValidateM e m a -> Compose m (Validation e) a -- | Unwrap a ValidateM runValidateM :: ValidateM e m a -> m (Validation e a) -- | Bind into a ValidateM. Note that the first parameter is m -- a, not ValidateM e m a. bindVM :: Monad m => m a -> (a -> ValidateM e m b) -> ValidateM e m b -- | Lift into a succeeding validation liftVM0 :: (Functor m, Semigroup e) => m a -> ValidateM e m a -- | Run a natural transformation across ValidateM to alter -- m liftVM1 :: (forall x. m x -> m x) -> ValidateM e m a -> ValidateM e m a -- | Lift an error into ValidateM errorVM :: Applicative m => e -> ValidateM e m a -- | Lift an error in an Applicative into ValidateM. This is -- especially useful if you're using list or NonEmpty to collect -- errors. errorVM1 :: (Applicative f, Applicative m) => e -> ValidateM (f e) m a instance (GHC.Base.Applicative m, GHC.Base.Semigroup e) => GHC.Base.Applicative (Data.Validate.Monadic.ValidateM e m) instance GHC.Base.Functor m => GHC.Base.Functor (Data.Validate.Monadic.ValidateM e m) module Language.Python.Optics.Validated -- | A type class for things for which we can strip the validation -- information. This can help types line up when they need to, for -- example to put many things of various validation statuses together in -- a list. class Validated (s :: [*] -> * -> *) unvalidated :: Validated s => Getter (s v a) (s '[] a) unvalidated :: (Validated s, Coercible (s v a) (s '[] a)) => Getter (s v a) (s '[] a) module Language.Python.Syntax.Comment -- | A Python single-line comment, such as on the following line: -- --
--   y = x + 4 # add four to the value of x
--   
-- -- In this case, the structure parsed would be -- --
--   MkComment () " add four to the value of x"
--   
-- -- with the hash being inferred, and the space after the hash being -- preserved. -- -- Python does not have multi-line comments. There is a common convention -- of using a multi-line string expression as a multi-line comment, since -- a string expression is a no-op statement. Such multi-line comments are -- NOT represented with this data type, but rather as normal -- string expressions (since that's what they are). data Comment a MkComment :: a -> String -> Comment a [_commentAnn] :: Comment a -> a [_commentValue] :: Comment a -> String instance Data.Functor.Classes.Ord1 Language.Python.Syntax.Comment.Comment instance Data.Functor.Classes.Eq1 Language.Python.Syntax.Comment.Comment instance Data.Traversable.Traversable Language.Python.Syntax.Comment.Comment instance Data.Foldable.Foldable Language.Python.Syntax.Comment.Comment instance GHC.Base.Functor Language.Python.Syntax.Comment.Comment instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Comment.Comment a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.Python.Syntax.Comment.Comment a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Comment.Comment a) -- | Numerical literal values in Python module Language.Python.Syntax.Numbers -- | An integer literal value. -- -- 5 is an integer literal. -- -- 6.2 is a literal but is not an integer -- -- x might be an integer, but is not a literal -- -- See -- https://docs.python.org/3.5/reference/lexical_analysis.html#integer-literals data IntLiteral a -- | Decimal -- --
--   1234
--   
IntLiteralDec :: a -> NonEmpty DecDigit -> IntLiteral a [_intLiteralAnn] :: IntLiteral a -> a [_unsafeIntLiteralDecValue] :: IntLiteral a -> NonEmpty DecDigit -- | Binary -- --
--   0b10110
--   
IntLiteralBin :: a -> Bool -> NonEmpty BinDigit -> IntLiteral a [_intLiteralAnn] :: IntLiteral a -> a [_unsafeIntLiteralBinUppercase] :: IntLiteral a -> Bool [_unsafeIntLiteralBinValue] :: IntLiteral a -> NonEmpty BinDigit -- | Octal -- --
--   0o1367
--   
IntLiteralOct :: a -> Bool -> NonEmpty OctDigit -> IntLiteral a [_intLiteralAnn] :: IntLiteral a -> a [_unsafeIntLiteralOctUppercase] :: IntLiteral a -> Bool [_unsafeIntLiteralOctValue] :: IntLiteral a -> NonEmpty OctDigit -- | Mixed-case hexadecimal -- --
--   0x18B4f
--   
IntLiteralHex :: a -> Bool -> NonEmpty HeXDigit -> IntLiteral a [_intLiteralAnn] :: IntLiteral a -> a [_unsafeIntLiteralHexUppercase] :: IntLiteral a -> Bool [_unsafeIntLiteralHexValue] :: IntLiteral a -> NonEmpty HeXDigit -- | Positive or negative, as in -7 data Sign Pos :: Sign Neg :: Sign -- | When a floating point literal is in scientific notation, it includes -- the character e, which can be lower or upper case. data E Ee :: E EE :: E -- | The exponent of a floating point literal. -- -- An e, followed by an optional Sign, followed by at -- least one digit. data FloatExponent FloatExponent :: E -> Maybe Sign -> NonEmpty DecDigit -> FloatExponent -- | A literal floating point value. -- -- Eg. 7.63 -- -- See -- https://docs.python.org/3.5/reference/lexical_analysis.html#floating-point-literals data FloatLiteral a -- | 'Complete' floats -- --
--   12.
--   
-- --
--   12.34
--   
-- --
--   12.e34
--   
-- --
--   12.34e56
--   
FloatLiteralFull :: a -> NonEmpty DecDigit -> Maybe (These (NonEmpty DecDigit) FloatExponent) -> FloatLiteral a [_floatLiteralAnn] :: FloatLiteral a -> a [_floatLiteralFullLeft] :: FloatLiteral a -> NonEmpty DecDigit [_floatLiteralFullRight] :: FloatLiteral a -> Maybe (These (NonEmpty DecDigit) FloatExponent) -- | Floats that begin with a decimal point -- --
--   .12
--   
-- --
--   .12e34
--   
FloatLiteralPoint :: a -> NonEmpty DecDigit -> Maybe FloatExponent -> FloatLiteral a [_floatLiteralAnn] :: FloatLiteral a -> a [_floatLiteralPointRight] :: FloatLiteral a -> NonEmpty DecDigit [_floatLiteralPointExponent] :: FloatLiteral a -> Maybe FloatExponent -- | Floats with no decimal points -- --
--   12e34
--   
FloatLiteralWhole :: a -> NonEmpty DecDigit -> FloatExponent -> FloatLiteral a [_floatLiteralAnn] :: FloatLiteral a -> a [_floatLiteralWholeRight] :: FloatLiteral a -> NonEmpty DecDigit [_floatLiteralWholeExponent] :: FloatLiteral a -> FloatExponent -- | Imaginary number literals -- -- See -- https://docs.python.org/3.5/reference/lexical_analysis.html#imaginary-literals data ImagLiteral a -- | A decimal integer followed by a 'j' -- --
--   12j
--   
ImagLiteralInt :: a -> NonEmpty DecDigit -> Bool -> ImagLiteral a [_imagLiteralAnn] :: ImagLiteral a -> a [_unsafeImagLiteralIntValue] :: ImagLiteral a -> NonEmpty DecDigit [_imagLiteralUppercase] :: ImagLiteral a -> Bool -- | A float followed by a 'j' -- --
--   12.j
--   
-- --
--   12.3j
--   
-- --
--   .3j
--   
ImagLiteralFloat :: a -> FloatLiteral a -> Bool -> ImagLiteral a [_imagLiteralAnn] :: ImagLiteral a -> a [_unsafeImagLiteralFloatValue] :: ImagLiteral a -> FloatLiteral a [_imagLiteralUppercase] :: ImagLiteral a -> Bool showIntLiteral :: IntLiteral a -> Text showFloatLiteral :: FloatLiteral a -> Text showFloatExponent :: FloatExponent -> Text showImagLiteral :: ImagLiteral a -> Text instance Data.Functor.Classes.Ord1 Language.Python.Syntax.Numbers.ImagLiteral instance Data.Functor.Classes.Eq1 Language.Python.Syntax.Numbers.ImagLiteral instance Data.Traversable.Traversable Language.Python.Syntax.Numbers.ImagLiteral instance Data.Foldable.Foldable Language.Python.Syntax.Numbers.ImagLiteral instance GHC.Base.Functor Language.Python.Syntax.Numbers.ImagLiteral instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Numbers.ImagLiteral a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Numbers.ImagLiteral a) instance Data.Functor.Classes.Ord1 Language.Python.Syntax.Numbers.FloatLiteral instance Data.Functor.Classes.Eq1 Language.Python.Syntax.Numbers.FloatLiteral instance Data.Traversable.Traversable Language.Python.Syntax.Numbers.FloatLiteral instance Data.Foldable.Foldable Language.Python.Syntax.Numbers.FloatLiteral instance GHC.Base.Functor Language.Python.Syntax.Numbers.FloatLiteral instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Numbers.FloatLiteral a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Numbers.FloatLiteral a) instance GHC.Show.Show Language.Python.Syntax.Numbers.FloatExponent instance GHC.Classes.Ord Language.Python.Syntax.Numbers.FloatExponent instance GHC.Classes.Eq Language.Python.Syntax.Numbers.FloatExponent instance GHC.Show.Show Language.Python.Syntax.Numbers.E instance GHC.Classes.Ord Language.Python.Syntax.Numbers.E instance GHC.Classes.Eq Language.Python.Syntax.Numbers.E instance GHC.Show.Show Language.Python.Syntax.Numbers.Sign instance GHC.Classes.Ord Language.Python.Syntax.Numbers.Sign instance GHC.Classes.Eq Language.Python.Syntax.Numbers.Sign instance Data.Functor.Classes.Ord1 Language.Python.Syntax.Numbers.IntLiteral instance Data.Functor.Classes.Eq1 Language.Python.Syntax.Numbers.IntLiteral instance Data.Traversable.Traversable Language.Python.Syntax.Numbers.IntLiteral instance Data.Foldable.Foldable Language.Python.Syntax.Numbers.IntLiteral instance GHC.Base.Functor Language.Python.Syntax.Numbers.IntLiteral instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Numbers.IntLiteral a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Numbers.IntLiteral a) module Language.Python.Syntax.Raw -- | Raw represents unvalidated, un-annotated terms. type Raw f = f '[] () module Language.Python.Syntax.Whitespace -- | A newline is either a carriage return, a line feed, or a carriage -- return followed by a line feed. data Newline CR :: Newline LF :: Newline CRLF :: Newline -- | Whitespace is either a space, a tab, a newline that continues the -- logical line (Continued), a newline that ends the logical line -- (Newline), or a Whitespace. -- -- Despite not literally being whitespace, comments inside enclosed forms -- are treated as whitespace. See -- https://docs.python.org/3.5/reference/lexical_analysis.html#implicit-line-joining -- -- Example and counterexample of comments as whitespace -- --
--   ( 1 +
--     # here's a comment
--    2 +
--    3 # another comment
--   )
--    
--   
-- --
--   x = 5 + 5
--   # this line is not considered whitespace
--   y = x * 2
--   
-- --
--   [ 1
--   , 2 # I'm whitespace
--   , 3
--   # also whitespace
--   ]
--   
data Whitespace Space :: Whitespace Tab :: Whitespace Continued :: Newline -> [Whitespace] -> Whitespace Newline :: Newline -> Whitespace Comment :: Comment () -> Whitespace -- | Lines which are "blank", meaning that they contain, if anything, only -- whitespace and/or a comment. data Blank a Blank :: a -> [Whitespace] -> Maybe (Comment a) -> Blank a [_blankAnn] :: Blank a -> a [_blankWhitespaces] :: Blank a -> [Whitespace] [_blankComment] :: Blank a -> Maybe (Comment a) -- | Every syntactic element contains the whitespace that immediately -- follows it. -- -- This type class lets us access this trailing whitespace in many -- different types throughout hpython. class HasTrailingWhitespace s trailingWhitespace :: HasTrailingWhitespace s => Lens' s [Whitespace] -- | A statement-containing thing may have a trailing newline -- -- Some forms always have a trailing newline, which is why this -- class isn't just trailingNewline :: Lens' (s v a) -- (Maybe Newline) class HasTrailingNewline (s :: [*] -> * -> *) trailingNewline :: HasTrailingNewline s => Traversal' (s v a) Newline setTrailingNewline :: HasTrailingNewline s => s v a -> Newline -> s v a -- | Python has rules regarding the expansion of tabs into spaces and how -- to go about computing indentation after this is done. -- -- See -- https://docs.python.org/3.5/reference/lexical_analysis.html#indentation -- -- This data structure implements those rules as a monoid. data IndentLevel getIndentLevel :: IndentLevel -> Int indentLevel :: Indent -> Int absoluteIndentLevel :: Int -> Indent -> Int newtype Indent MkIndent :: FingerTree IndentLevel Whitespace -> Indent [unIndent] :: Indent -> FingerTree IndentLevel Whitespace -- | An Indent is isomorphic to a list of Whitespace indentWhitespaces :: Iso' Indent [Whitespace] -- | Indent some indentation by a chunk indentIt :: [Whitespace] -> Indents a -> Indents a -- | Deent some indentation by a chunk dedentIt :: Indents a -> Indents a -- | A possibly annotated list of Indents. data Indents a Indents :: [Indent] -> a -> Indents a [_indentsValue] :: Indents a -> [Indent] [_indentsAnn] :: Indents a -> a indentsValue :: forall a_av5Q. Lens' (Indents a_av5Q) [Indent] indentsAnn :: forall a_av5Q a_awRJ. Lens (Indents a_av5Q) (Indents a_awRJ) a_av5Q a_awRJ -- | Subtract the first argument from the beginning of the second -- -- Returns Nothing if the first list is not a prefix of the -- second. subtractStart :: Indents a -> Indents a -> Maybe (Indents a) instance Data.Functor.Classes.Ord1 Language.Python.Syntax.Whitespace.Indents instance Data.Functor.Classes.Eq1 Language.Python.Syntax.Whitespace.Indents instance Data.Traversable.Traversable Language.Python.Syntax.Whitespace.Indents instance Data.Foldable.Foldable Language.Python.Syntax.Whitespace.Indents instance GHC.Base.Functor Language.Python.Syntax.Whitespace.Indents instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Whitespace.Indents a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Whitespace.Indents a) instance GHC.Base.Monoid Language.Python.Syntax.Whitespace.Indent instance GHC.Base.Semigroup Language.Python.Syntax.Whitespace.Indent instance GHC.Show.Show Language.Python.Syntax.Whitespace.Indent instance GHC.Classes.Ord Language.Python.Syntax.Whitespace.Indent instance GHC.Classes.Eq Language.Python.Syntax.Whitespace.Indent instance GHC.Base.Monoid Language.Python.Syntax.Whitespace.IndentLevel instance GHC.Base.Semigroup Language.Python.Syntax.Whitespace.IndentLevel instance Data.Traversable.Traversable Language.Python.Syntax.Whitespace.Blank instance Data.Foldable.Foldable Language.Python.Syntax.Whitespace.Blank instance GHC.Base.Functor Language.Python.Syntax.Whitespace.Blank instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Whitespace.Blank a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Whitespace.Blank a) instance GHC.Show.Show Language.Python.Syntax.Whitespace.Whitespace instance GHC.Classes.Ord Language.Python.Syntax.Whitespace.Whitespace instance GHC.Classes.Eq Language.Python.Syntax.Whitespace.Whitespace instance GHC.Show.Show Language.Python.Syntax.Whitespace.Newline instance GHC.Classes.Ord Language.Python.Syntax.Whitespace.Newline instance GHC.Classes.Eq Language.Python.Syntax.Whitespace.Newline instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Language.Python.Syntax.Whitespace.Indents a) instance GHC.Exts.IsList Language.Python.Syntax.Whitespace.Indent instance Data.FingerTree.Measured Language.Python.Syntax.Whitespace.IndentLevel Language.Python.Syntax.Whitespace.Whitespace instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace a => Language.Python.Syntax.Whitespace.HasTrailingWhitespace (GHC.Base.NonEmpty a) -- | Python string literals. -- -- See -- https://docs.python.org/3.5/reference/lexical_analysis.html#string-and-bytes-literals module Language.Python.Syntax.Strings -- | A character in a string literal. This is a large sum type, with a -- catch-all of a Haskell Char. data PyChar -- |
--   \newline
--   
Char_newline :: PyChar -- |
--   \1
--   
Char_octal1 :: OctDigit -> PyChar -- |
--   \12
--   
Char_octal2 :: OctDigit -> OctDigit -> PyChar -- |
--   \123
--   
Char_octal3 :: OctDigit -> OctDigit -> OctDigit -> PyChar -- |
--   \xFb
--   
Char_hex :: HeXDigit -> HeXDigit -> PyChar -- |
--   \u12aD
--   
Char_uni16 :: HeXDigit -> HeXDigit -> HeXDigit -> HeXDigit -> PyChar -- |
--   \Udeadbeef
--   
Char_uni32 :: HeXDigit -> HeXDigit -> HeXDigit -> HeXDigit -> HeXDigit -> HeXDigit -> HeXDigit -> HeXDigit -> PyChar -- |
--   \\
--   
Char_esc_bslash :: PyChar -- |
--   \'
--   
Char_esc_singlequote :: PyChar -- |
--   \"
--   
Char_esc_doublequote :: PyChar -- |
--   \a
--   
Char_esc_a :: PyChar -- |
--   \b
--   
Char_esc_b :: PyChar -- |
--   \f
--   
Char_esc_f :: PyChar -- |
--   \n
--   
Char_esc_n :: PyChar -- |
--   \r
--   
Char_esc_r :: PyChar -- |
--   \t
--   
Char_esc_t :: PyChar -- |
--   \v
--   
Char_esc_v :: PyChar -- | Any character Char_lit :: Char -> PyChar -- | Convert a Haskell string to a list of PyChar. This is useful -- when writing Python in Haskell. fromHaskellString :: String -> [PyChar] -- | Double or single quotation marks? -- --
--   "Double quotes"
--   """Double quotes"""
--   'Single quotes'
--   '''Single quotes'''
--   
data QuoteType SingleQuote :: QuoteType DoubleQuote :: QuoteType -- | Three pairs of quotations or one? -- --
--   """Long string"""
--   '''Also long string'''
--   "Short string"
--   'Also short string'
--   
data StringType ShortString :: StringType LongString :: StringType -- | In Python 3.5, a prefix of u or U is allowed, but -- doesn't have any meaning. They exist for backwards compatibility with -- Python 2. -- -- See https://www.python.org/dev/peps/pep-0414/ data StringPrefix Prefix_u :: StringPrefix Prefix_U :: StringPrefix -- | Raw strings are prefixed with either r or R. data RawStringPrefix Prefix_r :: RawStringPrefix Prefix_R :: RawStringPrefix -- | This prefix indicates it's a bytes literal rather than a string -- literal. data BytesPrefix Prefix_b :: BytesPrefix Prefix_B :: BytesPrefix -- | A string of raw bytes can be indicated by a number of prefixes data RawBytesPrefix Prefix_br :: RawBytesPrefix Prefix_Br :: RawBytesPrefix Prefix_bR :: RawBytesPrefix Prefix_BR :: RawBytesPrefix Prefix_rb :: RawBytesPrefix Prefix_rB :: RawBytesPrefix Prefix_Rb :: RawBytesPrefix Prefix_RB :: RawBytesPrefix -- | Most types of StringLiteral have prefixes. Plain old strings -- may have an optional prefix, but it is meaningless. hasPrefix :: StringLiteral a -> Bool -- | A StringLiteral, complete with a prefix, information about -- quote type and number, and a list of PyChars. -- -- Like many other data types in hpython, it has an annotation and -- trailing whitespace. data StringLiteral a RawStringLiteral :: a -> RawStringPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a [_stringLiteralAnn] :: StringLiteral a -> a [_unsafeRawStringLiteralPrefix] :: StringLiteral a -> RawStringPrefix [_stringLiteralStringType] :: StringLiteral a -> StringType [_stringLiteralQuoteType] :: StringLiteral a -> QuoteType [_stringLiteralValue] :: StringLiteral a -> [PyChar] [_stringLiteralWhitespace] :: StringLiteral a -> [Whitespace] StringLiteral :: a -> Maybe StringPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a [_stringLiteralAnn] :: StringLiteral a -> a [_unsafeStringLiteralPrefix] :: StringLiteral a -> Maybe StringPrefix [_stringLiteralStringType] :: StringLiteral a -> StringType [_stringLiteralQuoteType] :: StringLiteral a -> QuoteType [_stringLiteralValue] :: StringLiteral a -> [PyChar] [_stringLiteralWhitespace] :: StringLiteral a -> [Whitespace] RawBytesLiteral :: a -> RawBytesPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a [_stringLiteralAnn] :: StringLiteral a -> a [_unsafeRawBytesLiteralPrefix] :: StringLiteral a -> RawBytesPrefix [_stringLiteralStringType] :: StringLiteral a -> StringType [_stringLiteralQuoteType] :: StringLiteral a -> QuoteType [_stringLiteralValue] :: StringLiteral a -> [PyChar] [_stringLiteralWhitespace] :: StringLiteral a -> [Whitespace] BytesLiteral :: a -> BytesPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a [_stringLiteralAnn] :: StringLiteral a -> a [_unsafeBytesLiteralPrefix] :: StringLiteral a -> BytesPrefix [_stringLiteralStringType] :: StringLiteral a -> StringType [_stringLiteralQuoteType] :: StringLiteral a -> QuoteType [_stringLiteralValue] :: StringLiteral a -> [PyChar] [_stringLiteralWhitespace] :: StringLiteral a -> [Whitespace] stringLiteralStringType :: forall a_aAPr. Lens' (StringLiteral a_aAPr) StringType stringLiteralQuoteType :: forall a_aAPr. Lens' (StringLiteral a_aAPr) QuoteType stringLiteralValue :: forall a_aAPr. Lens' (StringLiteral a_aAPr) [PyChar] stringLiteralWhitespace :: forall a_aAPr. Lens' (StringLiteral a_aAPr) [Whitespace] showQuoteType :: QuoteType -> Char showStringPrefix :: StringPrefix -> Text showRawStringPrefix :: RawStringPrefix -> Text showBytesPrefix :: BytesPrefix -> Text showRawBytesPrefix :: RawBytesPrefix -> Text -- | Determine whether a PyChar is an escape character or not. isEscape :: PyChar -> Bool instance Data.Traversable.Traversable Language.Python.Syntax.Strings.StringLiteral instance Data.Foldable.Foldable Language.Python.Syntax.Strings.StringLiteral instance GHC.Base.Functor Language.Python.Syntax.Strings.StringLiteral instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Strings.StringLiteral a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.Python.Syntax.Strings.StringLiteral a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Strings.StringLiteral a) instance GHC.Show.Show Language.Python.Syntax.Strings.PyChar instance GHC.Classes.Ord Language.Python.Syntax.Strings.PyChar instance GHC.Classes.Eq Language.Python.Syntax.Strings.PyChar instance GHC.Show.Show Language.Python.Syntax.Strings.RawBytesPrefix instance GHC.Classes.Ord Language.Python.Syntax.Strings.RawBytesPrefix instance GHC.Classes.Eq Language.Python.Syntax.Strings.RawBytesPrefix instance GHC.Show.Show Language.Python.Syntax.Strings.BytesPrefix instance GHC.Classes.Ord Language.Python.Syntax.Strings.BytesPrefix instance GHC.Classes.Eq Language.Python.Syntax.Strings.BytesPrefix instance GHC.Show.Show Language.Python.Syntax.Strings.RawStringPrefix instance GHC.Classes.Ord Language.Python.Syntax.Strings.RawStringPrefix instance GHC.Classes.Eq Language.Python.Syntax.Strings.RawStringPrefix instance GHC.Show.Show Language.Python.Syntax.Strings.StringPrefix instance GHC.Classes.Ord Language.Python.Syntax.Strings.StringPrefix instance GHC.Classes.Eq Language.Python.Syntax.Strings.StringPrefix instance GHC.Show.Show Language.Python.Syntax.Strings.StringType instance GHC.Classes.Ord Language.Python.Syntax.Strings.StringType instance GHC.Classes.Eq Language.Python.Syntax.Strings.StringType instance GHC.Show.Show Language.Python.Syntax.Strings.QuoteType instance GHC.Classes.Ord Language.Python.Syntax.Strings.QuoteType instance GHC.Classes.Eq Language.Python.Syntax.Strings.QuoteType instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Strings.StringLiteral a) -- | These types are used throughout the syntax tree to help preserve -- formatting. module Language.Python.Syntax.Punctuation -- | A period character, possibly followed by some whitespace. data Dot MkDot :: [Whitespace] -> Dot -- | The venerable comma separator newtype Comma MkComma :: [Whitespace] -> Comma newtype Colon MkColon :: [Whitespace] -> Colon data Semicolon a MkSemicolon :: a -> [Whitespace] -> Semicolon a newtype Equals MkEquals :: [Whitespace] -> Equals newtype At MkAt :: [Whitespace] -> At instance GHC.Show.Show Language.Python.Syntax.Punctuation.At instance GHC.Classes.Eq Language.Python.Syntax.Punctuation.At instance GHC.Show.Show Language.Python.Syntax.Punctuation.Equals instance GHC.Classes.Eq Language.Python.Syntax.Punctuation.Equals instance Data.Traversable.Traversable Language.Python.Syntax.Punctuation.Semicolon instance Data.Foldable.Foldable Language.Python.Syntax.Punctuation.Semicolon instance GHC.Base.Functor Language.Python.Syntax.Punctuation.Semicolon instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Punctuation.Semicolon a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Punctuation.Semicolon a) instance GHC.Show.Show Language.Python.Syntax.Punctuation.Colon instance GHC.Classes.Eq Language.Python.Syntax.Punctuation.Colon instance GHC.Show.Show Language.Python.Syntax.Punctuation.Comma instance GHC.Classes.Eq Language.Python.Syntax.Punctuation.Comma instance GHC.Show.Show Language.Python.Syntax.Punctuation.Dot instance GHC.Classes.Eq Language.Python.Syntax.Punctuation.Dot instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace Language.Python.Syntax.Punctuation.At instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace Language.Python.Syntax.Punctuation.Equals instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Punctuation.Semicolon a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace Language.Python.Syntax.Punctuation.Colon instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace Language.Python.Syntax.Punctuation.Comma instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace Language.Python.Syntax.Punctuation.Dot -- | Unary operators module Language.Python.Syntax.Operator.Unary -- | An UnOp is a unary operator in Python, such as - for -- negation. An operator is stored with an annotation and its trailing -- whitespace. data UnOp a -- |
--   -a
--   
Negate :: a -> [Whitespace] -> UnOp a -- |
--   +a
--   
Positive :: a -> [Whitespace] -> UnOp a -- |
--   ~a
--   
Complement :: a -> [Whitespace] -> UnOp a instance Data.Traversable.Traversable Language.Python.Syntax.Operator.Unary.UnOp instance Data.Foldable.Foldable Language.Python.Syntax.Operator.Unary.UnOp instance GHC.Base.Functor Language.Python.Syntax.Operator.Unary.UnOp instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Operator.Unary.UnOp a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Operator.Unary.UnOp a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Operator.Unary.UnOp a) -- | This module contains a datatype for binary operators and a precedence -- table with associated operations. This presentation of operators is -- simpler and more flexible than hard-coding them into the syntax tree. module Language.Python.Syntax.Operator.Binary -- | A Python binary operator, such as +, along with its trailing -- Whitespace -- -- The type variable allows annotations, but it can simply be made -- () for an unannotated BinOp. data BinOp a -- |
--   a is b
--   
Is :: a -> [Whitespace] -> BinOp a -- |
--   a is not b
--   
IsNot :: a -> [Whitespace] -> [Whitespace] -> BinOp a -- |
--   a in b
--   
In :: a -> [Whitespace] -> BinOp a -- |
--   a not in b
--   
NotIn :: a -> [Whitespace] -> [Whitespace] -> BinOp a -- |
--   a - b
--   
Minus :: a -> [Whitespace] -> BinOp a -- |
--   a ** b
--   
Exp :: a -> [Whitespace] -> BinOp a -- |
--   a and b
--   
BoolAnd :: a -> [Whitespace] -> BinOp a -- |
--   a or b
--   
BoolOr :: a -> [Whitespace] -> BinOp a -- |
--   a == b
--   
Eq :: a -> [Whitespace] -> BinOp a -- |
--   a < b
--   
Lt :: a -> [Whitespace] -> BinOp a -- |
--   a <= b
--   
LtEq :: a -> [Whitespace] -> BinOp a -- |
--   a > b
--   
Gt :: a -> [Whitespace] -> BinOp a -- |
--   a >= b
--   
GtEq :: a -> [Whitespace] -> BinOp a -- |
--   a != b
--   
NotEq :: a -> [Whitespace] -> BinOp a -- |
--   a * b
--   
Multiply :: a -> [Whitespace] -> BinOp a -- |
--   a / b
--   
Divide :: a -> [Whitespace] -> BinOp a -- |
--   a // b
--   
FloorDivide :: a -> [Whitespace] -> BinOp a -- |
--   a % b
--   
Percent :: a -> [Whitespace] -> BinOp a -- |
--   a + b
--   
Plus :: a -> [Whitespace] -> BinOp a -- |
--   a | b
--   
BitOr :: a -> [Whitespace] -> BinOp a -- |
--   a ^ b
--   
BitXor :: a -> [Whitespace] -> BinOp a -- |
--   a & b
--   
BitAnd :: a -> [Whitespace] -> BinOp a -- |
--   a << b
--   
ShiftLeft :: a -> [Whitespace] -> BinOp a -- |
--   a >> b
--   
ShiftRight :: a -> [Whitespace] -> BinOp a -- | a b@ At :: a -> [Whitespace] -> BinOp a -- | The associativity of an operator. Each operator is either -- left-associative or right associative. -- -- Left associative: -- --
--   x + y + z = (x + y) + z
--   
-- -- Right associative: -- --
--   x + y + z = x + (y + z)
--   
data Assoc L :: Assoc R :: Assoc -- | An operator along with its precedence and associativity. data OpEntry OpEntry :: BinOp () -> Int -> Assoc -> OpEntry [_opOperator] :: OpEntry -> BinOp () [_opPrec] :: OpEntry -> Int [_opAssoc] :: OpEntry -> Assoc opPrec :: Lens' OpEntry Int opOperator :: Lens' OpEntry (BinOp ()) opAssoc :: Lens' OpEntry Assoc -- | operatorTable is a list of all operators in ascending order of -- precedence. operatorTable :: [OpEntry] -- | Compare two BinOps to determine whether they represent the same -- operator, ignoring annotations and trailing whitespace. sameOperator :: BinOp a -> BinOp a' -> Bool -- | Is a BinOp a comparison, such as <= isComparison :: BinOp a -> Bool -- | Retrieve the information for a given operator from the operator table. lookupOpEntry :: BinOp a -> [OpEntry] -> OpEntry instance GHC.Show.Show Language.Python.Syntax.Operator.Binary.Assoc instance GHC.Classes.Eq Language.Python.Syntax.Operator.Binary.Assoc instance Data.Traversable.Traversable Language.Python.Syntax.Operator.Binary.BinOp instance Data.Foldable.Foldable Language.Python.Syntax.Operator.Binary.BinOp instance GHC.Base.Functor Language.Python.Syntax.Operator.Binary.BinOp instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Operator.Binary.BinOp a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Operator.Binary.BinOp a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Operator.Binary.BinOp a) module Language.Python.Syntax.Ident -- | An identifier. Like many types in hpython, it has an optional -- annotation and tracks its trailing whitespace. -- -- Raw Idents have an IsString instance. -- -- See -- https://docs.python.org/3.5/reference/lexical_analysis.html#identifiers data Ident (v :: [*]) a MkIdent :: a -> String -> [Whitespace] -> Ident a [_identAnn] :: Ident a -> a [_identValue] :: Ident a -> String [_identWhitespace] :: Ident a -> [Whitespace] identAnn :: Lens (Ident v a) (Ident v a) a a identValue :: Lens (Ident v a) (Ident '[] a) String String identWhitespace :: Lens (Ident v a) (Ident v a) [Whitespace] [Whitespace] -- | Determine whether this character could start a valid identifier isIdentifierStart :: Char -> Bool -- | Determine whether this character could be part of a valid identifier isIdentifierChar :: Char -> Bool instance Data.Traversable.Traversable (Language.Python.Syntax.Ident.Ident v) instance Data.Foldable.Foldable (Language.Python.Syntax.Ident.Ident v) instance GHC.Base.Functor (Language.Python.Syntax.Ident.Ident v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Ident.Ident v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Ident.Ident v a) instance Data.String.IsString (Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Ident.Ident) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Ident.Ident v a) instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Ident.Ident -- | Module names, including those qualified by packages. -- -- See https://docs.python.org/3.5/tutorial/modules.html#packages module Language.Python.Syntax.ModuleNames -- | A module name. It can be a single segment, or a sequence of them which -- are implicitly separated by period character. -- --
--   a
--   
-- --
--   a.b
--   
data ModuleName v a ModuleNameOne :: a -> Ident v a -> ModuleName v a ModuleNameMany :: a -> Ident v a -> Dot -> ModuleName v a -> ModuleName v a -- |
--   .a.b
--   
-- --
--   .
--   
-- --
--   ...
--   
-- -- See -- https://docs.python.org/3.5/tutorial/modules.html#intra-package-references data RelativeModuleName v a RelativeWithName :: [Dot] -> ModuleName v a -> RelativeModuleName v a Relative :: NonEmpty Dot -> RelativeModuleName v a -- | Convenience constructor for ModuleName makeModuleName :: Ident v a -> [([Whitespace], Ident v a)] -> ModuleName v a -- | Get the annotation from a ModuleName _moduleNameAnn :: ModuleName v a -> a instance Data.Traversable.Traversable (Language.Python.Syntax.ModuleNames.RelativeModuleName v) instance Data.Foldable.Foldable (Language.Python.Syntax.ModuleNames.RelativeModuleName v) instance GHC.Base.Functor (Language.Python.Syntax.ModuleNames.RelativeModuleName v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.ModuleNames.RelativeModuleName v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.ModuleNames.RelativeModuleName v a) instance Data.Traversable.Traversable (Language.Python.Syntax.ModuleNames.ModuleName v) instance Data.Foldable.Foldable (Language.Python.Syntax.ModuleNames.ModuleName v) instance GHC.Base.Functor (Language.Python.Syntax.ModuleNames.ModuleName v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.ModuleNames.ModuleName v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.ModuleNames.ModuleName v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.ModuleNames.RelativeModuleName v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.ModuleNames.ModuleName v a) module Language.Python.Syntax.CommaSep -- | The venerable comma separator newtype Comma MkComma :: [Whitespace] -> Comma -- | Items separated by commas, with optional whitespace following each -- comma data CommaSep a CommaSepNone :: CommaSep a CommaSepOne :: a -> CommaSep a CommaSepMany :: a -> Comma -> CommaSep a -> CommaSep a -- | Iso to unpack a CommaSep _CommaSep :: Iso (Maybe (a, [(Comma, a)], Maybe Comma)) (Maybe (b, [(Comma, b)], Maybe Comma)) (CommaSep a) (CommaSep b) -- | Traversal targeting the trailing whitespace in a comma -- separated list. -- -- This can't be an instance of HasTrailingWhitespace because -- CommaSepNone never has trailing whitespace. csTrailingWhitespace :: HasTrailingWhitespace a => Traversal' (CommaSep a) [Whitespace] -- | Appends two comma separated values together. -- -- The provided whitespace is to follow the joining comma which is added appendCommaSep :: [Whitespace] -> CommaSep a -> CommaSep a -> CommaSep a -- | Convert a maybe to a singleton or nullary CommaSep maybeToCommaSep :: Maybe a -> CommaSep a -- | Convert a list to a CommaSep -- -- Anywhere where whitespace is ambiguous, this function puts a single -- space listToCommaSep :: [a] -> CommaSep a -- | Non-empty CommaSep data CommaSep1 a CommaSepOne1 :: a -> CommaSep1 a CommaSepMany1 :: a -> Comma -> CommaSep1 a -> CommaSep1 a -- | Get the first element of a CommaSep1 commaSep1Head :: CommaSep1 a -> a -- | Appends two non-empty comma separated values together. -- -- The provided whitespace is to follow the joining comma which is added appendCommaSep1 :: [Whitespace] -> CommaSep1 a -> CommaSep1 a -> CommaSep1 a -- | Convert a NonEmpty to a CommaSep1 -- -- Anywhere where whitespace is ambiguous, this function puts a single -- space listToCommaSep1 :: NonEmpty a -> CommaSep1 a -- | Attempt to insert comma separators into a list, which will not be -- terminated by a comma. -- -- If the list is empty, Nothing is returned. listToCommaSep1' :: [a] -> Maybe (CommaSep1' a) -- | Non-empty CommaSep, optionally terminated by a comma -- -- Assumes that the contents consumes trailing whitespace data CommaSep1' a CommaSepOne1' :: a -> Maybe Comma -> CommaSep1' a CommaSepMany1' :: a -> Comma -> CommaSep1' a -> CommaSep1' a -- | Iso to unpack a CommaSep1' _CommaSep1' :: Iso (a, [(Comma, a)], Maybe Comma) (b, [(Comma, b)], Maybe Comma) (CommaSep1' a) (CommaSep1' b) instance Data.Traversable.Traversable Language.Python.Syntax.CommaSep.CommaSep1' instance Data.Foldable.Foldable Language.Python.Syntax.CommaSep.CommaSep1' instance GHC.Base.Functor Language.Python.Syntax.CommaSep.CommaSep1' instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.CommaSep.CommaSep1' a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.CommaSep.CommaSep1' a) instance Data.Traversable.Traversable Language.Python.Syntax.CommaSep.CommaSep1 instance Data.Foldable.Foldable Language.Python.Syntax.CommaSep.CommaSep1 instance GHC.Base.Functor Language.Python.Syntax.CommaSep.CommaSep1 instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.CommaSep.CommaSep1 a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.CommaSep.CommaSep1 a) instance Data.Traversable.Traversable Language.Python.Syntax.CommaSep.CommaSep instance Data.Foldable.Foldable Language.Python.Syntax.CommaSep.CommaSep instance GHC.Base.Functor Language.Python.Syntax.CommaSep.CommaSep instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.CommaSep.CommaSep a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.CommaSep.CommaSep a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace s => Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.CommaSep.CommaSep1' s) instance GHC.Base.Semigroup (Language.Python.Syntax.CommaSep.CommaSep1 a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace s => Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.CommaSep.CommaSep1 s) instance GHC.Base.Semigroup (Language.Python.Syntax.CommaSep.CommaSep a) instance GHC.Base.Monoid (Language.Python.Syntax.CommaSep.CommaSep a) -- | Syntax used in import statements -- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-import-statement module Language.Python.Syntax.Import -- | Some data optionally followed by as ident -- -- Used in: -- --
--   import a as b
--   
-- --
--   from a import b as c, d as e
--   
-- --
--   from a import (b as c, d as e)
--   
data ImportAs e v a ImportAs :: a -> e a -> Maybe (NonEmpty Whitespace, Ident v a) -> ImportAs e v a [_importAsAnn] :: ImportAs e v a -> a [_importAsName] :: ImportAs e v a -> e a [_importAsQual] :: ImportAs e v a -> Maybe (NonEmpty Whitespace, Ident v a) -- | The targets of a from ... import ... statement data ImportTargets v a -- |
--   from x import *
--   
ImportAll :: a -> [Whitespace] -> ImportTargets v a -- |
--   from x import a, b, c
--   
ImportSome :: a -> CommaSep1 (ImportAs (Ident v) v a) -> ImportTargets v a -- |
--   from x import (a, b, c)
--   
ImportSomeParens :: a -> [Whitespace] -> CommaSep1' (ImportAs (Ident v) v a) -> [Whitespace] -> ImportTargets v a importAsAnn :: Lens' (ImportAs e v a) a importAsName :: Lens (ImportAs e v a) (ImportAs e' '[] a) (e a) (e' a) importAsQual :: Lens (ImportAs e v a) (ImportAs e '[] a) (Maybe (NonEmpty Whitespace, Ident v a)) (Maybe (NonEmpty Whitespace, Ident '[] a)) instance Data.Traversable.Traversable (Language.Python.Syntax.Import.ImportTargets v) instance Data.Foldable.Foldable (Language.Python.Syntax.Import.ImportTargets v) instance GHC.Base.Functor (Language.Python.Syntax.Import.ImportTargets v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Import.ImportTargets v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Import.ImportTargets v a) instance Data.Traversable.Traversable e => Data.Traversable.Traversable (Language.Python.Syntax.Import.ImportAs e v) instance Data.Foldable.Foldable e => Data.Foldable.Foldable (Language.Python.Syntax.Import.ImportAs e v) instance GHC.Base.Functor e => GHC.Base.Functor (Language.Python.Syntax.Import.ImportAs e v) instance (GHC.Show.Show a, GHC.Show.Show (e a)) => GHC.Show.Show (Language.Python.Syntax.Import.ImportAs e v a) instance (GHC.Classes.Eq a, GHC.Classes.Eq (e a)) => GHC.Classes.Eq (Language.Python.Syntax.Import.ImportAs e v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Import.ImportTargets v a) instance Language.Python.Optics.Validated.Validated (Language.Python.Syntax.Import.ImportAs e) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (e a) => Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Import.ImportAs e v a) module Language.Python.Syntax.Expr -- | This large sum type covers all valid Python expressions data Expr (v :: [*]) a -- |
--   ()
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#parenthesized-forms Unit :: a -> [Whitespace] -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeUnitWhitespaceInner] :: Expr a -> [Whitespace] [_unsafeUnitWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   lambda x, y: x
--   
-- -- https://docs.python.org/3/reference/expressions.html#lambda Lambda :: a -> [Whitespace] -> CommaSep (Param v a) -> Colon -> Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeLambdaWhitespace] :: Expr a -> [Whitespace] [_unsafeLambdaArgs] :: Expr a -> CommaSep (Param v a) [_unsafeLambdaColon] :: Expr a -> Colon [_unsafeLambdaBody] :: Expr a -> Expr v a -- |
--   yield
--   
-- --
--   yield a
--   
-- --
--   yield a, b
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#yield-expressions Yield :: a -> [Whitespace] -> CommaSep (Expr v a) -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeYieldWhitespace] :: Expr a -> [Whitespace] [_unsafeYieldValue] :: Expr a -> CommaSep (Expr v a) -- |
--   yield from a
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#yield-expressions YieldFrom :: a -> [Whitespace] -> [Whitespace] -> Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeYieldWhitespace] :: Expr a -> [Whitespace] [_unsafeFromWhitespace] :: Expr a -> [Whitespace] [_unsafeYieldFromValue] :: Expr a -> Expr v a -- |
--   a if b else c
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#conditional-expressions Ternary :: a -> Expr v a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeTernaryValue] :: Expr a -> Expr v a [_unsafeTernaryWhitespaceIf] :: Expr a -> [Whitespace] [_unsafeTernaryCond] :: Expr a -> Expr v a [_unsafeTernaryWhitespaceElse] :: Expr a -> [Whitespace] [_unsafeTernaryElse] :: Expr a -> Expr v a -- |
--   [a for b in c if d]
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#list-displays ListComp :: a -> [Whitespace] -> Comprehension Expr v a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeListCompWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeListCompValue] :: Expr a -> Comprehension Expr v a [_unsafeListCompWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   [a, b, c]
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#list-displays List :: a -> [Whitespace] -> Maybe (CommaSep1' (ListItem v a)) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeListWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeListValues] :: Expr a -> Maybe (CommaSep1' (ListItem v a)) [_unsafeListWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   {a: b for c in d if e}
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#dictionary-displays DictComp :: a -> [Whitespace] -> Comprehension DictItem v a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeDictCompWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeDictCompValue] :: Expr a -> Comprehension DictItem v a [_unsafeDictCompWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   {}
--   
-- --
--   {a: 1, b: 2, c: 3}
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#dictionary-displays Dict :: a -> [Whitespace] -> Maybe (CommaSep1' (DictItem v a)) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeDictWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeDictValues] :: Expr a -> Maybe (CommaSep1' (DictItem v a)) [_unsafeDictWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   {a for b in c if d}
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#set-displays SetComp :: a -> [Whitespace] -> Comprehension SetItem v a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeSetCompWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeSetCompValue] :: Expr a -> Comprehension SetItem v a [_unsafeSetCompWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   {a, b, c}
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#set-displays Set :: a -> [Whitespace] -> CommaSep1' (SetItem v a) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeSetWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeSetValues] :: Expr a -> CommaSep1' (SetItem v a) [_unsafeSetWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   a.b
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#attribute-references Deref :: a -> Expr v a -> [Whitespace] -> Ident v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeDerefValueLeft] :: Expr a -> Expr v a [_unsafeDerefWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeDerefValueRight] :: Expr a -> Ident v a -- |
--   a[b]
--   
-- --
--   a[:]
--   
-- --
--   a[:, b:]
--   
-- -- etc. -- -- -- https://docs.python.org/3/reference/expressions.html#subscriptions Subscript :: a -> Expr v a -> [Whitespace] -> CommaSep1' (Subscript v a) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeSubscriptValueLeft] :: Expr a -> Expr v a [_unsafeSubscriptWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeSubscriptValueRight] :: Expr a -> CommaSep1' (Subscript v a) [_unsafeSubscriptWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   f(x)
--   
-- -- https://docs.python.org/3/reference/expressions.html#calls Call :: a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeCallFunction] :: Expr a -> Expr v a [_unsafeCallWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeCallArguments] :: Expr a -> Maybe (CommaSep1' (Arg v a)) [_unsafeCallWhitespaceRight] :: Expr a -> [Whitespace] -- |
--   None
--   
-- -- https://docs.python.org/3/library/constants.html#None None :: a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeNoneWhitespace] :: Expr a -> [Whitespace] -- |
--   ...
--   
-- -- https://docs.python.org/3/library/constants.html#Ellipsis Ellipsis :: a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeEllipsisWhitespace] :: Expr a -> [Whitespace] -- |
--   a + b
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#the-power-operator -- -- -- https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations -- -- -- https://docs.python.org/3/reference/expressions.html#shifting-operations -- -- -- https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations -- -- -- https://docs.python.org/3/reference/expressions.html#comparisons -- -- -- https://docs.python.org/3/reference/expressions.html#membership-test-operations -- -- https://docs.python.org/3/reference/expressions.html#is-not -- -- -- https://docs.python.org/3/reference/expressions.html#boolean-operations BinOp :: a -> Expr v a -> BinOp a -> Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeBinOpExprLeft] :: Expr a -> Expr v a [_unsafeBinOpOp] :: Expr a -> BinOp a [_unsafeBinOpExprRight] :: Expr a -> Expr v a -- |
--   -a
--   
-- --
--   ~a
--   
-- --
--   +a
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations UnOp :: a -> UnOp a -> Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeUnOpOp] :: Expr a -> UnOp a [_unsafeUnOpValue] :: Expr a -> Expr v a Parens :: a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeParensWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeParensValue] :: Expr a -> Expr v a [_unsafeParensWhitespaceAfter] :: Expr a -> [Whitespace] -- |
--   a
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#atom-identifiers Ident :: Ident v a -> Expr a [_unsafeIdentValue] :: Expr a -> Ident v a -- |
--   1
--   
-- -- @0xF3A -- -- @0o177 -- --
--   0b1011
--   
-- -- -- https://docs.python.org/3/reference/lexical_analysis.html#grammar-token-integer Int :: a -> IntLiteral a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeIntValue] :: Expr a -> IntLiteral a [_unsafeIntWhitespace] :: Expr a -> [Whitespace] -- |
--   1.
--   
-- --
--   3.14
--   
-- --
--   10e100
--   
-- -- -- https://docs.python.org/3/reference/lexical_analysis.html#floating-point-literals Float :: a -> FloatLiteral a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeFloatValue] :: Expr a -> FloatLiteral a [_unsafeFloatWhitespace] :: Expr a -> [Whitespace] -- |
--   10j
--   
-- --
--   5.j
--   
-- -- -- https://docs.python.org/3/reference/lexical_analysis.html#floating-point-literals Imag :: a -> ImagLiteral a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeImagValue] :: Expr a -> ImagLiteral a [_unsafeImagWhitespace] :: Expr a -> [Whitespace] -- |
--   True
--   
-- --
--   False
--   
-- -- https://docs.python.org/3/library/constants.html#True -- -- https://docs.python.org/3/library/constants.html#False Bool :: a -> Bool -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeBoolValue] :: Expr a -> Bool [_unsafeBoolWhitespace] :: Expr a -> [Whitespace] -- |
--   "asdf"
--   
-- --
--   b"asdf"
--   
-- --
--   "asdf" 'asdf'
--   
-- --
--   '''asdf'''
--   
-- -- -- https://docs.python.org/3/reference/lexical_analysis.html#grammar-token-stringliteral String :: a -> NonEmpty (StringLiteral a) -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeStringValue] :: Expr a -> NonEmpty (StringLiteral a) -- |
--   a, b, c
--   
-- --
--   (a, b)
--   
-- --
--   (a,)
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#expression-lists Tuple :: a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeTupleHead] :: Expr a -> TupleItem v a [_unsafeTupleWhitespace] :: Expr a -> Comma [_unsafeTupleTail] :: Expr a -> Maybe (CommaSep1' (TupleItem v a)) -- |
--   not a
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#boolean-operations Not :: a -> [Whitespace] -> Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeNotWhitespace] :: Expr a -> [Whitespace] [_unsafeNotValue] :: Expr a -> Expr v a -- |
--   (a for b in c)
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#generator-expressions Generator :: a -> Comprehension Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_generatorValue] :: Expr a -> Comprehension Expr v a -- |
--   await a
--   
-- -- https://docs.python.org/3/reference/expressions.html#await Await :: a -> [Whitespace] -> Expr v a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeAwaitWhitespace] :: Expr a -> [Whitespace] [_unsafeAwaitValue] :: Expr a -> Expr v a -- | Traversal over all the expressions in a term class HasExprs s _Exprs :: HasExprs s => Traversal (s v a) (s '[] a) (Expr v a) (Expr '[] a) -- | Lens on the top-level annotation in an expression exprAnn :: Lens' (Expr v a) a -- | shouldGroupLeft op left returns true if left needs -- to be parenthesised when it is the left argument of op shouldGroupLeft :: BinOp a -> Expr v a -> Bool -- | shouldGroupRight op right returns true if right -- needs to be parenthesised when it is the right argument of op shouldGroupRight :: BinOp a -> Expr v a -> Bool -- | Formal parameters for functions -- -- See -- https://docs.python.org/3.5/reference/compound_stmts.html#function-definitions data Param (v :: [*]) a -- |
--   def foo(a):
--   
PositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> Param a [_paramAnn] :: Param a -> a [_paramName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) -- |
--   def foo(bar=None):
--   
KeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> Param a [_paramAnn] :: Param a -> a [_paramName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) [_unsafeKeywordParamWhitespaceRight] :: Param a -> [Whitespace] [_unsafeKeywordParamExpr] :: Param a -> Expr v a -- |
--   def foo(*xs):
--   
StarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a [_paramAnn] :: Param a -> a [_unsafeStarParamWhitespace] :: Param a -> [Whitespace] [_unsafeStarParamName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) -- |
--   def foo(*):
--   
UnnamedStarParam :: a -> [Whitespace] -> Param a [_paramAnn] :: Param a -> a [_unsafeUnnamedStarParamWhitespace] :: Param a -> [Whitespace] -- |
--   def foo(**dict):
--   
DoubleStarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a [_paramAnn] :: Param a -> a [_unsafeDoubleStarParamWhitespace] :: Param a -> [Whitespace] [_paramName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) -- | Lens on the syntrax tree annotation on a parameter paramAnn :: Lens' (Param v a) a -- | A faux-lens on the optional Python type annotation which may follow a -- parameter -- -- This is not a lawful Lens because setting an -- UnnamedStarParam's type won't have any effect. -- -- This optic, like many others in hpython, loses validation information -- (the v type parameter) -- -- The following is an example, where int is the paramtype: -- --
--   def foo(x: int):
--   
paramType_ :: Functor f => (Maybe (Colon, Expr v a) -> f (Maybe (Colon, Expr '[] a))) -> Param v a -> f (Param '[] a) -- | Traversal targeting the Python type annotations which may -- follow a parameter paramType :: Traversal (Param v a) (Param '[] a) (Colon, Expr v a) (Colon, Expr '[] a) -- | (affine) Traversal on the name of a parameter -- -- The name is x in the following examples: -- --
--   def foo(x):
--   def foo(x=None):
--   def foo(*x):
--   def foo(**x):
--   
-- -- But the following example does not have a paramName: -- --
--   def foo(*):
--   
paramName :: Traversal (Param v a) (Param '[] a) (Ident v a) (Ident '[] a) -- | Actual parameters for functions -- -- In the following examples, x is an actual parameter. -- --
--   y = foo(x)
--   y = bar(quux=x)
--   y = baz(*x)
--   y = flux(**x)
--   
data Arg (v :: [*]) a PositionalArg :: a -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_argExpr] :: Arg a -> Expr v a KeywordArg :: a -> Ident v a -> [Whitespace] -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_unsafeKeywordArgName] :: Arg a -> Ident v a [_unsafeKeywordArgWhitespaceRight] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr v a StarArg :: a -> [Whitespace] -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_unsafeStarArgWhitespace] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr v a DoubleStarArg :: a -> [Whitespace] -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_unsafeDoubleStarArgWhitespace] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr v a -- | Lens on the Python expression which is passed as the argument argExpr :: Lens (Arg v a) (Arg '[] a) (Expr v a) (Expr '[] a) -- | A Python for comprehension, such as -- --
--   x for y in z
--   
data Comprehension e (v :: [*]) a -- | expr comp_for (comp_for | comp_if)* Comprehension :: a -> e v a -> CompFor v a -> [Either (CompFor v a) (CompIf v a)] -> Comprehension e a -- | A condition inside a comprehension, e.g. [x for x in xs if -- even(x)] data CompIf (v :: [*]) a CompIf :: a -> [Whitespace] -> Expr v a -> CompIf a -- | A nested comprehesion, e.g. [(x, y) for x in xs for y in ys] data CompFor (v :: [*]) a CompFor :: a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr v a -> CompFor a -- | a : b or **a -- -- Used to construct dictionaries, e.g. { 1: a, 2: b, **c } -- -- -- https://docs.python.org/3/reference/expressions.html#dictionary-displays data DictItem (v :: [*]) a DictItem :: a -> Expr v a -> Colon -> Expr v a -> DictItem a [_dictItemAnn] :: DictItem a -> a [_unsafeDictItemKey] :: DictItem a -> Expr v a [_unsafeDictItemColon] :: DictItem a -> Colon [_unsafeDictItemValue] :: DictItem a -> Expr v a DictUnpack :: a -> [Whitespace] -> Expr v a -> DictItem a [_dictItemAnn] :: DictItem a -> a [_unsafeDictItemUnpackWhitespace] :: DictItem a -> [Whitespace] [_unsafeDictItemUnpackValue] :: DictItem a -> Expr v a -- | a or *a -- -- Used to construct lists, e.g. [ 1, x, **c ] -- -- -- https://docs.python.org/3/reference/expressions.html#list-displays data ListItem (v :: [*]) a ListItem :: a -> Expr v a -> ListItem a [_listItemAnn] :: ListItem a -> a [_unsafeListItemValue] :: ListItem a -> Expr v a ListUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> ListItem a [_listItemAnn] :: ListItem a -> a [_unsafeListUnpackParens] :: ListItem a -> [([Whitespace], [Whitespace])] [_unsafeListUnpackWhitespace] :: ListItem a -> [Whitespace] [_unsafeListUnpackValue] :: ListItem a -> Expr v a -- | a or *a -- -- Used to construct sets, e.g. { 1, x, **c } -- -- -- https://docs.python.org/3/reference/expressions.html#set-displays data SetItem (v :: [*]) a SetItem :: a -> Expr v a -> SetItem a [_setItemAnn] :: SetItem a -> a [_unsafeSetItemValue] :: SetItem a -> Expr v a SetUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> SetItem a [_setItemAnn] :: SetItem a -> a [_unsafeSetUnpackParens] :: SetItem a -> [([Whitespace], [Whitespace])] [_unsafeSetUnpackWhitespace] :: SetItem a -> [Whitespace] [_unsafeSetUnpackValue] :: SetItem a -> Expr v a -- | a or *a -- -- Used to construct tuples, e.g. (1, x, **c) data TupleItem (v :: [*]) a TupleItem :: a -> Expr v a -> TupleItem a [_tupleItemAnn] :: TupleItem a -> a [_unsafeTupleItemValue] :: TupleItem a -> Expr v a TupleUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> TupleItem a [_tupleItemAnn] :: TupleItem a -> a [_unsafeTupleUnpackParens] :: TupleItem a -> [([Whitespace], [Whitespace])] [_unsafeTupleUnpackWhitespace] :: TupleItem a -> [Whitespace] [_unsafeTupleUnpackValue] :: TupleItem a -> Expr v a -- | Syntax for things that can be used as subscripts (inside the square -- brackets) -- -- e.g. -- --
--   a[b]
--   
-- --
--   a[:]
--   
-- --
--   a[b:]
--   
-- --
--   a[:b]
--   
-- --
--   a[b:c]
--   
-- --
--   a[b:c:d]
--   
-- -- -- https://docs.python.org/3/reference/expressions.html#subscriptions data Subscript (v :: [*]) a SubscriptExpr :: Expr v a -> Subscript a SubscriptSlice :: Maybe (Expr v a) -> Colon -> Maybe (Expr v a) -> Maybe (Colon, Maybe (Expr v a)) -> Subscript a instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.Param v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.Param v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.Param v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.Param v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.Param v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.Arg v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.Arg v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.Arg v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.Arg v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.Arg v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.CompIf v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.CompIf v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.CompIf v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.CompIf v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.CompIf v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.CompFor v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.CompFor v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.CompFor v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.CompFor v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.CompFor v a) instance (GHC.Show.Show a, GHC.Show.Show (e v a)) => GHC.Show.Show (Language.Python.Syntax.Expr.Comprehension e v a) instance (GHC.Classes.Eq a, GHC.Classes.Eq (e v a)) => GHC.Classes.Eq (Language.Python.Syntax.Expr.Comprehension e v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.DictItem v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.DictItem v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.DictItem v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.DictItem v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.DictItem v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.Subscript v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.Subscript v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.Subscript v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.Subscript v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.Subscript v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.ListItem v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.ListItem v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.ListItem v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.ListItem v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.ListItem v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.SetItem v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.SetItem v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.SetItem v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.SetItem v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.SetItem v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.TupleItem v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.TupleItem v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.TupleItem v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.TupleItem v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.TupleItem v a) instance GHC.Generics.Generic (Language.Python.Syntax.Expr.Expr v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Expr.Expr v) instance Data.Foldable.Foldable (Language.Python.Syntax.Expr.Expr v) instance GHC.Base.Functor (Language.Python.Syntax.Expr.Expr v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Expr.Expr v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Expr.Expr v a) instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Expr.Param instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Expr.Arg instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Expr.ListItem instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Expr.SetItem instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Expr.TupleItem instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Expr.Expr instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Expr.Expr instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Expr.Param instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Expr.Arg instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Expr.DictItem instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Expr.SetItem instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Expr.TupleItem instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Expr.ListItem instance Data.String.IsString (Language.Python.Syntax.Expr.Param '[] ()) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.Param v a) instance Data.String.IsString (Language.Python.Syntax.Expr.Arg '[] ()) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.Comprehension e v a) instance GHC.Base.Functor (e v) => GHC.Base.Functor (Language.Python.Syntax.Expr.Comprehension e v) instance Data.Foldable.Foldable (e v) => Data.Foldable.Foldable (Language.Python.Syntax.Expr.Comprehension e v) instance Data.Traversable.Traversable (e v) => Data.Traversable.Traversable (Language.Python.Syntax.Expr.Comprehension e v) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.CompIf v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.CompFor v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.DictItem v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.Subscript v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.ListItem v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.SetItem v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.TupleItem v a) instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Expr.Expr v a) instance Data.String.IsString (Language.Python.Syntax.Expr.Expr '[] ()) instance GHC.Num.Num (Language.Python.Syntax.Expr.Expr '[] ()) instance Control.Lens.Plated.Plated (Language.Python.Syntax.Expr.Expr '[] a) module Language.Python.Syntax.AugAssign -- | Augmented assignments (PEP 203), such as: -- --
--   x += y
--   
-- -- or -- --
--   x <<= 8
--   
-- -- An AugAssign has an AugAssignOp and trailing whitespace. -- There is an optional annotation, which can simply be () if no -- annotation is desired. data AugAssign a MkAugAssign :: AugAssignOp -> a -> [Whitespace] -> AugAssign a [_augAssignType] :: AugAssign a -> AugAssignOp [_augAssignAnn] :: AugAssign a -> a [_augAssignWhitespace] :: AugAssign a -> [Whitespace] -- | Augmented assignment operators data AugAssignOp -- |
--   +=
--   
PlusEq :: AugAssignOp -- |
--   -=
--   
MinusEq :: AugAssignOp -- |
--   *=
--   
StarEq :: AugAssignOp -- |
--   @=
--   
AtEq :: AugAssignOp -- |
--   /=
--   
SlashEq :: AugAssignOp -- |
--   %=
--   
PercentEq :: AugAssignOp -- |
--   &=
--   
AmpersandEq :: AugAssignOp -- |
--   |=
--   
PipeEq :: AugAssignOp -- |
--   ^=
--   
CaretEq :: AugAssignOp -- |
--   <<=
--   
ShiftLeftEq :: AugAssignOp -- |
--   >>=
--   
ShiftRightEq :: AugAssignOp -- |
--   **=
--   
DoubleStarEq :: AugAssignOp -- |
--   //=
--   
DoubleSlashEq :: AugAssignOp instance Data.Traversable.Traversable Language.Python.Syntax.AugAssign.AugAssign instance Data.Foldable.Foldable Language.Python.Syntax.AugAssign.AugAssign instance GHC.Base.Functor Language.Python.Syntax.AugAssign.AugAssign instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.AugAssign.AugAssign a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.AugAssign.AugAssign a) instance GHC.Show.Show Language.Python.Syntax.AugAssign.AugAssignOp instance GHC.Classes.Eq Language.Python.Syntax.AugAssign.AugAssignOp instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.AugAssign.AugAssign a) module Language.Python.Syntax.Statement -- | A Statement is either a SmallStatement or a -- Statement -- -- -- https://docs.python.org/3.5/reference/compound_stmts.html#compound-statements data Statement (v :: [*]) a SmallStatement :: Indents a -> SmallStatement v a -> Statement a CompoundStatement :: CompoundStatement v a -> Statement a -- | Traversal over all the Statements in a term class HasStatements s _Statements :: HasStatements s => Traversal (s v a) (s '[] a) (Statement v a) (Statement '[] a) -- | Decorators on function definitions -- -- -- https://docs.python.org/3.5/reference/compound_stmts.html#function-definitions -- -- https://docs.python.org/3.5/glossary.html#term-decorator data Decorator (v :: [*]) a Decorator :: a -> Indents a -> At -> Expr v a -> Maybe (Comment a) -> Newline -> [(Blank a, Newline)] -> Decorator a [_decoratorAnn] :: Decorator a -> a -- | Preceding indentation [_decoratorIndents] :: Decorator a -> Indents a -- |
--   '@' <spaces>
--   
[_decoratorAt] :: Decorator a -> At -- |
--   <expr>
--   
[_decoratorExpr] :: Decorator a -> Expr v a -- | Trailing comment [_decoratorComment] :: Decorator a -> Maybe (Comment a) -- | Trailing newline [_decoratorNewline] :: Decorator a -> Newline -- | Trailing blank lines [_decoratorBlankLines] :: Decorator a -> [(Blank a, Newline)] -- | See https://docs.python.org/3.5/reference/compound_stmts.html data CompoundStatement (v :: [*]) a -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#function-definitions -- -- -- https://docs.python.org/3.5/reference/compound_stmts.html#coroutine-function-definition Fundef :: a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding Decorators [_unsafeCsFundefDecorators] :: CompoundStatement a -> [Decorator v a] -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   ['async' <spaces>]
--   
[_unsafeCsFundefAsync] :: CompoundStatement a -> Maybe (NonEmpty Whitespace) -- |
--   'def' <spaces>
--   
[_unsafeCsFundefDef] :: CompoundStatement a -> NonEmpty Whitespace -- |
--   <ident>
--   
[_unsafeCsFundefName] :: CompoundStatement a -> Ident v a -- |
--   '(' <spaces>
--   
[_unsafeCsFundefLeftParen] :: CompoundStatement a -> [Whitespace] -- |
--   <parameters>
--   
[_unsafeCsFundefParameters] :: CompoundStatement a -> CommaSep (Param v a) -- |
--   ')' <spaces>
--   
[_unsafeCsFundefRightParen] :: CompoundStatement a -> [Whitespace] -- |
--   ['->' <spaces> <expr>]
--   
[_unsafeCsFundefReturnType] :: CompoundStatement a -> Maybe ([Whitespace], Expr v a) -- |
--   <suite>
--   
[_unsafeCsFundefBody] :: CompoundStatement a -> Suite v a -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#the-if-statement If :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [(Indents a, [Whitespace], Expr v a, Suite v a)] -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'if' <spaces>
--   
[_unsafeCsIfIf] :: CompoundStatement a -> [Whitespace] -- |
--   <expr>
--   
[_unsafeCsIfCond] :: CompoundStatement a -> Expr v a -- |
--   <suite>
--   
[_unsafeCsIfBody] :: CompoundStatement a -> Suite v a -- |
--   ('elif' <spaces> <expr> <suite>)*
--   
[_unsafeCsIfElifs] :: CompoundStatement a -> [(Indents a, [Whitespace], Expr v a, Suite v a)] -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsIfElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite v a) -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#the-while-statement While :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'while' <spaces>
--   
[_unsafeCsWhileWhile] :: CompoundStatement a -> [Whitespace] -- |
--   <expr>
--   
[_unsafeCsWhileCond] :: CompoundStatement a -> Expr v a -- |
--   <suite>
--   
[_unsafeCsWhileBody] :: CompoundStatement a -> Suite v a -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsWhileElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite v a) -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#the-try-statement TryExcept :: a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Indents a, [Whitespace], Maybe (ExceptAs v a), Suite v a) -> Maybe (Indents a, [Whitespace], Suite v a) -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'try' <spaces>
--   
[_unsafeCsTryExceptTry] :: CompoundStatement a -> [Whitespace] -- |
--   <suite>
--   
[_unsafeCsTryExceptBody] :: CompoundStatement a -> Suite v a -- |
--   ('except' <spaces> <except_as> <suite>)+
--   
[_unsafeCsTryExceptExcepts] :: CompoundStatement a -> NonEmpty (Indents a, [Whitespace], Maybe (ExceptAs v a), Suite v a) -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsTryExceptElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite v a) -- |
--   ['finally' <spaces> <suite>]
--   
[_unsafeCsTryExceptFinally] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite v a) -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#the-try-statement TryFinally :: a -> Indents a -> [Whitespace] -> Suite v a -> Indents a -> [Whitespace] -> Suite v a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'try' <spaces>
--   
[_unsafeCsTryFinallyTry] :: CompoundStatement a -> [Whitespace] -- |
--   <suite>
--   
[_unsafeCsTryFinallyTryBody] :: CompoundStatement a -> Suite v a [_unsafeCsTryFinallyFinallyIndents] :: CompoundStatement a -> Indents a -- |
--   'finally' <spaces>
--   
[_unsafeCsTryFinallyFinally] :: CompoundStatement a -> [Whitespace] -- |
--   <suite>
--   
[_unsafeCsTryFinallyFinallyBody] :: CompoundStatement a -> Suite v a -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#the-for-statement -- -- -- https://docs.python.org/3.5/reference/compound_stmts.html#the-async-for-statement For :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   ['async' <spaces>]
--   
[_unsafeCsForAsync] :: CompoundStatement a -> Maybe (NonEmpty Whitespace) -- |
--   'for' <spaces>
--   
[_unsafeCsForFor] :: CompoundStatement a -> [Whitespace] -- |
--   <expr>
--   
[_unsafeCsForBinder] :: CompoundStatement a -> Expr v a -- |
--   'in' <spaces>
--   
[_unsafeCsForIn] :: CompoundStatement a -> [Whitespace] -- |
--   <exprs>
--   
[_unsafeCsForCollection] :: CompoundStatement a -> CommaSep1' (Expr v a) -- |
--   <suite>
--   
[_unsafeCsForBody] :: CompoundStatement a -> Suite v a -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsForElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite v a) -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#class-definitions ClassDef :: a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding Decorators [_unsafeCsClassDefDecorators] :: CompoundStatement a -> [Decorator v a] -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'class' <spaces>
--   
[_unsafeCsClassDefClass] :: CompoundStatement a -> NonEmpty Whitespace -- |
--   <ident>
--   
[_unsafeCsClassDefName] :: CompoundStatement a -> Ident v a -- |
--   ['(' <spaces> [<args>] ')' <spaces>]
--   
[_unsafeCsClassDefArguments] :: CompoundStatement a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -- |
--   <suite>
--   
[_unsafeCsClassDefBody] :: CompoundStatement a -> Suite v a -- | -- https://docs.python.org/3.5/reference/compound_stmts.html#the-with-statement -- -- -- https://docs.python.org/3.5/reference/compound_stmts.html#the-async-with-statement With :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a -- | Preceding indentation [_csIndents] :: CompoundStatement a -> Indents a -- |
--   ['async' <spaces>]
--   
[_unsafeCsWithAsync] :: CompoundStatement a -> Maybe (NonEmpty Whitespace) -- |
--   'with' <spaces>
--   
[_unsafeCsWithWith] :: CompoundStatement a -> [Whitespace] -- |
--   <with_items>
--   
[_unsafeCsWithItems] :: CompoundStatement a -> CommaSep1 (WithItem v a) -- |
--   <suite>
--   
[_unsafeCsWithBody] :: CompoundStatement a -> Suite v a -- | See simpl_stmt at -- https://docs.python.org/3.5/reference/grammar.html. The grammar -- has the terminology mixed up - it should really be called -- small_stmt there. data SmallStatement (v :: [*]) a MkSmallStatement :: SimpleStatement v a -> [(Semicolon a, SimpleStatement v a)] -> Maybe (Semicolon a) -> Maybe (Comment a) -> Maybe Newline -> SmallStatement a -- | https://docs.python.org/3.5/reference/simple_stmts.html data SimpleStatement (v :: [*]) a -- |
--   'return' <spaces> [<expr>]
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-return-statement Return :: a -> [Whitespace] -> Maybe (Expr v a) -> SimpleStatement a -- |
--   <expr>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#expression-statements Expr :: a -> Expr v a -> SimpleStatement a -- |
--   <expr> ('=' <spaces> <expr>)+
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#assignment-statements Assign :: a -> Expr v a -> NonEmpty (Equals, Expr v a) -> SimpleStatement a -- |
--   <expr> <augassign> <expr>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#augmented-assignment-statements AugAssign :: a -> Expr v a -> AugAssign a -> Expr v a -> SimpleStatement a -- |
--   'pass' <spaces>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-pass-statement Pass :: a -> [Whitespace] -> SimpleStatement a -- |
--   'break' <spaces>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-break-statement Break :: a -> [Whitespace] -> SimpleStatement a -- |
--   'continue' <spaces>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-continue-statement Continue :: a -> [Whitespace] -> SimpleStatement a -- |
--   'global' <spaces> <idents>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-global-statement Global :: a -> NonEmpty Whitespace -> CommaSep1 (Ident v a) -> SimpleStatement a -- |
--   'nonlocal' <spaces> <idents>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-nonlocal-statement Nonlocal :: a -> NonEmpty Whitespace -> CommaSep1 (Ident v a) -> SimpleStatement a -- |
--   'del' <spaces> <exprs>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-del-statement Del :: a -> [Whitespace] -> CommaSep1' (Expr v a) -> SimpleStatement a -- |
--   'import' <spaces> <modulenames>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-import-statement Import :: a -> NonEmpty Whitespace -> CommaSep1 (ImportAs (ModuleName v) v a) -> SimpleStatement a -- |
--   'from' <spaces> <relative_module_name> 'import' <spaces> <import_targets>
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-import-statement From :: a -> [Whitespace] -> RelativeModuleName v a -> [Whitespace] -> ImportTargets v a -> SimpleStatement a -- |
--   'raise' <spaces> [<expr> ['as' <spaces> <expr>]]
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-raise-statement Raise :: a -> [Whitespace] -> Maybe (Expr v a, Maybe ([Whitespace], Expr v a)) -> SimpleStatement a -- |
--   'assert' <spaces> <expr> [',' <spaces> <expr>]
--   
-- -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-assert-statement Assert :: a -> [Whitespace] -> Expr v a -> Maybe (Comma, Expr v a) -> SimpleStatement a -- | See -- https://docs.python.org/3.5/reference/compound_stmts.html#the-with-statement data WithItem (v :: [*]) a WithItem :: a -> Expr v a -> Maybe ([Whitespace], Expr v a) -> WithItem a [_withItemAnn] :: WithItem a -> a -- |
--   <expr>
--   
[_withItemValue] :: WithItem a -> Expr v a -- |
--   ['as' <spaces> <expr>]
--   
[_withItemBinder] :: WithItem a -> Maybe ([Whitespace], Expr v a) withItemAnn :: forall v_a1Kcs a_a1Kct. Lens' (WithItem v_a1Kcs a_a1Kct) a_a1Kct withItemValue :: forall v_a1Kcs a_a1Kct. Lens' (WithItem v_a1Kcs a_a1Kct) (Expr v_a1Kcs a_a1Kct) withItemBinder :: forall v_a1Kcs a_a1Kct. Lens' (WithItem v_a1Kcs a_a1Kct) (Maybe ([Whitespace], Expr v_a1Kcs a_a1Kct)) -- | See -- https://docs.python.org/3.5/reference/compound_stmts.html#the-try-statement data ExceptAs (v :: [*]) a ExceptAs :: a -> Expr v a -> Maybe ([Whitespace], Ident v a) -> ExceptAs a [_exceptAsAnn] :: ExceptAs a -> a -- |
--   <expr>
--   
[_exceptAsExpr] :: ExceptAs a -> Expr v a -- |
--   ['as' <ident>]
--   
[_exceptAsName] :: ExceptAs a -> Maybe ([Whitespace], Ident v a) exceptAsAnn :: forall v_a1Kcw a_a1Kcx. Lens' (ExceptAs v_a1Kcw a_a1Kcx) a_a1Kcx exceptAsExpr :: forall v_a1Kcw a_a1Kcx. Lens' (ExceptAs v_a1Kcw a_a1Kcx) (Expr v_a1Kcw a_a1Kcx) exceptAsName :: forall v_a1Kcw a_a1Kcx. Lens' (ExceptAs v_a1Kcw a_a1Kcx) (Maybe ([Whitespace], Ident v_a1Kcw a_a1Kcx)) -- | A compound statement consists of one or more clauses. A clause -- consists of a header and a suite. data Suite (v :: [*]) a SuiteOne :: a -> Colon -> SmallStatement v a -> Suite a SuiteMany :: a -> Colon -> Maybe (Comment a) -> Newline -> Block v a -> Suite a -- | A Block is an indented multi-line chunk of code, forming part -- of a Suite. data Block (v :: [*]) a Block :: [(Blank a, Newline)] -> Statement v a -> [Either (Blank a, Newline) (Statement v a)] -> Block a -- | Blank lines at the beginning of the block [_blockBlankLines] :: Block a -> [(Blank a, Newline)] -- | The first statement of the block [_blockHead] :: Block a -> Statement v a -- | The remaining items of the block, which may be statements or blank -- lines [_blockTail] :: Block a -> [Either (Blank a, Newline) (Statement v a)] blockBlankLines :: forall v_a1KcH a_a1KcI. Lens' (Block v_a1KcH a_a1KcI) [(Blank a_a1KcI, Newline)] blockHead :: forall v_a1KcH a_a1KcI. Lens' (Block v_a1KcH a_a1KcI) (Statement v_a1KcH a_a1KcI) blockTail :: forall v_a1KcH a_a1KcI. Lens' (Block v_a1KcH a_a1KcI) [Either (Blank a_a1KcI, Newline) (Statement v_a1KcH a_a1KcI)] class HasBlocks s -- | Traversal targeting all the Blocks in a structure _Blocks :: HasBlocks s => Traversal (s v a) (s '[] a) (Block v a) (Block '[] a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.Statement v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.Statement v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.Statement v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.Statement v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.Statement v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.Block v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.Block v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.Suite v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.Suite v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.Suite v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.Suite v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.Suite v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.CompoundStatement v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.CompoundStatement v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.CompoundStatement v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.CompoundStatement v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.CompoundStatement v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.Decorator v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.Decorator v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.Decorator v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.Decorator v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.Decorator v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.WithItem v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.WithItem v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.WithItem v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.WithItem v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.WithItem v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.ExceptAs v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.ExceptAs v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.ExceptAs v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.ExceptAs v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.ExceptAs v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.SmallStatement v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.SmallStatement v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.SmallStatement v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.SmallStatement v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.SmallStatement v a) instance GHC.Generics.Generic (Language.Python.Syntax.Statement.SimpleStatement v a) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.SimpleStatement v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.SimpleStatement v) instance GHC.Base.Functor (Language.Python.Syntax.Statement.SimpleStatement v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Statement.SimpleStatement v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Statement.SimpleStatement v a) instance Language.Python.Syntax.Statement.HasStatements Language.Python.Syntax.Statement.Block instance Language.Python.Syntax.Statement.HasStatements Language.Python.Syntax.Statement.Suite instance Control.Lens.Plated.Plated (Language.Python.Syntax.Statement.Statement '[] a) instance Language.Python.Syntax.Statement.HasBlocks Language.Python.Syntax.Statement.Suite instance Language.Python.Syntax.Statement.HasBlocks Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Syntax.Statement.HasBlocks Language.Python.Syntax.Statement.SmallStatement instance Language.Python.Syntax.Statement.HasBlocks Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.Block instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.Suite instance GHC.Base.Functor (Language.Python.Syntax.Statement.Block v) instance Data.Foldable.Foldable (Language.Python.Syntax.Statement.Block v) instance Data.Traversable.Traversable (Language.Python.Syntax.Statement.Block v) instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.Statement instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.Block instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.Suite instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Syntax.Whitespace.HasTrailingNewline Language.Python.Syntax.Statement.Statement instance Language.Python.Syntax.Whitespace.HasTrailingNewline Language.Python.Syntax.Statement.Suite instance Language.Python.Syntax.Whitespace.HasTrailingNewline Language.Python.Syntax.Statement.Block instance Language.Python.Syntax.Whitespace.HasTrailingNewline Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.Decorator instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.Decorator instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.WithItem instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.WithItem instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.ExceptAs instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.ExceptAs instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.SmallStatement instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.SmallStatement instance Language.Python.Syntax.Whitespace.HasTrailingNewline Language.Python.Syntax.Statement.SmallStatement instance Language.Python.Optics.Validated.Validated Language.Python.Syntax.Statement.SimpleStatement instance Control.Lens.Plated.Plated (Language.Python.Syntax.Statement.SimpleStatement '[] a) instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Statement.SimpleStatement -- | Datatypes for different parts of Python syntax module Language.Python.Syntax.Types data PositionalParam v a MkPositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> PositionalParam v a [_ppAnn] :: PositionalParam v a -> a [_ppName] :: PositionalParam v a -> Ident v a [_ppType] :: PositionalParam v a -> Maybe (Colon, Expr v a) ppAnn :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) a_a2iUP ppName :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Ident v_a2iUO a_a2iUP) ppType :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Maybe (Colon, Expr v_a2iUO a_a2iUP)) data StarParam v a MkStarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> StarParam v a [_spAnn] :: StarParam v a -> a [_spWhitespace] :: StarParam v a -> [Whitespace] [_spName] :: StarParam v a -> Ident v a [_spType] :: StarParam v a -> Maybe (Colon, Expr v a) spAnn :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) a_a2j1e spWhitespace :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) [Whitespace] spName :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) (Ident v_a2j1d a_a2j1e) spType :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) (Maybe (Colon, Expr v_a2j1d a_a2j1e)) data UnnamedStarParam (v :: [*]) a MkUnnamedStarParam :: a -> [Whitespace] -> UnnamedStarParam a [_uspAnn] :: UnnamedStarParam a -> a [_uspWhitespace] :: UnnamedStarParam a -> [Whitespace] uspAnn :: forall v_a2j79 a_a2j7a v_a2jc8 a_a2jc9. Lens (UnnamedStarParam v_a2j79 a_a2j7a) (UnnamedStarParam v_a2jc8 a_a2jc9) a_a2j7a a_a2jc9 uspWhitespace :: forall v_a2j79 a_a2j7a v_a2jca. Lens (UnnamedStarParam v_a2j79 a_a2j7a) (UnnamedStarParam v_a2jca a_a2j7a) [Whitespace] [Whitespace] data KeywordParam v a MkKeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> KeywordParam v a [_kpAnn] :: KeywordParam v a -> a [_kpName] :: KeywordParam v a -> Ident v a [_kpType] :: KeywordParam v a -> Maybe (Colon, Expr v a) [_kpEquals] :: KeywordParam v a -> [Whitespace] [_kpExpr] :: KeywordParam v a -> Expr v a kpAnn :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) a_a2iMG kpName :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Ident v_a2iMF a_a2iMG) kpType :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Maybe (Colon, Expr v_a2iMF a_a2iMG)) kpEquals :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) [Whitespace] kpExpr :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Expr v_a2iMF a_a2iMG) data Fundef v a MkFundef :: a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> Fundef v a [_fdAnn] :: Fundef v a -> a [_fdDecorators] :: Fundef v a -> [Decorator v a] [_fdIndents] :: Fundef v a -> Indents a [_fdAsync] :: Fundef v a -> Maybe (NonEmpty Whitespace) [_fdDefSpaces] :: Fundef v a -> NonEmpty Whitespace [_fdName] :: Fundef v a -> Ident v a [_fdLeftParenSpaces] :: Fundef v a -> [Whitespace] [_fdParameters] :: Fundef v a -> CommaSep (Param v a) [_fdRightParenSpaces] :: Fundef v a -> [Whitespace] [_fdReturnType] :: Fundef v a -> Maybe ([Whitespace], Expr v a) [_fdBody] :: Fundef v a -> Suite v a fdAnn :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) a_a2im3 fdDecorators :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Decorator v_a2im2 a_a2im3] fdIndents :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Indents a_a2im3) fdAsync :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe (NonEmpty Whitespace)) fdDefSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (NonEmpty Whitespace) fdName :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Ident v_a2im2 a_a2im3) fdLeftParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace] fdParameters :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (CommaSep (Param v_a2im2 a_a2im3)) fdRightParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace] fdReturnType :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe ([Whitespace], Expr v_a2im2 a_a2im3)) fdBody :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Suite v_a2im2 a_a2im3) data ClassDef v a MkClassDef :: a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> ClassDef v a [_cdAnn] :: ClassDef v a -> a [_cdDecorators] :: ClassDef v a -> [Decorator v a] [_cdIndents] :: ClassDef v a -> Indents a [_cdClass] :: ClassDef v a -> NonEmpty Whitespace [_cdName] :: ClassDef v a -> Ident v a [_cdArguments] :: ClassDef v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) [_cdBody] :: ClassDef v a -> Suite v a cdAnn :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) a_a2keL cdDecorators :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) [Decorator v_a2keK a_a2keL] cdIndents :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Indents a_a2keL) cdClass :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (NonEmpty Whitespace) cdName :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Ident v_a2keK a_a2keL) cdArguments :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Maybe ([Whitespace], Maybe (CommaSep1' (Arg v_a2keK a_a2keL)), [Whitespace])) cdBody :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Suite v_a2keK a_a2keL) data If v a MkIf :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [Elif v a] -> Maybe (Else v a) -> If v a [_ifAnn] :: If v a -> a [_ifIndents] :: If v a -> Indents a [_ifIf] :: If v a -> [Whitespace] [_ifCond] :: If v a -> Expr v a [_ifBody] :: If v a -> Suite v a [_ifElifs] :: If v a -> [Elif v a] [_ifElse] :: If v a -> Maybe (Else v a) ifAnn :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) a_a2jpA ifIndents :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Indents a_a2jpA) ifIf :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Whitespace] ifCond :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Expr v_a2jpz a_a2jpA) ifBody :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Suite v_a2jpz a_a2jpA) ifElifs :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Elif v_a2jpz a_a2jpA] ifElse :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Maybe (Else v_a2jpz a_a2jpA)) data Elif v a MkElif :: Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Elif v a [_elifIndents] :: Elif v a -> Indents a [_elifElif] :: Elif v a -> [Whitespace] [_elifCond] :: Elif v a -> Expr v a [_elifBody] :: Elif v a -> Suite v a elifIndents :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Indents a_a2jiD) elifElif :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) [Whitespace] elifCond :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Expr v_a2jiC a_a2jiD) elifBody :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Suite v_a2jiC a_a2jiD) data For v a MkFor :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Else v a) -> For v a [_forAnn] :: For v a -> a [_forIndents] :: For v a -> Indents a [_forAsync] :: For v a -> Maybe (NonEmpty Whitespace) [_forFor] :: For v a -> [Whitespace] [_forBinder] :: For v a -> Expr v a [_forIn] :: For v a -> [Whitespace] [_forCollection] :: For v a -> CommaSep1' (Expr v a) [_forBody] :: For v a -> Suite v a [_forElse] :: For v a -> Maybe (Else v a) forAnn :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) a_a2jxZ forIndents :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Indents a_a2jxZ) forAsync :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Maybe (NonEmpty Whitespace)) forFor :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) [Whitespace] forBinder :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Expr v_a2jxY a_a2jxZ) forIn :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) [Whitespace] forCollection :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (CommaSep1' (Expr v_a2jxY a_a2jxZ)) forBody :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Suite v_a2jxY a_a2jxZ) forElse :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Maybe (Else v_a2jxY a_a2jxZ)) data While v a MkWhile :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Else v a) -> While v a [_whileAnn] :: While v a -> a [_whileIndents] :: While v a -> Indents a [_whileWhile] :: While v a -> [Whitespace] [_whileCond] :: While v a -> Expr v a [_whileBody] :: While v a -> Suite v a [_whileElse] :: While v a -> Maybe (Else v a) whileAnn :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) a_a2iFx whileIndents :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Indents a_a2iFx) whileWhile :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) [Whitespace] whileCond :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Expr v_a2iFw a_a2iFx) whileBody :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Suite v_a2iFw a_a2iFx) whileElse :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Maybe (Else v_a2iFw a_a2iFx)) data TryExcept v a MkTryExcept :: a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Except v a) -> Maybe (Else v a) -> Maybe (Finally v a) -> TryExcept v a [_teAnn] :: TryExcept v a -> a [_teIndents] :: TryExcept v a -> Indents a [_teTry] :: TryExcept v a -> [Whitespace] [_teBody] :: TryExcept v a -> Suite v a [_teExcepts] :: TryExcept v a -> NonEmpty (Except v a) [_teElse] :: TryExcept v a -> Maybe (Else v a) [_teFinally] :: TryExcept v a -> Maybe (Finally v a) teAnn :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) a_a2jXO teIndents :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Indents a_a2jXO) teTry :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) [Whitespace] teBody :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Suite v_a2jXN a_a2jXO) teExcepts :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (NonEmpty (Except v_a2jXN a_a2jXO)) teElse :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Else v_a2jXN a_a2jXO)) teFinally :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Finally v_a2jXN a_a2jXO)) data Except v a MkExcept :: Indents a -> [Whitespace] -> Maybe (ExceptAs v a) -> Suite v a -> Except v a [_exceptIndents] :: Except v a -> Indents a [_exceptExcept] :: Except v a -> [Whitespace] [_exceptExceptAs] :: Except v a -> Maybe (ExceptAs v a) [_exceptBody] :: Except v a -> Suite v a exceptIndents :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Indents a_a2jRN) exceptExcept :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) [Whitespace] exceptExceptAs :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Maybe (ExceptAs v_a2jRM a_a2jRN)) exceptBody :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Suite v_a2jRM a_a2jRN) data TryFinally v a MkTryFinally :: a -> Indents a -> [Whitespace] -> Suite v a -> Finally v a -> TryFinally v a [_tfAnn] :: TryFinally v a -> a [_tfIndents] :: TryFinally v a -> Indents a [_tfTry] :: TryFinally v a -> [Whitespace] [_tfBody] :: TryFinally v a -> Suite v a [_tfFinally] :: TryFinally v a -> Finally v a tfAnn :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) a_a2k6d tfIndents :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) (Indents a_a2k6d) tfTry :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) [Whitespace] tfBody :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) (Suite v_a2k6c a_a2k6d) tfFinally :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) (Finally v_a2k6c a_a2k6d) data Finally v a MkFinally :: Indents a -> [Whitespace] -> Suite v a -> Finally v a [_finallyIndents] :: Finally v a -> Indents a [_finallyFinally] :: Finally v a -> [Whitespace] [_finallyBody] :: Finally v a -> Suite v a finallyIndents :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) (Indents a_a2jJj) finallyFinally :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) [Whitespace] finallyBody :: forall v_a2jJi a_a2jJj v_a2jRn. Lens (Finally v_a2jJi a_a2jJj) (Finally v_a2jRn a_a2jJj) (Suite v_a2jJi a_a2jJj) (Suite v_a2jRn a_a2jJj) data With v a MkWith :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> With v a [_withAnn] :: With v a -> a [_withIndents] :: With v a -> Indents a [_withAsync] :: With v a -> Maybe (NonEmpty Whitespace) [_withWith] :: With v a -> [Whitespace] [_withItems] :: With v a -> CommaSep1 (WithItem v a) [_withBody] :: With v a -> Suite v a withAnn :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) a_a2knY withIndents :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Indents a_a2knY) withAsync :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Maybe (NonEmpty Whitespace)) withWith :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) [Whitespace] withItems :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (CommaSep1 (WithItem v_a2knX a_a2knY)) withBody :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Suite v_a2knX a_a2knY) data Else v a MkElse :: Indents a -> [Whitespace] -> Suite v a -> Else v a [_elseIndents] :: Else v a -> Indents a [_elseElse] :: Else v a -> [Whitespace] [_elseBody] :: Else v a -> Suite v a elseIndents :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) (Indents a_a2ivo) elseElse :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) [Whitespace] elseBody :: forall v_a2ivn a_a2ivo v_a2iF5. Lens (Else v_a2ivn a_a2ivo) (Else v_a2iF5 a_a2ivo) (Suite v_a2ivn a_a2ivo) (Suite v_a2iF5 a_a2ivo) data None (v :: [*]) a MkNone :: a -> [Whitespace] -> None a [_noneAnn] :: None a -> a [_noneWhitespace] :: None a -> [Whitespace] noneAnn :: forall v_a2kRA a_a2kRB v_a2kWD a_a2kWE. Lens (None v_a2kRA a_a2kRB) (None v_a2kWD a_a2kWE) a_a2kRB a_a2kWE noneWhitespace :: forall v_a2kRA a_a2kRB v_a2kWF. Lens (None v_a2kRA a_a2kRB) (None v_a2kWF a_a2kRB) [Whitespace] [Whitespace] data Call v a MkCall :: a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Call v a [_callAnn] :: Call v a -> a [_callFunction] :: Call v a -> Expr v a [_callLeftParen] :: Call v a -> [Whitespace] [_callArguments] :: Call v a -> Maybe (CommaSep1' (Arg v a)) [_callRightParen] :: Call v a -> [Whitespace] callAnn :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) a_a2jct callFunction :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Expr v_a2jcs a_a2jct) callLeftParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace] callArguments :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Maybe (CommaSep1' (Arg v_a2jcs a_a2jct))) callRightParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace] data Tuple v a MkTuple :: a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Tuple v a [_tupleAnn] :: Tuple v a -> a [_tupleHead] :: Tuple v a -> TupleItem v a [_tupleComma] :: Tuple v a -> Comma [_tupleTail] :: Tuple v a -> Maybe (CommaSep1' (TupleItem v a)) tupleAnn :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) a_a2kxe tupleHead :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) (TupleItem v_a2kxd a_a2kxe) tupleComma :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) Comma tupleTail :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) (Maybe (CommaSep1' (TupleItem v_a2kxd a_a2kxe))) data TupleUnpack v a MkTupleUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> TupleUnpack v a [_tupleUnpackAnn] :: TupleUnpack v a -> a [_tupleUnpackParens] :: TupleUnpack v a -> [([Whitespace], [Whitespace])] [_tupleUnpackWhitespace] :: TupleUnpack v a -> [Whitespace] [_tupleUnpackValue] :: TupleUnpack v a -> Expr v a tupleUnpackAnn :: forall v_a2kWW a_a2kWX. Lens' (TupleUnpack v_a2kWW a_a2kWX) a_a2kWX tupleUnpackParens :: forall v_a2kWW a_a2kWX. Lens' (TupleUnpack v_a2kWW a_a2kWX) [([Whitespace], [Whitespace])] tupleUnpackWhitespace :: forall v_a2kWW a_a2kWX. Lens' (TupleUnpack v_a2kWW a_a2kWX) [Whitespace] tupleUnpackValue :: forall v_a2kWW a_a2kWX v_a2l21. Lens (TupleUnpack v_a2kWW a_a2kWX) (TupleUnpack v_a2l21 a_a2kWX) (Expr v_a2kWW a_a2kWX) (Expr v_a2l21 a_a2kWX) data List v a MkList :: a -> [Whitespace] -> Maybe (CommaSep1' (ListItem v a)) -> [Whitespace] -> List v a [_listAnn] :: List v a -> a [_listWhitespaceLeft] :: List v a -> [Whitespace] [_listBody] :: List v a -> Maybe (CommaSep1' (ListItem v a)) [_listWhitespaceRight] :: List v a -> [Whitespace] listAnn :: forall v_a2kEA a_a2kEB. Lens' (List v_a2kEA a_a2kEB) a_a2kEB listWhitespaceLeft :: forall v_a2kEA a_a2kEB. Lens' (List v_a2kEA a_a2kEB) [Whitespace] listBody :: forall v_a2kEA a_a2kEB v_a2kKt. Lens (List v_a2kEA a_a2kEB) (List v_a2kKt a_a2kEB) (Maybe (CommaSep1' (ListItem v_a2kEA a_a2kEB))) (Maybe (CommaSep1' (ListItem v_a2kKt a_a2kEB))) listWhitespaceRight :: forall v_a2kEA a_a2kEB. Lens' (List v_a2kEA a_a2kEB) [Whitespace] data ListUnpack v a MkListUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> ListUnpack v a [_listUnpackAnn] :: ListUnpack v a -> a [_listUnpackParens] :: ListUnpack v a -> [([Whitespace], [Whitespace])] [_listUnpackWhitespace] :: ListUnpack v a -> [Whitespace] [_listUnpackValue] :: ListUnpack v a -> Expr v a listUnpackAnn :: forall v_a2kL2 a_a2kL3. Lens' (ListUnpack v_a2kL2 a_a2kL3) a_a2kL3 listUnpackParens :: forall v_a2kL2 a_a2kL3. Lens' (ListUnpack v_a2kL2 a_a2kL3) [([Whitespace], [Whitespace])] listUnpackWhitespace :: forall v_a2kL2 a_a2kL3. Lens' (ListUnpack v_a2kL2 a_a2kL3) [Whitespace] listUnpackValue :: forall v_a2kL2 a_a2kL3 v_a2kR3. Lens (ListUnpack v_a2kL2 a_a2kL3) (ListUnpack v_a2kR3 a_a2kL3) (Expr v_a2kL2 a_a2kL3) (Expr v_a2kR3 a_a2kL3) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.TupleUnpack v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.TupleUnpack v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.None v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.None v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.ListUnpack v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.ListUnpack v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.List v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.List v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.Tuple v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.Tuple v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.With v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.With v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.ClassDef v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.ClassDef v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.TryFinally v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.TryFinally v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.TryExcept v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.TryExcept v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.Except v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.Except v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.Finally v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.Finally v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.For v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.For v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.If v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.If v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.Elif v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.Elif v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.Call v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.Call v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.UnnamedStarParam v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.UnnamedStarParam v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.StarParam v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.StarParam v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.PositionalParam v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.PositionalParam v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.KeywordParam v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.KeywordParam v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.While v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.While v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.Else v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.Else v a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Types.Fundef v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Types.Fundef v a) module Language.Python.Syntax.Module -- | A Python Module, which is stored as a sequence of statements. A -- module corresponds to one source file of Python code. data Module v a ModuleEmpty :: Module v a ModuleBlankFinal :: Blank a -> Module v a ModuleBlank :: Blank a -> Newline -> Module v a -> Module v a ModuleStatement :: Statement v a -> Module v a -> Module v a instance Data.Traversable.Traversable (Language.Python.Syntax.Module.Module v) instance Data.Foldable.Foldable (Language.Python.Syntax.Module.Module v) instance GHC.Base.Functor (Language.Python.Syntax.Module.Module v) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Module.Module v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Module.Module v a) instance Language.Python.Syntax.Statement.HasStatements Language.Python.Syntax.Module.Module -- | The abstract syntax tree for Python. -- -- Key datatypes include Module, Statement, and -- SimpleStatement. module Language.Python.Syntax module Language.Python.Optics.Newlines class HasNewlines s -- | Traversal' targeting all of thie Newlines in a structure -- -- This only targets places that contain the Newline datatype; it -- doesn't target newline characters in string literals, for example. _Newlines :: HasNewlines s => Traversal' s Newline instance (Language.Python.Optics.Newlines.HasNewlines a, Language.Python.Optics.Newlines.HasNewlines b) => Language.Python.Optics.Newlines.HasNewlines (a, b) instance (Language.Python.Optics.Newlines.HasNewlines a, Language.Python.Optics.Newlines.HasNewlines b, Language.Python.Optics.Newlines.HasNewlines c) => Language.Python.Optics.Newlines.HasNewlines (a, b, c) instance (Language.Python.Optics.Newlines.HasNewlines a, Language.Python.Optics.Newlines.HasNewlines b, Language.Python.Optics.Newlines.HasNewlines c, Language.Python.Optics.Newlines.HasNewlines d) => Language.Python.Optics.Newlines.HasNewlines (a, b, c, d) instance Language.Python.Optics.Newlines.HasNewlines (e a) => Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Import.ImportAs e v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.ModuleNames.RelativeModuleName v a) instance (Language.Python.Optics.Newlines.HasNewlines a, Language.Python.Optics.Newlines.HasNewlines b) => Language.Python.Optics.Newlines.HasNewlines (Data.Either.Either a b) instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Whitespace.Newline instance Language.Python.Optics.Newlines.HasNewlines a => Language.Python.Optics.Newlines.HasNewlines [a] instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Whitespace.Whitespace instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Whitespace.Blank a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.Block v a) instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Punctuation.Colon instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Punctuation.Dot instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Punctuation.Comma instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Punctuation.At instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Punctuation.Semicolon a) instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Punctuation.Equals instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.Suite v a) instance Language.Python.Optics.Newlines.HasNewlines Language.Python.Syntax.Whitespace.Indent instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Whitespace.Indents a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Operator.Unary.UnOp a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Operator.Binary.BinOp a) instance Language.Python.Optics.Newlines.HasNewlines a => Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.CommaSep.CommaSep a) instance Language.Python.Optics.Newlines.HasNewlines a => Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.CommaSep.CommaSep1 a) instance Language.Python.Optics.Newlines.HasNewlines a => Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.CommaSep.CommaSep1' a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Ident.Ident v a) instance Language.Python.Optics.Newlines.HasNewlines a => Language.Python.Optics.Newlines.HasNewlines (GHC.Maybe.Maybe a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.Param v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.Arg v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.CompFor v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.CompIf v a) instance Language.Python.Optics.Newlines.HasNewlines (e v a) => Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.Comprehension e v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.TupleItem v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.ListItem v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.SetItem v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.DictItem v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.Subscript v a) instance Language.Python.Optics.Newlines.HasNewlines a => Language.Python.Optics.Newlines.HasNewlines (GHC.Base.NonEmpty a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Strings.StringLiteral a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Expr.Expr v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.Decorator v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.ExceptAs v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.WithItem v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.CompoundStatement v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.ModuleNames.ModuleName v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Import.ImportTargets v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.SimpleStatement v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.SmallStatement v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Statement.Statement v a) instance Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Module.Module v a) module Language.Python.Internal.Token -- | A PyToken is a single lexical token of Python source. A -- PyToken has an optional annotation, which can be '()' when no -- annotation is desired. data PyToken a TkIf :: a -> PyToken a TkElse :: a -> PyToken a TkElif :: a -> PyToken a TkWhile :: a -> PyToken a TkAssert :: a -> PyToken a TkDef :: a -> PyToken a TkReturn :: a -> PyToken a TkPass :: a -> PyToken a TkBreak :: a -> PyToken a TkContinue :: a -> PyToken a TkTrue :: a -> PyToken a TkFalse :: a -> PyToken a TkNone :: a -> PyToken a TkEllipsis :: a -> PyToken a TkOr :: a -> PyToken a TkAnd :: a -> PyToken a TkIs :: a -> PyToken a TkNot :: a -> PyToken a TkGlobal :: a -> PyToken a TkNonlocal :: a -> PyToken a TkDel :: a -> PyToken a TkLambda :: a -> PyToken a TkImport :: a -> PyToken a TkFrom :: a -> PyToken a TkAs :: a -> PyToken a TkRaise :: a -> PyToken a TkTry :: a -> PyToken a TkExcept :: a -> PyToken a TkFinally :: a -> PyToken a TkClass :: a -> PyToken a TkRightArrow :: a -> PyToken a TkWith :: a -> PyToken a TkFor :: a -> PyToken a TkIn :: a -> PyToken a TkYield :: a -> PyToken a TkInt :: IntLiteral a -> PyToken a TkFloat :: FloatLiteral a -> PyToken a TkImag :: ImagLiteral a -> PyToken a TkIdent :: String -> a -> PyToken a TkString :: Maybe StringPrefix -> StringType -> QuoteType -> [PyChar] -> a -> PyToken a TkBytes :: BytesPrefix -> StringType -> QuoteType -> [PyChar] -> a -> PyToken a TkRawString :: RawStringPrefix -> StringType -> QuoteType -> [PyChar] -> a -> PyToken a TkRawBytes :: RawBytesPrefix -> StringType -> QuoteType -> [PyChar] -> a -> PyToken a TkSpace :: a -> PyToken a TkTab :: a -> PyToken a TkNewline :: Newline -> a -> PyToken a TkLeftBracket :: a -> PyToken a TkRightBracket :: a -> PyToken a TkLeftParen :: a -> PyToken a TkRightParen :: a -> PyToken a TkLeftBrace :: a -> PyToken a TkRightBrace :: a -> PyToken a TkLt :: a -> PyToken a TkLte :: a -> PyToken a TkEq :: a -> PyToken a TkDoubleEq :: a -> PyToken a TkBangEq :: a -> PyToken a TkGt :: a -> PyToken a TkGte :: a -> PyToken a TkContinued :: Newline -> a -> PyToken a TkColon :: a -> PyToken a TkSemicolon :: a -> PyToken a TkComma :: a -> PyToken a TkDot :: a -> PyToken a TkPlus :: a -> PyToken a TkMinus :: a -> PyToken a TkTilde :: a -> PyToken a TkComment :: Comment a -> PyToken a TkStar :: a -> PyToken a TkDoubleStar :: a -> PyToken a TkSlash :: a -> PyToken a TkDoubleSlash :: a -> PyToken a TkPercent :: a -> PyToken a TkShiftLeft :: a -> PyToken a TkShiftRight :: a -> PyToken a TkPlusEq :: a -> PyToken a TkMinusEq :: a -> PyToken a TkStarEq :: a -> PyToken a TkAtEq :: a -> PyToken a TkAt :: a -> PyToken a TkSlashEq :: a -> PyToken a TkPercentEq :: a -> PyToken a TkAmpersandEq :: a -> PyToken a TkPipeEq :: a -> PyToken a TkCaretEq :: a -> PyToken a TkShiftLeftEq :: a -> PyToken a TkShiftRightEq :: a -> PyToken a TkDoubleStarEq :: a -> PyToken a TkDoubleSlashEq :: a -> PyToken a TkPipe :: a -> PyToken a TkCaret :: a -> PyToken a TkAmpersand :: a -> PyToken a TkIndent :: a -> Indents a -> PyToken a TkLevel :: a -> Indents a -> PyToken a TkDedent :: a -> PyToken a -- | Get the annotation from a PyToken. pyTokenAnn :: PyToken a -> a instance Data.Functor.Classes.Ord1 Language.Python.Internal.Token.PyToken instance GHC.Classes.Eq (Language.Python.Internal.Token.PyToken a) instance GHC.Classes.Ord (Language.Python.Internal.Token.PyToken a) instance Data.Functor.Classes.Eq1 Language.Python.Internal.Token.PyToken instance GHC.Base.Functor Language.Python.Internal.Token.PyToken instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Token.PyToken a) module Language.Python.Optics.Indents -- | Traversal' targeting the indent-chunks in a structure -- -- e.g. -- -- This is one indent chunk: -- --
--   def a():
--       pass
--       if b:
--           pass
--   ^^^^
--   
-- -- and this is another -- --
--   def a():
--       pass
--       if b:
--           pass
--       ^^^^
--   
_Indent :: HasIndents s a => Traversal' s [Whitespace] class HasIndents s a | s -> a -- | Traversal' targeting the indentation inside a structure -- -- Note: whitespace inside 'enclosed forms' (such as lists or tuples) is -- not considered indentation. -- -- e.g. -- -- In the following code, there is only one chunk of indentation: -- --
--   def a():
--       [ b
--       , c
--       , d
--       ]
--   
-- -- it's here: -- --
--   def a():
--       [ b
--   ^^^^
--       , c
--       , d
--       ]
--   
-- -- The rest is whitespace that is internal to the list. _Indents :: HasIndents s a => Traversal' s (Indents a) instance Language.Python.Optics.Indents.HasIndents (Language.Python.Internal.Token.PyToken a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.Fundef '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.For '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.TryFinally '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.TryExcept '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.Except '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.Finally '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.If '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.While '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.Elif '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.Else '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Statement.SmallStatement '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Statement.Statement '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Statement.Block '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Statement.Suite '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Statement.Decorator '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.ClassDef '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Types.With '[] a) a instance Language.Python.Optics.Indents.HasIndents (Language.Python.Syntax.Statement.CompoundStatement '[] a) a -- | Optics for manipulating Python syntax trees module Language.Python.Optics -- | Traversal targeting the variables that would modified as a -- result of an assignment -- -- Here are some examples of assignment targets: -- --
--   a = b
--   ^
--   
-- --
--   (a, b, c) = d
--    ^  ^  ^
--   
-- --
--   [a, b, *c] = d
--    ^  ^   ^
--   
-- -- These expressions have variables on the left hand side of the -- =, but those variables don't count as assignment targets: -- --
--   a[b] = c
--   
-- --
--   a(b) = c
--   
-- --
--   {a: b} = c
--   
assignTargets :: Traversal (Expr v a) (Expr '[] a) (Ident v a) (Ident '[] a) class HasCompoundStatement s _CompoundStatement :: HasCompoundStatement s => Prism (s v a) (s '[] a) (CompoundStatement v a) (CompoundStatement '[] a) class HasFundef s _Fundef :: HasFundef s => Prism (s v a) (s '[] a) (Fundef v a) (Fundef '[] a) class HasClassDef s _ClassDef :: HasClassDef s => Prism (s v a) (s '[] a) (ClassDef v a) (ClassDef '[] a) class HasWhile s _While :: HasWhile s => Prism (s v a) (s '[] a) (While v a) (While '[] a) class HasFor s _For :: HasFor s => Prism (s v a) (s '[] a) (For v a) (For '[] a) class HasWith s _With :: HasWith s => Prism (s v a) (s '[] a) (With v a) (With '[] a) class HasIf s _If :: HasIf s => Prism (s v a) (s '[] a) (If v a) (If '[] a) _Elif :: Iso' (Elif v a) (Indents a, [Whitespace], Expr v a, Suite v a) class HasTryExcept s _TryExcept :: HasTryExcept s => Prism (s v a) (s '[] a) (TryExcept v a) (TryExcept '[] a) class HasTryFinally s _TryFinally :: HasTryFinally s => Prism (s v a) (s '[] a) (TryFinally v a) (TryFinally '[] a) _Finally :: Iso' (Finally v a) (Indents a, [Whitespace], Suite v a) _Except :: Iso' (Except v a) (Indents a, [Whitespace], Maybe (ExceptAs v a), Suite v a) _Else :: Iso' (Else v a) (Indents a, [Whitespace], Suite v a) _PositionalParam :: Prism (Param v a) (Param '[] a) (PositionalParam v a) (PositionalParam '[] a) _KeywordParam :: Prism (Param v a) (Param '[] a) (KeywordParam v a) (KeywordParam '[] a) _UnnamedStarParam :: Prism (Param v a) (Param '[] a) (UnnamedStarParam v a) (UnnamedStarParam '[] a) _StarParam :: Prism (Param v a) (Param '[] a) (StarParam v a) (StarParam '[] a) _Ident :: Prism (Expr v a) (Expr '[] a) (Ident v a) (Ident '[] a) _None :: Prism (Expr v a) (Expr '[] a) (None v a) (None '[] a) _Call :: Prism (Expr v a) (Expr '[] a) (Call v a) (Call '[] a) _Tuple :: Prism (Expr v a) (Expr '[] a) (Tuple v a) (Tuple '[] a) _TupleUnpack :: Prism (TupleItem v a) (TupleItem '[] a) (TupleUnpack v a) (TupleUnpack '[] a) tupleItems :: Traversal (Tuple v a) (Tuple '[] a) (TupleItem v a) (TupleItem '[] a) _List :: Prism (Expr v a) (Expr '[] a) (List v a) (List '[] a) _ListUnpack :: Prism (ListItem v a) (ListItem '[] a) (ListUnpack v a) (ListUnpack '[] a) listItems :: Traversal (List v a) (List '[] a) (ListItem v a) (ListItem '[] a) instance Language.Python.Optics.HasWith Language.Python.Syntax.Types.With instance Language.Python.Optics.HasWith Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasWith Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasClassDef Language.Python.Syntax.Types.ClassDef instance Language.Python.Optics.HasClassDef Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasClassDef Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasFor Language.Python.Syntax.Types.For instance Language.Python.Optics.HasFor Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasFor Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasTryFinally Language.Python.Syntax.Types.TryFinally instance Language.Python.Optics.HasTryFinally Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasTryFinally Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasTryExcept Language.Python.Syntax.Types.TryExcept instance Language.Python.Optics.HasTryExcept Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasTryExcept Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasIf Language.Python.Syntax.Types.If instance Language.Python.Optics.HasIf Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasIf Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasWhile Language.Python.Syntax.Types.While instance Language.Python.Optics.HasWhile Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasWhile Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasFundef Language.Python.Syntax.Types.Fundef instance Language.Python.Optics.HasFundef Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasFundef Language.Python.Syntax.Statement.Statement instance Language.Python.Optics.HasCompoundStatement Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.Optics.HasCompoundStatement Language.Python.Syntax.Statement.Statement -- | This module only exists as our current best solution to decoupling -- parts of the concrete syntax from abstract syntax. You won't need to -- care about its existence and hopefully it will be deleted soon. module Language.Python.Internal.Syntax.IR class AsIRError s a | s -> a _InvalidUnpacking :: AsIRError s a => Prism' s a data IRError a -- | Unpacking ( *value ) was used in an invalid position InvalidUnpacking :: a -> IRError a fromIRError :: AsIRError s a => IRError a -> s data SmallStatement a MkSmallStatement :: SimpleStatement a -> [(Semicolon a, SimpleStatement a)] -> Maybe (Semicolon a) -> Maybe (Comment a) -> Maybe Newline -> SmallStatement a data Statement a SmallStatement :: Indents a -> SmallStatement a -> Statement a CompoundStatement :: CompoundStatement a -> Statement a data CompoundStatement a Fundef :: a -> [Decorator a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident '[] a -> [Whitespace] -> CommaSep (Param a) -> [Whitespace] -> Maybe ([Whitespace], Expr a) -> Suite a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_unsafeCsFundefDecorators] :: CompoundStatement a -> [Decorator a] [_csIndents] :: CompoundStatement a -> Indents a -- |
--   ['async' <spaces>]
--   
[_unsafeCsFundefAsync] :: CompoundStatement a -> Maybe (NonEmpty Whitespace) -- |
--   'def' <spaces>
--   
[_unsafeCsFundefDef] :: CompoundStatement a -> NonEmpty Whitespace -- |
--   <ident>
--   
[_unsafeCsFundefName] :: CompoundStatement a -> Ident '[] a -- |
--   '(' <spaces>
--   
[_unsafeCsFundefLeftParen] :: CompoundStatement a -> [Whitespace] -- |
--   <parameters>
--   
[_unsafeCsFundefParameters] :: CompoundStatement a -> CommaSep (Param a) -- |
--   ')' <spaces>
--   
[_unsafeCsFundefRightParen] :: CompoundStatement a -> [Whitespace] -- |
--   ['->' <spaces> <expr>]
--   
[_unsafeCsFundefReturnType] :: CompoundStatement a -> Maybe ([Whitespace], Expr a) -- |
--   <suite>
--   
[_unsafeCsFundefBody] :: CompoundStatement a -> Suite a If :: a -> Indents a -> [Whitespace] -> Expr a -> Suite a -> [(Indents a, [Whitespace], Expr a, Suite a)] -> Maybe (Indents a, [Whitespace], Suite a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'if' <spaces>
--   
[_unsafeCsIfIf] :: CompoundStatement a -> [Whitespace] -- |
--   <expr>
--   
[_unsafeCsIfCond] :: CompoundStatement a -> Expr a -- |
--   <suite>
--   
[_unsafeCsIfBody] :: CompoundStatement a -> Suite a -- |
--   ('elif' <spaces> <expr> <suite>)*
--   
[_unsafeCsIfElifs] :: CompoundStatement a -> [(Indents a, [Whitespace], Expr a, Suite a)] -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsIfElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite a) While :: a -> Indents a -> [Whitespace] -> Expr a -> Suite a -> Maybe (Indents a, [Whitespace], Suite a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'while' <spaces>
--   
[_unsafeCsWhileWhile] :: CompoundStatement a -> [Whitespace] -- |
--   <expr>
--   
[_unsafeCsWhileCond] :: CompoundStatement a -> Expr a -- |
--   <suite>
--   
[_unsafeCsWhileBody] :: CompoundStatement a -> Suite a -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsWhileElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite a) TryExcept :: a -> Indents a -> [Whitespace] -> Suite a -> NonEmpty (Indents a, [Whitespace], Maybe (ExceptAs a), Suite a) -> Maybe (Indents a, [Whitespace], Suite a) -> Maybe (Indents a, [Whitespace], Suite a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'try' <spaces>
--   
[_unsafeCsTryExceptTry] :: CompoundStatement a -> [Whitespace] -- |
--   <suite>
--   
[_unsafeCsTryExceptBody] :: CompoundStatement a -> Suite a -- |
--   ('except' <spaces> <except_as> <suite>)+
--   
[_unsafeCsTryExceptExcepts] :: CompoundStatement a -> NonEmpty (Indents a, [Whitespace], Maybe (ExceptAs a), Suite a) -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsTryExceptElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite a) -- |
--   ['finally' <spaces> <suite>]
--   
[_unsafeCsTryExceptFinally] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite a) TryFinally :: a -> Indents a -> [Whitespace] -> Suite a -> Indents a -> [Whitespace] -> Suite a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'try' <spaces>
--   
[_unsafeCsTryFinallyTry] :: CompoundStatement a -> [Whitespace] -- |
--   <suite>
--   
[_unsafeCsTryFinallyTryBody] :: CompoundStatement a -> Suite a [_unsafeCsTryFinallyFinallyIndents] :: CompoundStatement a -> Indents a -- |
--   'finally' <spaces>
--   
[_unsafeCsTryFinallyFinally] :: CompoundStatement a -> [Whitespace] -- |
--   <suite>
--   
[_unsafeCsTryFinallyFinallyBody] :: CompoundStatement a -> Suite a For :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr a -> [Whitespace] -> CommaSep1' (Expr a) -> Suite a -> Maybe (Indents a, [Whitespace], Suite a) -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_csIndents] :: CompoundStatement a -> Indents a -- |
--   ['async' <spaces>]
--   
[_unsafeCsForAsync] :: CompoundStatement a -> Maybe (NonEmpty Whitespace) -- |
--   'for' <spaces>
--   
[_unsafeCsForFor] :: CompoundStatement a -> [Whitespace] -- |
--   <expr>
--   
[_unsafeCsForBinder] :: CompoundStatement a -> Expr a -- |
--   'in' <spaces>
--   
[_unsafeCsForIn] :: CompoundStatement a -> [Whitespace] -- |
--   <exprs>
--   
[_unsafeCsForCollection] :: CompoundStatement a -> CommaSep1' (Expr a) -- |
--   <suite>
--   
[_unsafeCsForBody] :: CompoundStatement a -> Suite a -- |
--   ['else' <spaces> <suite>]
--   
[_unsafeCsForElse] :: CompoundStatement a -> Maybe (Indents a, [Whitespace], Suite a) ClassDef :: a -> [Decorator a] -> Indents a -> NonEmpty Whitespace -> Ident '[] a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg a)), [Whitespace]) -> Suite a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_unsafeCsClassDefDecorators] :: CompoundStatement a -> [Decorator a] [_csIndents] :: CompoundStatement a -> Indents a -- |
--   'class' <spaces>
--   
[_unsafeCsClassDefClass] :: CompoundStatement a -> NonEmpty Whitespace -- |
--   <ident>
--   
[_unsafeCsClassDefName] :: CompoundStatement a -> Ident '[] a -- |
--   ['(' <spaces> [<args>] ')' <spaces>]
--   
[_unsafeCsClassDefArguments] :: CompoundStatement a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg a)), [Whitespace]) -- |
--   <suite>
--   
[_unsafeCsClassDefBody] :: CompoundStatement a -> Suite a With :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem a) -> Suite a -> CompoundStatement a [_csAnn] :: CompoundStatement a -> a [_csIndents] :: CompoundStatement a -> Indents a -- |
--   ['async' <spaces>]
--   
[_unsafeCsWithAsync] :: CompoundStatement a -> Maybe (NonEmpty Whitespace) -- |
--   'with' <spaces>
--   
[_unsafeCsWithWith] :: CompoundStatement a -> [Whitespace] -- |
--   <with_items>
--   
[_unsafeCsWithItems] :: CompoundStatement a -> CommaSep1 (WithItem a) -- |
--   <suite>
--   
[_unsafeCsWithBody] :: CompoundStatement a -> Suite a data SimpleStatement a Return :: a -> [Whitespace] -> Maybe (Expr a) -> SimpleStatement a Expr :: a -> Expr a -> SimpleStatement a Assign :: a -> Expr a -> NonEmpty (Equals, Expr a) -> SimpleStatement a AugAssign :: a -> Expr a -> AugAssign a -> Expr a -> SimpleStatement a Pass :: a -> [Whitespace] -> SimpleStatement a Break :: a -> [Whitespace] -> SimpleStatement a Continue :: a -> [Whitespace] -> SimpleStatement a Global :: a -> NonEmpty Whitespace -> CommaSep1 (Ident '[] a) -> SimpleStatement a Nonlocal :: a -> NonEmpty Whitespace -> CommaSep1 (Ident '[] a) -> SimpleStatement a Del :: a -> [Whitespace] -> CommaSep1' (Expr a) -> SimpleStatement a Import :: a -> NonEmpty Whitespace -> CommaSep1 (ImportAs (ModuleName '[]) '[] a) -> SimpleStatement a From :: a -> [Whitespace] -> RelativeModuleName '[] a -> [Whitespace] -> ImportTargets '[] a -> SimpleStatement a Raise :: a -> [Whitespace] -> Maybe (Expr a, Maybe ([Whitespace], Expr a)) -> SimpleStatement a Assert :: a -> [Whitespace] -> Expr a -> Maybe (Comma, Expr a) -> SimpleStatement a data Param a PositionalParam :: a -> Ident '[] a -> Maybe (Colon, Expr a) -> Param a [_paramAnn] :: Param a -> a [_paramName] :: Param a -> Ident '[] a [_paramType] :: Param a -> Maybe (Colon, Expr a) KeywordParam :: a -> Ident '[] a -> Maybe (Colon, Expr a) -> [Whitespace] -> Expr a -> Param a [_paramAnn] :: Param a -> a [_paramName] :: Param a -> Ident '[] a [_paramType] :: Param a -> Maybe (Colon, Expr a) [_unsafeKeywordParamWhitespaceRight] :: Param a -> [Whitespace] [_unsafeKeywordParamExpr] :: Param a -> Expr a StarParam :: a -> [Whitespace] -> Ident '[] a -> Maybe (Colon, Expr a) -> Param a [_paramAnn] :: Param a -> a [_unsafeStarParamWhitespace] :: Param a -> [Whitespace] [_unsafeStarParamName] :: Param a -> Ident '[] a [_paramType] :: Param a -> Maybe (Colon, Expr a) UnnamedStarParam :: a -> [Whitespace] -> Param a [_paramAnn] :: Param a -> a [_unsafeUnnamedStarParamWhitespace] :: Param a -> [Whitespace] DoubleStarParam :: a -> [Whitespace] -> Ident '[] a -> Maybe (Colon, Expr a) -> Param a [_paramAnn] :: Param a -> a [_unsafeDoubleStarParamWhitespace] :: Param a -> [Whitespace] [_paramName] :: Param a -> Ident '[] a [_paramType] :: Param a -> Maybe (Colon, Expr a) data CompIf a -- | 'if' any_spaces expr CompIf :: a -> [Whitespace] -> Expr a -> CompIf a data CompFor a -- | for any_spaces targets 'in' any_spaces -- expr CompFor :: a -> [Whitespace] -> Expr a -> [Whitespace] -> Expr a -> CompFor a data Comprehension e a -- | expr comp_for (comp_for | comp_if)* Comprehension :: a -> e a -> CompFor a -> [Either (CompFor a) (CompIf a)] -> Comprehension e a data Subscript a SubscriptExpr :: Expr a -> Subscript a SubscriptSlice :: Maybe (Expr a) -> Colon -> Maybe (Expr a) -> Maybe (Colon, Maybe (Expr a)) -> Subscript a data DictItem a DictItem :: a -> Expr a -> Colon -> Expr a -> DictItem a [_dictItemAnn] :: DictItem a -> a [_unsafeDictItemKey] :: DictItem a -> Expr a [_unsafeDictItemColon] :: DictItem a -> Colon [_unsafeDictItemvalue] :: DictItem a -> Expr a DictUnpack :: a -> [Whitespace] -> Expr a -> DictItem a [_dictItemAnn] :: DictItem a -> a [_unsafeDictItemUnpackWhitespace] :: DictItem a -> [Whitespace] [_unsafeDictItemUnpackValue] :: DictItem a -> Expr a data Arg a PositionalArg :: a -> Expr a -> Arg a [_argAnn] :: Arg a -> a [_argExpr] :: Arg a -> Expr a KeywordArg :: a -> Ident '[] a -> [Whitespace] -> Expr a -> Arg a [_argAnn] :: Arg a -> a [_unsafeKeywordArgName] :: Arg a -> Ident '[] a [_unsafeKeywordArgWhitespaceRight] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr a StarArg :: a -> [Whitespace] -> Expr a -> Arg a [_argAnn] :: Arg a -> a [_unsafeStarArgWhitespace] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr a DoubleStarArg :: a -> [Whitespace] -> Expr a -> Arg a [_argAnn] :: Arg a -> a [_unsafeDoubleStarArgWhitespace] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr a data Expr a StarExpr :: a -> [Whitespace] -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeStarExprWhitespace] :: Expr a -> [Whitespace] [_unsafeStarExprValue] :: Expr a -> Expr a Unit :: a -> [Whitespace] -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeUnitWhitespaceInner] :: Expr a -> [Whitespace] [_unsafeUnitWhitespaceRight] :: Expr a -> [Whitespace] Lambda :: a -> [Whitespace] -> CommaSep (Param a) -> Colon -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeLambdaWhitespace] :: Expr a -> [Whitespace] [_unsafeLambdaArgs] :: Expr a -> CommaSep (Param a) [_unsafeLambdaColon] :: Expr a -> Colon [_unsafeLambdaBody] :: Expr a -> Expr a Yield :: a -> [Whitespace] -> CommaSep (Expr a) -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeYieldWhitespace] :: Expr a -> [Whitespace] [_unsafeYieldValue] :: Expr a -> CommaSep (Expr a) YieldFrom :: a -> [Whitespace] -> [Whitespace] -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeYieldWhitespace] :: Expr a -> [Whitespace] [_unsafeFromWhitespace] :: Expr a -> [Whitespace] [_unsafeYieldFromValue] :: Expr a -> Expr a Ternary :: a -> Expr a -> [Whitespace] -> Expr a -> [Whitespace] -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeTernaryValue] :: Expr a -> Expr a [_unsafeTernaryWhitespaceIf] :: Expr a -> [Whitespace] [_unsafeTernaryCond] :: Expr a -> Expr a [_unsafeTernaryWhitespaceElse] :: Expr a -> [Whitespace] [_unsafeTernaryElse] :: Expr a -> Expr a ListComp :: a -> [Whitespace] -> Comprehension Expr a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeListCompWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeListCompValue] :: Expr a -> Comprehension Expr a [_unsafeListCompWhitespaceRight] :: Expr a -> [Whitespace] List :: a -> [Whitespace] -> Maybe (CommaSep1' (Expr a)) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeListWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeListValues] :: Expr a -> Maybe (CommaSep1' (Expr a)) [_unsafeListWhitespaceRight] :: Expr a -> [Whitespace] DictComp :: a -> [Whitespace] -> Comprehension DictItem a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeDictCompWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeDictCompValue] :: Expr a -> Comprehension DictItem a [_unsafeDictCompWhitespaceRight] :: Expr a -> [Whitespace] Dict :: a -> [Whitespace] -> Maybe (CommaSep1' (DictItem a)) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeDictWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeDictValues] :: Expr a -> Maybe (CommaSep1' (DictItem a)) [_unsafeDictWhitespaceRight] :: Expr a -> [Whitespace] SetComp :: a -> [Whitespace] -> Comprehension Expr a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeSetCompWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeSetCompValue] :: Expr a -> Comprehension Expr a [_unsafeSetCompWhitespaceRight] :: Expr a -> [Whitespace] Set :: a -> [Whitespace] -> CommaSep1' (Expr a) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeSetWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeSetValues] :: Expr a -> CommaSep1' (Expr a) [_unsafeSetWhitespaceRight] :: Expr a -> [Whitespace] Deref :: a -> Expr a -> [Whitespace] -> Ident '[] a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeDerefValueLeft] :: Expr a -> Expr a [_unsafeDerefWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeDerefValueRight] :: Expr a -> Ident '[] a Subscript :: a -> Expr a -> [Whitespace] -> CommaSep1' (Subscript a) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeSubscriptValueLeft] :: Expr a -> Expr a [_unsafeSubscriptWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeSubscriptValueRight] :: Expr a -> CommaSep1' (Subscript a) [_unsafeSubscriptWhitespaceRight] :: Expr a -> [Whitespace] Call :: a -> Expr a -> [Whitespace] -> Maybe (CommaSep1' (Arg a)) -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeCallFunction] :: Expr a -> Expr a [_unsafeCallWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeCallArguments] :: Expr a -> Maybe (CommaSep1' (Arg a)) [_unsafeCallWhitespaceRight] :: Expr a -> [Whitespace] None :: a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeNoneWhitespace] :: Expr a -> [Whitespace] Ellipsis :: a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeEllipsisWhitespace] :: Expr a -> [Whitespace] BinOp :: a -> Expr a -> BinOp a -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeBinOpExprLeft] :: Expr a -> Expr a [_unsafeBinOpOp] :: Expr a -> BinOp a [_unsafeBinOpExprRight] :: Expr a -> Expr a UnOp :: a -> UnOp a -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeUnOpOp] :: Expr a -> UnOp a [_unsafeUnOpValue] :: Expr a -> Expr a Parens :: a -> [Whitespace] -> Expr a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeParensWhitespaceLeft] :: Expr a -> [Whitespace] [_unsafeParensValue] :: Expr a -> Expr a [_unsafeParensWhitespaceAfter] :: Expr a -> [Whitespace] Ident :: Ident '[] a -> Expr a [_unsafeIdentValue] :: Expr a -> Ident '[] a Int :: a -> IntLiteral a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeIntValue] :: Expr a -> IntLiteral a [_unsafeIntWhitespace] :: Expr a -> [Whitespace] Float :: a -> FloatLiteral a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeFloatValue] :: Expr a -> FloatLiteral a [_unsafeFloatWhitespace] :: Expr a -> [Whitespace] Imag :: a -> ImagLiteral a -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeImagValue] :: Expr a -> ImagLiteral a [_unsafeImagWhitespace] :: Expr a -> [Whitespace] Bool :: a -> Bool -> [Whitespace] -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeBoolValue] :: Expr a -> Bool [_unsafeBoolWhitespace] :: Expr a -> [Whitespace] String :: a -> NonEmpty (StringLiteral a) -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeStringLiteralValue] :: Expr a -> NonEmpty (StringLiteral a) Tuple :: a -> Expr a -> Comma -> Maybe (CommaSep1' (Expr a)) -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeTupleHead] :: Expr a -> Expr a [_unsafeTupleWhitespace] :: Expr a -> Comma [_unsafeTupleTail] :: Expr a -> Maybe (CommaSep1' (Expr a)) Not :: a -> [Whitespace] -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeNotWhitespace] :: Expr a -> [Whitespace] [_unsafeNotValue] :: Expr a -> Expr a Generator :: a -> Comprehension Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_generatorValue] :: Expr a -> Comprehension Expr a Await :: a -> [Whitespace] -> Expr a -> Expr a [_unsafeExprAnn] :: Expr a -> a [_unsafeAwaitWhitespace] :: Expr a -> [Whitespace] [_unsafeAwaitValue] :: Expr a -> Expr a exprAnn :: Lens' (Expr a) a data Suite a SuiteOne :: a -> Colon -> SmallStatement a -> Suite a SuiteMany :: a -> Colon -> Maybe (Comment a) -> Newline -> Block a -> Suite a data Block a Block :: [(Blank a, Newline)] -> Statement a -> [Either (Blank a, Newline) (Statement a)] -> Block a [_blockBlankLines] :: Block a -> [(Blank a, Newline)] [_blockHead] :: Block a -> Statement a [_blockTail] :: Block a -> [Either (Blank a, Newline) (Statement a)] data WithItem a WithItem :: a -> Expr a -> Maybe ([Whitespace], Expr a) -> WithItem a [_withItemAnn] :: WithItem a -> a [_withItemValue] :: WithItem a -> Expr a [_withItemBinder] :: WithItem a -> Maybe ([Whitespace], Expr a) data Decorator a Decorator :: a -> Indents a -> At -> Expr a -> Maybe (Comment a) -> Newline -> [(Blank a, Newline)] -> Decorator a [_decoratorAnn] :: Decorator a -> a [_decoratorIndents] :: Decorator a -> Indents a [_decoratorAt] :: Decorator a -> At [_decoratorExpr] :: Decorator a -> Expr a [_decoratorComment] :: Decorator a -> Maybe (Comment a) [_decoratorNewline] :: Decorator a -> Newline [_decoratorBlankLines] :: Decorator a -> [(Blank a, Newline)] data ExceptAs a ExceptAs :: a -> Expr a -> Maybe ([Whitespace], Ident '[] a) -> ExceptAs a [_exceptAsAnn] :: ExceptAs a -> a [_exceptAsExpr] :: ExceptAs a -> Expr a [_exceptAsName] :: ExceptAs a -> Maybe ([Whitespace], Ident '[] a) data Module a ModuleEmpty :: Module a ModuleBlankFinal :: Blank a -> Module a ModuleBlank :: Blank a -> Newline -> Module a -> Module a ModuleStatement :: Statement a -> Module a -> Module a data FromIRContext FromIRContext :: Bool -> FromIRContext [_allowStarred] :: FromIRContext -> Bool allowStarred :: Iso' FromIRContext Bool fromIR_expr :: AsIRError e a => Expr a -> Validation (NonEmpty e) (Expr '[] a) fromIR_suite :: AsIRError e a => Suite a -> Validation (NonEmpty e) (Suite '[] a) fromIR_param :: AsIRError e a => Param a -> Validation (NonEmpty e) (Param '[] a) fromIR_arg :: AsIRError e a => Arg a -> Validation (NonEmpty e) (Arg '[] a) fromIR_decorator :: AsIRError e a => Decorator a -> Validation (NonEmpty e) (Decorator '[] a) fromIR_exceptAs :: AsIRError e a => ExceptAs a -> Validation (NonEmpty e) (ExceptAs '[] a) fromIR_withItem :: AsIRError e a => WithItem a -> Validation (NonEmpty e) (WithItem '[] a) fromIR_comprehension :: AsIRError e a => (ex a -> Validation (NonEmpty e) (ex' '[] a)) -> Comprehension ex a -> Validation (NonEmpty e) (Comprehension ex' '[] a) fromIR_dictItem :: AsIRError e a => DictItem a -> Validation (NonEmpty e) (DictItem '[] a) fromIR_subscript :: AsIRError e a => Subscript a -> Validation (NonEmpty e) (Subscript '[] a) fromIR_block :: AsIRError e a => Block a -> Validation (NonEmpty e) (Block '[] a) fromIR_compFor :: AsIRError e a => CompFor a -> Validation (NonEmpty e) (CompFor '[] a) fromIR_compIf :: AsIRError e a => CompIf a -> Validation (NonEmpty e) (CompIf '[] a) fromIR_smallStatement :: AsIRError e a => SmallStatement a -> Validation (NonEmpty e) (SmallStatement '[] a) fromIR_statement :: AsIRError e a => Statement a -> Validation (NonEmpty e) (Statement '[] a) fromIR_SimpleStatement :: AsIRError e a => SimpleStatement a -> Validation (NonEmpty e) (SimpleStatement '[] a) fromIR_compoundStatement :: AsIRError e a => CompoundStatement a -> Validation (NonEmpty e) (CompoundStatement '[] a) fromIR_listItem :: AsIRError e a => Expr a -> Validation (NonEmpty e) (ListItem '[] a) fromIR_tupleItem :: AsIRError e a => Expr a -> Validation (NonEmpty e) (TupleItem '[] a) fromIR_setItem :: AsIRError e a => Expr a -> Validation (NonEmpty e) (SetItem '[] a) fromIR :: AsIRError e a => Module a -> Validation (NonEmpty e) (Module '[] a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Module instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Module instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Module instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Module a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Module a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Statement instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Statement instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Statement instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Statement a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Statement a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Block a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Block a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Suite instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Suite instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Suite instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Suite a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Suite a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.CompoundStatement instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.CompoundStatement instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.CompoundStatement instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.CompoundStatement a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.CompoundStatement a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.ExceptAs instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.ExceptAs instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.ExceptAs instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.ExceptAs a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.ExceptAs a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Decorator instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Decorator instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Decorator instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Decorator a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Decorator a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.WithItem instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.WithItem instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.WithItem instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.WithItem a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.WithItem a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.SmallStatement instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.SmallStatement instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.SmallStatement instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.SmallStatement a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.SmallStatement a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.SimpleStatement instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.SimpleStatement instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.SimpleStatement instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.SimpleStatement a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.SimpleStatement a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Param instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Param instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Param instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Param a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Param a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.CompIf instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.CompIf instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.CompIf instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.CompIf a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.CompIf a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.CompFor instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.CompFor instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.CompFor instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.CompFor a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.CompFor a) instance (GHC.Show.Show a, GHC.Show.Show (e a)) => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Comprehension e a) instance (GHC.Classes.Eq a, GHC.Classes.Eq (e a)) => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Comprehension e a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Subscript instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Subscript instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Subscript instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Subscript a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Subscript a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.DictItem instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.DictItem instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.DictItem instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.DictItem a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.DictItem a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Arg instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Arg instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Arg instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Arg a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Arg a) instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Expr instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Expr instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Expr instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.Expr a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.Expr a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Syntax.IR.IRError a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Syntax.IR.IRError a) instance GHC.Base.Functor Language.Python.Internal.Syntax.IR.Block instance Data.Foldable.Foldable Language.Python.Internal.Syntax.IR.Block instance Data.Traversable.Traversable Language.Python.Internal.Syntax.IR.Block instance GHC.Base.Functor e => GHC.Base.Functor (Language.Python.Internal.Syntax.IR.Comprehension e) instance Data.Foldable.Foldable e => Data.Foldable.Foldable (Language.Python.Internal.Syntax.IR.Comprehension e) instance Data.Traversable.Traversable e => Data.Traversable.Traversable (Language.Python.Internal.Syntax.IR.Comprehension e) -- | There are configurations of the core syntax tree which won't print to -- valid Python if we printed them naively. Many of these we catch in the -- Syntax phase, because those mistakes correspond to some Python -- syntax error. In other cases, the mistakes are more benign and have a -- "resonable correction" which doesn't break the "print-parse -- idempotence" law. -- -- This module is where such corrections are defined module Language.Python.Internal.Render.Correction -- | Trailing commas can only be present in a parameter list of entirely -- positional arguments. This removes the bad trailing comma, and appends -- the comma's trailing whitespace to the previous token correctParams :: CommaSep (Param v a) -> CommaSep (Param v a) correctSpaces :: (PyToken () -> Text) -> [PyToken ()] -> [PyToken ()] correctNewlines :: [PyToken ()] -> [PyToken ()] -- | Two non-typed single-quoted strings cannot be lexically adjacent, -- because this would be a parse error -- -- eg. '''' or """" -- -- we correct for this by inserting a single space where required '' '' -- or "" "" correctAdjacentStrings :: NonEmpty (StringLiteral a) -> NonEmpty (StringLiteral a) quoteChar :: QuoteType -> PyChar quote :: QuoteType -> Char -- | When a backslash character, precedes an escape sequence it needs to be -- escaped so that it doesn't interfere with the backslash that begins -- the escape sequence. -- -- For example: -- -- [Char_lit '\\', Char_esc_n] would naively render to -- '\\n', which would parse to [Char_esc_bslash, -- Char_lit 'n'], breaking the parse . print -- identity correctBackslashEscapes :: [PyChar] -> [PyChar] correctBackslashes :: [PyChar] -> [PyChar] -- | (as, bs) = span p xs bs is the longest suffix that -- satisfies the predicate, and as is the prefix up to that -- point -- -- It's like the reverse of span naps :: (a -> Maybe b) -> [a] -> ([a], [b]) -- | Sometimes strings need to be corrected when certain characters follow -- a literal backslash. For example, a literal backslash followed by an -- escape sequence means that the literal backslash actually needs to be -- escaped, so that it doesn't get combined with the backslash -- in the escape sequence. correctBackslashEscapesRaw :: [PyChar] -> [PyChar] -- | It turns out that raw strings can only ever be constructed with an -- even number of trailing backslash characters. This functon corrects -- raw strings with an odd number of trailing backslash characters correctBackslashesRaw :: [PyChar] -> [PyChar] -- | Every quote in a string of a particular quote type should be escaped correctQuotes :: QuoteType -> [PyChar] -> [PyChar] -- | Every quote in short raw string that isn't preceded by a backslash -- should be escaped correctQuotesRaw :: QuoteType -> [PyChar] -> [PyChar] -- | Every third literal quote at the beginning of a long (non-raw) string -- should be escaped correctInitialQuotes :: QuoteType -> [PyChar] -> [PyChar] -- | Literal quotes at the beginning and end of a long raw string should be -- escaped correctInitialFinalQuotesLongRaw :: QuoteType -> [PyChar] -> [PyChar] -- | Literal quotes at the beginning and end of a long (non-raw) string -- should be escaped correctInitialFinalQuotesLong :: QuoteType -> [PyChar] -> [PyChar] -- | It's possible that successive statements have no newlines in between -- them. This would cause them to be displayed on the same line. In every -- line where this would be the case, we explicitly insert a line-feed -- character. correctTrailingNewline :: HasTrailingNewline s => Bool -> s v a -> s v a module Language.Python.Internal.Render -- | Render an entire Python module to Text showModule :: Module v a -> Text -- | Render a single Python statement to Text showStatement :: Statement v a -> Text -- | Render a single Python expression to Text showExpr :: Expr v a -> Text -- | A RenderOutput is an intermediate form used during rendering -- with efficient concatenation data RenderOutput a -- | Run a RenderOutput to produce a final Text. -- -- These Texts should then not be appended any more. All appending -- should be done during the RenderOutput phase. showRenderOutput :: RenderOutput a -> Text -- | Render a single token as a RenderOutput singleton :: PyToken () -> RenderOutput () renderModule :: Module v a -> RenderOutput () renderStatement :: Statement v a -> RenderOutput () renderExpr :: Expr v a -> RenderOutput () showQuoteType :: QuoteType -> Char showStringPrefix :: StringPrefix -> Text showBytesPrefix :: BytesPrefix -> Text showToken :: PyToken a -> Text showTokens :: [PyToken a] -> Text expandIndents :: PyToken a -> [PyToken ()] whitespaceTokens :: Whitespace -> [PyToken ()] commentTokens :: Comment a -> [PyToken ()] parens :: RenderOutput a -> RenderOutput a braces :: RenderOutput a -> RenderOutput a brackets :: RenderOutput a -> RenderOutput a renderWhitespace :: Whitespace -> RenderOutput () renderCommaSep :: (a -> RenderOutput ()) -> CommaSep a -> RenderOutput () renderCommaSep1 :: (a -> RenderOutput ()) -> CommaSep1 a -> RenderOutput () renderCommaSep1' :: (a -> RenderOutput ()) -> CommaSep1' a -> RenderOutput () renderIdent :: Ident v a -> RenderOutput () renderComment :: Comment a -> RenderOutput () renderModuleName :: ModuleName v a -> RenderOutput () renderDot :: Dot -> RenderOutput () renderRelativeModuleName :: RelativeModuleName v a -> RenderOutput () renderImportAs :: (e a -> RenderOutput ()) -> ImportAs e v a -> RenderOutput () renderImportTargets :: ImportTargets v a -> RenderOutput () renderSimpleStatement :: SimpleStatement v a -> RenderOutput () renderCompoundStatement :: CompoundStatement v a -> RenderOutput () renderBlock :: Block v a -> RenderOutput () renderIndent :: Indent -> RenderOutput () renderIndents :: Indents a -> RenderOutput () renderExceptAs :: ExceptAs v a -> RenderOutput () renderArg :: (Expr v a -> RenderOutput ()) -> Arg v a -> RenderOutput () renderParam :: Param v a -> RenderOutput () renderParams :: CommaSep (Param v a) -> RenderOutput () renderCompFor :: CompFor v a -> RenderOutput () renderCompIf :: CompIf v a -> RenderOutput () renderComprehension :: (e v a -> RenderOutput ()) -> Comprehension e v a -> RenderOutput () renderBinOp :: BinOp a -> RenderOutput () renderUnOp :: UnOp a -> RenderOutput () renderSubscript :: Subscript v a -> RenderOutput () renderPyChars :: QuoteType -> StringType -> [PyChar] -> Text escapeChars :: [(Char, Char)] intToHex :: Int -> Text instance GHC.Base.Monad Language.Python.Internal.Render.RenderOutput instance GHC.Base.Applicative Language.Python.Internal.Render.RenderOutput instance GHC.Base.Functor Language.Python.Internal.Render.RenderOutput module Language.Python.Render -- | Render an entire Python module to Text showModule :: Module v a -> Text -- | Render a single Python statement to Text showStatement :: Statement v a -> Text -- | Render a single Python expression to Text showExpr :: Expr v a -> Text module Language.Python.Internal.Lexer -- | Tokenize an input file, inserting indent/level/dedent tokens in -- appropriate positions according to the block structure. tokenizeWithTabs :: (AsLexicalError s Char, AsTabError s SrcInfo, AsIncorrectDedent s SrcInfo) => FilePath -> Text -> Either s [PyToken SrcInfo] data SrcInfo SrcInfo :: FilePath -> !Int -> !Int -> !Int -> !Int -> !Int -> !Int -> SrcInfo [_srcInfoName] :: SrcInfo -> FilePath [_srcInfoLineStart] :: SrcInfo -> !Int [_srcInfoLineEnd] :: SrcInfo -> !Int [_srcInfoColStart] :: SrcInfo -> !Int [_srcInfoColEnd] :: SrcInfo -> !Int [_srcInfoOffsetStart] :: SrcInfo -> !Int [_srcInfoOffsetEnd] :: SrcInfo -> !Int initialSrcInfo :: FilePath -> SrcInfo withSrcInfo :: MonadParsec e s m => m (SrcInfo -> a) -> m a class AsLexicalError s t | s -> t _LexicalError :: AsLexicalError s t => Prism' s (NonEmpty SourcePos, Maybe (ErrorItem t), Set (ErrorItem t)) -- | Convert a concrete ParseError to a value that has an instance -- of AsLexicalError -- -- This function is partial, because our parser will never use -- FancyError unsafeFromLexicalError :: (HasCallStack, AsLexicalError s t) => ParseError t Void -> s class AsTabError s a | s -> a _TabError :: AsTabError s a => Prism' s a class AsIncorrectDedent s a | s -> a _IncorrectDedent :: AsIncorrectDedent s a => Prism' s a -- | Convert a concrete TabError to a value that has an instance of -- AsTabError fromTabError :: (AsTabError s a, AsIncorrectDedent s a) => TabError a -> s data TabError a -- | Tabs and spaces were used inconsistently TabError :: a -> TabError a -- | The dedent at the end of a block doesn't match and preceding indents -- -- e.g. -- --
--   def a():
--       if b:
--           pass
--       else:
--           pass
--     pass
--   
-- -- The final line will cause an IncorrectDedent error IncorrectDedent :: a -> TabError a -- | Convert some input to a sequence of tokens. Indent and dedent tokens -- are not added (see insertTabs) tokenize :: AsLexicalError e Char => FilePath -> Text -> Either e [PyToken SrcInfo] -- | Insert indent and dedent tokens -- -- -- https://docs.python.org/3.5/reference/lexical_analysis.html#indentation insertTabs :: (Semigroup a, AsTabError s a, AsIncorrectDedent s a) => a -> [PyToken a] -> Either s [PyToken a] -- | ParseError t e represents a parse error parametrized -- over the token type t and the custom data e. -- -- Note that the stack of source positions contains current position as -- its head, and the rest of positions allows to track full sequence of -- include files with topmost source file at the end of the list. -- -- Semigroup and Monoid instances of the data type allow to -- merge parse errors from different branches of parsing. When merging -- two ParseErrors, the longest match is preferred; if positions -- are the same, custom data sets and collections of message items are -- combined. Note that fancy errors take precedence over trivial errors -- in merging. data ParseError t e -- | Trivial errors, generated by Megaparsec's machinery. The data -- constructor includes the stack of source positions, unexpected token -- (if any), and expected tokens. TrivialError :: NonEmpty SourcePos -> Maybe (ErrorItem t) -> Set (ErrorItem t) -> ParseError t e -- | Fancy, custom errors. FancyError :: NonEmpty SourcePos -> Set (ErrorFancy e) -> ParseError t e instance GHC.Num.Num a => GHC.Num.Num (Language.Python.Internal.Lexer.Summed a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.Python.Internal.Lexer.Summed a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Lexer.Summed a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Lexer.Summed a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Lexer.TabError a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Lexer.TabError a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Lexer.IndentedLine a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Lexer.IndentedLine a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Internal.Lexer.LogicalLine a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Internal.Lexer.LogicalLine a) instance GHC.Show.Show Language.Python.Internal.Lexer.SrcInfo instance GHC.Classes.Eq Language.Python.Internal.Lexer.SrcInfo instance GHC.Num.Num a => Data.FingerTree.Measured (Data.Semigroup.Internal.Sum a) (Language.Python.Internal.Lexer.Summed a) instance GHC.Base.Semigroup Language.Python.Internal.Lexer.SrcInfo module Language.Python.Internal.Parse type Parser = Parsec Void PyTokens -- | Run a parser on some input runParser :: AsParseError e (PyToken SrcInfo) => FilePath -> Parser a -> [PyToken SrcInfo] -> Either e a newtype PyTokens PyTokens :: [PyToken SrcInfo] -> PyTokens [unPyTokens] :: PyTokens -> [PyToken SrcInfo] class AsParseError s t | s -> t _ParseError :: AsParseError s t => Prism' s (NonEmpty SourcePos, Maybe (ErrorItem t), Set (ErrorItem t)) -- | Convert a concrete ParseError to a value that has an instance -- of AsParseError -- -- This function is partial because our parser will never use -- FancyError unsafeFromParseError :: (HasCallStack, AsParseError s t) => ParseError t e -> s token :: MonadParsec e PyTokens m => m Whitespace -> (PyToken SrcInfo -> Bool) -> String -> m (PyToken SrcInfo, [Whitespace]) at :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, At) colon :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, Colon) comma :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, Comma) dot :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, Dot) doubleStar :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, [Whitespace]) equals :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, Equals) rightParen :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, [Whitespace]) semicolon :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, Semicolon SrcInfo) star :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, [Whitespace]) identifier :: MonadParsec e PyTokens m => m Whitespace -> m (Ident '[] SrcInfo) bool :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) none :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) ellipsis :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) integer :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) float :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) imag :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) stringOrBytes :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) arg :: MonadParsec e PyTokens m => m (Arg SrcInfo) binOp :: MonadParsec e PyTokens m => m (BinOp SrcInfo) -> m (Expr SrcInfo) -> m (Expr SrcInfo) commaSep :: MonadParsec e PyTokens m => m Whitespace -> m a -> m (CommaSep a) commaSep1 :: MonadParsec e PyTokens m => m Whitespace -> m a -> m (CommaSep1 a) commaSep1' :: MonadParsec e PyTokens m => m Whitespace -> m a -> m (CommaSep1' a) commaSepRest :: MonadParsec e PyTokens m => m b -> m ([(Comma, b)], Maybe Comma) compIf :: MonadParsec e PyTokens m => m (CompIf SrcInfo) compFor :: MonadParsec e PyTokens m => m (CompFor SrcInfo) compoundStatement :: MonadParsec e PyTokens m => m (Indents SrcInfo) -> Indents SrcInfo -> m (CompoundStatement SrcInfo) decorator :: MonadParsec e PyTokens m => Indents SrcInfo -> m (Decorator SrcInfo) decoratorValue :: MonadParsec e PyTokens m => m (Expr SrcInfo) decorators :: MonadParsec e PyTokens m => m (Indents SrcInfo) -> Indents SrcInfo -> m [Decorator SrcInfo] expr :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) exprList :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) exprListComp :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) exprNoCond :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) exprComp :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) exprOrStarList :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) lambda :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) lambdaNoCond :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) module_ :: MonadParsec e PyTokens m => m (Module SrcInfo) orExpr :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) orExprList :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) orTest :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) smallStatement :: MonadParsec e PyTokens m => m (SmallStatement SrcInfo) someParams :: MonadParsec e PyTokens m => m (Param SrcInfo) -> m (Param SrcInfo) -> m (Param SrcInfo) -> m (CommaSep (Param SrcInfo)) simpleStatement :: MonadParsec e PyTokens m => m (SimpleStatement SrcInfo) starExpr :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) statement :: (Alternative m, MonadParsec e PyTokens m) => m (Indents SrcInfo) -> Indents SrcInfo -> m (Statement SrcInfo) suite :: MonadParsec e PyTokens m => m (Suite SrcInfo) tpPositional :: MonadParsec e PyTokens m => m (Param SrcInfo) tpStar :: MonadParsec e PyTokens m => m (Param SrcInfo) tpDoubleStar :: MonadParsec e PyTokens m => m (Param SrcInfo) tyAnn :: MonadParsec e PyTokens m => m (Colon, Expr SrcInfo) typedParams :: MonadParsec e PyTokens m => m (CommaSep (Param SrcInfo)) untypedParams :: MonadParsec e PyTokens m => m Whitespace -> m (CommaSep (Param SrcInfo)) upPositional :: MonadParsec e PyTokens m => m Whitespace -> m (Param SrcInfo) upStar :: MonadParsec e PyTokens m => m Whitespace -> m (Param SrcInfo) upDoubleStar :: MonadParsec e PyTokens m => m Whitespace -> m (Param SrcInfo) yieldExpr :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) anySpace :: MonadParsec e PyTokens m => m Whitespace space :: MonadParsec e PyTokens m => m Whitespace eol :: MonadParsec e PyTokens m => m Newline continued :: MonadParsec e PyTokens m => m Whitespace newline :: MonadParsec e PyTokens m => m Newline indent :: MonadParsec e PyTokens m => m (Indents SrcInfo) dedent :: MonadParsec e PyTokens m => m () level :: MonadParsec s PyTokens m => m (Indents SrcInfo) blank :: MonadParsec e PyTokens m => m (Blank SrcInfo) comment :: MonadParsec e PyTokens m => m (Comment SrcInfo) sepBy1' :: MonadParsec e PyTokens m => m a -> m sep -> m (a, [(sep, a)], Maybe sep) instance GHC.Classes.Ord Language.Python.Internal.Parse.PyTokens instance GHC.Classes.Eq Language.Python.Internal.Parse.PyTokens instance Text.Megaparsec.Stream.Stream Language.Python.Internal.Parse.PyTokens module Language.Python.Parse.Error data ParseError a -- | An error occured during tokenization (this is a re-packed megaparsec -- error) LexicalError :: NonEmpty SourcePos -> Maybe (ErrorItem Char) -> Set (ErrorItem Char) -> ParseError a -- | An error occured during parsing (this is a re-packed megaparsec error) ParseError :: NonEmpty SourcePos -> Maybe (ErrorItem (PyToken a)) -> Set (ErrorItem (PyToken a)) -> ParseError a -- | Tabs and spaces were used inconsistently TabError :: a -> ParseError a -- | The dedent at the end of a block doesn't match and preceding indents -- -- e.g. -- --
--   def a():
--       if b:
--           pass
--       else:
--           pass
--     pass
--   
-- -- The final line will cause an IncorrectDedent error IncorrectDedent :: a -> ParseError a -- | Unpacking ( *value ) was used in an invalid position InvalidUnpacking :: a -> ParseError a class AsLexicalError s t | s -> t _LexicalError :: AsLexicalError s t => Prism' s (NonEmpty SourcePos, Maybe (ErrorItem t), Set (ErrorItem t)) class AsTabError s a | s -> a _TabError :: AsTabError s a => Prism' s a class AsIncorrectDedent s a | s -> a _IncorrectDedent :: AsIncorrectDedent s a => Prism' s a class AsIRError s a | s -> a _InvalidUnpacking :: AsIRError s a => Prism' s a class AsParseError s t | s -> t _ParseError :: AsParseError s t => Prism' s (NonEmpty SourcePos, Maybe (ErrorItem t), Set (ErrorItem t)) -- | Data type that is used to represent “unexpected/expected” items in -- ParseError. The data type is parametrized over the token type -- t. data ErrorItem t -- | Non-empty stream of tokens Tokens :: NonEmpty t -> ErrorItem t -- | Label (cannot be empty) Label :: NonEmpty Char -> ErrorItem t -- | End of input EndOfInput :: ErrorItem t -- | The data type SourcePos represents source positions. It -- contains the name of the source file, a line number, and a column -- number. Source line and column positions change intensively during -- parsing, so we need to make them strict to avoid memory leaks. data SourcePos SourcePos :: FilePath -> !Pos -> !Pos -> SourcePos -- | Name of source file [sourceName] :: SourcePos -> FilePath -- | Line number [sourceLine] :: SourcePos -> !Pos -- | Column number [sourceColumn] :: SourcePos -> !Pos instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Parse.Error.ParseError a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Parse.Error.ParseError a) instance Language.Python.Internal.Lexer.AsLexicalError (Language.Python.Parse.Error.ParseError a) GHC.Types.Char instance Language.Python.Internal.Lexer.AsTabError (Language.Python.Parse.Error.ParseError a) a instance Language.Python.Internal.Lexer.AsIncorrectDedent (Language.Python.Parse.Error.ParseError a) a instance Language.Python.Internal.Parse.AsParseError (Language.Python.Parse.Error.ParseError a) (Language.Python.Internal.Token.PyToken a) instance Language.Python.Internal.Syntax.IR.AsIRError (Language.Python.Parse.Error.ParseError a) a module Language.Python.Parse type Parser = Parsec Void PyTokens -- | Parse a module -- -- -- https://docs.python.org/3/reference/toplevel_components.html#file-input parseModule :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> Text -> Validation (NonEmpty e) (Module '[] SrcInfo) -- | Parse a statement -- -- -- https://docs.python.org/3/reference/compound_stmts.html#grammar-token-statement parseStatement :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> Text -> Validation (NonEmpty e) (Statement '[] SrcInfo) -- | Parse an expression -- -- -- https://docs.python.org/3.5/reference/expressions.html#grammar-token-expression parseExpr :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> Text -> Validation (NonEmpty e) (Expr '[] SrcInfo) -- | Parse an expression list (unparenthesised tuple) -- -- -- https://docs.python.org/3.5/reference/expressions.html#grammar-token-expression_list parseExprList :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> Text -> Validation (NonEmpty e) (Expr '[] SrcInfo) data SrcInfo SrcInfo :: FilePath -> !Int -> !Int -> !Int -> !Int -> !Int -> !Int -> SrcInfo [_srcInfoName] :: SrcInfo -> FilePath [_srcInfoLineStart] :: SrcInfo -> !Int [_srcInfoLineEnd] :: SrcInfo -> !Int [_srcInfoColStart] :: SrcInfo -> !Int [_srcInfoColEnd] :: SrcInfo -> !Int [_srcInfoOffsetStart] :: SrcInfo -> !Int [_srcInfoOffsetEnd] :: SrcInfo -> !Int initialSrcInfo :: FilePath -> SrcInfo -- | Passing [] to a function which expects a [Raw -- Line] is the same as passing [line_ -- pass_] module Language.Python.DSL -- | & is a reverse application operator. This provides -- notational convenience. Its precedence is one higher than that of the -- forward application operator $, which allows & to be -- nested in $. -- --
--   >>> 5 & (+1) & show
--   "6"
--   
(&) :: () => a -> (a -> b) -> b infixl 1 & -- | Raw represents unvalidated, un-annotated terms. type Raw f = f '[] () -- | A Python Module, which is stored as a sequence of statements. A -- module corresponds to one source file of Python code. data Module v a -- | A Statement is either a SmallStatement or a -- Statement -- -- -- https://docs.python.org/3.5/reference/compound_stmts.html#compound-statements data Statement (v :: [*]) a -- | This large sum type covers all valid Python expressions data Expr (v :: [*]) a -- | Create a Module -- --
--   >>> module_
--   
--   >>> [ line_ $ def_ "a" [] [line_ pass_]
--   
--   >>> , blank_
--   
--   >>> , line_ $ def_ "b" [] [line_ pass_]
--   
--   >>> ]
--   def a():
--       pass
--   
--   def b():
--       pass
--   
module_ :: [Raw Line] -> Raw Module -- | Create a blank Line blank_ :: Raw Line -- | Convert some data to a Line class AsLine s line_ :: AsLine s => Raw s -> Raw Line -- | One or more lines of Python code newtype Line v a Line :: Either (Blank a, Newline) (Statement v a) -> Line v a [unLine] :: Line v a -> Either (Blank a, Newline) (Statement v a) -- | Expr has an IsString instance, but when a type class -- dispatches on an Expr we will run into ambiguity if we try to -- use OverloadedStrings. In these cases we can use id_ -- to provide the extra type information id_ :: String -> Raw Ident -- | An identifier. Like many types in hpython, it has an optional -- annotation and tracks its trailing whitespace. -- -- Raw Idents have an IsString instance. -- -- See -- https://docs.python.org/3.5/reference/lexical_analysis.html#identifiers data Ident (v :: [*]) a MkIdent :: a -> String -> [Whitespace] -> Ident a [_identAnn] :: Ident a -> a [_identValue] :: Ident a -> String [_identWhitespace] :: Ident a -> [Whitespace] identAnn :: Lens (Ident v a) (Ident v a) a a identValue :: Lens (Ident v a) (Ident '[] a) String String identWhitespace :: Lens (Ident v a) (Ident v a) [Whitespace] [Whitespace] class StarSyntax s t | t -> s s_ :: StarSyntax s t => Raw s -> Raw t -- | Unnamed starred parameter -- --
--   >>> def_ "a" [ p_ "b", star_ ] [ line_ pass_ ]
--   def a(b, *):
--       pass
--   
star_ :: Raw Param class DoubleStarSyntax s t | t -> s ss_ :: DoubleStarSyntax s t => Raw s -> Raw t class As s t u | s t -> u, u -> s t as_ :: As s t u => Raw s -> Raw t -> Raw u class IfSyntax a if_ :: IfSyntax a => Raw Expr -> a class ForSyntax a x | a -> x for_ :: ForSyntax a x => Raw x -> a class InSyntax a x | a -> x, x -> a in_ :: InSyntax a x => Raw Expr -> x -> Raw a infixl 1 `in_` -- |
--   >>> var_ "a" `in_` var_ "b"
--   a in b
--   
data In v a MkIn :: Expr v a -> Expr v a -> In v a -- |
--   >>> var_ "a" `in_` [var_ "b", var_ "c"]
--   a in b, c
--   
data InList v a MkInList :: Expr v a -> [Expr v a] -> InList v a class ColonSyntax s t | s -> t, t -> s (.:) :: ColonSyntax s t => Raw s -> Raw Expr -> Raw t infix 0 .: comp_ :: Raw e -> Raw CompFor -> [Raw Guard] -> Raw (Comprehension e) newtype Guard v a MkGuard :: Either (CompFor v a) (CompIf v a) -> Guard v a [unGuard] :: Guard v a -> Either (CompFor v a) (CompIf v a) -- | Formal parameters for functions -- -- See -- https://docs.python.org/3.5/reference/compound_stmts.html#function-definitions data Param (v :: [*]) a -- |
--   def foo(a):
--   
PositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> Param a [_paramAnn] :: Param a -> a [_paramName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) -- |
--   def foo(bar=None):
--   
KeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> Param a [_paramAnn] :: Param a -> a [_paramName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) [_unsafeKeywordParamWhitespaceRight] :: Param a -> [Whitespace] [_unsafeKeywordParamExpr] :: Param a -> Expr v a -- |
--   def foo(*xs):
--   
StarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a [_paramAnn] :: Param a -> a [_unsafeStarParamWhitespace] :: Param a -> [Whitespace] [_unsafeStarParamName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) -- |
--   def foo(*):
--   
UnnamedStarParam :: a -> [Whitespace] -> Param a [_paramAnn] :: Param a -> a [_unsafeUnnamedStarParamWhitespace] :: Param a -> [Whitespace] -- |
--   def foo(**dict):
--   
DoubleStarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a [_paramAnn] :: Param a -> a [_unsafeDoubleStarParamWhitespace] :: Param a -> [Whitespace] [_paramName] :: Param a -> Ident v a [_paramType] :: Param a -> Maybe (Colon, Expr v a) class ParametersSyntax s -- | A faux-Lens that allows targeting Params in-between existing -- formatting, and adding appropriate formatting when extra parameters -- are introduced. -- --
--   >>> showStatement myStatement
--   "def a(b ,  c   ):\n    pass"
--   
-- --
--   >>> showStatement (myStatement & _Fundef.parameters_ .~ [p_ "d", p_ "e"]
--   "def a(d ,  e   ):\n    pass"
--   
-- --
--   >>> showStatement (myStatement & _Fundef.parameters_ .~ [p_ "d", p_ "e", p_ "f"]
--   "def a(d ,  e   , f):\n    pass"
--   
-- -- --- -- -- It's not a Lens because repeated sets can drop -- trailing commas, violating the Lens laws. For example: -- --
--   >>> someFunction
--   def a(b, c,):
--       pass
--   
-- --
--   >>> set parameters_ [var_ "d", var_ "e"] someFunction
--   def a(d, e,):
--       pass
--   
-- --
--   >>> set parameters_ [] someFunction
--   def a():
--       pass
--   
-- --
--   >>> set parameters_ [var_ "d", var_ "e"] (set parameters_ [] someFunction)
--   def a(d, e):
--       pass
--   
parameters_ :: (ParametersSyntax s, Functor f) => ([Raw Param] -> f [Raw Param]) -> Raw s -> f (Raw s) parameters :: ParametersSyntax s => Lens' (Raw s) (CommaSep (Raw Param)) -- | Actual parameters for functions -- -- In the following examples, x is an actual parameter. -- --
--   y = foo(x)
--   y = bar(quux=x)
--   y = baz(*x)
--   y = flux(**x)
--   
data Arg (v :: [*]) a PositionalArg :: a -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_argExpr] :: Arg a -> Expr v a KeywordArg :: a -> Ident v a -> [Whitespace] -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_unsafeKeywordArgName] :: Arg a -> Ident v a [_unsafeKeywordArgWhitespaceRight] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr v a StarArg :: a -> [Whitespace] -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_unsafeStarArgWhitespace] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr v a DoubleStarArg :: a -> [Whitespace] -> Expr v a -> Arg a [_argAnn] :: Arg a -> a [_unsafeDoubleStarArgWhitespace] :: Arg a -> [Whitespace] [_argExpr] :: Arg a -> Expr v a class ArgumentsSyntax s setArguments :: ArgumentsSyntax s => [Raw Arg] -> Raw s -> Raw s getArguments :: ArgumentsSyntax s => Raw s -> [Raw Arg] -- | Positional parameters/arguments -- --
--   p_ :: Raw SimpleStatement -> Raw Arg
--   
-- --
--   p_ :: Raw Expr -> Raw Param
--   
class PositionalSyntax p v | p -> v, v -> p p_ :: PositionalSyntax p v => Raw v -> Raw p data PositionalParam v a MkPositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> PositionalParam v a [_ppAnn] :: PositionalParam v a -> a [_ppName] :: PositionalParam v a -> Ident v a [_ppType] :: PositionalParam v a -> Maybe (Colon, Expr v a) _PositionalParam :: Prism (Param v a) (Param '[] a) (PositionalParam v a) (PositionalParam '[] a) ppAnn :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) a_a2iUP ppName :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Ident v_a2iUO a_a2iUP) ppType :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Maybe (Colon, Expr v_a2iUO a_a2iUP)) -- | Keyword parameters/arguments -- --
--   p_ :: Raw SimpleStatement -> Raw SimpleStatement -> Raw Arg
--   
-- --
--   p_ :: Raw Expr -> Raw SimpleStatement -> Raw Param
--   
class KeywordSyntax p k_ :: KeywordSyntax p => Raw Ident -> Raw Expr -> Raw p data KeywordParam v a MkKeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> KeywordParam v a [_kpAnn] :: KeywordParam v a -> a [_kpName] :: KeywordParam v a -> Ident v a [_kpType] :: KeywordParam v a -> Maybe (Colon, Expr v a) [_kpEquals] :: KeywordParam v a -> [Whitespace] [_kpExpr] :: KeywordParam v a -> Expr v a _KeywordParam :: Prism (Param v a) (Param '[] a) (KeywordParam v a) (KeywordParam '[] a) kpAnn :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) a_a2iMG kpName :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Ident v_a2iMF a_a2iMG) kpType :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Maybe (Colon, Expr v_a2iMF a_a2iMG)) kpEquals :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) [Whitespace] kpExpr :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Expr v_a2iMF a_a2iMG) decorated_ :: DecoratorsSyntax s => [Raw Expr] -> Raw s -> Raw s class DecoratorsSyntax s setDecorators :: DecoratorsSyntax s => [Raw Expr] -> Raw s -> Raw s getDecorators :: DecoratorsSyntax s => Raw s -> [Raw Expr] decorators :: DecoratorsSyntax s => Lens' (Raw s) [Raw Decorator] class AsyncSyntax s async_ :: AsyncSyntax s => Raw s -> Raw s class BodySyntax s -- | A faux-Lens that targets lines in the body of some statement-piece, -- but does so 'around' indentation. -- --
--   >>> def_ "a" [] [ line_ pass_, line_ pass_ ]
--   def a ():
--       pass
--       pass
--   
-- --
--   >>> def_ "a" [] [ line_ pass_, line_ pass_ ] ^. body_
--   pass
--   pass
--   
-- --
--   >>> def_ "a" [] [ line_ pass_, line_ pass_ ] & body_ .~ [ line_ $ var_ "b" += 1 ]
--   def a():
--       b += 1
--   
-- --
--   >>> def_ "a" [] [ line_ pass_, line_ pass_ ] & body_ <>~ [ line_ $ var_ "b" += 1 ]
--   def a():
--       pass
--       pass
--       b += 1
--   
-- --
--   >>> def_ "a" [] [ line_ pass_, line_ pass_ ] & body_ .~ []
--   def a():
--       pass
--   
-- -- --- -- -- It's a fake Lens because it violates some of the laws. The -- most obvious violation is that setting the body_ to the empty -- list actually sets it to a singleton list containing pass_. -- (This is because blocks must contain one or more statements) body_ :: (BodySyntax s, Functor f) => ([Raw Line] -> f [Raw Line]) -> Raw s -> f (Raw s) body :: BodySyntax s => Lens' (Raw s) (Raw Suite) -- |
--   >>> def_ "f" [p_ "x"] [line_ $ return_ "x"]
--   def f(x):
--       return x
--   
-- --
--   >>> def_ "f" [p_ "x", k_ "y" 2] [line_ $ return_ "x"]
--   def f(x, y=2):
--       return x
--   
-- --
--   >>> def_ "f" [p_ "x", k_ "y" 2, s_ "z"] [line_ $ return_ "x"]
--   def f(x, y=2, *z):
--       return x
--   
-- --
--   >>> def_ "f" [p_ "x", k_ "y" 2, s_ "z", ss_ "w"] [line_ $ return_ "x"]
--   def f(x, y=2, *z, **w)
--       return x
--   
-- --
--   >>> def_ "f" [p_ "x" .: "String"] [line_ $ return_ "x"]
--   def f(x: String):
--       return x
--   
def_ :: Raw Ident -> [Raw Param] -> [Raw Line] -> Raw Fundef data Fundef v a MkFundef :: a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> Fundef v a [_fdAnn] :: Fundef v a -> a [_fdDecorators] :: Fundef v a -> [Decorator v a] [_fdIndents] :: Fundef v a -> Indents a [_fdAsync] :: Fundef v a -> Maybe (NonEmpty Whitespace) [_fdDefSpaces] :: Fundef v a -> NonEmpty Whitespace [_fdName] :: Fundef v a -> Ident v a [_fdLeftParenSpaces] :: Fundef v a -> [Whitespace] [_fdParameters] :: Fundef v a -> CommaSep (Param v a) [_fdRightParenSpaces] :: Fundef v a -> [Whitespace] [_fdReturnType] :: Fundef v a -> Maybe ([Whitespace], Expr v a) [_fdBody] :: Fundef v a -> Suite v a -- | Create a minimal valid function definition mkFundef :: Raw Ident -> [Raw Line] -> Raw Fundef fdAnn :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) a_a2im3 fdDecorators :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Decorator v_a2im2 a_a2im3] fdIndents :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Indents a_a2im3) fdAsync :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe (NonEmpty Whitespace)) fdDefSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (NonEmpty Whitespace) fdName :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Ident v_a2im2 a_a2im3) fdLeftParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace] fdParameters :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (CommaSep (Param v_a2im2 a_a2im3)) fdRightParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace] fdReturnType :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe ([Whitespace], Expr v_a2im2 a_a2im3)) fdBody :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Suite v_a2im2 a_a2im3) -- |
--   >>> class_ "A" [] [line_ pass_]
--   class A:
--       pass
--   
class_ :: Raw Ident -> [Raw Arg] -> [Raw Line] -> Raw ClassDef data ClassDef v a MkClassDef :: a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> ClassDef v a [_cdAnn] :: ClassDef v a -> a [_cdDecorators] :: ClassDef v a -> [Decorator v a] [_cdIndents] :: ClassDef v a -> Indents a [_cdClass] :: ClassDef v a -> NonEmpty Whitespace [_cdName] :: ClassDef v a -> Ident v a [_cdArguments] :: ClassDef v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) [_cdBody] :: ClassDef v a -> Suite v a -- | Create a minimal ClassDef mkClassDef :: Raw Ident -> [Raw Line] -> Raw ClassDef cdAnn :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) a_a2keL cdDecorators :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) [Decorator v_a2keK a_a2keL] cdIndents :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Indents a_a2keL) cdClass :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (NonEmpty Whitespace) cdName :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Ident v_a2keK a_a2keL) cdArguments :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Maybe ([Whitespace], Maybe (CommaSep1' (Arg v_a2keK a_a2keL)), [Whitespace])) cdBody :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Suite v_a2keK a_a2keL) -- | Chained assignment -- --
--   >>> chainEq (var_ "a") []
--   a
--   
-- --
--   >>> chainEq (var_ "a") [var_ "b", var_ "c"]
--   a = b = c
--   
chainEq :: Raw Expr -> [Raw Expr] -> Raw Statement -- |
--   a = b
--   
(.=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .= -- |
--   a += b
--   
(.+=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .+= -- |
--   a -= b
--   
(.-=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .-= -- |
--   a *= b
--   
(.*=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .*= -- | a = b@ (.@=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .@= -- |
--   a /= b
--   
(./=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 ./= -- |
--   a %= b
--   
(.%=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .%= -- |
--   a &= b
--   
(.&=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .&= -- |
--   a |= b
--   
(.|=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .|= -- |
--   a ^= b
--   
(.^=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .^= -- |
--   a <<= b
--   
(.<<=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .<<= -- |
--   a >>= b
--   
(.>>=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .>>= -- |
--   a **= b
--   
(.**=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .**= -- |
--   a //= b
--   
(.//=) :: Raw Expr -> Raw Expr -> Raw Statement infix 0 .//= -- | try ... except with optional else and optional -- finally -- --
--   >>> tryE_ [line_ pass_] [line_ ("a" .+= 1)]
--   try:
--       pass
--   except
--       a += 1
--   
tryE_ :: [Raw Line] -> Raw Except -> Raw TryExcept -- |
--   try ... finally
--   
-- --
--   >>> tryF_ [line_ pass_] [line_ ("a" .+= 1)]
--   try:
--       pass
--   finally:
--       a += 1
--   
tryF_ :: [Raw Line] -> [Raw Line] -> Raw TryFinally class ExceptSyntax s except_ :: ExceptSyntax s => [Raw Line] -> s -> Raw TryExcept -- | You can use exceptAs_ without a binder: -- --
--   exceptAs_ :: Raw SimpleStatement -> [Raw Line] -> Raw s -> Raw TryExcept
--   
-- --
--   exceptAs_ (var_ "Exception") body
--   
-- -- or with a binder: -- --
--   exceptAs_ :: Raw ExceptAs -> [Raw Line] -> Raw s -> Raw TryExcept
--   
-- --
--   exceptAs_ (var_ "Exception" `as_` id_ "a") body
--   
exceptAs_ :: (ExceptSyntax s, AsExceptAs e) => Raw e -> [Raw Line] -> s -> Raw TryExcept class FinallySyntax s t | s -> t finally_ :: FinallySyntax s t => [Raw Line] -> s -> Raw t data TryExcept v a MkTryExcept :: a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Except v a) -> Maybe (Else v a) -> Maybe (Finally v a) -> TryExcept v a [_teAnn] :: TryExcept v a -> a [_teIndents] :: TryExcept v a -> Indents a [_teTry] :: TryExcept v a -> [Whitespace] [_teBody] :: TryExcept v a -> Suite v a [_teExcepts] :: TryExcept v a -> NonEmpty (Except v a) [_teElse] :: TryExcept v a -> Maybe (Else v a) [_teFinally] :: TryExcept v a -> Maybe (Finally v a) -- | Create a minimal valid TryExcept mkTryExcept :: [Raw Line] -> Raw Except -> Raw TryExcept data TryFinally v a MkTryFinally :: a -> Indents a -> [Whitespace] -> Suite v a -> Finally v a -> TryFinally v a [_tfAnn] :: TryFinally v a -> a [_tfIndents] :: TryFinally v a -> Indents a [_tfTry] :: TryFinally v a -> [Whitespace] [_tfBody] :: TryFinally v a -> Suite v a [_tfFinally] :: TryFinally v a -> Finally v a -- | Create a minimal valid TryFinally mkTryFinally :: [Raw Line] -> [Raw Line] -> Raw TryFinally -- | See -- https://docs.python.org/3.5/reference/compound_stmts.html#the-try-statement data ExceptAs (v :: [*]) a ExceptAs :: a -> Expr v a -> Maybe ([Whitespace], Ident v a) -> ExceptAs a [_exceptAsAnn] :: ExceptAs a -> a -- |
--   <expr>
--   
[_exceptAsExpr] :: ExceptAs a -> Expr v a -- |
--   ['as' <ident>]
--   
[_exceptAsName] :: ExceptAs a -> Maybe ([Whitespace], Ident v a) class AsExceptAs s toExceptAs :: AsExceptAs s => Raw s -> Raw ExceptAs data Except v a MkExcept :: Indents a -> [Whitespace] -> Maybe (ExceptAs v a) -> Suite v a -> Except v a [_exceptIndents] :: Except v a -> Indents a [_exceptExcept] :: Except v a -> [Whitespace] [_exceptExceptAs] :: Except v a -> Maybe (ExceptAs v a) [_exceptBody] :: Except v a -> Suite v a -- | Create a minimal valid Except mkExcept :: [Raw Line] -> Raw Except data Finally v a MkFinally :: Indents a -> [Whitespace] -> Suite v a -> Finally v a [_finallyIndents] :: Finally v a -> Indents a [_finallyFinally] :: Finally v a -> [Whitespace] [_finallyBody] :: Finally v a -> Suite v a -- | Create a minimal valid Finally mkFinally :: [Raw Line] -> Raw Finally teAnn :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) a_a2jXO teIndents :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Indents a_a2jXO) teTry :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) [Whitespace] teBody :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Suite v_a2jXN a_a2jXO) teExcepts :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (NonEmpty (Except v_a2jXN a_a2jXO)) teElse :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Else v_a2jXN a_a2jXO)) teFinally :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Finally v_a2jXN a_a2jXO)) exceptIndents :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Indents a_a2jRN) exceptExcept :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) [Whitespace] exceptExceptAs :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Maybe (ExceptAs v_a2jRM a_a2jRN)) exceptBody :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Suite v_a2jRM a_a2jRN) finallyIndents :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) (Indents a_a2jJj) finallyFinally :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) [Whitespace] finallyBody :: forall v_a2jJi a_a2jJj v_a2jRn. Lens (Finally v_a2jJi a_a2jJj) (Finally v_a2jRn a_a2jJj) (Suite v_a2jJi a_a2jJj) (Suite v_a2jRn a_a2jJj) -- |
--   with_ :: NonEmpty (Raw SimpleStatement) -> [Raw Line] -> Raw Statement
--   with_ :: NonEmpty (Raw WithItem) -> [Raw Line] -> Raw Statement
--   
-- --
--   >>> with_ [var_ "a"] [line_ $ var_ "b"]
--   with a:
--       b
--   
-- --
--   >>> with_ [var_ "a" `as_` id_ "name"] [line_ $ var_ "b"]
--   with a as name:
--       b
--   
-- --
--   >>> with_ [withItem_ e Nothing] [line_ $ var_ "b"]
--   with a:
--       b
--   
with_ :: AsWithItem e => NonEmpty (Raw e) -> [Raw Line] -> Raw With withItem_ :: Raw Expr -> Maybe (Raw Expr) -> Raw WithItem data With v a MkWith :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> With v a [_withAnn] :: With v a -> a [_withIndents] :: With v a -> Indents a [_withAsync] :: With v a -> Maybe (NonEmpty Whitespace) [_withWith] :: With v a -> [Whitespace] [_withItems] :: With v a -> CommaSep1 (WithItem v a) [_withBody] :: With v a -> Suite v a -- | Create a minimal valid With mkWith :: NonEmpty (Raw WithItem) -> [Raw Line] -> Raw With class AsWithItem s toWithItem :: AsWithItem s => Raw s -> Raw WithItem -- | See -- https://docs.python.org/3.5/reference/compound_stmts.html#the-with-statement data WithItem (v :: [*]) a WithItem :: a -> Expr v a -> Maybe ([Whitespace], Expr v a) -> WithItem a [_withItemAnn] :: WithItem a -> a -- |
--   <expr>
--   
[_withItemValue] :: WithItem a -> Expr v a -- |
--   ['as' <spaces> <expr>]
--   
[_withItemBinder] :: WithItem a -> Maybe ([Whitespace], Expr v a) withAnn :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) a_a2knY withIndents :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Indents a_a2knY) withAsync :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Maybe (NonEmpty Whitespace)) withWith :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) [Whitespace] withItems :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (CommaSep1 (WithItem v_a2knX a_a2knY)) withBody :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Suite v_a2knX a_a2knY) else_ :: ElseSyntax s => [Raw Line] -> Raw s -> Raw s class ElseSyntax s getElse :: ElseSyntax s => Raw s -> Maybe (Raw Else) setElse :: ElseSyntax s => [Whitespace] -> Maybe (Raw Else) -> Raw s -> Raw s break_ :: Raw Statement forSt_ :: Raw Expr -> [Raw Expr] -> [Raw Line] -> Raw For data For v a MkFor :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Else v a) -> For v a [_forAnn] :: For v a -> a [_forIndents] :: For v a -> Indents a [_forAsync] :: For v a -> Maybe (NonEmpty Whitespace) [_forFor] :: For v a -> [Whitespace] [_forBinder] :: For v a -> Expr v a [_forIn] :: For v a -> [Whitespace] [_forCollection] :: For v a -> CommaSep1' (Expr v a) [_forBody] :: For v a -> Suite v a [_forElse] :: For v a -> Maybe (Else v a) _For :: HasFor s => Prism (s v a) (s '[] a) (For v a) (For '[] a) mkFor :: Raw Expr -> [Raw Expr] -> [Raw Line] -> Raw For ifThen_ :: Raw Expr -> [Raw Line] -> Raw If elif_ :: Raw Expr -> [Raw Line] -> Raw If -> Raw If data If v a MkIf :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [Elif v a] -> Maybe (Else v a) -> If v a [_ifAnn] :: If v a -> a [_ifIndents] :: If v a -> Indents a [_ifIf] :: If v a -> [Whitespace] [_ifCond] :: If v a -> Expr v a [_ifBody] :: If v a -> Suite v a [_ifElifs] :: If v a -> [Elif v a] [_ifElse] :: If v a -> Maybe (Else v a) -- | Create a minimal valid If mkIf :: Raw Expr -> [Raw Line] -> Raw If data Elif v a MkElif :: Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Elif v a [_elifIndents] :: Elif v a -> Indents a [_elifElif] :: Elif v a -> [Whitespace] [_elifCond] :: Elif v a -> Expr v a [_elifBody] :: Elif v a -> Suite v a -- | Create a minimal valid Elif mkElif :: Raw Expr -> [Raw Line] -> Raw Elif data Else v a MkElse :: Indents a -> [Whitespace] -> Suite v a -> Else v a [_elseIndents] :: Else v a -> Indents a [_elseElse] :: Else v a -> [Whitespace] [_elseBody] :: Else v a -> Suite v a -- | Create a minimal valid Else mkElse :: [Raw Line] -> Raw Else ifAnn :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) a_a2jpA ifIndents :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Indents a_a2jpA) ifIf :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Whitespace] ifCond :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Expr v_a2jpz a_a2jpA) ifBody :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Suite v_a2jpz a_a2jpA) ifElifs :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Elif v_a2jpz a_a2jpA] ifElse :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Maybe (Else v_a2jpz a_a2jpA)) elifIndents :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Indents a_a2jiD) elifElif :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) [Whitespace] elifCond :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Expr v_a2jiC a_a2jiD) elifBody :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Suite v_a2jiC a_a2jiD) elseIndents :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) (Indents a_a2ivo) elseElse :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) [Whitespace] elseBody :: forall v_a2ivn a_a2ivo v_a2iF5. Lens (Else v_a2ivn a_a2ivo) (Else v_a2iF5 a_a2ivo) (Suite v_a2ivn a_a2ivo) (Suite v_a2iF5 a_a2ivo) -- |
--   >>> pass_
--   pass
--   
pass_ :: Raw Statement -- |
--   >>> return_ (var_ "a")
--   return a
--   
return_ :: Raw Expr -> Raw Statement while_ :: Raw Expr -> [Raw Line] -> Raw While data While v a MkWhile :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Else v a) -> While v a [_whileAnn] :: While v a -> a [_whileIndents] :: While v a -> Indents a [_whileWhile] :: While v a -> [Whitespace] [_whileCond] :: While v a -> Expr v a [_whileBody] :: While v a -> Suite v a [_whileElse] :: While v a -> Maybe (Else v a) -- | Create a minimal valid While mkWhile :: Raw Expr -> [Raw Line] -> Raw While whileAnn :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) a_a2iFx whileIndents :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Indents a_a2iFx) whileWhile :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) [Whitespace] whileCond :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Expr v_a2iFw a_a2iFx) whileBody :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Suite v_a2iFw a_a2iFx) -- | Turns an SimpleStatement into a Statement -- --
--   >>> expr_ (int_ 3)
--   3
--   
expr_ :: Raw Expr -> Raw Statement var_ :: String -> Raw Expr -- |
--   >>> await (var_ "a")
--   await a
--   
await_ :: Raw Expr -> Raw Expr -- |
--   >>> ifThenElse_ (var_ "a") (var_ "b") (var_ "c")
--   a if b else c
--   
ifThenElse_ :: Raw Expr -> Raw Expr -> Raw Expr -> Raw Expr -- |
--   >>> gen_ $ comp_ (var_ "a") (for_ $ var_ "a" `in_` list_ [li_ $ int_ 1, li_ $ int_ 2, li_ $ int_ 3]) [if_ $ var_ "a" .== 2]
--   (a for a in [1, 2, 3] if a == 2)
--   
gen_ :: Raw (Comprehension Expr) -> Raw Expr -- |
--   >>> yield_ []
--   yield
--   
-- --
--   >>> yield_ [var_ "a"]
--   yield a
--   
-- --
--   >>> yield_ [var_ "a", var_ "b"]
--   yield a, b
--   
yield_ :: [Raw Expr] -> Raw Expr -- |
--   >>> yieldFrom_ (var_ "a")
--   yield from a
--   
yieldFrom_ :: Raw Expr -> Raw Expr -- |
--   >>> tuple_ []
--   ()
--   
-- --
--   >>> tuple_ [ti_ $ var_ "a"]
--   a,
--   
-- --
--   >>> tuple_ [s_ $ var_ "a"]
--   (*a),
--   
-- --
--   >>> tuple_ [ti_ $ var_ "a", ti_ $ var_ "b"]
--   a, b
--   
-- --
--   >>> tuple_ [ti_ $ var_ "a", s_ $ var_ "b"]
--   a, *b
--   
tuple_ :: [Raw TupleItem] -> Raw Expr data Tuple v a MkTuple :: a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Tuple v a [_tupleAnn] :: Tuple v a -> a [_tupleHead] :: Tuple v a -> TupleItem v a [_tupleComma] :: Tuple v a -> Comma [_tupleTail] :: Tuple v a -> Maybe (CommaSep1' (TupleItem v a)) class AsTupleItem e -- | Create a TupleItem ti_ :: AsTupleItem e => Raw e -> Raw TupleItem -- | a or *a -- -- Used to construct tuples, e.g. (1, x, **c) data TupleItem (v :: [*]) a -- |
--   >>> call_ "f" [p_ $ var_ "x"]
--   f(x)
--   
-- --
--   >>> call_ "f" [p_ $ var_ "x", k_ "y" 2]
--   f(x, y=2)
--   
-- --
--   >>> call_ "f" [p_ $ var_ "x", k_ "y" 2, s_ "z"]
--   f(x, y=2, *z)
--   
-- --
--   >>> call_ "f" [p_ $ var_ "x", k_ "y" 2, s_ "z", ss_ "w"]
--   f(x, y=2, *z, **w)
--   
call_ :: Raw Expr -> [Raw Arg] -> Raw Expr data Call v a MkCall :: a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Call v a [_callAnn] :: Call v a -> a [_callFunction] :: Call v a -> Expr v a [_callLeftParen] :: Call v a -> [Whitespace] [_callArguments] :: Call v a -> Maybe (CommaSep1' (Arg v a)) [_callRightParen] :: Call v a -> [Whitespace] -- | Create a minimal valid Call mkCall :: Raw Expr -> Raw Call callAnn :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) a_a2jct callFunction :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Expr v_a2jcs a_a2jct) callLeftParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace] callArguments :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Maybe (CommaSep1' (Arg v_a2jcs a_a2jct))) callRightParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace] -- |
--   >>> none_
--   None
--   
none_ :: Raw Expr data None (v :: [*]) a MkNone :: a -> [Whitespace] -> None a [_noneAnn] :: None a -> a [_noneWhitespace] :: None a -> [Whitespace] _None :: Prism (Expr v a) (Expr '[] a) (None v a) (None '[] a) noneAnn :: forall v_a2kRA a_a2kRB v_a2kWD a_a2kWE. Lens (None v_a2kRA a_a2kRB) (None v_a2kWD a_a2kWE) a_a2kRB a_a2kWE noneWhitespace :: forall v_a2kRA a_a2kRB v_a2kWF. Lens (None v_a2kRA a_a2kRB) (None v_a2kWF a_a2kRB) [Whitespace] [Whitespace] -- | Double-quoted string -- --
--   >>> str_ "asdf"
--   "asdf"
--   
str_ :: String -> Raw Expr -- | Single-quoted string -- --
--   >>> str_ "asdf"
--   'asdf'
--   
str'_ :: String -> Raw Expr -- | Long double-quoted string -- --
--   >>> longStr_ "asdf"
--   """asdf"""
--   
longStr_ :: String -> Raw Expr -- | Long single-quoted string -- --
--   >>> longStr'_ "asdf"
--   '''asdf'''
--   
longStr'_ :: String -> Raw Expr -- | Raw SimpleStatement has a Num instance, -- but sometimes we need to name integers explicitly -- --
--   >>> int_ 10
--   10
--   
int_ :: Integer -> Raw Expr -- |
--   >>> true_
--   True
--   
true_ :: Raw Expr -- |
--   >>> false_
--   False
--   
false_ :: Raw Expr -- |
--   >>> ellipsis_
--   ...
--   
ellipsis_ :: Raw Expr -- |
--   >>> list_ [li_ $ var_ "a"]
--   [a]
--   
-- --
--   >>> list_ [s_ $ var_ "a"]
--   [*a]
--   
-- --
--   >>> list_ [li_ $ var_ "a", s_ $ var_ "b"]
--   [a, *b]
--   
-- --
--   >>> list_ $ comp_ (var_ "a") (for_ $ var_ "a" `in_` list_ [li_ $ int_ 1, li_ $ int_ 2, li_ $ int_ 3]) [if_ $ var_ "a" .== 2]
--   [a for a in [1, 2, 3] if a == 2]
--   
class AsList s list_ :: AsList s => s -> Raw Expr class AsListItem s -- | Create a ListItem li_ :: AsListItem s => Raw s -> Raw ListItem -- | a or *a -- -- Used to construct lists, e.g. [ 1, x, **c ] -- -- -- https://docs.python.org/3/reference/expressions.html#list-displays data ListItem (v :: [*]) a -- |
--   >>> dict_ [var_ "a" .: 1]
--   {a: 1}
--   
-- --
--   >>> dict_ [ss_ $ var_ "a"]
--   {**a}
--   
-- --
--   >>> dict_ [var_ "a" .: 1, ss_ $ var_ "b"]
--   {a: 1, **b}
--   
-- --
--   >>> dict_ $ comp_ (var_ "a" .: 1) (for_ $ var_ "a" `in_` list_ [li_ $ int_ 1, li_ $ int_ 2, li_ $ int_ 3]) [if_ $ var_ "a" .== 2]
--   {a: 1 for a in [1, 2, 3] if a == 2}
--   
class AsDict s dict_ :: AsDict s => s -> Raw Expr -- | a : b or **a -- -- Used to construct dictionaries, e.g. { 1: a, 2: b, **c } -- -- -- https://docs.python.org/3/reference/expressions.html#dictionary-displays data DictItem (v :: [*]) a -- |
--   >>> set_ []
--   set()
--   
-- --
--   >>> set_ [si_ $ var_ "a"]
--   {a}
--   
-- --
--   >>> set_ [s_ $ var_ "a"]
--   {*a}
--   
-- --
--   >>> set_ [si_ $ var_ "a", s_ $ var_ "b"]
--   {a, *b}
--   
-- --
--   >>> set_ $ comp_ (var_ "a") (for_ $ var_ "a" `in_` set_ [si_ $ int_ 1, si_ $ int_ 2, si_ $ int_ 3]) [if_ $ var_ "a" .== 2]
--   {a for a in [1, 2, 3] if a == 2}
--   
class AsSet s set_ :: AsSet s => s -> Raw Expr class AsSetItem s -- | Create a SetItem si_ :: AsSetItem s => Raw s -> Raw SetItem -- | a or *a -- -- Used to construct sets, e.g. { 1, x, **c } -- -- -- https://docs.python.org/3/reference/expressions.html#set-displays data SetItem (v :: [*]) a -- |
--   >>> lambda_ [p_ "x"] "x"
--   lambda x: x
--   
-- --
--   >>> lambda_ [p_ "x", k_ "y" 2] ("x" .+ "y")
--   lambda x, y=2: x + y
--   
-- --
--   >>> lambda_ [p_ "x", k_ "y" 2, s_ "z"] "a"
--   lambda x, y=2, *z: a
--   
-- --
--   >>> lambda_ [p_ "x", k_ "y" 2, s_ "z", ss_ "w"] "a"
--   lambda x, y=2, *z, **w: a
--   
lambda_ :: [Raw Param] -> Raw Expr -> Raw Expr -- |
--   >>> subs_ (var_ "a") (int_ 1)
--   a[1]
--   
-- --
--   >>> subs_ (var_ "a") (tuple_ [ti_ $ int_ 1])
--   a[1,]
--   
-- --
--   >>> subs_ (var_ "a") (tuple_ [ti_ $ int_ 1, ti_ $ int_ 2])
--   a[1, 2]
--   
-- --
--   >>> subs_ (var_ "a") (tuple_ [s_ $ var_ "b"])
--   a[((*b),)]
--   
-- --
--   >>> subs_ (var_ "a") (tuple_ [ti_ $ int_ 1, s_ $ var_ "b"])
--   a[(1, *b)]
--   
subs_ :: Raw Expr -> Raw Expr -> Raw Expr -- | Slice *from* x -- --
--   >>> subs_ (var_ "a") (sliceF_ $ int_ 0)
--   a[1:]
--   
-- --
--   >>> sliceF_ $ int_ 0
--   slice(1, None, None)
--   
sliceF_ :: Raw Expr -> Raw Expr -- | Slice *from* x, with *step* y -- --
--   >>> subs_ (var_ "a") (sliceFS_ (int_ 0) (int_ 2))
--   a[1::2]
--   
-- --
--   >>> sliceFS_ (int_ 0) (int_ 2)
--   slice(1, None, 2)
--   
sliceFS_ :: Raw Expr -> Raw Expr -> Raw Expr -- | Slice To x -- --
--   >>> subs_ (var_ "a") (sliceT_ $ int_ 10)
--   a[:10]
--   
-- --
--   >>> sliceT_ $ int_ 10
--   slice(None, 10, None)
--   
sliceT_ :: Raw Expr -> Raw Expr -- | Slice To x, with Step y -- --
--   >>> subs_ (var_ "a") (sliceTS_ (int_ 10) (int_ 2))
--   a[:10:2]
--   
-- --
--   >>> sliceTS_ (int_ 10) (int_ 2)
--   slice(None, 10, 2)
--   
sliceTS_ :: Raw Expr -> Raw Expr -> Raw Expr -- | Slice From x To y -- --
--   >>> subs_ (var_ "a") (sliceFT_ (int_ 1) (int_ 10))
--   a[1:10]
--   
-- --
--   >>> sliceFT_ (int_ 1) (int_ 10)
--   slice(1, 10, None)
--   
sliceFT_ :: Raw Expr -> Raw Expr -> Raw Expr -- | Slice From x To y, with Step -- z -- --
--   >>> subs_ (var_ "a") (sliceFTS_ (int_ 1) (int_ 10) (int_ 2))
--   a[1:10:2]
--   
-- --
--   >>> sliceFTS_ (int_ 1) (int_ 10) (int_ 2)
--   slice(1, 10, 2)
--   
sliceFTS_ :: Raw Expr -> Raw Expr -> Raw Expr -> Raw Expr -- | Slice with *step* x -- --
--   >>> subs_ (var_ "a") (sliceS_ $ int_ (-1))
--   a[::-1]
--   
-- --
--   >>> sliceS_ $ int_ (-1)
--   slice(None, None, -1)
--   
sliceS_ :: Raw Expr -> Raw Expr -- | The slice with no bounds -- --
--   >>> subs_ (var_ "a") fullSlice_
--   a[:]
--   
-- --
--   >>> fullSlice_
--   slice(None, None, None)
--   
fullSlice_ :: Raw Expr -- | A slice object -- -- Represents a call to a function named slice, with 3 -- arguments. If an argument is a Nothing then it becomes -- None, and if the argument is a Just then the contents -- are extracted. slice_ :: Maybe (Raw Expr) -> Maybe (Raw Expr) -> Maybe (Raw Expr) -> Raw Expr -- |
--   >>> var_ "a" /> var_ "b"
--   a.b
--   
(/>) :: Raw Expr -> Raw Ident -> Raw Expr infixl 9 /> -- |
--   not a
--   
not_ :: Raw Expr -> Raw Expr -- |
--   -a
--   
neg_ :: Raw Expr -> Raw Expr -- |
--   +a
--   
pos_ :: Raw Expr -> Raw Expr -- |
--   ~a
--   
compl_ :: Raw Expr -> Raw Expr -- |
--   a or b
--   
-- -- Does not have a precedence or_ :: Raw Expr -> Raw Expr -> Raw Expr -- |
--   a and b
--   
-- -- Does not have a precedence and_ :: Raw Expr -> Raw Expr -> Raw Expr -- |
--   a is b
--   
is_ :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 `is_` -- |
--   a is not b
--   
isNot_ :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 `isNot_` -- |
--   a not in b
--   
notIn_ :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 `notIn_` -- |
--   a == b
--   
(.==) :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 .== -- |
--   a > b
--   
(.>) :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 .> -- |
--   a >= b
--   
(.>=) :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 .>= -- |
--   a < b
--   
(.<) :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 .< -- |
--   a <= b
--   
(.<=) :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 .<= -- |
--   a != b
--   
(.!=) :: Raw Expr -> Raw Expr -> Raw Expr infixl 1 .!= -- |
--   a | b
--   
(.|) :: Raw Expr -> Raw Expr -> Raw Expr infixl 2 .| -- |
--   a ^ b
--   
(.^) :: Raw Expr -> Raw Expr -> Raw Expr infixl 3 .^ -- |
--   a & b
--   
(.&) :: Raw Expr -> Raw Expr -> Raw Expr infixl 4 .& -- |
--   a << b
--   
(.<<) :: Raw Expr -> Raw Expr -> Raw Expr infixl 5 .<< -- |
--   a >> b
--   
(.>>) :: Raw Expr -> Raw Expr -> Raw Expr infixl 5 .>> -- |
--   a - b
--   
(.-) :: Raw Expr -> Raw Expr -> Raw Expr infixl 6 .- -- |
--   a + b
--   
(.+) :: Raw Expr -> Raw Expr -> Raw Expr infixl 6 .+ -- |
--   a * b
--   
(.*) :: Raw Expr -> Raw Expr -> Raw Expr infixl 7 .* -- |
--   a @ b
--   
(.@) :: Raw Expr -> Raw Expr -> Raw Expr infixl 7 .@ -- |
--   a / b
--   
(./) :: Raw Expr -> Raw Expr -> Raw Expr infixl 7 ./ -- |
--   a // b
--   
(.//) :: Raw Expr -> Raw Expr -> Raw Expr infixl 7 .// -- |
--   a % b
--   
(.%) :: Raw Expr -> Raw Expr -> Raw Expr infixl 7 .% -- |
--   a ** b
--   
(.**) :: Raw Expr -> Raw Expr -> Raw Expr infixr 8 .** -- | Convert a list of Lines to a Block, without indenting -- them linesToBlock :: [Raw Line] -> Raw Block blockToLines :: Raw Block -> [Raw Line] instance Language.Python.DSL.AsTupleItem Language.Python.Syntax.Expr.Expr instance Language.Python.DSL.AsTupleItem Language.Python.Syntax.Expr.TupleItem instance Language.Python.DSL.AsWithItem Language.Python.Syntax.Expr.Expr instance Language.Python.DSL.AsWithItem Language.Python.Syntax.Statement.WithItem instance Language.Python.DSL.As Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Ident.Ident Language.Python.Syntax.Statement.ExceptAs instance Language.Python.DSL.As Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Statement.WithItem instance (e Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.Except, s Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.TryExcept) => Language.Python.DSL.ExceptSyntax (e -> s) instance Language.Python.DSL.ExceptSyntax (Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.TryExcept) instance Language.Python.DSL.ExceptSyntax (Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.TryFinally) instance Language.Python.DSL.AsExceptAs Language.Python.Syntax.Statement.ExceptAs instance Language.Python.DSL.AsExceptAs Language.Python.Syntax.Expr.Expr instance Language.Python.DSL.FinallySyntax (Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.TryExcept) Language.Python.Syntax.Types.TryExcept instance Language.Python.DSL.FinallySyntax (Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.TryFinally) Language.Python.Syntax.Types.TryFinally instance (a Data.Type.Equality.~ [Language.Python.Syntax.Raw.Raw Language.Python.DSL.Line], b Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.TryFinally) => Language.Python.DSL.FinallySyntax (a -> b) Language.Python.Syntax.Types.TryFinally instance Language.Python.DSL.AsyncSyntax Language.Python.Syntax.Types.Fundef instance Language.Python.DSL.AsyncSyntax Language.Python.Syntax.Types.For instance Language.Python.DSL.AsyncSyntax Language.Python.Syntax.Types.With instance Language.Python.DSL.ElseSyntax Language.Python.Syntax.Types.While instance Language.Python.DSL.ElseSyntax Language.Python.Syntax.Types.For instance Language.Python.DSL.ElseSyntax Language.Python.Syntax.Types.If instance Language.Python.DSL.ElseSyntax Language.Python.Syntax.Types.TryExcept instance Language.Python.DSL.InSyntax Language.Python.Syntax.Expr.Expr (Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Expr.Expr) instance (e Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Expr.Expr) => Language.Python.DSL.InSyntax Language.Python.DSL.InList [e] instance (l Data.Type.Equality.~ [Language.Python.Syntax.Raw.Raw Language.Python.DSL.Line], s Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.For) => Language.Python.DSL.ForSyntax (l -> s) Language.Python.DSL.InList instance Language.Python.DSL.ForSyntax (Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Expr.CompFor) Language.Python.DSL.In instance Language.Python.DSL.ForSyntax (Language.Python.Syntax.Raw.Raw Language.Python.DSL.Guard) Language.Python.DSL.In instance (e Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Expr.DictItem) => Language.Python.DSL.AsDict [e] instance (e Data.Type.Equality.~ Language.Python.Syntax.Expr.Comprehension Language.Python.Syntax.Expr.DictItem) => Language.Python.DSL.AsDict (Language.Python.Syntax.Raw.Raw e) instance Language.Python.DSL.AsSetItem Language.Python.Syntax.Expr.SetItem instance Language.Python.DSL.AsSetItem Language.Python.Syntax.Expr.Expr instance (e Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Expr.SetItem) => Language.Python.DSL.AsSet [e] instance (e Data.Type.Equality.~ Language.Python.Syntax.Expr.Comprehension Language.Python.Syntax.Expr.SetItem) => Language.Python.DSL.AsSet (Language.Python.Syntax.Raw.Raw e) instance Language.Python.DSL.IfSyntax (Language.Python.Syntax.Raw.Raw Language.Python.DSL.Guard) instance (l Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.DSL.Line, s Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Types.If) => Language.Python.DSL.IfSyntax ([l] -> s) instance Language.Python.DSL.AsListItem Language.Python.Syntax.Expr.ListItem instance Language.Python.DSL.AsListItem Language.Python.Syntax.Expr.Expr instance (e Data.Type.Equality.~ Language.Python.Syntax.Raw.Raw Language.Python.Syntax.Expr.ListItem) => Language.Python.DSL.AsList [e] instance (e Data.Type.Equality.~ Language.Python.Syntax.Expr.Comprehension Language.Python.Syntax.Expr.Expr) => Language.Python.DSL.AsList (Language.Python.Syntax.Raw.Raw e) instance Language.Python.DSL.DecoratorsSyntax Language.Python.Syntax.Types.Fundef instance Language.Python.DSL.DecoratorsSyntax Language.Python.Syntax.Types.ClassDef instance Language.Python.DSL.ArgumentsSyntax Language.Python.Syntax.Types.Call instance Language.Python.DSL.ArgumentsSyntax Language.Python.Syntax.Types.ClassDef instance Language.Python.DSL.ParametersSyntax Language.Python.Syntax.Types.Fundef instance Language.Python.DSL.DoubleStarSyntax Language.Python.Syntax.Ident.Ident Language.Python.Syntax.Expr.Param instance Language.Python.DSL.DoubleStarSyntax Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.Arg instance Language.Python.DSL.DoubleStarSyntax Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.DictItem instance Language.Python.DSL.KeywordSyntax Language.Python.Syntax.Expr.Param instance Language.Python.DSL.KeywordSyntax Language.Python.Syntax.Expr.Arg instance Language.Python.DSL.StarSyntax Language.Python.Syntax.Ident.Ident Language.Python.Syntax.Expr.Param instance Language.Python.DSL.StarSyntax Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.Arg instance Language.Python.DSL.StarSyntax Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.ListItem instance Language.Python.DSL.StarSyntax Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.SetItem instance Language.Python.DSL.StarSyntax Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.TupleItem instance Language.Python.DSL.PositionalSyntax Language.Python.Syntax.Expr.Param Language.Python.Syntax.Ident.Ident instance Language.Python.DSL.PositionalSyntax Language.Python.Syntax.Expr.Arg Language.Python.Syntax.Expr.Expr instance Language.Python.DSL.ColonSyntax Language.Python.Syntax.Expr.Expr Language.Python.Syntax.Expr.DictItem instance Language.Python.DSL.ColonSyntax Language.Python.Syntax.Expr.Param Language.Python.Syntax.Expr.Param instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.Fundef instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.While instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.Elif instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.Else instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.If instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.For instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.TryExcept instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.TryFinally instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.ClassDef instance Language.Python.DSL.BodySyntax Language.Python.Syntax.Types.With instance Language.Python.DSL.AsLine Language.Python.Syntax.Statement.SmallStatement instance Language.Python.DSL.AsLine Language.Python.Syntax.Statement.SimpleStatement instance Language.Python.DSL.AsLine Language.Python.Syntax.Statement.CompoundStatement instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.ClassDef instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.Fundef instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.If instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.While instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.With instance Language.Python.DSL.AsLine Language.Python.Syntax.Statement.Statement instance Language.Python.DSL.AsLine Language.Python.Syntax.Expr.Expr instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.For instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.TryExcept instance Language.Python.DSL.AsLine Language.Python.Syntax.Types.TryFinally instance (Language.Python.DSL.Line v1 a1 Data.Type.Equality.~ t) => Control.Lens.Wrapped.Rewrapped (Language.Python.DSL.Line v2 a2) t instance Control.Lens.Wrapped.Wrapped (Language.Python.DSL.Line v a) instance Language.Python.Syntax.Expr.HasExprs Language.Python.DSL.Line instance Language.Python.Syntax.Statement.HasStatements Language.Python.DSL.Line instance GHC.Show.Show a => GHC.Show.Show (Language.Python.DSL.Line v a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.DSL.Line v a) module Language.Python.Validate.Indentation.Error data IndentationError a IndentationTabError :: a -> IndentationError a ExpectedGreaterThan :: [Indent] -> Indents a -> IndentationError a ExpectedEqualTo :: [Indent] -> Indents a -> IndentationError a EmptyContinuedLine :: a -> IndentationError a class AsTabError s a | s -> a _TabError :: AsTabError s a => Prism' s a class AsTabError s a => AsIndentationError s a | s -> a _IndentationError :: AsIndentationError s a => Prism' s (IndentationError a) _ExpectedGreaterThan :: AsIndentationError s a => Prism' s ([Indent], Indents a) _ExpectedEqualTo :: AsIndentationError s a => Prism' s ([Indent], Indents a) _EmptyContinuedLine :: AsIndentationError s a => Prism' s a instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Validate.Indentation.Error.IndentationError a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Validate.Indentation.Error.IndentationError a) instance Language.Python.Validate.Indentation.Error.AsIndentationError (Language.Python.Validate.Indentation.Error.IndentationError a) a instance Language.Python.Internal.Lexer.AsTabError (Language.Python.Validate.Indentation.Error.IndentationError a) a module Language.Python.Validate.Indentation data Indentation type ValidateIndentation e = ValidateM (NonEmpty e) (State (NextIndent, [Indent])) runValidateIndentation :: ValidateIndentation e a -> Validation (NonEmpty e) a validateModuleIndentation :: AsIndentationError e a => Module v a -> ValidateIndentation e (Module (Nub (Indentation : v)) a) validateStatementIndentation :: AsIndentationError e a => Statement v a -> ValidateIndentation e (Statement (Nub (Indentation : v)) a) validateExprIndentation :: AsIndentationError e a => Expr v a -> ValidateIndentation e (Expr (Nub (Indentation : v)) a) -- | "The next line must be..." data NextIndent GreaterThan :: NextIndent EqualTo :: NextIndent equivalentIndentation :: [Whitespace] -> [Whitespace] -> Bool runValidateIndentation' :: NextIndent -> [Indent] -> ValidateIndentation e a -> Validation (NonEmpty e) a validateArgsIndentation :: AsIndentationError e a => CommaSep (Arg v a) -> ValidateIndentation e (CommaSep (Arg (Nub (Indentation : v)) a)) validateBlockIndentation :: forall e v a. AsIndentationError e a => Block v a -> ValidateIndentation e (Block (Nub (Indentation : v)) a) validateCompoundStatementIndentation :: forall e v a. AsIndentationError e a => CompoundStatement v a -> ValidateIndentation e (CompoundStatement (Nub (Indentation : v)) a) validateDecoratorIndentation :: AsIndentationError e a => Decorator v a -> ValidateIndentation e (Decorator (Nub (Indentation : v)) a) validateExceptAsIndentation :: AsIndentationError e a => ExceptAs v a -> ValidateIndentation e (ExceptAs (Nub (Indentation : v)) a) validateParamsIndentation :: AsIndentationError e a => CommaSep (Param v a) -> ValidateIndentation e (CommaSep (Param (Nub (Indentation : v)) a)) validateSuiteIndentation :: AsIndentationError e a => Indents a -> Suite v a -> ValidateIndentation e (Suite (Nub (Indentation : v)) a) instance GHC.Show.Show Language.Python.Validate.Indentation.NextIndent instance GHC.Classes.Eq Language.Python.Validate.Indentation.NextIndent module Language.Python.Validate.Scope.Error data ScopeError a -- | Using nonlocal to modify function scopes makes scope checking -- intractible FoundNonlocal :: a -> ScopeError a -- | Using global to add identifiers to the global scope makes -- scope checking intractible FoundGlobal :: a -> ScopeError a -- | Using del to remove identifiers from scope makes scope -- checking intractible DeletedIdent :: a -> ScopeError a -- | Variable assignments deep in control flow can modify the scope outside -- the control flow. For example: -- --
--   if a:
--       x = 0
--   else:
--       pass
--   
--   print(x)
--   
-- -- x will be in scope if the True branch was entered, -- but not if the False branch was entered. This kind of -- behaviour makes scope checking intractible, so programs like this are -- considered scope errors. FoundDynamic :: a -> Ident '[] a -> ScopeError a -- | An identifier is not in scope NotInScope :: Ident '[] a -> ScopeError a -- | For loops don't execute in a fresh scope, so if the counter -- of the loop shadows a variable, then that variable will be mutated. -- -- e.g. -- --
--   x = 0
--   for x in 1, 2, 3:
--      pass
--   print(x)
--   
-- -- outputs 3 -- -- This error occurs when we spot this pattern. BadShadowing :: Ident '[] a -> ScopeError a class AsScopeError r_a4JhC a_a4Jc4 | r_a4JhC -> a_a4Jc4 _ScopeError :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (ScopeError a_a4Jc4) _FoundNonlocal :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC a_a4Jc4 _FoundGlobal :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC a_a4Jc4 _DeletedIdent :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC a_a4Jc4 _FoundDynamic :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (a_a4Jc4, Ident ('[] :: [Type]) a_a4Jc4) _NotInScope :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (Ident ('[] :: [Type]) a_a4Jc4) _BadShadowing :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (Ident ('[] :: [Type]) a_a4Jc4) instance Language.Python.Validate.Scope.Error.AsScopeError (Language.Python.Validate.Scope.Error.ScopeError a) a instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Validate.Scope.Error.ScopeError a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Validate.Scope.Error.ScopeError a) module Language.Python.Validate.Scope data Scope type ValidateScope ann e = ValidateM (NonEmpty e) (State (ScopeContext ann)) runValidateScope :: ValidateScope ann e a -> Validation (NonEmpty e) a validateModuleScope :: AsScopeError e a => Module v a -> ValidateScope a e (Module (Nub (Scope : v)) a) validateStatementScope :: AsScopeError e a => Statement v a -> ValidateScope a e (Statement (Nub (Scope : v)) a) validateExprScope :: AsScopeError e a => Expr v a -> ValidateScope a e (Expr (Nub (Scope : v)) a) data ScopeContext a ScopeContext :: !Map ByteString a -> !Map ByteString a -> !Map ByteString a -> ScopeContext a [_scGlobalScope] :: ScopeContext a -> !Map ByteString a [_scLocalScope] :: ScopeContext a -> !Map ByteString a [_scImmediateScope] :: ScopeContext a -> !Map ByteString a scGlobalScope :: forall a_a4KxZ. Lens' (ScopeContext a_a4KxZ) (Map ByteString a_a4KxZ) scLocalScope :: forall a_a4KxZ. Lens' (ScopeContext a_a4KxZ) (Map ByteString a_a4KxZ) scImmediateScope :: forall a_a4KxZ. Lens' (ScopeContext a_a4KxZ) (Map ByteString a_a4KxZ) runValidateScope' :: ScopeContext ann -> ValidateScope ann e a -> Validation (NonEmpty e) a initialScopeContext :: ScopeContext a data Binding Clean :: Binding Dirty :: Binding inScope :: MonadState (ScopeContext ann) m => String -> m (Maybe (Binding, ann)) extendScope :: Setter' (ScopeContext ann) (Map ByteString ann) -> [(ann, String)] -> ValidateScope ann e () locallyOver :: Lens' (ScopeContext ann) b -> (b -> b) -> ValidateScope ann e a -> ValidateScope ann e a locallyExtendOver :: Lens' (ScopeContext ann) (Map ByteString ann) -> [(ann, String)] -> ValidateScope ann e a -> ValidateScope ann e a validateArgScope :: AsScopeError e a => Arg v a -> ValidateScope a e (Arg (Nub (Scope : v)) a) validateAssignExprScope :: AsScopeError e a => Expr v a -> ValidateScope a e (Expr (Nub (Scope : v)) a) validateBlockScope :: AsScopeError e a => Block v a -> ValidateScope a e (Block (Nub (Scope : v)) a) validateCompoundStatementScope :: forall e v a. AsScopeError e a => CompoundStatement v a -> ValidateScope a e (CompoundStatement (Nub (Scope : v)) a) validateComprehensionScope :: AsScopeError e a => (ex v a -> ValidateScope a e (ex (Nub (Scope : v)) a)) -> Comprehension ex v a -> ValidateScope a e (Comprehension ex (Nub (Scope : v)) a) validateDecoratorScope :: AsScopeError e a => Decorator v a -> ValidateScope a e (Decorator (Nub (Scope : v)) a) validateDictItemScope :: AsScopeError e a => DictItem v a -> ValidateScope a e (DictItem (Nub (Scope : v)) a) validateExceptAsScope :: AsScopeError e a => ExceptAs v a -> ValidateScope a e (ExceptAs (Nub (Scope : v)) a) validateIdentScope :: AsScopeError e a => Ident v a -> ValidateScope a e (Ident (Nub (Scope : v)) a) validateListItemScope :: AsScopeError e a => ListItem v a -> ValidateScope a e (ListItem (Nub (Scope : v)) a) validateParamScope :: AsScopeError e a => Param v a -> ValidateScope a e (Param (Nub (Scope : v)) a) validateSetItemScope :: AsScopeError e a => SetItem v a -> ValidateScope a e (SetItem (Nub (Scope : v)) a) validateSimpleStatementScope :: AsScopeError e a => SimpleStatement v a -> ValidateScope a e (SimpleStatement (Nub (Scope : v)) a) validateSubscriptScope :: AsScopeError e a => Subscript v a -> ValidateScope a e (Subscript (Nub (Scope : v)) a) validateSuiteScope :: AsScopeError e a => Suite v a -> ValidateScope a e (Suite (Nub (Scope : v)) a) validateTupleItemScope :: AsScopeError e a => TupleItem v a -> ValidateScope a e (TupleItem (Nub (Scope : v)) a) instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Validate.Scope.ScopeContext a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Validate.Scope.ScopeContext a) instance GHC.Show.Show Language.Python.Validate.Scope.Binding instance GHC.Classes.Ord Language.Python.Validate.Scope.Binding instance GHC.Classes.Eq Language.Python.Validate.Scope.Binding module Language.Python.Validate.Syntax.Error data SyntaxError a PositionalAfterKeywordArg :: a -> Expr '[] a -> SyntaxError a PositionalAfterKeywordUnpacking :: a -> Expr '[] a -> SyntaxError a CannotAssignTo :: a -> Expr '[] a -> SyntaxError a CannotDelete :: a -> Expr '[] a -> SyntaxError a CannotAugAssignTo :: a -> Expr '[] a -> SyntaxError a NoBindingNonlocal :: Ident '[] a -> SyntaxError a PositionalAfterKeywordParam :: a -> String -> SyntaxError a UnexpectedDoubleStarParam :: a -> String -> SyntaxError a DuplicateArgument :: a -> String -> SyntaxError a UnexpectedNewline :: a -> SyntaxError a UnexpectedComment :: a -> SyntaxError a IdentifierReservedWord :: a -> String -> SyntaxError a EmptyIdentifier :: a -> SyntaxError a BadCharacter :: a -> String -> SyntaxError a BreakOutsideLoop :: a -> SyntaxError a ContinueOutsideLoop :: a -> SyntaxError a ReturnOutsideFunction :: a -> SyntaxError a NonlocalOutsideFunction :: a -> SyntaxError a ParametersNonlocal :: a -> [String] -> SyntaxError a Can'tJoinStringAndBytes :: a -> SyntaxError a YieldOutsideGenerator :: a -> SyntaxError a MalformedDecorator :: a -> SyntaxError a InvalidDictUnpacking :: a -> SyntaxError a InvalidSetUnpacking :: a -> SyntaxError a TypedParamInLambda :: a -> SyntaxError a AsyncWithOutsideCoroutine :: a -> SyntaxError a AsyncForOutsideCoroutine :: a -> SyntaxError a YieldFromInsideCoroutine :: a -> SyntaxError a YieldInsideCoroutine :: a -> SyntaxError a AwaitOutsideCoroutine :: a -> SyntaxError a AwaitInsideComprehension :: a -> SyntaxError a NullByte :: a -> SyntaxError a NonAsciiInBytes :: a -> Char -> SyntaxError a DefaultExceptMustBeLast :: a -> SyntaxError a WildcardImportInDefinition :: a -> SyntaxError a NoKeywordsAfterEmptyStarArg :: a -> SyntaxError a ManyStarredTargets :: a -> SyntaxError a ManyStarredParams :: a -> SyntaxError a ContinueInsideFinally :: a -> SyntaxError a ParameterMarkedGlobal :: a -> String -> SyntaxError a class AsSyntaxError r_a4UZX a_a4UAh | r_a4UZX -> a_a4UAh _SyntaxError :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (SyntaxError a_a4UAh) _PositionalAfterKeywordArg :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh) _PositionalAfterKeywordUnpacking :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh) _CannotAssignTo :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh) _CannotDelete :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh) _CannotAugAssignTo :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh) _NoBindingNonlocal :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (Ident ('[] :: [Type]) a_a4UAh) _PositionalAfterKeywordParam :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String) _UnexpectedDoubleStarParam :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String) _DuplicateArgument :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String) _UnexpectedNewline :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _UnexpectedComment :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _IdentifierReservedWord :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String) _EmptyIdentifier :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _BadCharacter :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String) _BreakOutsideLoop :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _ContinueOutsideLoop :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _ReturnOutsideFunction :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _NonlocalOutsideFunction :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _ParametersNonlocal :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, [String]) _Can'tJoinStringAndBytes :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _YieldOutsideGenerator :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _MalformedDecorator :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _InvalidDictUnpacking :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _InvalidSetUnpacking :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _TypedParamInLambda :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _AsyncWithOutsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _AsyncForOutsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _YieldFromInsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _YieldInsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _AwaitOutsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _AwaitInsideComprehension :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _NullByte :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _NonAsciiInBytes :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Char) _DefaultExceptMustBeLast :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _WildcardImportInDefinition :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _NoKeywordsAfterEmptyStarArg :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _ManyStarredTargets :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _ManyStarredParams :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _ContinueInsideFinally :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh _ParameterMarkedGlobal :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String) instance Language.Python.Validate.Syntax.Error.AsSyntaxError (Language.Python.Validate.Syntax.Error.SyntaxError a) a instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Validate.Syntax.Error.SyntaxError a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Validate.Syntax.Error.SyntaxError a) module Language.Python.Validate.Syntax data Syntax type ValidateSyntax e = ValidateM (NonEmpty e) (ReaderT SyntaxContext (State [String])) runValidateSyntax :: ValidateSyntax e a -> Validation (NonEmpty e) a validateModuleSyntax :: (AsSyntaxError e a, Member Indentation v) => Module v a -> ValidateSyntax e (Module (Nub (Syntax : v)) a) validateStatementSyntax :: (AsSyntaxError e a, Member Indentation v) => Statement v a -> ValidateSyntax e (Statement (Nub (Syntax : v)) a) validateExprSyntax :: (AsSyntaxError e a, Member Indentation v) => Expr v a -> ValidateSyntax e (Expr (Nub (Syntax : v)) a) data SyntaxContext SyntaxContext :: Bool -> Bool -> Maybe FunctionInfo -> Bool -> Bool -> Bool -> SyntaxContext [_inLoop] :: SyntaxContext -> Bool [_inFinally] :: SyntaxContext -> Bool [_inFunction] :: SyntaxContext -> Maybe FunctionInfo [_inGenerator] :: SyntaxContext -> Bool [_inClass] :: SyntaxContext -> Bool [_inParens] :: SyntaxContext -> Bool data FunctionInfo FunctionInfo :: [String] -> Bool -> FunctionInfo [_functionParams] :: FunctionInfo -> [String] [_asyncFunction] :: FunctionInfo -> Bool inLoop :: Lens' SyntaxContext Bool inFunction :: Lens' SyntaxContext (Maybe FunctionInfo) inGenerator :: Lens' SyntaxContext Bool inParens :: Lens' SyntaxContext Bool runValidateSyntax' :: SyntaxContext -> [String] -> ValidateSyntax e a -> Validation (NonEmpty e) a initialSyntaxContext :: SyntaxContext reservedWords :: [String] canAssignTo :: Expr v a -> Bool deleteBy' :: (a -> b -> Bool) -> a -> [b] -> [b] deleteFirstsBy' :: (a -> b -> Bool) -> [a] -> [b] -> [a] localNonlocals :: ([String] -> [String]) -> ValidateSyntax e a -> ValidateSyntax e a validateArgsSyntax :: (AsSyntaxError e a, Member Indentation v) => CommaSep1' (Arg v a) -> ValidateSyntax e (CommaSep1' (Arg (Nub (Syntax : v)) a)) validateBlockSyntax :: (AsSyntaxError e a, Member Indentation v) => Block v a -> ValidateSyntax e (Block (Nub (Syntax : v)) a) validateCompoundStatementSyntax :: forall e v a. (AsSyntaxError e a, Member Indentation v) => CompoundStatement v a -> ValidateSyntax e (CompoundStatement (Nub (Syntax : v)) a) validateComprehensionSyntax :: (AsSyntaxError e a, Member Indentation v) => (ex v a -> ValidateSyntax e (ex (Nub (Syntax : v)) a)) -> Comprehension ex v a -> ValidateSyntax e (Comprehension ex (Nub (Syntax : v)) a) validateDecoratorSyntax :: (AsSyntaxError e a, Member Indentation v) => Decorator v a -> ValidateSyntax e (Decorator (Nub (Syntax : v)) a) validateDictItemSyntax :: (AsSyntaxError e a, Member Indentation v) => DictItem v a -> ValidateSyntax e (DictItem (Nub (Syntax : v)) a) validateExceptAsSyntax :: (AsSyntaxError e a, Member Indentation v) => ExceptAs v a -> ValidateSyntax e (ExceptAs (Nub (Syntax : v)) a) validateIdentSyntax :: (AsSyntaxError e a, Member Indentation v) => Ident v a -> ValidateSyntax e (Ident (Nub (Syntax : v)) a) validateImportAsSyntax :: (AsSyntaxError e a, Member Indentation v) => (t a -> ValidateSyntax e (t' a)) -> ImportAs t v a -> ValidateSyntax e (ImportAs t' (Nub (Syntax : v)) a) validateImportTargetsSyntax :: (AsSyntaxError e a, Member Indentation v) => ImportTargets v a -> ValidateSyntax e (ImportTargets (Nub (Syntax : v)) a) validateListItemSyntax :: (AsSyntaxError e a, Member Indentation v) => ListItem v a -> ValidateSyntax e (ListItem (Nub (Syntax : v)) a) validateParamsSyntax :: forall e v a. (AsSyntaxError e a, Member Indentation v) => Bool -> CommaSep (Param v a) -> ValidateSyntax e (CommaSep (Param (Nub (Syntax : v)) a)) validateSetItemSyntax :: (AsSyntaxError e a, Member Indentation v) => SetItem v a -> ValidateSyntax e (SetItem (Nub (Syntax : v)) a) validateSimpleStatementSyntax :: (AsSyntaxError e a, Member Indentation v) => SimpleStatement v a -> ValidateSyntax e (SimpleStatement (Nub (Syntax : v)) a) validateStringLiteralSyntax :: AsSyntaxError e a => StringLiteral a -> ValidateSyntax e (StringLiteral a) validateSubscriptSyntax :: (AsSyntaxError e a, Member Indentation v) => Subscript v a -> ValidateSyntax e (Subscript (Nub (Syntax : v)) a) validateSuiteSyntax :: (AsSyntaxError e a, Member Indentation v) => Suite v a -> ValidateSyntax e (Suite (Nub (Syntax : v)) a) validateTupleItemSyntax :: (AsSyntaxError e a, Member Indentation v) => TupleItem v a -> ValidateSyntax e (TupleItem (Nub (Syntax : v)) a) validateWhitespace :: (AsSyntaxError e a, Foldable f) => a -> f Whitespace -> ValidateSyntax e (f Whitespace) module Language.Python.Validate.Error data ValidationError a IndentationError :: IndentationError a -> ValidationError a ScopeError :: ScopeError a -> ValidationError a SyntaxError :: SyntaxError a -> ValidationError a instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Validate.Error.ValidationError a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Validate.Error.ValidationError a) instance Language.Python.Internal.Lexer.AsTabError (Language.Python.Validate.Error.ValidationError a) a instance Language.Python.Validate.Indentation.Error.AsIndentationError (Language.Python.Validate.Error.ValidationError a) a instance Language.Python.Validate.Scope.Error.AsScopeError (Language.Python.Validate.Error.ValidationError a) a instance Language.Python.Validate.Syntax.Error.AsSyntaxError (Language.Python.Validate.Error.ValidationError a) a module Language.Python.Validate validateModuleAll :: (AsIndentationError e a, AsSyntaxError e a, AsScopeError e a) => Module '[] a -> Validation (NonEmpty e) (Module '[Scope, Syntax, Indentation] a) validateStatementAll :: (AsIndentationError e a, AsSyntaxError e a, AsScopeError e a) => Statement '[] a -> Validation (NonEmpty e) (Statement '[Scope, Syntax, Indentation] a) validateExprAll :: (AsIndentationError e a, AsSyntaxError e a, AsScopeError e a) => Expr '[] a -> Validation (NonEmpty e) (Expr '[Scope, Syntax, Indentation] a) -- | Validate a datatype for indentation, syntax, and scope correctness -- -- e.g. -- --
--   validateModuleAll =
--     validateAll
--       validateModuleIndentation
--       validateModuleSyntax
--       validateModuleScope
--   
validateAll :: (AsIndentationError e a, AsSyntaxError e a, AsScopeError e a) => (s '[] a -> ValidateIndentation e (s '[Indentation] a)) -> (s '[Indentation] a -> ValidateSyntax e (s '[Syntax, Indentation] a)) -> (s '[Syntax, Indentation] a -> ValidateScope a e (s '[Scope, Syntax, Indentation] a)) -> s '[] a -> Validation (NonEmpty e) (s '[Scope, Syntax, Indentation] a) -- | hpython provides tools for working with Python source code. -- -- Language.Python.DSL: A DSL for writing Python programs -- -- Language.Python.Optics: Optics for working with Python syntax -- trees -- -- Language.Python.Parse: Parse Python source into a syntax tree -- -- Language.Python.Render: Pretty print Python syntax trees -- -- Language.Python.Syntax: The data structures that represent -- Python programs, like Statement and SimpleStatement -- -- Language.Python.Validate: Validate aspects of Python syntax -- trees, like indentation, syntax, or scope module Language.Python