mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Various utility functions."""
 | |
| 
 | |
| def safe_repr(obj):
 | |
|     try:
 | |
|         return repr(obj)
 | |
|     except Exception:
 | |
|         return object.__repr__(obj)
 | |
| 
 | |
| def strclass(cls):
 | |
|     return "%s.%s" % (cls.__module__, cls.__name__)
 | |
| 
 | |
| def sorted_list_difference(expected, actual):
 | |
|     """Finds elements in only one or the other of two, sorted input lists.
 | |
| 
 | |
|     Returns a two-element tuple of lists.    The first list contains those
 | |
|     elements in the "expected" list but not in the "actual" list, and the
 | |
|     second contains those elements in the "actual" list but not in the
 | |
|     "expected" list.    Duplicate elements in either input list are ignored.
 | |
|     """
 | |
|     i = j = 0
 | |
|     missing = []
 | |
|     unexpected = []
 | |
|     while True:
 | |
|         try:
 | |
|             e = expected[i]
 | |
|             a = actual[j]
 | |
|             if e < a:
 | |
|                 missing.append(e)
 | |
|                 i += 1
 | |
|                 while expected[i] == e:
 | |
|                     i += 1
 | |
|             elif e > a:
 | |
|                 unexpected.append(a)
 | |
|                 j += 1
 | |
|                 while actual[j] == a:
 | |
|                     j += 1
 | |
|             else:
 | |
|                 i += 1
 | |
|                 try:
 | |
|                     while expected[i] == e:
 | |
|                         i += 1
 | |
|                 finally:
 | |
|                     j += 1
 | |
|                     while actual[j] == a:
 | |
|                         j += 1
 | |
|         except IndexError:
 | |
|             missing.extend(expected[i:])
 | |
|             unexpected.extend(actual[j:])
 | |
|             break
 | |
|     return missing, unexpected
 | 
