[libcxx] Replace func_name with __name__ for compatibility with Python 3
authorSergej Jaskiewicz <jaskiewiczs@icloud.com>
Fri, 6 Dec 2019 19:17:34 +0000 (22:17 +0300)
committerSergej Jaskiewicz <jaskiewiczs@icloud.com>
Tue, 10 Dec 2019 23:37:13 +0000 (02:37 +0300)
Summary:
The __name__ attribute is the correct way to get a function name in
Python 3. This also works with Python 2.

Reviewers: jroelofs, EricWF

Subscribers: christof, ldionne, libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D71136

libcxx/utils/libcxx/test/tracing.py

index 9ef9ae3..0bd3392 100644 (file)
@@ -14,7 +14,7 @@ def trace_function(function, log_calls, log_results, label=''):
     def wrapper(*args, **kwargs):
         kwarg_strs = ['{}={}'.format(k, v) for (k, v) in kwargs]
         arg_str = ', '.join([str(a) for a in args] + kwarg_strs)
-        call_str = '{}({})'.format(function.func_name, arg_str)
+        call_str = '{}({})'.format(function.__name__, arg_str)
 
         # Perform the call itself, logging before, after, and anything thrown.
         try:
@@ -36,7 +36,7 @@ def trace_object(obj, log_calls, log_results, label=''):
     for name, member in inspect.getmembers(obj):
         if inspect.ismethod(member):
             # Skip meta-functions, decorate everything else
-            if not member.func_name.startswith('__'):
+            if not member.__name__.startswith('__'):
                 setattr(obj, name, trace_function(member, log_calls,
                                                   log_results, label))
     return obj