From e3d59dfb0aaa69ab3e218043e5b9c1a0be2d7eac Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Thu, 9 May 2019 16:13:37 -0400 Subject: [PATCH 1/8] MAINT: Update versioning for pip, Docker --- .dockerignore | 2 ++ .neurodocker.json | 24 +++++++----------------- Dockerfile | 40 ++++++++++++---------------------------- MANIFEST.in | 4 ++-- fitlins/_version.py | 8 ++++---- setup.cfg | 9 ++++++++- setup.py | 22 ++++------------------ versioneer.py | 7 +++++++ 8 files changed, 46 insertions(+), 70 deletions(-) diff --git a/.dockerignore b/.dockerignore index ce9b6842..44e3f441 100644 --- a/.dockerignore +++ b/.dockerignore @@ -7,3 +7,5 @@ data *.md *.egg-info/ .circleci/ +docs/ +examples/ diff --git a/.neurodocker.json b/.neurodocker.json index 149ed8f0..90a328f9 100644 --- a/.neurodocker.json +++ b/.neurodocker.json @@ -63,16 +63,6 @@ "user", "root" ], - [ - "arg", - { - "VERSION": "" - } - ], - [ - "run", - "echo \"$VERSION\" > /src/fitlins/fitlins/VERSION" - ], [ "run", "mkdir /work && chown -R neuro /src /work && chmod a+w /work" @@ -82,21 +72,21 @@ "neuro" ], [ - "miniconda", + "arg", { - "use_env": "neuro", - "pip_opts": "-r", - "pip_install": [ - "/src/fitlins/requirements.txt" - ] + "VERSION": "" } ], + [ + "run", + "echo \"$VERSION\" > /src/fitlins/VERSION" + ], [ "miniconda", { "use_env": "neuro", "pip_install": [ - "/src/fitlins[all,test]" + "/src/fitlins[all]" ], "activate": true } diff --git a/Dockerfile b/Dockerfile index 51c8d62c..d1674c34 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Generated by Neurodocker version 0.5.0 -# Timestamp: 2019-05-02 14:00:04 UTC +# Timestamp: 2019-05-09 20:10:42 UTC # # Thank you for using Neurodocker. If you discover any issues # or ways to improve this software, please submit an issue or @@ -86,23 +86,17 @@ COPY [".", "/src/fitlins"] USER root -ARG VERSION - -RUN echo "$VERSION" > /src/fitlins/fitlins/VERSION - RUN mkdir /work && chown -R neuro /src /work && chmod a+w /work USER neuro -RUN bash -c "source activate neuro \ - && pip install --no-cache-dir -r \ - '/src/fitlins/requirements.txt'" \ - && rm -rf ~/.cache/pip/* \ - && sync +ARG VERSION + +RUN echo "$VERSION" > /src/fitlins/VERSION RUN bash -c "source activate neuro \ && pip install --no-cache-dir \ - '/src/fitlins[all,test]'" \ + '/src/fitlins[all]'" \ && rm -rf ~/.cache/pip/* \ && sync \ && sed -i '$isource activate neuro' $ND_ENTRYPOINT @@ -189,16 +183,6 @@ RUN echo '{ \ \n "root" \ \n ], \ \n [ \ - \n "arg", \ - \n { \ - \n "VERSION": "" \ - \n } \ - \n ], \ - \n [ \ - \n "run", \ - \n "echo \"$VERSION\" > /src/fitlins/fitlins/VERSION" \ - \n ], \ - \n [ \ \n "run", \ \n "mkdir /work && chown -R neuro /src /work && chmod a+w /work" \ \n ], \ @@ -207,21 +191,21 @@ RUN echo '{ \ \n "neuro" \ \n ], \ \n [ \ - \n "miniconda", \ + \n "arg", \ \n { \ - \n "use_env": "neuro", \ - \n "pip_opts": "-r", \ - \n "pip_install": [ \ - \n "/src/fitlins/requirements.txt" \ - \n ] \ + \n "VERSION": "" \ \n } \ \n ], \ \n [ \ + \n "run", \ + \n "echo \"$VERSION\" > /src/fitlins/VERSION" \ + \n ], \ + \n [ \ \n "miniconda", \ \n { \ \n "use_env": "neuro", \ \n "pip_install": [ \ - \n "/src/fitlins[all,test]" \ + \n "/src/fitlins[all]" \ \n ], \ \n "activate": true \ \n } \ diff --git a/MANIFEST.in b/MANIFEST.in index c93ec425..90b206fc 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ include versioneer.py -include fitlins/_version.py -include fitlins/VERSION +include fitlins/data/*.json +include fitlins/data/*.tpl diff --git a/fitlins/_version.py b/fitlins/_version.py index 44e3a73c..f540fd09 100644 --- a/fitlins/_version.py +++ b/fitlins/_version.py @@ -15,6 +15,7 @@ import re import subprocess import sys +from pathlib import Path def get_keywords(): @@ -483,10 +484,9 @@ def get_versions(): cfg = get_config() verbose = cfg.verbose - root_dir = os.path.dirname(__file__) - if os.path.isfile(os.path.join(root_dir, 'VERSION')): - with open(os.path.join(root_dir, 'VERSION')) as vfile: - version = vfile.readline().strip() + ver_file = Path(__file__).parent.parent / 'VERSION' + if ver_file.is_file(): + version = ver_file.read_text().splitlines()[0].strip() return { "version": version, diff --git a/setup.cfg b/setup.cfg index 65e9a8b1..2359e9a2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -36,13 +36,16 @@ install_requires = [options.extras_require] duecredit = duecredit test = coverage -all = duecredit docs = sphinx sphinxcontrib-apidoc sphinx-argparse texext m2r +all = + %(docs)s + %(duecredit)s + %(test)s [options.entry_points] console_scripts = @@ -53,6 +56,10 @@ fitlins = data/*.json data/*.tpl +[options.exclude_package_data] +* = + examples + [versioneer] VCS = git style = pep440 diff --git a/setup.py b/setup.py index e9be1d60..df216b72 100644 --- a/setup.py +++ b/setup.py @@ -6,27 +6,13 @@ def main(): """ Install entry-point """ - import os - from inspect import getfile, currentframe - from fitlins.__about__ import ( - DOWNLOAD_URL, - ) - - root_dir = os.path.dirname(os.path.abspath(getfile(currentframe()))) - - version = None - cmdclass = {} - if os.path.isfile(os.path.join(root_dir, 'fitlins', 'VERSION')): - with open(os.path.join(root_dir, 'fitlins', 'VERSION')) as vfile: - version = vfile.readline().strip() + import versioneer + from fitlins.__about__ import __version__, DOWNLOAD_URL - if version is None: - import versioneer - version = versioneer.get_version() - cmdclass = versioneer.get_cmdclass() + cmdclass = versioneer.get_cmdclass() setup( - version=version, + version=__version__, cmdclass=cmdclass, download_url=DOWNLOAD_URL, ) diff --git a/versioneer.py b/versioneer.py index 64fea1c8..88c6baea 100644 --- a/versioneer.py +++ b/versioneer.py @@ -287,6 +287,7 @@ import re import subprocess import sys +from pathlib import Path class VersioneerConfig: @@ -1404,6 +1405,12 @@ def get_versions(verbose=False): Returns dict with two keys: 'version' and 'full'. """ + ver_file = Path(__file__).parent / 'VERSION' + + if ver_file.is_file(): + ver = ver_file.read_text().splitlines()[0].strip() + return {"version": ver, 'full': ver} + if "versioneer" in sys.modules: # see the discussion in cmdclass.py:get_cmdclass() del sys.modules["versioneer"] From 67385625ea43420bb399dded869ecdfd93795088 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Thu, 9 May 2019 16:30:46 -0400 Subject: [PATCH 2/8] CI: Rework deployment tests and caches --- .circleci/config.yml | 146 ++++++++++++++++++++++++++++++++----------- 1 file changed, 111 insertions(+), 35 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6e9bc6d2..95baf415 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -23,6 +23,8 @@ jobs: THISVERSION=$( python3 -c 'import fitlins; print(fitlins.__version__)' ) echo "Building version ${CIRCLE_TAG:-$THISVERSION}" docker build \ + --cache-from=poldracklab/fitlins \ + --rm=false \ --tag poldracklab/fitlins:latest \ --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ --build-arg VCS_REF="$(git rev-parse --short HEAD)" \ @@ -33,7 +35,13 @@ jobs: - run: name: Check version command: | - docker run --rm -it poldracklab/fitlins:latest --version + THISVERSION=$( python3 -c 'import fitlins; print(fitlins.__version__)' ) + THISVERSION="${CIRCLE_TAG:-$THISVERSION}" + DOCKERVERSION=$(docker run --rm -it poldracklab/fitlins:latest --version \ + | tail -n 1 | sed -e 's/[\r\n]//g') + echo "$THISVERSION" + echo "$DOCKERVERSION" + test "$DOCKERVERSION" = "fitlins v$THISVERSION" - run: name: Docker save no_output_timeout: 40m @@ -44,8 +52,11 @@ jobs: - persist_to_workspace: root: /tmp paths: - - cache/docker.tar.gz - src/fitlins + - save_cache: + key: docker-v0-{{ .Branch }}-{{ .Revision }}-{{ epoch }} + paths: + - /tmp/cache/docker.tar.gz cache_test_data: docker: @@ -106,6 +117,9 @@ jobs: steps: - attach_workspace: at: /tmp + - restore_cache: + keys: + - docker-v0-{{ .Branch }}-{{ .Revision }} - restore_cache: keys: - ds003-v0-{{ .Branch }}- @@ -161,36 +175,93 @@ jobs: - store_artifacts: path: /tmp/ds003 - deploy_test: - machine: - image: circleci/classic:201711-01 + test_packaging: + docker: + - image: python:latest working_directory: /tmp/src/fitlins steps: - - attach_workspace: - at: /tmp - run: - name: Check Docker credentials - no_output_timeout: 40m + name: Check Python version and upgrade pip command: | - if [[ -n "$DOCKER_PASS" ]]; then - docker login -u $DOCKER_USER -p $DOCKER_PASS - fi + python --version + python -m pip install -U pip setuptools virtualenv twine + - checkout - run: - name: Build and check Python packages + name: Build FitLins command: | - pip install "setuptools>=27.0" twine - echo "${CIRCLE_TAG}" > fitlins/VERSION + virtualenv --python=python /tmp/venv/build + source /tmp/venv/build/bin/activate + pip install --upgrade "pip>=19.1" setuptools wheel python setup.py sdist pip wheel --no-deps -w dist/ . - twine check dist/* + - store_artifacts: + path: /tmp/src/fitlins/dist + - run: + name: Check sdist distribution + command: | + THISVERSION=$( python -c 'import fitlins; print(fitlins.__version__)' ) + THISVERSION="${CIRCLE_TAG:-$THISVERSION}" + twine check dist/fitlins*.tar.gz + virtualenv --python=python /tmp/venv/sdist + source /tmp/venv/sdist/bin/activate + pip install --upgrade "pip>=19.1" setuptools wheel + pip install dist/fitlins*.tar.gz + which fitlins | grep sdist\\/bin + INSTALLED_VERSION=$(fitlins --version) + echo "VERSION: \"$THISVERSION\"" + echo "INSTALLED: \"$INSTALLED_VERSION\"" + test "$INSTALLED_VERSION" = "fitlins v$THISVERSION" + - run: + name: Check wheel distribution + command: | + THISVERSION=$( python -c 'import fitlins; print(fitlins.__version__)' ) + THISVERSION="${CIRCLE_TAG:-$THISVERSION}" + twine check dist/fitlins*.tar.gz + virtualenv --python=python /tmp/venv/wheel + source /tmp/venv/wheel/bin/activate + pip install --upgrade "pip>=19.1" setuptools wheel + pip install dist/fitlins*.whl + which fitlins | grep wheel\\/bin + INSTALLED_VERSION=$(fitlins --version) + echo "VERSION: \"$THISVERSION\"" + echo "INSTALLED: \"$INSTALLED_VERSION\"" + test "$INSTALLED_VERSION" = "fitlins v$THISVERSION" + + deploy_pypi: + docker: + - image: python:latest + working_directory: /tmp/src/fitlins + steps: + - run: + name: Check Python version and upgrade pip + command: | + python --version + python -m pip install -U pip setuptools virtualenv twine + - checkout + - run: + name: Build FitLins + command: | + virtualenv --python=python /tmp/venv/build + source /tmp/venv/build/bin/activate + pip install --upgrade "pip>=19.1" setuptools wheel + python setup.py sdist + pip wheel --no-deps -w dist/ . + - store_artifacts: + path: /tmp/src/fitlins/dist + - run: + name: Upload packages to PyPI + command: | + twine check dist/fitlins* + twine upload dist/fitlins* deploy_master: machine: image: circleci/classic:201711-01 working_directory: /tmp/src/fitlins steps: - - attach_workspace: - at: /tmp + - restore_cache: + keys: + - docker-v0-{{ .Branch }}-{{ .Revision }} - run: name: Load Docker image layer cache no_output_timeout: 30m @@ -211,13 +282,14 @@ jobs: docker push poldracklab/fitlins:master fi - deploy: + deploy_docker: machine: image: circleci/classic:201711-01 working_directory: /tmp/src/fitlins steps: - - attach_workspace: - at: /tmp + - restore_cache: + keys: + - docker-v0-{{ .Branch }}-{{ .Revision }} - run: name: Load Docker image layer cache no_output_timeout: 30m @@ -238,15 +310,13 @@ jobs: docker tag poldracklab/fitlins poldracklab/fitlins:$CIRCLE_TAG docker push poldracklab/fitlins:$CIRCLE_TAG fi - - run: - name: Deploy to PyPi - command: | - pip install "setuptools>=27.0" twine - echo "${CIRCLE_TAG}" > fitlins/VERSION - python setup.py sdist - pip wheel --no-deps -w dist/ . - twine check dist/* - twine upload dist/* + + deployable: + docker: + - image: busybox:latest + steps: + - run: echo Deploying! + workflows: version: 2 @@ -275,24 +345,30 @@ workflows: filters: tags: only: /.*/ + - test_packaging: + filters: + tags: + only: /.*/ - deploy_master: requires: - test_ds003 filters: branches: only: master - - deploy_test: + - deploy_docker: requires: - - build + - test_ds003 + - build_docs filters: branches: - only: /rel\/[\d\.]+/ - tags: ignore: /.*/ - - deploy: + tags: + only: /.*/ + - deploy_pypi: requires: - test_ds003 - build_docs + - test_packaging filters: branches: ignore: /.*/ From 56968f462cdc924b7f244914713e97d0fb660f8f Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 10 May 2019 08:21:18 -0400 Subject: [PATCH 3/8] DOC: Update changelog --- CHANGES.md | 22 ++++++++++++++++++++++ tools/update_changes.sh | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 1a188ee3..30d71124 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,25 @@ +0.4.0 (May 10, 2019) +==================== + +This release produces effect, variance, statistic (t or F), Z-score, and p-value +maps at every level, and enables smoothing at higher levels if preferred. + +Additionally, documentation has been added at https://fitlins.readthedocs.io and +versioning/packaging issues have been resolved. + +* FIX: Do not install FitLins as editable in Docker (https://github.com/poldracklab/fitlins/pull/137) +* ENH: Save design matrix as TSV to output directory (https://github.com/poldracklab/fitlins/pull/143) +* ENH: Enable smoothing at any analysis level (https://github.com/poldracklab/fitlins/pull/135) +* ENH: Produce all available statistical maps from each analysis unit (https://github.com/poldracklab/fitlins/pull/131) +* ENH: Add version to non-release Docker images. (https://github.com/poldracklab/fitlins/pull/136) +* DOC: Flesh out documentation (https://github.com/poldracklab/fitlins/pull/147) +* DOC: Build API docs on RTD (https://github.com/poldracklab/fitlins/pull/146) +* DOC: Create Sphinx documentation with API autodocs (https://github.com/poldracklab/fitlins/pull/145) +* MAINT: Drop Python 3.5 support (https://github.com/poldracklab/fitlins/pull/140) +* CI: Run FitLins with coverage (https://github.com/poldracklab/fitlins/pull/144) +* CI: Test FitLins on OpenNeuro DS000003, preprocessed with fMRIPrep 1.3.2 (https://github.com/poldracklab/fitlins/pull/141) + + 0.3.0 (April 19, 2019) ====================== diff --git a/tools/update_changes.sh b/tools/update_changes.sh index 22265aad..aad6d145 100755 --- a/tools/update_changes.sh +++ b/tools/update_changes.sh @@ -12,7 +12,7 @@ set -u # Treat unset variables as an error when substituting. set -x # Print command traces before executing command. -CHANGES=CHANGES.rst +CHANGES=CHANGES.md # Check whether the Upcoming release header is present head -1 $CHANGES | grep -q Upcoming From 74aafa6fe4397ccf504742bb5c6d31deda0fe1d6 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 10 May 2019 08:21:50 -0400 Subject: [PATCH 4/8] MAINT: sdist/wheel Makefile rules --- Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6bad877a..5255c0cd 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,18 @@ help: @$(MAKE) -C docs help -.PHONY: Makefile +.PHONY: Makefile build-deps sdist wheel # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(MAKE) -C docs $@ + +build-deps: + python -m pip install --upgrade pip setuptools wheel + +sdist: build-deps + python setup.py sdist + +wheel: build-deps + python -m pip wheel --no-deps -w dist/ . From d684b7b60b55f4b211ca62fe48504e384c9e4b24 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 10 May 2019 10:10:26 -0400 Subject: [PATCH 5/8] MAINT: Restore requirements, update nistats --- .neurodocker.json | 2 ++ Dockerfile | 7 +++++-- requirements.txt | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.neurodocker.json b/.neurodocker.json index 90a328f9..f960cad9 100644 --- a/.neurodocker.json +++ b/.neurodocker.json @@ -85,7 +85,9 @@ "miniconda", { "use_env": "neuro", + "pip_opts": "-r", "pip_install": [ + "/src/fitlins/requirements.txt", "/src/fitlins[all]" ], "activate": true diff --git a/Dockerfile b/Dockerfile index d1674c34..542484c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Generated by Neurodocker version 0.5.0 -# Timestamp: 2019-05-09 20:10:42 UTC +# Timestamp: 2019-05-10 14:08:09 UTC # # Thank you for using Neurodocker. If you discover any issues # or ways to improve this software, please submit an issue or @@ -95,7 +95,8 @@ ARG VERSION RUN echo "$VERSION" > /src/fitlins/VERSION RUN bash -c "source activate neuro \ - && pip install --no-cache-dir \ + && pip install --no-cache-dir -r \ + '/src/fitlins/requirements.txt' \ '/src/fitlins[all]'" \ && rm -rf ~/.cache/pip/* \ && sync \ @@ -204,7 +205,9 @@ RUN echo '{ \ \n "miniconda", \ \n { \ \n "use_env": "neuro", \ + \n "pip_opts": "-r", \ \n "pip_install": [ \ + \n "/src/fitlins/requirements.txt", \ \n "/src/fitlins[all]" \ \n ], \ \n "activate": true \ diff --git a/requirements.txt b/requirements.txt index 1866d06f..ebcf540c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,4 @@ nilearn>=0.4.0 pandas>=0.19 nipype>=1.1.6 pybids>=0.8.0 -git+https://github.com/nistats/nistats.git@51414b8a2bb48dde79de6570074354dcb013c9ae#egg=nistats +nistats @ git+https://github.com/nistats/nistats.git@b69e127020df05aa8ba540f9a8d799e1dad3d602 From 7a21607f957348141101761174673e6ae5e79d0b Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 10 May 2019 10:12:32 -0400 Subject: [PATCH 6/8] MAINT: Require pybids 0.8.x --- requirements.txt | 7 ------- setup.cfg | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index ebcf540c..3cfd8786 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1 @@ -nibabel>=2.0 -seaborn>=0.7.1 -numpy>=1.11 -nilearn>=0.4.0 -pandas>=0.19 -nipype>=1.1.6 -pybids>=0.8.0 nistats @ git+https://github.com/nistats/nistats.git@b69e127020df05aa8ba540f9a8d799e1dad3d602 diff --git a/setup.cfg b/setup.cfg index 2359e9a2..1f1a9cdd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -30,7 +30,7 @@ install_requires = pandas>=0.19 tables>=3.2.1 nistats>=0.0.1b0 - pybids>=0.8.0 + pybids>=0.8.0,<0.9.0a0 jinja2 [options.extras_require] From a9331406993ce9ecc7fe442340b572c490c987f9 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 10 May 2019 10:27:59 -0400 Subject: [PATCH 7/8] CI: Catch null bytes --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 95baf415..d05174bc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -38,7 +38,7 @@ jobs: THISVERSION=$( python3 -c 'import fitlins; print(fitlins.__version__)' ) THISVERSION="${CIRCLE_TAG:-$THISVERSION}" DOCKERVERSION=$(docker run --rm -it poldracklab/fitlins:latest --version \ - | tail -n 1 | sed -e 's/[\r\n]//g') + | tail -n 1 | sed -e 's/.*fit/fit/' -e 's/[\r\n]//g') echo "$THISVERSION" echo "$DOCKERVERSION" test "$DOCKERVERSION" = "fitlins v$THISVERSION" From ce2addfb836d4cddd24caea79401767c388f8d8e Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 10 May 2019 11:11:36 -0400 Subject: [PATCH 8/8] CI: Update codecov.yml, remove unused dunders --- .codecov.yml | 4 ++-- fitlins/__about__.py | 7 ------- fitlins/__init__.py | 14 +------------- 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/.codecov.yml b/.codecov.yml index 0c169312..39a3b304 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,2 +1,2 @@ -fixes: - - "/opt/miniconda-latest/envs/neuro/lib/python3.6/site-packages::" +ignore: + - "fitlins/_version.py" diff --git a/fitlins/__about__.py b/fitlins/__about__.py index f7d442a1..60745a69 100644 --- a/fitlins/__about__.py +++ b/fitlins/__about__.py @@ -9,18 +9,11 @@ __version__ = get_versions()['version'] del get_versions -__author__ = 'The CRN developers' __copyright__ = ('Copyright 2019, Center for Reproducible Neuroscience, ' 'Stanford University') __credits__ = ['Christopher J. Markiewicz', 'Chris Gorgolewski', 'Russell A. Poldrack'] -__license__ = '3-clause BSD' -__maintainer__ = 'Christopher J. Markiewicz' -__email__ = 'crn.poldracklab@gmail.com' -__status__ = 'Prototype' -__url__ = 'https://github.com/poldracklab/fitlins' __packagename__ = 'fitlins' -__description__ = 'Fit Linear Models to BIDS Datasets' DOWNLOAD_URL = ( 'https://github.com/poldracklab/{name}/archive/{ver}.tar.gz'.format( diff --git a/fitlins/__init__.py b/fitlins/__init__.py index a546fa69..9c5f5121 100644 --- a/fitlins/__init__.py +++ b/fitlins/__init__.py @@ -14,16 +14,4 @@ else: matplotlib.use('Agg') -from .__about__ import ( - __version__, - __author__, - __copyright__, - __credits__, - __license__, - __maintainer__, - __email__, - __status__, - __url__, - __packagename__, - __description__, -) +from .__about__ import __version__