internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: nipy/nipype

Issue:
[BUG] orthogonalisation on/off
If there is a variable is orthogonalised wrt any other variable, then it should also be orthogonalised wrt EV0 (which is disturbingly not related to a variable 'EV0', but rather an on/off switch for all orthogonalisations).
I think this is the fix below, but I need to test it.  I wanted to document first.

https://github.com/jokedurnez/nipype/commit/366707a5c719d246aa54ec579d8ca12ab14bf3df


Discussion:

Resolving patch:
diff --git a/nipype/interfaces/fsl/model.py b/nipype/interfaces/fsl/model.py
--- a/nipype/interfaces/fsl/model.py
+++ b/nipype/interfaces/fsl/model.py
@@ -217,13 +217,16 @@ def _create_ev_files(self, cwd, runinfo, runidx, ev_parameters,
                 self._create_ev_file(evfname, evinfo)
         # add ev orthogonalization
         for i in range(1, num_evs[0] + 1):
+            initial = ev_ortho.substitute(c0=i, c1=0, orthogonal=1)
             for j in range(0, num_evs[0] + 1):
                 try:
                     orthogonal = int(orthogonalization[i][j])
                 except (KeyError, TypeError, ValueError, IndexError):
                     orthogonal = 0
-                ev_txt += ev_ortho.substitute(
-                    c0=i, c1=j, orthogonal=orthogonal)
+                if orthogonal == 1 and initial not in ev_txt:
+                    ev_txt += initial + "\n"
+                ev_txt += ev_ortho.substitute(c0=i, c1=j,
+                                              orthogonal=orthogonal)
                 ev_txt += "\n"
         # add contrast info to fsf file
         if isdefined(contrasts):


Test patch:
Repository: nipy/nipype

Issue:
AFNI CatMatvec: Caching fails and output file undefined
### Summary
AFNI CatMatvec  interface caching fails and output file is undefined
### How to replicate the behavior
```Python
from nipype.interfaces import afni
from nipype.caching import Memory
memory = Memory('/tmp/test_catmatvec/')
catmatvec = memory.cache(afni.CatMatvec)
out_catmatvec = catmatvec(in_file=[('/tmp/test_caching/allineate_affine.aff12.1D', 'ONELINE')], out_file='/tmp/test_catmatvec2.aff12.1D')
print(out_catmatvec.outputs)
```
gives `out_file = <undefined>`. Moreover, when launching the same code twice the computations are restarted
### Platform details:

{'nibabel_version': '2.2.1', 'sys_executable': '/home/salma/anaconda2/bin/python', 'networkx_version': '2.0', 'numpy_version': '1.13.3', 'sys_platform': 'linux2', 'sys_version': '2.7.14 |Anaconda custom (64-bit)| (default, Oct 16 2017, 17:29:19) \n[GCC 7.2.0]', 'commit_source': 'repository', 'commit_hash': 'e446466', 'pkg_path': '/home/salma/CODE/nipype/nipype', 'nipype_version': '1.0.3-dev+ge446466', 'traits_version': '4.6.0', 'scipy_version': '1.0.0'}
1.0.3-dev+ge446466



Discussion:

Resolving patch:
diff --git a/nipype/interfaces/afni/utils.py b/nipype/interfaces/afni/utils.py
--- a/nipype/interfaces/afni/utils.py
+++ b/nipype/interfaces/afni/utils.py
@@ -564,8 +564,11 @@ class CatMatvecInputSpec(AFNICommandInputSpec):
         argstr="%s",
         position=-2)
     out_file = File(
-        desc="File to write concattenated matvecs to",
         argstr=" > %s",
+        name_template='%s_cat.aff12.1D',
+        name_source='in_file',
+        keep_extension=False,
+        desc="File to write concattenated matvecs to",
         position=-1,
         mandatory=True)
     matrix = traits.Bool(


Test patch:
diff --git a/nipype/interfaces/afni/tests/test_auto_CatMatvec.py b/nipype/interfaces/afni/tests/test_auto_CatMatvec.py
--- a/nipype/interfaces/afni/tests/test_auto_CatMatvec.py
+++ b/nipype/interfaces/afni/tests/test_auto_CatMatvec.py
@@ -38,7 +38,10 @@ def test_CatMatvec_inputs():
         ),
         out_file=dict(
             argstr=' > %s',
+            keep_extension=False,
             mandatory=True,
+            name_source='in_file',
+            name_template='%s_cat.aff12.1D',
             position=-1,
         ),
         outputtype=dict(),
Repository: nipy/nipype

Issue:
antsRegistrationSyNQuick- spelling error?
### Summary
I'm not sure why others wouldn't have caught this one, but I think there is a spelling mistake in the command for antsRegistrationSyNQuick.sh... 

I think it has to be the capital N for SyN, but in nipype/interfaces/ants/registration.py the _cmd is antsRegistrationSynQuick.sh

### Actual behavior
Causes a crash when using a node with antsRegistrationSyNQuick with the following message

IOError: No command "antsRegistrationSynQuick.sh" found on host c2. Please check that the corresponding package is installed.

### Platform details:
I am using nipype 1.0.2, ants version 2.1.




Discussion:

Resolving patch:
diff --git a/nipype/interfaces/ants/registration.py b/nipype/interfaces/ants/registration.py
--- a/nipype/interfaces/ants/registration.py
+++ b/nipype/interfaces/ants/registration.py
@@ -1556,7 +1556,7 @@ class RegistrationSynQuick(ANTSCommand):
     >>> reg.inputs.moving_image = 'moving1.nii'
     >>> reg.inputs.num_threads = 2
     >>> reg.cmdline
-    'antsRegistrationSynQuick.sh -d 3 -f fixed1.nii -m moving1.nii -n 2 -o transform -p d -t s'
+    'antsRegistrationSyNQuick.sh -d 3 -f fixed1.nii -m moving1.nii -n 2 -o transform -p d -t s'
     >>> reg.run()  # doctest: +SKIP
 
     example for multiple images
@@ -1567,19 +1567,18 @@ class RegistrationSynQuick(ANTSCommand):
     >>> reg.inputs.moving_image = ['moving1.nii', 'moving2.nii']
     >>> reg.inputs.num_threads = 2
     >>> reg.cmdline
-    'antsRegistrationSynQuick.sh -d 3 -f fixed1.nii -f fixed2.nii -m moving1.nii -m moving2.nii -n 2 -o transform -p d -t s'
+    'antsRegistrationSyNQuick.sh -d 3 -f fixed1.nii -f fixed2.nii -m moving1.nii -m moving2.nii -n 2 -o transform -p d -t s'
     >>> reg.run()  # doctest: +SKIP
     """
 
-
-    _cmd = 'antsRegistrationSynQuick.sh'
+    _cmd = 'antsRegistrationSyNQuick.sh'
     input_spec = RegistrationSynQuickInputSpec
     output_spec = RegistrationSynQuickOutputSpec
 
     def _num_threads_update(self):
         """
-        antsRegistrationSynQuick.sh ignores environment variables,
-        so override environment update frm ANTSCommand class
+        antsRegistrationSyNQuick.sh ignores environment variables,
+        so override environment update from ANTSCommand class
         """
         pass
 


Test patch:
Repository: nipy/nipype

Issue:
[WIP] ENH: Add feedstock updater script
Addresses issue 4 of #2313.

I expect to merge this into `rel/1.0.4` when it's time and try to work out the kinks, but this gives others an opportunity to inspect and criticize.


Discussion:

Resolving patch:
diff --git a/doc/conf.py b/doc/conf.py
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -82,7 +82,7 @@
 # The short X.Y version.
 version = nipype.__version__
 # The full version, including alpha/beta/rc tags.
-release = "1.0.3"
+release = "1.0.4"
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/nipype/info.py b/nipype/info.py
--- a/nipype/info.py
+++ b/nipype/info.py
@@ -11,7 +11,7 @@
 # full release.  '.dev' as a version_extra string means this is a development
 # version
 # Remove -dev for release
-__version__ = '1.0.4-dev'
+__version__ = '1.0.4'
 
 
 def get_nipype_gitversion():
diff --git a/nipype/interfaces/image.py b/nipype/interfaces/image.py
--- a/nipype/interfaces/image.py
+++ b/nipype/interfaces/image.py
@@ -77,6 +77,12 @@ class Reorient(SimpleInterface):
      [ 0.  0.  1.  0.]
      [ 0.  0.  0.  1.]]
 
+    .. testcleanup::
+
+        >>> import os
+        >>> os.unlink(res.outputs.out_file)
+        >>> os.unlink(res.outputs.transform)
+
     """
     input_spec = ReorientInputSpec
     output_spec = ReorientOutputSpec


Test patch:
diff --git a/nipype/interfaces/mixins/tests/__init__.py b/nipype/interfaces/mixins/tests/__init__.py
new file mode 100644
--- /dev/null
+++ b/nipype/interfaces/mixins/tests/__init__.py
@@ -0,0 +1 @@
+# -*- coding: utf-8 -*-
diff --git a/nipype/interfaces/mixins/tests/test_auto_ReportCapableInterface.py b/nipype/interfaces/mixins/tests/test_auto_ReportCapableInterface.py
new file mode 100644
--- /dev/null
+++ b/nipype/interfaces/mixins/tests/test_auto_ReportCapableInterface.py
@@ -0,0 +1,17 @@
+# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT
+from __future__ import unicode_literals
+from ..reporting import ReportCapableInterface
+
+
+def test_ReportCapableInterface_inputs():
+    input_map = dict(
+        ignore_exception=dict(
+            deprecated='1.0.0',
+            nohash=True,
+            usedefault=True,
+        ), )
+    inputs = ReportCapableInterface.input_spec()
+
+    for key, metadata in list(input_map.items()):
+        for metakey, value in list(metadata.items()):
+            assert getattr(inputs.traits()[key], metakey) == value
Repository: nipy/nipype

Issue:
Wrong argstr for fsl:bedpostx
### Summary

File fsl/dti.py, Line 174:
An argument "burninnoard" for bedpostx is set. This argument does not exist, bedpostx crashes.
The correct argument is "burnin_noard".

### Solution
Please change 
argstr='--burninnoard=%d',
to
argstr='--burnin_noard=%d',


Discussion:
@weningerleon thanks for the heads up - would you like to submit a pull request for this fix?

Resolving patch:
diff --git a/nipype/interfaces/fsl/dti.py b/nipype/interfaces/fsl/dti.py
--- a/nipype/interfaces/fsl/dti.py
+++ b/nipype/interfaces/fsl/dti.py
@@ -171,7 +171,7 @@ class FSLXCommandInputSpec(FSLCommandInputSpec):
         low=0,
         value=0,
         usedefault=True,
-        argstr='--burninnoard=%d',
+        argstr='--burnin_noard=%d',
         desc=('num of burnin jumps before the ard is'
               ' imposed'))
     sample_every = traits.Range(
@@ -424,7 +424,7 @@ class BEDPOSTX5(FSLXCommand):
     >>> bedp = fsl.BEDPOSTX5(bvecs='bvecs', bvals='bvals', dwi='diffusion.nii',
     ...                     mask='mask.nii', n_fibres=1)
     >>> bedp.cmdline
-    'bedpostx bedpostx -b 0 --burninnoard=0 --forcedir -n 1 -j 5000 \
+    'bedpostx bedpostx -b 0 --burnin_noard=0 --forcedir -n 1 -j 5000 \
 -s 1 --updateproposalevery=40'
 
     """


Test patch:
diff --git a/nipype/interfaces/fsl/tests/test_auto_BEDPOSTX5.py b/nipype/interfaces/fsl/tests/test_auto_BEDPOSTX5.py
--- a/nipype/interfaces/fsl/tests/test_auto_BEDPOSTX5.py
+++ b/nipype/interfaces/fsl/tests/test_auto_BEDPOSTX5.py
@@ -15,7 +15,7 @@ def test_BEDPOSTX5_inputs():
             usedefault=True,
         ),
         burn_in_no_ard=dict(
-            argstr='--burninnoard=%d',
+            argstr='--burnin_noard=%d',
             usedefault=True,
         ),
         bvals=dict(mandatory=True, ),
diff --git a/nipype/interfaces/fsl/tests/test_auto_FSLXCommand.py b/nipype/interfaces/fsl/tests/test_auto_FSLXCommand.py
--- a/nipype/interfaces/fsl/tests/test_auto_FSLXCommand.py
+++ b/nipype/interfaces/fsl/tests/test_auto_FSLXCommand.py
@@ -15,7 +15,7 @@ def test_FSLXCommand_inputs():
             usedefault=True,
         ),
         burn_in_no_ard=dict(
-            argstr='--burninnoard=%d',
+            argstr='--burnin_noard=%d',
             usedefault=True,
         ),
         bvals=dict(
diff --git a/nipype/interfaces/fsl/tests/test_auto_XFibres5.py b/nipype/interfaces/fsl/tests/test_auto_XFibres5.py
--- a/nipype/interfaces/fsl/tests/test_auto_XFibres5.py
+++ b/nipype/interfaces/fsl/tests/test_auto_XFibres5.py
@@ -15,7 +15,7 @@ def test_XFibres5_inputs():
             usedefault=True,
         ),
         burn_in_no_ard=dict(
-            argstr='--burninnoard=%d',
+            argstr='--burnin_noard=%d',
             usedefault=True,
         ),
         bvals=dict(
Repository: nipy/nipype

Issue:
[BUG] FreeSurfer version returns None
### Summary

```Python
>>> from nipype.interfaces.freesurfer import ReconAll
>>> ReconAll().version is None
True
>>> from nipype.interfaces.fsl import BET
>>> BET().version
'5.0.9'
```
### Expected behavior
```Python
>>> from nipype.interfaces.freesurfer import ReconAll
>>> ReconAll().version is None
False
```

### Environment
FMRIPREP containers and pip installed environment.


Discussion:
@oesteban - does the freesurfer installation contain the build-stamp.txt file?
```
cat /opt/freesurfer/build-stamp.txt
freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.1-f53a55a
```
However:

```Python
>>> from nipype.interfaces.freesurfer import Info
>>> Info().version_file
'/opt/freesurfer/build-stamp.txt'
>>> Info().version()
'freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.1-f53a55a'
>>> Info().looseversion()
LooseVersion ('6.0.1')
```
The issue is that `ReconAll` is a `CommandLine`, not an `FSCommand`:

https://github.com/nipy/nipype/blob/1ffe23d2b82b6fefa9fa92e59e86437591041081/nipype/interfaces/freesurfer/preprocess.py#L880

They each do separate hackery around subject dirs, and it's not clear to me we can simply re-subclass from `FSCommand`. We could always just copy the `version` bits from `FSCommand`.
easiest may be to overwrite `version` property in `ReconAll` to use `FS.Info()`
@oesteban Do you need this in 1.1.1?

Resolving patch:
diff --git a/nipype/interfaces/freesurfer/preprocess.py b/nipype/interfaces/freesurfer/preprocess.py
--- a/nipype/interfaces/freesurfer/preprocess.py
+++ b/nipype/interfaces/freesurfer/preprocess.py
@@ -1326,6 +1326,12 @@ def _get_expert_file(self):
         with open(xopts_file, 'r') as fobj:
             return fobj.read()
 
+    @property
+    def version(self):
+        ver = Info.looseversion()
+        if ver > LooseVersion("0.0.0"):
+            return ver.vstring
+
 
 class BBRegisterInputSpec(FSTraitedSpec):
     subject_id = traits.Str(


Test patch:
Repository: nipy/nipype

Issue:
Adding Segmentation Output to FSL:Epi_Reg
The command epi_reg (https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FLIRT/UserGuide#epi_reg) produces a segmentation map. In the current version of nipype, only the white-matter segmentation can be accessed, the white-matter, gray-matter, csf segmentation map is included in the output specs.

I would suggest adding this segmentation map to the output specs. May I open a pull request for this?


Discussion:

Resolving patch:
diff --git a/nipype/interfaces/fsl/epi.py b/nipype/interfaces/fsl/epi.py
--- a/nipype/interfaces/fsl/epi.py
+++ b/nipype/interfaces/fsl/epi.py
@@ -947,6 +947,8 @@ class EpiRegOutputSpec(TraitedSpec):
                     structural space')
     wmseg = File(
         exists=True, desc='white matter segmentation used in flirt bbr')
+    seg = File(
+        exists=True, desc='white matter, gray matter, csf segmentation')
     wmedge = File(exists=True, desc='white matter edges for visualization')
 
 
@@ -1013,6 +1015,8 @@ def _list_outputs(self):
             os.getcwd(), self.inputs.out_base + '_fast_wmedge.nii.gz')
         outputs['wmseg'] = os.path.join(
             os.getcwd(), self.inputs.out_base + '_fast_wmseg.nii.gz')
+        outputs['seg'] = os.path.join(
+            os.getcwd(), self.inputs.out_base + '_fast_seg.nii.gz')
 
         return outputs
 


Test patch:
diff --git a/nipype/interfaces/fsl/tests/test_auto_EpiReg.py b/nipype/interfaces/fsl/tests/test_auto_EpiReg.py
--- a/nipype/interfaces/fsl/tests/test_auto_EpiReg.py
+++ b/nipype/interfaces/fsl/tests/test_auto_EpiReg.py
@@ -61,6 +61,7 @@ def test_EpiReg_outputs():
         fullwarp=dict(),
         out_1vol=dict(),
         out_file=dict(),
+        seg=dict(),
         shiftmap=dict(),
         wmedge=dict(),
         wmseg=dict(),
Repository: nipy/nipype

Issue:
Profile files get clean up if ``remove_unnecessary_outputs = true``



Discussion:

Resolving patch:
diff --git a/nipype/pipeline/engine/utils.py b/nipype/pipeline/engine/utils.py
--- a/nipype/pipeline/engine/utils.py
+++ b/nipype/pipeline/engine/utils.py
@@ -1473,7 +1473,8 @@ def clean_working_directory(outputs,
         needed_files += [path for path, type in input_files if type == 'f']
     for extra in [
             '_0x*.json', 'provenance.*', 'pyscript*.m', 'pyjobs*.mat',
-            'command.txt', 'result*.pklz', '_inputs.pklz', '_node.pklz'
+            'command.txt', 'result*.pklz', '_inputs.pklz', '_node.pklz',
+            '.proc-*',
     ]:
         needed_files.extend(glob(os.path.join(cwd, extra)))
     if files2keep:


Test patch:
Repository: nipy/nipype

Issue:
Travis failure
Just a note that the pre-release Travis failures are related to nedbat/coveragepy#716.


Discussion:

Resolving patch:
diff --git a/nipype/info.py b/nipype/info.py
--- a/nipype/info.py
+++ b/nipype/info.py
@@ -154,7 +154,7 @@ def get_nipype_gitversion():
 if sys.version_info <= (3, 4):
     REQUIRES.append('configparser')
 
-TESTS_REQUIRES = ['pytest-cov', 'codecov', 'pytest-env']
+TESTS_REQUIRES = ['pytest-cov', 'codecov', 'pytest-env', 'coverage<5']
 
 EXTRA_REQUIRES = {
     'doc': ['Sphinx>=1.4', 'numpydoc', 'matplotlib', 'pydotplus', 'pydot>=1.2.3'],


Test patch:
Repository: nipy/nipype

Issue:
Req to deal with SLURM socket errors more patiently
### Summary

At end of issue #2693 @effigies noted that the error that @dalejn was experiencing was due to the SLURM master throwing an error when it was polled with squeue, possibly because it was busy. After some further testing, we now believe that the NIH HPC SLURM master will throw this error at least once a day even with a modest polling interval. 

We would like to request a patch such that if NiPype receives any kind of timeout error (we've seen a few different kinds) from squeue, that it politely waits and tries again.

### Actual behavior
```
RuntimeError: Command:
squeue -j 9448406
Standard output:

Standard error:
slurm_load_jobs error: Socket timed out on send/recv operation
Return code: 1
```
or
```
The batch system is not available at the moment.
```
and NiPype exits
### Requested behavior
```
squeue is busy, will try again
```
And NiPype does _not_exit

### Platform details:
```
(NiPypeUpdate) [zhoud4@felix ETPB]$ python -c "import nipype; from pprint import pprint; pprint(nipype.get_info())"
{'commit_hash': 'ec7457c23',
 'commit_source': 'installation',
 'networkx_version': '2.2',
 'nibabel_version': '2.3.1',
 'nipype_version': '1.1.3',
 'numpy_version': '1.15.3',
 'pkg_path': '/data/zhoud4/python/envs/NiPypeUpdate/lib/python3.5/site-packages/nipype',
 'scipy_version': '1.1.0',
 'sys_executable': '/data/zhoud4/python/envs/NiPypeUpdate/bin/python',
 'sys_platform': 'linux',
 'sys_version': '3.5.4 | packaged by conda-forge | (default, Aug 10 2017, '
                '01:38:41) \n'
                '[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)]',
 'traits_version': '4.6.0'}
(NiPypeUpdate) [zhoud4@felix ETPB]$
(NiPypeUpdate) [zhoud4@biowulf ETPB]$ sinfo -V
slurm 17.02.9
(NiPypeUpdate) [zhoud4@biowulf ETPB]$ 
```



Discussion:
this sounds reasonable - I'll take a look

Resolving patch:
diff --git a/nipype/pipeline/plugins/slurm.py b/nipype/pipeline/plugins/slurm.py
--- a/nipype/pipeline/plugins/slurm.py
+++ b/nipype/pipeline/plugins/slurm.py
@@ -70,6 +70,14 @@ def _is_pending(self, taskid):
                 terminal_output='allatonce').run()
             return res.runtime.stdout.find(str(taskid)) > -1
         except RuntimeError as e:
+            if any(ss in str(e) for ss
+                   in ['Socket timed out', 'not available at the moment']):
+                # do not raise error and allow recheck
+                logger.warning(
+                    "SLURM timeout encountered while checking job status,"
+                    " treating job %d as pending", taskid
+                )
+                return True
             if 'Invalid job id' not in str(e):
                 raise(e)
             return False


Test patch:
Repository: nipy/nipype

Issue:
[BUG] Relative path in ResourceMonitor
### Summary

This https://github.com/nipy/nipype/blob/502fc63488764434374a41e7456ae72f0ff9ae51/nipype/utils/profiler.py#L43 should be an absolute path (it isn't).

### Actual behavior

It doesn't seem to break things, but this may be the origin for weird readings in the last line of the monitor files. The directory may change before the file descriptor is open.



Discussion:

Resolving patch:
diff --git a/nipype/utils/profiler.py b/nipype/utils/profiler.py
--- a/nipype/utils/profiler.py
+++ b/nipype/utils/profiler.py
@@ -7,6 +7,7 @@
 from __future__ import (print_function, division, unicode_literals,
                         absolute_import)
 
+import os
 import threading
 from time import time
 try:
@@ -40,7 +41,7 @@ def __init__(self, pid, freq=5, fname=None, python=True):
 
         if fname is None:
             fname = '.proc-%d_time-%s_freq-%0.2f' % (pid, time(), freq)
-        self._fname = fname
+        self._fname = os.path.abspath(fname)
         self._logfile = open(self._fname, 'w')
         self._freq = freq
         self._python = python


Test patch:
Repository: nipy/nipype

Issue:
Nilearn 0.5.0 breaks tests
### Summary
The latest release of nilearn broke master.



Discussion:

Resolving patch:
diff --git a/nipype/info.py b/nipype/info.py
--- a/nipype/info.py
+++ b/nipype/info.py
@@ -175,7 +175,7 @@ def get_nipype_gitversion():
         "sphinxcontrib-napoleon",
     ],
     "duecredit": ["duecredit"],
-    "nipy": ["nitime", "nilearn<0.5.0", "dipy", "nipy", "matplotlib"],
+    "nipy": ["nitime", "nilearn", "dipy", "nipy", "matplotlib"],
     "profiler": ["psutil>=5.0"],
     "pybids": ["pybids>=0.7.0"],
     "specs": ["black"],


Test patch:
Repository: nipy/nipype

Issue:
nipype/conftest.py should be excluded from API documentation
### Summary

The auto-generated API docs include `conftest.py`, which has a fixture. Pytest has turned calling a fixture directly into an error, and apparently the fixture is getting called when the docs are generated.

This is what's currently breaking the Circle builds.



Discussion:

Resolving patch:
diff --git a/tools/build_interface_docs.py b/tools/build_interface_docs.py
--- a/tools/build_interface_docs.py
+++ b/tools/build_interface_docs.py
@@ -41,6 +41,7 @@
         '\.pipeline\.s3_node_wrapper$',
         '\.testing',
         '\.scripts',
+        '\.conftest',
     ]
     docwriter.class_skip_patterns += [
         'AFNICommand',


Test patch: