mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +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)
 |