diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for PyF
 
+## 0.9.0.2 -- 2020-09-11
+
+- Version bump for megaparsec 9.0
+
 ## 0.9.0.1 -- 2020-03-25
 
 - Fixs for GHC 8.10
diff --git a/PyF.cabal b/PyF.cabal
--- a/PyF.cabal
+++ b/PyF.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                PyF
-version:             0.9.0.1
+version:             0.9.0.2
 synopsis: Quasiquotations for a python like interpolated string formater
 description: Quasiquotations for a python like interpolated string formater.
 license:             BSD-3-Clause
@@ -26,7 +26,7 @@
                      , containers
 
                      -- Parsec and some transitive deps
-                     , megaparsec >= 7.0 && < 9.0
+                     , megaparsec >= 7.0 && < 10.0
                      , mtl
 
                      -- haskell-src-meta < 0.8.2 does not correctly handle TypeApplication
@@ -42,7 +42,6 @@
   hs-source-dirs:      test
   main-is:             Spec.hs
   other-modules: SpecUtils SpecCustomDelimiters
-  build-tools:  python3
   build-depends:       base, PyF, hspec, text, template-haskell, process
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
   default-language:    Haskell2010
@@ -59,7 +58,6 @@
   type:                exitcode-stdio-1.0
   hs-source-dirs:      test
   main-is:             SpecFail.hs
-  build-tools:  python3
   build-depends:       base, hspec, text, template-haskell, process, hspec, temporary, hashable, filepath, deepseq, directory, HUnit
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
   default-language:    Haskell2010
diff --git a/src/PyF/Internal/Extensions.hs b/src/PyF/Internal/Extensions.hs
--- a/src/PyF/Internal/Extensions.hs
+++ b/src/PyF/Internal/Extensions.hs
@@ -8,11 +8,12 @@
 
 -- | Associate a template haskell extension to an haskell-src-ext extension
 thExtToMetaExt :: TH.Extension -> Maybe Exts.Extension
-thExtToMetaExt e = Exts.EnableExtension <$> case e of
-  -- For some reason, the casing is different between TH and haskell-src-exts
-  TH.Cpp -> Just Exts.CPP
-  -- Hope for the best, if haskell-src-ext knows the extension or not
-  _ -> case Exts.parseExtension (show e) of
-    Exts.EnableExtension ext -> Just ext
-    Exts.DisableExtension ext -> Just ext
-    Exts.UnknownExtension _ -> Nothing
+thExtToMetaExt e =
+  Exts.EnableExtension <$> case e of
+    -- For some reason, the casing is different between TH and haskell-src-exts
+    TH.Cpp -> Just Exts.CPP
+    -- Hope for the best, if haskell-src-ext knows the extension or not
+    _ -> case Exts.parseExtension (show e) of
+      Exts.EnableExtension ext -> Just ext
+      Exts.DisableExtension ext -> Just ext
+      Exts.UnknownExtension _ -> Nothing
diff --git a/src/PyF/Internal/PythonSyntax.hs b/src/PyF/Internal/PythonSyntax.hs
--- a/src/PyF/Internal/PythonSyntax.hs
+++ b/src/PyF/Internal/PythonSyntax.hs
@@ -38,11 +38,10 @@
 
 type Parser t = ParsecT Void String (Reader ParsingContext) t
 
-data ParsingContext
-  = ParsingContext
-      { delimiters :: (Char, Char),
-        enabledExtensions :: [ParseExtension.Extension]
-      }
+data ParsingContext = ParsingContext
+  { delimiters :: (Char, Char),
+    enabledExtensions :: [ParseExtension.Extension]
+  }
   deriving (Show)
 
 {-
diff --git a/src/PyF/Internal/QQ.hs b/src/PyF/Internal/QQ.hs
--- a/src/PyF/Internal/QQ.hs
+++ b/src/PyF/Internal/QQ.hs
@@ -28,8 +28,8 @@
 import GHC.TypeLits
 import Language.Haskell.TH
 import PyF.Class
-import qualified PyF.Formatters as Formatters
 import PyF.Formatters (AnyAlign (..))
+import qualified PyF.Formatters as Formatters
 import PyF.Internal.Extensions
 import PyF.Internal.PythonSyntax
 import Text.Megaparsec
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -193,25 +193,25 @@
       it "E" $(checkExample "{1.0:#.0E}" "1.E+00")
       it "G" $(checkExample "{1.0:#.0G}" "1.")
       it "percent" $(checkExample "{1.0:#.0%}" "100.%")
-  describe "complex"
-    $ it "works with many things at once"
-    $ let name = "Guillaume"
+  describe "complex" $
+    it "works with many things at once" $
+      let name = "Guillaume"
           age = 31
           euroToFrancs = 6.55957
        in [fmt|hello {name} you are {age} years old and the conversion rate of euro is {euroToFrancs:.2}|] `shouldBe` "hello Guillaume you are 31 years old and the conversion rate of euro is 6.56"
   describe "error reporting" $
     pure () -- TODO: find a way to test error reporting
-  describe "sub expressions"
-    $ it "works"
-    $ [fmt|2pi = {2 * pi:.2}|] `shouldBe` "2pi = 6.28"
-  describe "escape strings"
-    $ it "works"
-    $ [fmt|hello \n\b|] `shouldBe` "hello \n\b"
-  describe "variable precision"
-    $ it "works"
-    $ do
-      let n = 3 :: Int
-      [fmt|{pi:.{n}}|] `shouldBe` "3.142"
+  describe "sub expressions" $
+    it "works" $
+      [fmt|2pi = {2 * pi:.2}|] `shouldBe` "2pi = 6.28"
+  describe "escape strings" $
+    it "works" $
+      [fmt|hello \n\b|] `shouldBe` "hello \n\b"
+  describe "variable precision" $
+    it "works" $
+      do
+        let n = 3 :: Int
+        [fmt|{pi:.{n}}|] `shouldBe` "3.142"
   it "escape chars" $
     [fmt|}}{{}}{{|] `shouldBe` "}{}{"
   describe "custom delimiters" $ do
@@ -221,9 +221,9 @@
       [myCustomFormatter|@@!!@@!!|] `shouldBe` "@!@!"
     it "works for custom precision" $
       [myCustomFormatter|@pi:.@2!!|] `shouldBe` "3.14"
-  describe "empty line"
-    $ it "works"
-    $ [fmt||] `shouldBe` ""
+  describe "empty line" $
+    it "works" $
+      [fmt||] `shouldBe` ""
   describe "multi line escape" $ do
     it "works" $
       [fmt|\
@@ -251,14 +251,14 @@
 \
 |]
         `shouldBe` "\\\n- a\n- b\n"
-  describe "empty trailing value"
-    $ it "String"
-    $ ( [fmt|\
+  describe "empty trailing value" $
+    it "String" $
+      ( [fmt|\
 {pi:.0}
 |] ::
           String
       )
-      `shouldBe` "3\n"
+        `shouldBe` "3\n"
   describe "language extensions" $ do
     it "parses @Int" $
       [fmt|hello {show @Int 10}|] `shouldBe` "hello 10"
diff --git a/test/SpecFail.hs b/test/SpecFail.hs
--- a/test/SpecFail.hs
+++ b/test/SpecFail.hs
@@ -110,9 +110,10 @@
 
 failCompileContent :: HasCallStack => Int -> String -> String -> Spec
 failCompileContent h caption fileContent =
-  before (checkCompile fileContent) $ it (show caption) $ \res -> case res of
-    CompileError output -> golden (show h) output
-    _ -> assertFailure (show $ ".golden/" <> show h <> "\n" <> show res)
+  before (checkCompile fileContent) $
+    it (show caption) $ \res -> case res of
+      CompileError output -> golden (show h) output
+      _ -> assertFailure (show $ ".golden/" <> show h <> "\n" <> show res)
 
 main :: IO ()
 main = hspec spec
diff --git a/test/failureCases/bug18.hs b/test/failureCases/bug18.hs
--- a/test/failureCases/bug18.hs
+++ b/test/failureCases/bug18.hs
@@ -15,11 +15,10 @@
 import qualified Data.Text as T
 import PyF
 
-data Foo
-  = Foo
-      { fieldA :: (),
-        fieldB :: T.Text
-      }
+data Foo = Foo
+  { fieldA :: (),
+    fieldB :: T.Text
+  }
   deriving (Show)
 
 yolo :: Foo
diff --git a/test/golden/2897849520519503487.golden b/test/golden/2897849520519503487.golden
--- a/test/golden/2897849520519503487.golden
+++ b/test/golden/2897849520519503487.golden
@@ -1,5 +1,5 @@
 
-INITIALPATH:27:3: error: [-Wmissing-fields, -Werror=missing-fields]
+INITIALPATH:26:3: error: [-Wmissing-fields, -Werror=missing-fields]
     • Fields of ‘Foo’ not initialised: fieldA
     • In the expression: Foo {fieldB = (Data.String.fromString ("hello what's up " <> ((((PyF.Internal.QQ.formatAny PyF.Formatters.Minus) PyF.Internal.QQ.PaddingDefaultK) Nothing) Nothing) x))}
       In an equation for ‘yolo’:
@@ -9,10 +9,10 @@
                 x :: T.Text
                 x = T.pack "hi"
    |
-27 |   Foo
+26 |   Foo
    |   ^^^...
 
-INITIALPATH:34:1: error: [-Wmissing-signatures, -Werror=missing-signatures] Top-level binding with no type signature: main :: IO ()
+INITIALPATH:33:1: error: [-Wmissing-signatures, -Werror=missing-signatures] Top-level binding with no type signature: main :: IO ()
    |
-34 | main = print yolo
+33 | main = print yolo
    | ^^^^
