Get the signature for a function or class, formatted nicely if possible.
    
    Parameters
    ----------
    name : str
        Name of the thing, used as the first part of the signature
    thing : class or function
        Thing to get the signature of

def get_signature(name, thing):
    """
    Get the signature for a function or class, formatted nicely if possible.
    
    Parameters
    ----------
    name : str
        Name of the thing, used as the first part of the signature
    thing : class or function
        Thing to get the signature of
    """
    if inspect.ismodule(thing):
        return ""
    if isinstance(thing, property):
        func_sig = name
    else:
        try:
            sig = inspect.signature(thing)
        except TypeError:
            sig = inspect.signature(thing.fget)
        except ValueError:
            return ""
        func_sig = f"{name}{sig}"
        try:
            mode = black.FileMode(line_length=80)
            func_sig = black.format_str(func_sig, mode=mode).strip()
        except (ValueError, TypeError):
            pass
    return f"```python\n{func_sig}\n```\n"