Skip to content

Sphinx extension to plot workflows should read mocks #2577

Open
@oesteban

Description

@oesteban

Summary

As of Sphinx 1.3, the autodoc module allows setting a list of modules to be mocked. However, our extension does not read that list and some workflows will crash.

Actual behavior

From mriqc builds at readthedocs:

/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py:docstring of mriqc.workflows.anatomical:23: WARNING: Exception occurred in plotting workflows-1
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/anat/__init__.py", line 6, in <module>
    from ..interfaces import mni  # for backwards compatibility
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/interfaces/__init__.py", line 6, in <module>
    from .masks import BETRPT as BET
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/interfaces/masks.py", line 25, in <module>
    fsl.preprocess.BETInputSpec):
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py:docstring of mriqc.workflows.anatomical.anat_qc_workflow:5: WARNING: Exception occurred in plotting workflows-2
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py", line 506, in airmsk_wf
    interpolation='Linear', float=True), name='invert_xfm')
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py:docstring of mriqc.workflows.anatomical.gradient_threshold:1: WARNING: Exception occurred in plotting workflows-3
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 8, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py", line 95, in anat_qc_workflow
    hmsk = headmsk_wf()
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py", line 448, in headmsk_wf
    bet = pe.Node(fsl.BET(surfaces=True), name='fsl_bet')
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py:docstring of mriqc.workflows.anatomical.spatial_normalization:1: WARNING: Exception occurred in plotting workflows-4
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py", line 250, in compute_iqms
    fwhm_interface = get_fwhmx()
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/utils.py", line 172, in get_fwhmx
    afni_version = StrictVersion('%s.%s.%s' % Info.version())
TypeError: not enough arguments for format string
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:144: WARNING: Exception occurred in plotting workflows-5
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/anatomical.py", line 448, in headmsk_wf
    bet = pe.Node(fsl.BET(surfaces=True), name='fsl_bet')
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py:docstring of mriqc.workflows.functional.compute_iqms:3: WARNING: Exception occurred in plotting workflows-7
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py", line 225, in compute_iqms
    mem_gb=biggest_file_gb * 3)
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py:docstring of mriqc.workflows.functional.fmri_bmsk_workflow:5: WARNING: Exception occurred in plotting workflows-8
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py", line 688, in epi_mni_align
    from niworkflows.interfaces.registration import (
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/interfaces/__init__.py", line 6, in <module>
    from .masks import BETRPT as BET
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/interfaces/masks.py", line 25, in <module>
    fsl.preprocess.BETInputSpec):
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py:docstring of mriqc.workflows.functional.hmc_afni:1: WARNING: Exception occurred in plotting workflows-9
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py", line 470, in fmri_bmsk_workflow
    outputtype='NIFTI_GZ'), name='afni_msk')
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py:docstring of mriqc.workflows.functional.individual_reports:1: WARNING: Exception occurred in plotting workflows-10
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 7, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py", line 89, in fmri_qc_workflow
    name="non_steady_state_detector")
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:151: WARNING: Exception occurred in plotting workflows-11
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py", line 573, in hmc_afni
    gen_ref = pe.Node(nwr.EstimateReferenceImage(mc_method="AFNI"), name="gen_ref")
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:178: WARNING: Exception occurred in plotting workflows-12
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py", line 512, in hmc_mcflirt
    gen_ref = pe.Node(nwr.EstimateReferenceImage(mc_method="AFNI"), name="gen_ref")
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface
/home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:204: WARNING: Exception occurred in plotting workflows-13
 from /home/docs/checkouts/readthedocs.org/user_builds/mriqc/checkouts/master/docs/source/workflows.rst:
Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/sphinxext/plot_workflow.py", line 485, in run_code
    exec(code, ns)
  File "<string>", line 2, in <module>
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/mriqc/workflows/functional.py", line 349, in individual_reports
    bigplot = pe.Node(FMRISummary(), name='BigPlot', mem_gb=biggest_file_gb * 3.5)
  File "/home/docs/checkouts/readthedocs.org/user_builds/mriqc/envs/master/lib/python3.5/site-packages/niworkflows/nipype/pipeline/engine/nodes.py", line 153, in __init__
    raise IOError('interface must be an instance of an Interface')
OSError: interface must be an instance of an Interface

Expected behavior

No exceptions raised.

How to replicate the behavior

MRIQC

Script/Workflow details

Please put URL to code or code here (if not too long).

Platform details:

Read the docs

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions