[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