diff --git a/nipype/__init__.py b/nipype/__init__.py index 419f1701b8..799e92e750 100644 --- a/nipype/__init__.py +++ b/nipype/__init__.py @@ -5,6 +5,7 @@ absolute_import) import os +import functools from distutils.version import LooseVersion from .info import (LONG_DESCRIPTION as __doc__, URL as __url__, STATUS as @@ -58,6 +59,7 @@ def get_info(): Rename, Function, Select, Merge) +@functools.lru_cache() def check_version(raise_exception=False): """Check for the latest version of the library @@ -95,5 +97,8 @@ def check_version(raise_exception=False): logger.critical(message) +# Run telemetry on import for interactive sessions, such as IPython, Jupyter notebooks, Python REPL if config.getboolean('execution', 'check_version'): - check_version() + import __main__ + if not hasattr(__main__, '__file__'): + check_version() diff --git a/nipype/interfaces/base/core.py b/nipype/interfaces/base/core.py index 7ba8486082..7132f7fc97 100644 --- a/nipype/interfaces/base/core.py +++ b/nipype/interfaces/base/core.py @@ -169,6 +169,10 @@ class BaseInterface(Interface): def __init__(self, from_file=None, resource_monitor=None, ignore_exception=False, **inputs): + if config.getboolean('execution', 'check_version'): + from ... import check_version + check_version() + if not self.input_spec: raise Exception( 'No input_spec in class: %s' % self.__class__.__name__) diff --git a/nipype/pipeline/engine/base.py b/nipype/pipeline/engine/base.py index 7f7afd3928..ffb64222d4 100644 --- a/nipype/pipeline/engine/base.py +++ b/nipype/pipeline/engine/base.py @@ -41,6 +41,9 @@ def __init__(self, name=None, base_dir=None): self.base_dir = base_dir self.config = deepcopy(config._sections) + if config.getboolean('execution', 'check_version'): + from ... import check_version + check_version() @property def name(self):