diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index a7c5027c..43384d10 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -131,3 +131,11 @@ jobs: find ${TEMPLATEFLOW_HOME} >> /tmp/.install-2.txt diff /tmp/.install.txt /tmp/.install-2.txt exit $? + + flake8: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + - run: pipx run flake8-pyproject templateflow/ diff --git a/MANIFEST.in b/MANIFEST.in index a4dce165..1ade6ff7 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,6 @@ recursive-exclude templateflow/tests * recursive-exclude templateflow/conf/tests * recursive-exclude docs/ * - recursive-exclude .circleci/ * recursive-exclude .github/ * diff --git a/pyproject.toml b/pyproject.toml index 38860932..c716885f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,16 +1,164 @@ [build-system] requires = [ - "setuptools >= 45", - "setuptools_scm >= 6.2", - "nipreps-versions", + "setuptools>=64", + "setuptools_scm>=8", ] build-backend = "setuptools.build_meta" [tool.setuptools_scm] -write_to = "templateflow/_version.py" -write_to_template = """\ +version_file = "templateflow/_version.py" +version_file_template = """\ \"\"\"Version file, automatically generated by setuptools_scm.\"\"\" __version__ = "{version}" """ fallback_version = "0.0" -version_scheme = "nipreps-calver" +# version_scheme = "nipreps-calver" + +[project] +name = "templateflow" +description = "TemplateFlow Python Client - TemplateFlow is the Zone of neuroimaging templates." +readme = "README.rst" +authors = [{name = "The NiPreps Developers", email = "nipreps@gmail.com"}] +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Science/Research", + "Topic :: Scientific/Engineering :: Image Recognition", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] +license = {file = "LICENSE"} +requires-python = ">=3.8" +dependencies = [ + "pybids >= 0.15.2", + "importlib_resources >= 5.7; python_version < '3.11'", + "requests", + "tqdm", +] +dynamic = ["version"] + +[project.urls] +Archive = "https://github.com/templateflow/templateflow" +"Bug Tracker" = "https://github.com/templateflow/python-client/issues" +Home = "https://www.templateflow.org" +Documentation = "https://www.templateflow.org/python-client/" +"Source Code" = "https://github.com/templateflow/python-client" + +[project.optional-dependencies] +test = [ + "pytest", + "pytest-xdist", + "pytest-cov == 2.5.1", + "coverage", +] +datalad = [ + "datalad ~= 0.12.0" +] +doc = [ + "nbsphinx", + "packaging", + "pydot>=1.2.3", + "pydotplus", + "sphinx-argparse", + "sphinx ~= 4.0", + "sphinx_rtd_theme >= 0.4.3", + "sphinxcontrib-apidoc", + "sphinx_multiversion", +] +# Aliases +tests = ["templateflow[test]"] +docs = ["templateflow[doc]"] +all = ["templateflow[datalad,doc,test]"] + +# +# Developer tool configurations +# + +[tool.black] +line-length = 99 +skip-string-normalization = true + +[tool.isort] +profile = 'black' + +[tool.flake8] +max-line-length = "99" +doctests = "False" +exclude = "*build/" +ignore = ["W503", "E203"] +per-file-ignores = [ + "**/__init__.py : F401", + "docs/conf.py : E265", +] + +[tool.pytest.ini_options] +norecursedirs = [".git"] +addopts = "-svx --doctest-modules" +doctest_optionflags = "ALLOW_UNICODE NORMALIZE_WHITESPACE ELLIPSIS" +env = "PYTHONHASHSEED=0" +filterwarnings = ["ignore::DeprecationWarning"] +junit_family = "xunit2" + +[tool.coverage.run] +branch = true +concurrency = 'multiprocessing' +omit = [ + '*/tests/*', + '*/conftest.py', + 'templateflow/_version.py' +] + +[tool.coverage.report] +# Regexes for lines to exclude from consideration +exclude_lines = [ + 'raise NotImplementedError', + 'warnings\.warn', +] + +[tool.ruff] +line-length = 99 + +[tool.ruff.lint] +extend-select = [ + "F", + "E", + "W", + "I", + "UP", + "YTT", + "S", + "BLE", + "B", + "A", + # "CPY", + "C4", + "DTZ", + "T10", + # "EM", + "EXE", + "FA", + "ISC", + "ICN", + "PT", + "Q", +] +extend-ignore = [ + "S311", # We are not using random for cryptographic purposes + "ISC001", + "S603", +] + +[tool.ruff.lint.flake8-quotes] +inline-quotes = "single" + +[tool.ruff.lint.extend-per-file-ignores] +"*/test_*.py" = ["S101"] +"fmriprep/utils/debug.py" = ["A002", "T100"] +"docs/conf.py" = ["A001"] +"docs/sphinxext/github_link.py" = ["BLE001"] + +[tool.ruff.format] +quote-style = "single" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index fd8235af..00000000 --- a/requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -pybids>=0.15.2 -importlib_resources >= 5.7; python_version < '3.11' -requests -tqdm -pytest -pytest-xdist -pytest-cov==2.5.1 -coverage diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index a2964336..00000000 --- a/setup.cfg +++ /dev/null @@ -1,103 +0,0 @@ -[metadata] -classifiers = - Development Status :: 3 - Alpha - Intended Audience :: Science/Research - Topic :: Scientific/Engineering :: Image Recognition - License :: OSI Approved :: Apache Software License - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Programming Language :: Python :: 3.12 -description = TemplateFlow Python Client - TemplateFlow is the Zone of neuroimaging templates. -license = Apache-2.0 -license_file = LICENSE -long_description = file:README.rst -long_description_content_type = text/x-rst; charset=UTF-8 -maintainer = The NiPreps developers -maintainer_email = nipreps@gmail.com -name = templateflow -project_urls = - Archive = https://github.com/templateflow/templateflow - Bug Tracker = https://github.com/templateflow/python-client/issues - Home = https://www.templateflow.org - Documentation = https://www.templateflow.org/python-client/ - Source Code = https://github.com/templateflow/python-client - -[options] -python_requires = >= 3.8 -setup_requires = - setuptools >= 45 - setuptools_scm >= 6.2 - wheel -install_requires = - pybids >= 0.15.2 - importlib_resources >= 5.7; python_version < '3.11' - requests - tqdm -test_requires = - pytest - pytest-xdist - pytest-cov == 2.5.1 - coverage -packages = find: -zip_safe = true - -[options.package_data] -templateflow = - conf/config.json - conf/templateflow-skel.zip - conf/templateflow-skel.md5 - -[options.packages.find] -exclude = - *.tests - tests.* - *.tests.* - -[options.extras_require] -datalad = - datalad ~= 0.12.0 -doc = - nbsphinx - packaging - pydot>=1.2.3 - pydotplus - sphinx-argparse - sphinx ~= 4.0 - sphinx_rtd_theme >= 0.4.3 - sphinxcontrib-apidoc - sphinx_multiversion -docs = - %(doc)s -test = - pytest - pytest-xdist - pytest-cov == 2.5.1 - coverage -tests = - %(test)s -all = - %(datalad)s - %(doc)s - %(test)s - -[flake8] -max-line-length = 99 -doctests = False -exclude=*build/ -ignore = - W503 - -[tool:pytest] -norecursedirs = .git -addopts = -svx -doctest_optionflags = ALLOW_UNICODE NORMALIZE_WHITESPACE -env = - PYTHONHASHSEED=0 -filterwarnings = - ignore::DeprecationWarning - -[coverage:run] -branch = True - diff --git a/setup.py b/setup.py deleted file mode 100644 index cbd8588f..00000000 --- a/setup.py +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env python -"""Templateflow's PEP518 setup.py shim.""" -from setuptools import setup - -if __name__ == "__main__": - """ Install entry-point """ - setup()