You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
from __future__ import annotations
 | 
						|
 | 
						|
import typing
 | 
						|
from types import TracebackType
 | 
						|
 | 
						|
 | 
						|
def to_bytes(
 | 
						|
    x: str | bytes, encoding: str | None = None, errors: str | None = None
 | 
						|
) -> bytes:
 | 
						|
    if isinstance(x, bytes):
 | 
						|
        return x
 | 
						|
    elif not isinstance(x, str):
 | 
						|
        raise TypeError(f"not expecting type {type(x).__name__}")
 | 
						|
    if encoding or errors:
 | 
						|
        return x.encode(encoding or "utf-8", errors=errors or "strict")
 | 
						|
    return x.encode()
 | 
						|
 | 
						|
 | 
						|
def to_str(
 | 
						|
    x: str | bytes, encoding: str | None = None, errors: str | None = None
 | 
						|
) -> str:
 | 
						|
    if isinstance(x, str):
 | 
						|
        return x
 | 
						|
    elif not isinstance(x, bytes):
 | 
						|
        raise TypeError(f"not expecting type {type(x).__name__}")
 | 
						|
    if encoding or errors:
 | 
						|
        return x.decode(encoding or "utf-8", errors=errors or "strict")
 | 
						|
    return x.decode()
 | 
						|
 | 
						|
 | 
						|
def reraise(
 | 
						|
    tp: type[BaseException] | None,
 | 
						|
    value: BaseException,
 | 
						|
    tb: TracebackType | None = None,
 | 
						|
) -> typing.NoReturn:
 | 
						|
    try:
 | 
						|
        if value.__traceback__ is not tb:
 | 
						|
            raise value.with_traceback(tb)
 | 
						|
        raise value
 | 
						|
    finally:
 | 
						|
        value = None  # type: ignore[assignment]
 | 
						|
        tb = None
 |