Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH: Adopt PEP518 and PEP631 #217

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jhlegarreta
Copy link
Contributor

@jhlegarreta jhlegarreta commented Dec 8, 2023

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

Partially comply with PEP631:

  • Dependencies are now stored in the pyproject.toml file, including
    packages that are not in PyPI (e.g. source code URLs -GitHub, etc.),
    so the related requirements file is removed.

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/

@jhlegarreta jhlegarreta force-pushed the TransitionToPyprojectToml branch 30 times, most recently from 080d138 to 7861abb Compare December 8, 2023 20:04
@jhlegarreta jhlegarreta force-pushed the TransitionToPyprojectToml branch 8 times, most recently from 87f5216 to ee2c12c Compare December 8, 2023 22:36
Adopt PEP518 to specify minimum build system requirements for the
package.

Partially comply with PEP631:
- Dependencies are now stored in the `pyproject.toml` file, including
  packages that are not in PyPI (e.g. source code URLs -GitHub, etc.),
  so the related requirements file is removed.

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/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant