Fyi:
http://bugs.python.org/issue14310


-----Original Message-----
From: python-dev-bounces+kristjan=ccpgames....@python.org 
[mailto:python-dev-bounces+kristjan=ccpgames....@python.org] On Behalf Of 
Michael Foord
Sent: 14. mars 2012 14:42
To: Terry Reedy
Cc: python-dev@python.org
Subject: Re: [Python-Dev] [Python-checkins] cpython: PEP 417: Adding 
unittest.mock


On 14 Mar 2012, at 13:46, Terry Reedy wrote:

> On 3/14/2012 4:22 PM, Michael Foord wrote:
>> 
>> On 14 Mar 2012, at 13:08, Terry Reedy wrote:
>> 
>>> On 3/14/2012 3:25 PM, michael.foord wrote:
>>>> +# mock.py +# Test tools for mocking and patching.
> 
>>> Should there be a note here about restrictions on editing this
>>> file? I notice that there are things like
>>> 
>>>> +class OldStyleClass: +    pass +ClassType = type(OldStyleClass)
>>> 
>>> which are only present for running under Py2 and which would
>>> normally be removed for Py3.
>> 
>> 
>> Yeah, I removed as much of the Python 2 compatibility code and
>> thought I'd got it all. Thanks for pointing it out.
> 
> 2000 lines is a lot to check through.
>> 
>> I'm maintaining a "clean" (no Python 2 compatibility code) version in
>> the standard library.
> 
> Great. Here is something else, which is why I thought otherwise ;-).
> 
> +def _instance_callable(obj):
> +    """Given an object, return True if the object is callable.
> +    For classes, return True if instances would be callable."""
> +    if not isinstance(obj, type):
> +        # already an instance
> +        return getattr(obj, '__call__', None) is not None
> +
> +    klass = obj
> +    # uses __bases__ instead of __mro__ so that we work with
> >>>  old style classes
> +    if klass.__dict__.get('__call__') is not None:
> +        return True
> +
> +    for base in klass.__bases__:
> +        if _instance_callable(base):
> +            return True
> +    return False
> 
> If you want to leave the code as is, remove or revise the comment.

Thanks very much for finding these, I'm pretty sure I've fixed all the ones you 
reported - and one more case where try...except...finally can now be used.

All the best,

Michael Foord


> 
>> I'll be maintaining mock, so I'd like to be
>> assigned any issues on it and at least talked to before changes are
>> made. I am maintaining a backport still, but the Python standard
>> library version is the canonical version.
> 
> Add unittest.mock to devguide/experts.rst and yourself with * appended.
> 
> ---
> Searching for 'old', I also found
> 
> +def _must_skip(spec, entry, is_type):
> +    if not isinstance(spec, type):
> +        if entry in getattr(spec, '__dict__', {}):
> +            # instance attribute - shouldn't skip
> +            return False
> >>>+        # can't use type because of old style classes
> +        spec = spec.__class__
> +    if not hasattr(spec, '__mro__'):
> >>>+        # old style class: can't have descriptors anyway
> +        return is_type
> 
> In testcallable.py
> +    def test_patch_spec_callable_class(self):
> +        class CallableX(X):
> +            def __call__(self):
> +                pass
> +
> +        class Sub(CallableX):
> +            pass
> +
> +        class Multi(SomeClass, Sub):
> +            pass
> +
> >>>+        class OldStyle:
> +            def __call__(self):
> +                pass
> +
> >>>+        class OldStyleSub(OldStyle):
> +            pass
> +
> +        for arg in 'spec', 'spec_set':
> >>>+            for Klass in CallableX, Sub, Multi, OldStyle, OldStyleSub:
> 
> This is the last.
> 
> -- 
> Terry Jan Reedy
> 
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@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





_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/kristjan%40ccpgames.com


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to