From 78e00ad2ed86b1200d9e1011dd3ecfbbb249fd57 Mon Sep 17 00:00:00 2001 From: Jake VanderPlas Date: Wed, 27 Jun 2018 16:41:45 -0700 Subject: [PATCH] MAINT: avoid selenium import when altair is imported --- altair/utils/headless.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/altair/utils/headless.py b/altair/utils/headless.py index 38169067c..f779f6bc5 100644 --- a/altair/utils/headless.py +++ b/altair/utils/headless.py @@ -6,11 +6,6 @@ import os import tempfile -try: - import selenium.webdriver -except ImportError: - selenium = None - @contextlib.contextmanager def temporary_filename(**kwargs): @@ -110,9 +105,15 @@ def temporary_filename(**kwargs): def compile_spec(spec, format, mode, vega_version, vegaembed_version, vegalite_version, scale_factor=1, driver_timeout=20, webdriver='chrome'): - # TODO: detect & use local Jupyter caches of JS packages? + # selenium is an optional dependency, so import it here + try: + import selenium.webdriver + except ImportError: + raise ImportError("selenium package is required " + "for saving chart as {0}".format(format)) + if format not in ['png', 'svg', 'vega']: raise NotImplementedError("format must be 'svg', 'png' or 'vega'") @@ -128,9 +129,6 @@ def compile_spec(spec, format, mode, if mode == 'vega-lite' and vegalite_version is None: raise ValueError("must specify vega-lite version") - if selenium is None: - raise ImportError("selenium package is required " - "for saving chart as {0}".format(format)) if webdriver == 'chrome': webdriver_class = selenium.webdriver.Chrome webdriver_options_class = selenium.webdriver.chrome.options.Options