     if lexer and formatter:
         return highlight(code, lexer, formatter)")))
 
-(def ^:private
-  py-run-fn
+(def ^:private ^PyObject py-run-fn
   (.eval python "run"))
 
-(def ^:private
-  py-none (.eval ^PythonInterpreter python "None"))
+(def ^:private ^PyObject py-none
+  (.eval python "None"))
 
 (defmulti ^:private clj->jy type)
 

(defmethod clj->jy PersistentHashMap [m] (map->jy m))
(defmethod clj->jy PersistentArrayMap [m] (map->jy m))

(defn- keyword->lowercase-pystring
  [kw]
  (-> kw name str/lower-case (PyUnicode.)))


   {:pre [(string? code)]}
   (let [py-code (PyUnicode. ^String code)
         py-lexer-name (if (some? lang)
                         ^PyObject (keyword->lowercase-pystring lang)
                         py-none)
         py-formatter-name (keyword->lowercase-pystring output)

         py-opts (map->jy opts
                          (fn [k]
                            (-> k name (str/replace #"-" "") str/lower-case)))
         res (.__call__ py-run-fn
                        py-code
                        py-lexer-name
                        py-formatter-name
                        py-opts)]

     (when (and res (.__nonzero__ res))
       ;; This won't work with non-text formatters such as :gif, but it's
