[Python-Dev] Refactor __get_builtin_constructor on hasklib.py
蔡銘峯
parktasi at gmail.com
Tue Aug 7 03:00:19 EDT 2018
Hello everybody,
I am Park Tsai. I want to refactor __get_builtin_constructor on hasklib.py
of python 2.7 (https://github.com/python/cpython/blob/2.7/Lib/hashlib.py#L72).
This is the first time that I try to refactor code of CPython on GitHub, so
I am very excited.
This is __get_builtin_constructor code on hasklib.py ,as follows.
def __get_builtin_constructor(name):
try:
if name in ('SHA1', 'sha1'):
import _sha
return _sha.new
elif name in ('MD5', 'md5'):
import _md5
return _md5.new
elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
import _sha256
bs = name[3:]
if bs == '256':
return _sha256.sha256
elif bs == '224':
return _sha256.sha224
elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'):
import _sha512
bs = name[3:]
if bs == '512':
return _sha512.sha512
elif bs == '384':
return _sha512.sha384
except ImportError:
pass # no extension module, this hash is unsupported.
raise ValueError('unsupported hash type ' + name)
When I read this code, it looks messy, so I want to refactor it and make it
become more clearly .
Then, it will be like this
def get_builtin_constructor(name):
try:
if name[:3] in ('SHA','sha'):
if(name[3:]=='1'):
import _sha
return _sha.new
elif (name[3:] == '224'):
import _sha256
return _sha256.sha224
elif (name[3:] == '256'):
import _sha256
return _sha256.sha256
elif (name[3:] == '384'):
import _sha512
return _sha512.sha384
elif (name[3:] == '512'):
import _sha512
return _sha512.sha512
elif name in ('MD5', 'md5'):
import _md5
return _md5.new
except ImportError:
pass # no extension module, this hash is unsupported.
raise ValueError('unsupported hash type ' + name)
I will be grateful for any help you can provide. I really appreciate any
feedback you can offer!
Best regards,
Park Tsai !!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180807/a5a5df41/attachment.html>
More information about the Python-Dev
mailing list