diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index da4de15..eaca329 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -3,6 +3,10 @@ name: Python package +# Set once +env: + SUBPACKAGE: nipype1 + on: push: branches: [ master ] @@ -11,11 +15,14 @@ on: jobs: build: - runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] + pip-flags: ['', '--editable'] + pydra: + - 'pydra' + - '--editable git+https://github.com/nipype/pydra.git#egg=pydra' steps: - uses: actions/checkout@v2 @@ -23,10 +30,18 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - - name: Install dependencies + - name: Install build dependencies run: | python -m pip install --upgrade pip - pip install ".[dev]" + - name: Install Pydra + run: | + pip install ${{ matrix.pydra }} + python -c "import pydra as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')" + - name: Install task package + run: | + pip install ${{ matrix.pip-flags }} ".[dev]" + python -c "import pydra.tasks.$SUBPACKAGE as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')" + python -c "import pydra as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')" - name: Test with pytest run: | - pytest -sv --doctest-modules pydra/tasks/nipype1 + pytest -sv --doctest-modules pydra/tasks/$SUBPACKAGE diff --git a/LICENSE b/LICENSE index 261eeb9..9e31149 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2020 Nipype developers Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f174160 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +## For developers + +Install repo in developer mode from the source directory. It is also useful to +install pre-commit to take care of styling via black: + +``` +pip install -e .[dev] +pre-commit install +``` diff --git a/pydra/tasks/nipype1/__init__.py b/pydra/tasks/nipype1/__init__.py index 74f4e66..80edaf0 100644 --- a/pydra/tasks/nipype1/__init__.py +++ b/pydra/tasks/nipype1/__init__.py @@ -1,4 +1,4 @@ - from ._version import get_versions -__version__ = get_versions()['version'] + +__version__ = get_versions()["version"] del get_versions diff --git a/pydra/tasks/nipype1/utils.py b/pydra/tasks/nipype1/utils.py index 60078c4..c5fbb60 100644 --- a/pydra/tasks/nipype1/utils.py +++ b/pydra/tasks/nipype1/utils.py @@ -10,9 +10,10 @@ def traitedspec_to_specinfo(traitedspec): name="Inputs", fields=[ (name, attr.ib(type=ty.Any, metadata={"help_string": trait.desc})) - for name, trait in traitedspec.traits().items() if name in trait_names + for name, trait in traitedspec.traits().items() + if name in trait_names ], - bases=(pydra.engine.specs.BaseSpec,) + bases=(pydra.engine.specs.BaseSpec,), ) @@ -66,7 +67,6 @@ def __init__( self.output_spec = traitedspec_to_specinfo(interface._outputs()) def _run_task(self): - inputs = attr.asdict(self.inputs, - filter=lambda a, v: v is not attr.NOTHING) + inputs = attr.asdict(self.inputs, filter=lambda a, v: v is not attr.NOTHING) res = self._interface.run(**inputs) self.output_ = res.outputs.get() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..f4cc244 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,4 @@ +[tool.black] +line-length = 99 +target-version = ['py37', 'py38'] +exclude = '_version.py' diff --git a/setup.cfg b/setup.cfg index 888c6d8..4e0b71e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,3 +1,6 @@ +[DEFAULT] +subpackage = nipype1 + [metadata] author = Chris Markiewicz author_email = markiewicz@stanford.edu @@ -6,21 +9,37 @@ description = Tools for importing nipype 1.x interfaces into Pydra [options] python_requires = >=3.7 install_requires = - pydra >= 0.6.1 + pydra >= 0.6.2 nipype -packages = pydra.tasks.nipype1 -namespace_packages = pydra.tasks + +packages = pydra.tasks.%(subpackage)s [options.extras_require] +doc = + packaging + sphinx >= 2.1.2 + sphinx_rtd_theme + sphinxcontrib-apidoc ~= 0.3.0 + sphinxcontrib-napoleon + sphinxcontrib-versioning +docs = + %(doc)s test = - pytest + pytest >= 4.4.0 +tests = + %(test)s dev = %(test)s + black + pre-commit +all = + %(doc)s + %(dev)s [versioneer] VCS = git style = pep440 -versionfile_source = pydra/tasks/nipype1/_version.py -versionfile_build = pydra/tasks/nipype1/_version.py +versionfile_source = pydra/tasks/%(subpackage)s/_version.py +versionfile_build = pydra/tasks/%(subpackage)s/_version.py tag_prefix = parentdir_prefix = diff --git a/setup.py b/setup.py index 71dcc4e..1398807 100755 --- a/setup.py +++ b/setup.py @@ -1,6 +1,5 @@ #!/usr/bin/env python import sys -import os from setuptools import setup import versioneer @@ -8,12 +7,14 @@ # Give setuptools a hint to complain if it's too old a version # 30.3.0 allows us to put most metadata in setup.cfg # Should match pyproject.toml -SETUP_REQUIRES = ['setuptools >= 30.3.0'] +SETUP_REQUIRES = ["setuptools >= 30.3.0"] # This enables setuptools to install wheel on-the-fly -SETUP_REQUIRES += ['wheel'] if 'bdist_wheel' in sys.argv else [] +SETUP_REQUIRES += ["wheel"] if "bdist_wheel" in sys.argv else [] if __name__ == "__main__": - setup(name='pydra-nipype1', - setup_requires=SETUP_REQUIRES, - version=versioneer.get_version(), - cmdclass=versioneer.get_cmdclass()) + setup( + name="pydra-nipype1", + setup_requires=SETUP_REQUIRES, + version=versioneer.get_version(), + cmdclass=versioneer.get_cmdclass(), + )