from typing import Dict
from typing import Callable
from typing import Any
import inspect


def getObjPublicMethods(obj: object) -> Dict[str, Callable[..., Any]]:
    """ Return a dictionary of object public methods that does not start 
    with '_' or '__'. Each item represents: 'name': <reference to a method>

    Note:
        Only class 'public' methods are returned, without ``@staticmethod``. 
        They are of type '<bound method...>'

    Args:
        obj: object to inspect.
    """
    functions = inspect.getmembers(obj, inspect.ismethod)

    relevantMethods = {}
    for func in functions:
        name, reference = func
        if not name.startswith('_'):
            relevantMethods[name] = reference

    return relevantMethods