import logging
import types

from _typeshed import Incomplete
from yfinance import const as const

def attributes(obj): ...

class IndentLoggerAdapter(logging.LoggerAdapter):
    def process(self, msg, kwargs): ...

class IndentationContext:
    increment: Incomplete
    def __init__(self, increment: int = 1) -> None: ...
    def __enter__(self) -> None: ...
    def __exit__(
        self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: types.TracebackType | None
    ) -> None: ...

def get_indented_logger(name: Incomplete | None = None): ...
def log_indent_decorator(func): ...

class MultiLineFormatter(logging.Formatter):
    level_length: Incomplete
    def __init__(self, fmt) -> None: ...
    def format(self, record): ...

yf_logger: Incomplete
yf_log_indented: bool

class YFLogFormatter(logging.Filter):
    def filter(self, record): ...

def get_yf_logger(): ...
def enable_debug_mode() -> None: ...
def is_isin(string): ...
def get_all_by_isin(isin): ...
def get_ticker_by_isin(isin): ...
def get_info_by_isin(isin): ...
def get_news_by_isin(isin): ...
def empty_df(index: Incomplete | None = None): ...
def empty_earnings_dates_df(): ...
def build_template(data): ...
def retrieve_financial_details(data): ...
def format_annual_financial_statement(
    level_detail, annual_dicts, annual_order, ttm_dicts: Incomplete | None = None, ttm_order: Incomplete | None = None
): ...
def format_quarterly_financial_statement(_statement, level_detail, order): ...
def camel2title(strings: list[str], sep: str = " ", acronyms: list[str] | None = None) -> list[str]: ...
def snake_case_2_camelCase(s): ...
def is_valid_period_format(period): ...
def auto_adjust(data): ...
def back_adjust(data): ...
def parse_quotes(data): ...
def parse_actions(data): ...
def set_df_tz(df, interval, tz): ...
def fix_Yahoo_returning_prepost_unrequested(quotes, interval, tradingPeriods): ...
def fix_Yahoo_returning_live_separate(
    quotes, interval, tz_exchange, prepost, repair: bool = False, currency: Incomplete | None = None
): ...
def safe_merge_dfs(df_main, df_sub, interval): ...
def fix_Yahoo_dst_issue(df, interval): ...
def is_valid_timezone(tz: str) -> bool: ...
def format_history_metadata(md, tradingPeriodsOnly: bool = True): ...

class ProgressBar:
    text: Incomplete
    iterations: Incomplete
    prog_bar: str
    fill_char: str
    width: int
    elapsed: int
    def __init__(self, iterations, text: str = "completed") -> None: ...
    def completed(self) -> None: ...
    def animate(self, iteration: Incomplete | None = None) -> None: ...
    def update_iteration(self, val: Incomplete | None = None) -> None: ...

def dynamic_docstring(placeholders: dict): ...
def generate_list_table_from_dict(data: dict, bullets: bool = True, title: str = None) -> str: ...
def generate_list_table_from_dict_universal(
    data: dict, bullets: bool = True, title: str = None, concat_keys=[]
) -> str: ...
