R/import.R
8ebe60c3
 .set_fake_tqdm <- "
 def fake_tqdm(iterable=None, *args, **kwargs):
   assert iterable is not None
   yield from iterable
 
 import SpatialDE
 SpatialDE.base.tqdm = fake_tqdm
 "
 
 .set_real_tqdm <- "
 import SpatialDE
 import tqdm.autonotebook
 SpatialDE.base.tqdm = tqdm.autonotebook.tqdm
 "
 
 #' Import SpatialDE
 #'
 #' This function loads the SpatialDE Python module and optionally
 #' monkey-patches it to remove tqdm calls.
 #'
5d897457
 #' @param proc A process object generated by [`basilisk::basiliskStart()`]
8ebe60c3
 #' @param patch_tqdm If `TRUE` patch calls to tqdm.
 #' @return An R wrapper for the SpatialDE Python module.
 #'
 #' @importFrom reticulate import py_run_string
f2ee8aa8
 #' @importFrom basilisk basiliskRun
5d897457
 #'
 #' @keywords internal
353bd6f2
 .importPyModule <- function(proc, patch_tqdm) {
   imp <- function(patch_tqdm, store) {
30fd9623
     py_run_string("import warnings")
     py_run_string("warnings.simplefilter(action='ignore', category=FutureWarning)")
9eab3712
     mod <- import("SpatialDE")
353bd6f2
     py_run_string(ifelse(patch_tqdm, .set_fake_tqdm, .set_real_tqdm))
5d897457
 
f2ee8aa8
     store$spatialDE <- mod
     invisible(NULL)
353bd6f2
   }
 
   basiliskRun(proc, imp, patch_tqdm, persist=TRUE)
8ebe60c3
 }