[Python-Dev] [Python-checkins] cpython: PEP 417: Adding unittest.mock (original) (raw)
Terry Reedy tjreedy at udel.edu
Wed Mar 14 21:46:29 CET 2012
- Previous message: [Python-Dev] [Python-checkins] cpython: PEP 417: Adding unittest.mock
- Next message: [Python-Dev] [Python-checkins] cpython: PEP 417: Adding unittest.mock
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.
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
- Previous message: [Python-Dev] [Python-checkins] cpython: PEP 417: Adding unittest.mock
- Next message: [Python-Dev] [Python-checkins] cpython: PEP 417: Adding unittest.mock
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]