[Python-Dev] Refactor __get_builtin_constructor on hasklib.py

Tsai Park parktasi at gmail.com
Wed Aug 8 04:01:39 EDT 2018


Dear Sanyam,Mariatta and Steve,
Thanks for your feedback.
I will read https://devguide.python.org/ carefully.
Best regards,
Park Tsai

2018-08-08 2:04 GMT+08:00 Steve Holden <steve at holdenweb.com>:

> Hi there,
>
> Good to see you on python-dev. It's always good to see people getting
> excited about helping with Python's development.
>
> The changes you suggest are, unless I've missed something, purely cosmetic
> - affecting readability only. This implies that you feel the code as it
> stands isn't as readable as it could be. You must admit that "it looks
> messy" is a matter of opinion, and alone isn't much of a justification for
> making changes to a project that will reach its end of life in less than
> eighteen months.
>
> The code in the standard library is mostly fairly well-scrutinised, and as
> PEP 8 reminds us, change made for purely stylistic reasons threatens to
> introduce new bugs.
>
> It's not obvious how much of the developer documentation you've seen, so
> it might be worth mentioning https://devguide.python.org/ as a good
> starting point for anyone wanting to contribute.
>
> regards
>  Steve
>
> Steve Holden
>
> On Tue, Aug 7, 2018 at 8:00 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/cpy
>> thon/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/steve%
>> 40holdenweb.com
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180808/f24ea734/attachment.html>


More information about the Python-Dev mailing list