Skip to content

Conversation

@vstinner
Copy link
Member

@vstinnervstinner commented May 24, 2023

Remove the crypt module and its private _crypt extension, deprecated in Python 3.11.


📚 Documentation preview 📚: https://cpython-previews--104908.org.readthedocs.build/

@vstinner
Copy link
MemberAuthor

Using ^\s*(import crypt\b|from crypt\b) regex, I found the following PyPI top 5,000 projects using the removed crypt module.

Affected projects (8):

  • Django (4.2)
  • Twisted (22.10.0)
  • ansible (7.4.0)
  • ansible-core (2.14.4)
  • htpasswd (2.3)
  • passlib (1.7.4)
  • pyftpdlib (1.5.7)
  • pytest-testinfra (7.0.0)
Details Code:
Django-4.2/tests/auth_tests/test_hashers.py: import crypt ansible-7.4.0/ansible_collections/community/general/plugins/modules/homectl.py: import crypt ansible-7.4.0/ansible_collections/community/general/plugins/modules/udm_user.py: import crypt Twisted-22.10.0/src/twisted/conch/test/test_checkers.py: import crypt Twisted-22.10.0/src/twisted/cred/test/test_cred.py: from crypt import crypt as _crypt Twisted-22.10.0/src/twisted/plugins/cred_unix.py: import crypt ansible-core-2.14.4/lib/ansible/utils/encrypt.py: import crypt passlib-1.7.4/passlib/tests/utils.py: from crypt import crypt passlib-1.7.4/passlib/utils/__init__.py: from crypt import crypt as _crypt pyftpdlib-1.5.7/pyftpdlib/authorizers.py: import crypt pytest-testinfra-7.0.0/test/test_modules.py: import crypt htpasswd-2.3/htpasswd/basic.py: from crypt import crypt 

@vstinner
Copy link
MemberAuthor

passlib (1.7.4)

It's interesting that the proposed replacement for the removed crypt module actually uses crypt internally (in /passlib/utils/__init__.py) :-)

@hugovk
Copy link
Member

Are these bits still needed?

Lib/ctypes/util.py 366: print(f"crypt\t::{find_library('crypt')}") 367: print(f"crypt\t::{cdll.LoadLibrary(find_library('crypt'))}") 373: print(find_library("crypt")) 

Remove the crypt module and its private _crypt extension, deprecated in Python 3.11.
@vstinner
Copy link
MemberAuthor

Are these bits still needed?

IMO we should keep it. I saw this test in ctypes. I don't see any direct relationship with the Python crypt module. It's just a test to load a dynamic library which is commonly available on Unix.

@corona10
Copy link
Member

image

@vstinnervstinner merged commit e4127ea into python:mainMay 25, 2023
@vstinnervstinner deleted the remove_crypt branch May 25, 2023 13:47
Sign up for freeto 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.

5 participants

@vstinner@hugovk@corona10@zware@bedevere-bot