[Python-Dev] PEP 450 adding statistics module

Michael Foord fuzzyman at voidspace.org.uk
Thu Aug 15 22:28:39 CEST 2013


On 15 Aug 2013, at 21:10, "Eric V. Smith" <eric at trueblade.com> wrote:

> On 08/15/2013 01:58 PM, Mark Dickinson wrote:
>> On Thu, Aug 15, 2013 at 2:08 PM, Steven D'Aprano <steve at pearwood.info
>> <mailto:steve at pearwood.info>> wrote:
>> 
>> 
>>    - Each scheme ended up needing to be a separate function, for ease
>>    of both implementation and testing. So I had four private median
>>    functions, which I put inside a class to act as namespace and avoid
>>    polluting the main namespace. Then I needed a "master function" to
>>    select which of the methods should be called, with all the
>>    additional testing and documentation that entailed.
>> 
>> 
>> That's just an implementation issue, though, and sounds like a minor
>> inconvenience to the implementor rather than anything serious;  I don't
>> think that that should dictate the API that's used.
>> 
>>    - The API doesn't really feel very Pythonic to me. For example, we
>>    write:
>> 
>> 
>> And I guess this is subjective:  conversely, the API you're proposing
>> doesn't feel Pythonic to me. :-)  I'd like the hear the opinion of other
>> python-dev readers.
> 
> I agree with Mark: the proposed median, median.low, etc., doesn't feel
> right. Is there any example of doing this in the stdlib? I suggest just
> median(), median_low(), etc.
> 
> If we do end up keeping it, simpler than the callable singleton is:
> 
>>>> def median(): return 'median'
> ...
>>>> def _median_low(): return 'median.low'
> ...
>>>> median.low = _median_low
>>>> del _median_low
>>>> median()
> 'median'
>>>> median.low()
> 'median.low'


There's the patch decorator in unittest.mock which provides:

	patch(...)
	patch.object(...)
	patch.dict(...)

The implementation is exactly as you suggest. (e.g. patch.object = _patch_object)

Michael

> 
> Eric.
> 
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk


--
http://www.voidspace.org.uk/


May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.
-- the sqlite blessing 
http://www.sqlite.org/different.html







More information about the Python-Dev mailing list