[Python-Dev] Refactor __get_builtin_constructor on hasklib.py

Mariatta Wijaya mariatta.wijaya at gmail.com
Tue Aug 7 11:51:07 EDT 2018


2.7 is for bug fixes only. Unless there is a bug to be fixed, I would leave
the code as is.

Mariatta


On Tue, Aug 7, 2018 at 8:14 AM 蔡銘峯 <parktasi at gmail.com> wrote:

> 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 !!
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/mariatta.wijaya%40gmail.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180807/320f38cb/attachment-0001.html>


More information about the Python-Dev mailing list