laike9m / pdir2

Pretty dir() printing with joy:beer:
MIT License
1.33k stars 47 forks source link

officially supports python3.12 #77

Closed laixintao closed 9 months ago

laixintao commented 9 months ago

Dependencies

frostming commented 9 months ago

Looking into it deeper and found that the causes are multifaceted.

  1. The last version of numpy supporting 3.8 is 1.24.4, which doesn't have prebuilt wheels for Python 3.12. But the build system strictly requires setuptools==59 that doesn't work on Python 3.12. Dead end ❌ . This is possibly solvable by change the project's minimum python requires to 3.9.
  2. The pinned version of greenlet 2.0.2 doesn't have prebuilt wheels for Python 3.12, and the source files seem to be incompatible with Python 3.12. Fortunately, it can be solved by updating the version to 3.0 💡 .
  3. pandas again, no Python 3.12 wheels, and the build system requires numpy, failing due to the same reason as 1.
laixintao commented 9 months ago

Looking into it deeper and found that the causes are multifaceted.

  1. The last version of numpy supporting 3.8 is 1.24.4, which doesn't have prebuilt wheels for Python 3.12. But the build system strictly requires setuptools==59 that doesn't work on Python 3.12. Dead end ❌ . This is possibly solvable by change the project's minimum python requires to 3.9.
  2. The pinned version of greenlet 2.0.2 doesn't have prebuilt wheels for Python 3.12, and the source files seem to be incompatible with Python 3.12. Fortunately, it can be solved by updating the version to 3.0 💡 .
  3. pandas again, no Python 3.12 wheels, and the build system requires numpy, failing due to the same reason as 1.

Thanks so much!

I tried new verison of pandas, pdm will complain that there was a conflict, which is correct.

pdm install
Lock file hash doesn't match pyproject.toml, packages may be outdated
Updating the lock file...
🔒 Lock failed
Unable to find a resolution for numpy
because of the following conflicts:
  numpy>=1.22.4; python_version < "3.11" (from pandas@2.1.1)
  numpy>=1.23.2; python_version == "3.11" (from pandas@2.1.1)
  numpy>=1.26.0; python_version >= "3.12" (from pandas@2.1.1)
  python>=3.8 (from project)
  python>=3.9 (from pandas@2.1.0)
To fix this, you could loosen the dependency version constraints in pyproject.toml. See https://pdm.fming.dev/latest/usage/dependency/#solve-the-locking-failure for more
details.

(but pdm's message is a bit confusing, I can not tell what's the conflict about without thinkging... not a big issue though)

after all this, I realized that pandas here, only need for testing, not really a dev dependency. So I moved it out of pyproject.toml to tox, so that we can install pandas differenctly in different python version testing.

laike9m commented 9 months ago

Thank you both! I'll take a look when I get home

laike9m commented 9 months ago

So I moved it out of pyproject.toml to tox, so that we can install pandas differenctly in different python version testing.

LGTM. Thanks for making this change, and @frostming for the investigation!

laike9m commented 9 months ago

Will create a release after adding new dunder methods to the right categories.