Source code for streamlitextras.utils

# File contains utility or helper functions
import os
from typing import Optional
from streamlit.runtime.uploaded_file_manager import UploadedFile


[docs]def repr_( cls, ignore_keys: Optional[list[str]] = None, only_keys: Optional[list[str]] = None ) -> str: """ Returns a string detailing a class attributes from cls.__dict__ Makes nice printing for __repr__ implementations :param ignore_keys: If provided, these keys will be not be included in the attribute string :param only_keys: If provided, these keys will be the only ones included in the attribute string """ if not hasattr(cls, "__dict__"): return repr(cls) if not ignore_keys or only_keys: ignore_keys = [] classname = cls.__class__.__name__ try: args = ", ".join( [ f"{k}={repr(v)}" for (k, v) in cls.__dict__.items() if k not in ignore_keys and (k in only_keys if only_keys else True) ] ) except RecursionError: args = "Too much recursion" return f"{classname}({hex(id(cls))}, {args})"
[docs]def save_file(st_file_object: UploadedFile, to_path: str) -> str: """ Saves a streamlit UploadedFile BytesIO object to the given relative path :param UploadedFile st_file_object: The UploadedFile bytes object to save to disk - contains filename and metadata :param str to_path: The relative path to a folder to save the file to :returns str: Will return the relative path which can be used as a URL """ os.makedirs(to_path, exist_ok=True) path = os.path.join(to_path, st_file_object.name) with open(path, "wb") as f: f.write(st_file_object.getbuffer()) return "/" + path
[docs]def where_stack(): import inspect stack = inspect.stack() the_class = stack[1][0].f_locals["self"].__class__.__name__ the_method = stack[1][0].f_code.co_name print("I was called by {}.{}()".format(the_class, the_method))