File: __init__.py

package info (click to toggle)
nipype 1.9.2-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,260 kB
  • sloc: python: 156,463; javascript: 9,246; tcl: 608; sh: 485; makefile: 168
file content (100 lines) | stat: -rw-r--r-- 2,539 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
# vi: set ft=python sts=4 ts=4 sw=4 et:
"""
Information on specific functions, classes, and methods.

:Release: |version|
:Date: |today|

Top-level module API
--------------------

"""
import os

# No longer used internally but could be used externally.
from looseversion import LooseVersion

from .info import URL as __url__, STATUS as __status__, __version__
from .utils.config import NipypeConfig
from .utils.logger import Logging
from .refs import due
from .pkg_info import get_pkg_info as _get_pkg_info

try:
    import faulthandler

    faulthandler.enable()
except (ImportError, OSError):
    pass

config = NipypeConfig()
logging = Logging(config)


class NipypeTester:
    def __call__(self, doctests=True, parallel=False):
        try:
            import pytest
        except ImportError:
            raise RuntimeError("py.test-3 not installed, run: pip install pytest")
        args = []
        if not doctests:
            args.extend(["-p", "no:doctest"])
        if parallel:
            try:
                import xdist
            except ImportError:
                raise RuntimeError("pytest-xdist required for parallel run")
            args.append("-n auto")
        args.append(os.path.dirname(__file__))
        pytest.main(args=args)


test = NipypeTester()


def get_info():
    """Returns package information"""
    return _get_pkg_info(os.path.dirname(__file__))


from .pipeline import Node, MapNode, JoinNode, Workflow
from .interfaces import (
    DataGrabber,
    DataSink,
    SelectFiles,
    IdentityInterface,
    Rename,
    Function,
    Select,
    Merge,
)


def check_latest_version(raise_exception=False):
    """
    Check for the latest version of the library.

    Parameters
    ----------
    raise_exception: bool
        Raise a RuntimeError if a bad version is being used
    """
    import etelemetry

    logger = logging.getLogger("nipype.utils")
    return etelemetry.check_available_version(
        "nipy/nipype", __version__, logger, raise_exception
    )


# Run telemetry on import for interactive sessions, such as IPython, Jupyter notebooks, Python REPL
if config.getboolean("execution", "check_version"):
    import __main__

    if not hasattr(__main__, "__file__") and "NIPYPE_NO_ET" not in os.environ:
        from .interfaces.base import BaseInterface

        if BaseInterface._etelemetry_version_data is None:
            BaseInterface._etelemetry_version_data = check_latest_version() or "n/a"