summaryrefslogtreecommitdiff
path: root/coverage/misc.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2014-11-21 05:51:19 -0500
committerNed Batchelder <ned@nedbatchelder.com>2014-11-21 05:51:19 -0500
commitf81c9233740f5c2968447dd58d1185fa24994df0 (patch)
tree1416b383df4fdff660ef151e616ed4d2d48298b5 /coverage/misc.py
parentab72777fedc76497fee561642e85ea09bc4624e1 (diff)
downloadpython-coveragepy-f81c9233740f5c2968447dd58d1185fa24994df0.tar.gz
Move to the misc.py file
Diffstat (limited to 'coverage/misc.py')
-rw-r--r--coverage/misc.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/coverage/misc.py b/coverage/misc.py
index f9a30bc..f0e043b 100644
--- a/coverage/misc.py
+++ b/coverage/misc.py
@@ -4,6 +4,7 @@ import errno
import hashlib
import inspect
import os
+import sys
from coverage.backward import string_class, to_bytes
@@ -135,6 +136,29 @@ class Hasher(object):
return self.md5.hexdigest()
+def overrides(obj, method_name, base_class):
+ """Does `obj` override the `method_name` it got from `base_class`?
+
+ Determine if `obj` implements the method called `method_name`, which it
+ inherited from `base_class`.
+
+ Returns a boolean.
+
+ """
+ klass = obj.__class__
+ klass_func = getattr(klass, method_name)
+ base_func = getattr(base_class, method_name)
+
+ # Python 2/3 compatibility: Python 2 returns an instancemethod object, the
+ # function is the .im_func attribute. Python 3 returns a plain function
+ # object already.
+ if sys.version_info < (3, 0):
+ klass_func = klass_func.im_func
+ base_func = base_func.im_func
+
+ return klass_func is not base_func
+
+
class CoverageException(Exception):
"""An exception specific to Coverage."""
pass