SlicerDMRI / whitematteranalysis

White matter tractography clustering and more...
https://dmri.slicer.org/whitematteranalysis/
Other
65 stars 32 forks source link

ENH: Adopt PEP518 and PEP631 #217

Open jhlegarreta opened 7 months ago

jhlegarreta commented 7 months ago

Adopt PEP518 to specify minimum build system requirements for the package.

Partially comply with PEP631:

Require setuptools >= 66 so that the package can be effectively installed in editable mode when using the minimum required version of it. Avoids:

ERROR:
 Project file:///home/runner/work/whitematteranalysis/whitematteranalysis
 has a 'pyproject.toml' and its build backend is missing the
 'build_editable' hook. Since it does not have a 'setup.py' nor a
 'setup.cfg', it cannot be installed in editable mode. Consider using a
 build backend that supports PEP 660.

Require nibabel > 3.0.0 to avoid:

  File "bin/wm_cluster_volumetric_measurements.py", line 7, in <module>
    import nibabel as nib
  File "python3.10/site-packages/nibabel/__init__.py", line 66, in <module>
(...)
AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`.
 To avoid this error in existing code, use `float` by itself. Doing this
 will not modify any behavior and is safe. If you specifically wanted
 the numpy scalar type, use `np.float64` here.
The aliases was originally deprecated in NumPy 1.20; for more details
 and guidance see the original release note at:
https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations. Did you mean: 'cfloat'?

Require "scipy >= 1.7.0 for python_version == '3.9' to avoid:

whitematteranalysis/cluster.py:14: in <module>
    import scipy.cluster.hierarchy
(...)
python3.9/site-packages/scipy/special/orthogonal.py:79: in <module>
    from numpy import (exp, inf, pi, sqrt, floor, sin, cos, around, int,
E   ImportError: cannot import name 'int' from 'numpy'
(python3.9/site-packages/numpy/__init__.py)

Require statsmodels >= 0.14.0 to avoid:

ModuleNotFoundError: No module named 'statsmodels'

when using the minimum required version builds.

Require vtk>=9.2.2 for python_version == '3.9' to avoid:

import vtk
ModuleNotFoundError: No module named 'vtk'

Require vtk>=9.2.2 for python_version >= '3.10' to avoid:

ERROR: Could not find a version that satisfies the requirement
 vtk==9.2.0
 (from versions: 9.2.2, 9.2.4, 9.2.5, 9.2.6, 9.3.0rc1, 9.3.0rc2, 9.3.0, 9.3.20230807rc0)
ERROR: No matching distribution found for vtk==9.2.0

and vtk>=9.2.4 for Python 3.11 to avoid:

  File "whitematteranalysis/cluster.py", line 16, in <module>
    import vtk
ModuleNotFoundError: No module named 'vtk'

List importlib-resources as a dependency explicitly to avoid Python 3.9 not finding the package.

Use float instad of np.float in tract_measurement.py. Fixes:

AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid
this error in existing code, use `float` by itself. Doing this will not
modify any behavior and is safe. If you specifically wanted the numpy
scalar type, use `np.float64` here.

Adapt the Sphinx documentation config file to read the necessary metadata from the pyproject.toml file.

Add the tomli package to the documentation dependencies so that readthedocs can successfully find it.

Prepend the module location to the script testing script_runner.run calls.

Adopt tox.ini for testing automation and standardization.

Adapt the GitHub Actions workflow accordingly

Do not use the --doctest-modules for now to avoid:

_____________________ ERROR collecting docs/source/conf.py _____________________
E   FileNotFoundError: [Errno 2] No such file or directory: '../../pyproject.toml'

Documentation: https://www.python.org/dev/peps/pep-0518/ https://www.python.org/dev/peps/pep-0631/