mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			15 lines
		
	
	
	
		
			620 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			15 lines
		
	
	
	
		
			620 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| def to_tuple(t):
 | |
|     if t is None or isinstance(t, (str, int, complex, float, bytes, tuple)) or t is Ellipsis:
 | |
|         return t
 | |
|     elif isinstance(t, list):
 | |
|         return [to_tuple(e) for e in t]
 | |
|     result = [t.__class__.__name__]
 | |
|     if hasattr(t, 'lineno') and hasattr(t, 'col_offset'):
 | |
|         result.append((t.lineno, t.col_offset))
 | |
|         if hasattr(t, 'end_lineno') and hasattr(t, 'end_col_offset'):
 | |
|             result[-1] += (t.end_lineno, t.end_col_offset)
 | |
|     if t._fields is None:
 | |
|         return tuple(result)
 | |
|     for f in t._fields:
 | |
|         result.append(to_tuple(getattr(t, f)))
 | |
|     return tuple(result)
 | 
