dssg / aequitas

Bias Auditing & Fair ML Toolkit
http://www.datasciencepublicpolicy.org/aequitas/
MIT License
656 stars 110 forks source link

Install fails on python 3.12 #183

Open ejm714 opened 4 months ago

ejm714 commented 4 months ago

To reproduce, set up a conda environment with python=3.12 and then try to pip install the package.

Unpinning numpy should resolve this. Is there a reason this specific version is pinned?

❯ uv pip install aequitas
Resolved 50 packages in 5.69s
   Built antlr4-python3-runtime==4.9.3
   Built millify==0.1.1
error: Failed to download distributions
  Caused by: Failed to fetch wheel: numpy==1.23.5
  Caused by: Failed to build: numpy==1.23.5
  Caused by: Build backend failed to determine extra requires with `build_wheel()`:
--- stdout:

--- stderr:
Traceback (most recent call last):
  File "<string>", line 8, in <module>
  File "/Users/emily/Library/Caches/uv/.tmpFmkBHz/.venv/lib/python3.12/site-packages/setuptools/__init__.py", line 10, in <module>
    import distutils.core
ModuleNotFoundError: No module named 'distutils'
---
diehlbw commented 1 month ago

I'd be willing to spin up a PR for this. Would it be acceptable to weaken numpy to numpy>=1.23.5 in main.txt or are you wanting strict pinning on it specifically?

From your testing script I found two other minor changes that are needed for this:
I think tabulate in cli.cxt would also need to be adjusted to 0.9.0 or there abouts. Also, one of the test assertions is an exact string warning message and the float changes representation between python 3.11 and 3.12

ejm714 commented 3 weeks ago

I guess the main underlying question I have is why the requirements are pinned at all. This makes it increasingly likely that the package won't be installable for newer python versions and it also means you can't take advantage of bug fixes and improvements in your dependencies. If there are certain issues with backwards compatibility, having floors or ceilings for your dependencies is reasonable but I'd be surprised if you truly need pinned versions. Would you be open to unpinning the requirements?