Skip to content

Commit a4909eb

Browse files
authored
Merge pull request #1561 from satra/rel/0.12.1
fix: remove psutils usage by default
2 parents 356319b + 7b04262 commit a4909eb

File tree

5 files changed

+40
-37
lines changed

5 files changed

+40
-37
lines changed

Diff for: nipype/info.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
# full release. '.dev' as a _version_extra string means this is a development
99
# version
1010
_version_major = 0
11-
_version_minor = 13
12-
_version_micro = 0
13-
_version_extra = '-dev' # Remove -dev for release
11+
_version_minor = 12
12+
_version_micro = 1
13+
_version_extra = '' # Remove -dev for release
1414

1515

1616
def get_nipype_gitversion():

Diff for: nipype/interfaces/base.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,19 @@
5050
from .. import __version__
5151
from ..external.six import string_types, text_type
5252

53+
runtime_profile = str2bool(config.get('execution', 'profile_runtime'))
54+
5355
nipype_version = LooseVersion(__version__)
5456

5557
iflogger = logging.getLogger('interface')
5658

59+
if runtime_profile:
60+
try:
61+
import psutil
62+
except ImportError as exc:
63+
iflogger.info('Unable to import packages needed for runtime profiling. '\
64+
'Turning off runtime profiler. Reason: %s' % exc)
65+
runtime_profile = False
5766

5867
__docformat__ = 'restructuredtext'
5968

@@ -1350,15 +1359,6 @@ def run_command(runtime, output=None, timeout=0.01, redirect_x=False):
13501359
# Init logger
13511360
logger = logging.getLogger('workflow')
13521361

1353-
# Default to profiling the runtime
1354-
try:
1355-
import psutil
1356-
runtime_profile = True
1357-
except ImportError as exc:
1358-
logger.info('Unable to import packages needed for runtime profiling. '\
1359-
'Turning off runtime profiler. Reason: %s' % exc)
1360-
runtime_profile = False
1361-
13621362
# Init variables
13631363
PIPE = subprocess.PIPE
13641364
cmdline = runtime.cmdline

Diff for: nipype/interfaces/tests/test_runtime_profiler.py

+17-12
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,21 @@
88

99
# Import packages
1010
import unittest
11-
from nipype.interfaces.base import traits, CommandLine, CommandLineInputSpec
12-
13-
try:
14-
import psutil
15-
run_profiler = True
16-
skip_profile_msg = 'Run profiler tests'
17-
except ImportError as exc:
18-
skip_profile_msg = 'Missing python packages for runtime profiling, skipping...\n'\
19-
'Error: %s' % exc
20-
run_profiler = False
11+
from nipype.interfaces.base import (traits, CommandLine, CommandLineInputSpec,
12+
runtime_profile)
13+
14+
run_profile = runtime_profile
15+
16+
if run_profile:
17+
try:
18+
import psutil
19+
skip_profile_msg = 'Run profiler tests'
20+
except ImportError as exc:
21+
skip_profile_msg = 'Missing python packages for runtime profiling, skipping...\n'\
22+
'Error: %s' % exc
23+
run_profile = False
24+
else:
25+
skip_profile_msg = 'Not running profiler'
2126

2227
# UseResources inputspec
2328
class UseResourcesInputSpec(CommandLineInputSpec):
@@ -355,7 +360,7 @@ def _run_function_workflow(self, num_gb, num_threads):
355360
return start_str, finish_str
356361

357362
# Test resources were used as expected in cmdline interface
358-
@unittest.skipIf(run_profiler == False, skip_profile_msg)
363+
@unittest.skipIf(run_profile == False, skip_profile_msg)
359364
def test_cmdline_profiling(self):
360365
'''
361366
Test runtime profiler correctly records workflow RAM/CPUs consumption
@@ -397,7 +402,7 @@ def test_cmdline_profiling(self):
397402
msg=threads_err)
398403

399404
# Test resources were used as expected
400-
@unittest.skipIf(run_profiler == False, skip_profile_msg)
405+
@unittest.skipIf(run_profile == False, skip_profile_msg)
401406
def test_function_profiling(self):
402407
'''
403408
Test runtime profiler correctly records workflow RAM/CPUs consumption

Diff for: nipype/interfaces/utility.py

+10-13
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,21 @@
2222
import nibabel as nb
2323

2424
from .base import (traits, TraitedSpec, DynamicTraitedSpec, File,
25-
Undefined, isdefined, OutputMultiPath,
25+
Undefined, isdefined, OutputMultiPath, runtime_profile,
2626
InputMultiPath, BaseInterface, BaseInterfaceInputSpec)
2727
from .io import IOBase, add_traits
2828
from ..external.six import string_types
2929
from ..testing import assert_equal
3030
from ..utils.filemanip import (filename_to_list, copyfile, split_filename)
3131
from ..utils.misc import getsource, create_function_from_source
3232

33+
if runtime_profile:
34+
try:
35+
import psutil
36+
except ImportError as exc:
37+
logger.info('Unable to import packages needed for runtime profiling. '\
38+
'Turning off runtime profiler. Reason: %s' % exc)
39+
runtime_profile = False
3340

3441
class IdentityInterface(IOBase):
3542
"""Basic interface class generates identity mappings
@@ -459,20 +466,10 @@ def _function_handle_wrapper(queue, **kwargs):
459466
if isdefined(value):
460467
args[name] = value
461468

462-
# Runtime profiler on if dependecies available
463-
try:
464-
import psutil
465-
from nipype.interfaces.base import get_max_resources_used
466-
import multiprocessing
467-
runtime_profile = True
468-
except ImportError as exc:
469-
logger.info('Unable to import packages needed for runtime profiling. '\
470-
'Turning off runtime profiler. Reason: %s' % exc)
471-
runtime_profile = False
472-
473469
# Profile resources if set
474-
#runtime_profile=False
475470
if runtime_profile:
471+
from nipype.interfaces.base import get_max_resources_used
472+
import multiprocessing
476473
# Init communication queue and proc objs
477474
queue = multiprocessing.Queue()
478475
proc = multiprocessing.Process(target=_function_handle_wrapper,

Diff for: nipype/utils/config.py

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
parameterize_dirs = true
5858
poll_sleep_duration = 60
5959
xvfb_max_wait = 10
60+
profile_runtime = false
6061
6162
[check]
6263
interval = 1209600

0 commit comments

Comments
 (0)