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

Python 3.12 compatibility #222

Closed
SunnyR opened this issue May 21, 2024 · 4 comments
Closed

Python 3.12 compatibility #222

SunnyR opened this issue May 21, 2024 · 4 comments
Labels

Comments

@SunnyR
Copy link

SunnyR commented May 21, 2024

Is your feature request related to a problem? Please describe.
Not a problem yet.

We are currently in the process of updating our project to python 3.12, so I was curious if there was an ETA on when this package would be updated as well? I noticed there were already related commits merged into develop, however they were a few months ago now.

Describe the solution you'd like
The package is updated to support python 3.12.

Describe alternatives you've considered
None yet.

Additional context
N/A

@SunnyR SunnyR added the Feature label May 21, 2024
@LincolnPuzey
Copy link
Collaborator

@SunnyR I just released a new version. That said the other recent versions should probably work ok with python 3.12 too.

@SunnyR
Copy link
Author

SunnyR commented May 28, 2024

@LincolnPuzey Thank you for that. Although, I seem to have run into an issue while wheel building based on the stack trace below and I believe it relates to

requires = ["setuptools ~= 63.4"]

In python 3.12 the pkgutil class was deprecated/removed and setuptools was updated for it - https://setuptools.pypa.io/en/stable/history.html#v66-1-0.

Collecting django-dirtyfields==1.9.3
  Downloading django-dirtyfields-1.9.3.tar.gz (11 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error
  
  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [33 lines of output]
      Traceback (most recent call last):
        File "/home/sunny/.cache/pypoetry/virtualenvs/wheel-builder-iFjbkhZs-py3.12/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/sunny/.cache/pypoetry/virtualenvs/wheel-builder-iFjbkhZs-py3.12/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/sunny/.cache/pypoetry/virtualenvs/wheel-builder-iFjbkhZs-py3.12/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 112, in get_requires_for_build_wheel
          backend = _build_backend()
                    ^^^^^^^^^^^^^^^^
        File "/home/sunny/.cache/pypoetry/virtualenvs/wheel-builder-iFjbkhZs-py3.12/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
          obj = import_module(mod_path)
                ^^^^^^^^^^^^^^^^^^^^^^^
        File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
          return _bootstrap._gcd_import(name[level:], package, level)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
        File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
        File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
        File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
        File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
        File "<frozen importlib._bootstrap_external>", line 995, in exec_module
        File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
        File "/tmp/pip-build-env-obfmoop_/overlay/lib/python3.12/site-packages/setuptools/__init__.py", line 16, in <module>
          import setuptools.version
        File "/tmp/pip-build-env-obfmoop_/overlay/lib/python3.12/site-packages/setuptools/version.py", line 1, in <module>
          import pkg_resources
        File "/tmp/pip-build-env-obfmoop_/overlay/lib/python3.12/site-packages/pkg_resources/__init__.py", line 2191, in <module>
          register_finder(pkgutil.ImpImporter, find_on_path)
                          ^^^^^^^^^^^^^^^^^^^
      AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
Last command did not complete successfully

Related PR - #214

@LincolnPuzey
Copy link
Collaborator

Hmm yes I can see that old setuptools version isn't going to work.

@SunnyR are you able to install via the wheel from pypi? That works for me

python -m pip install django-dirtyfields
Collecting django-dirtyfields
  Downloading django_dirtyfields-1.9.3-py3-none-any.whl.metadata (4.9 kB)

@SunnyR
Copy link
Author

SunnyR commented May 31, 2024

We prefer to build our own wheels and have a process in place to do that, hence we ran into the issue and flagged it. However, yes for now I can exclude it and use the one from pypi. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants