def METHOD_NAME(mtype="all", sel=None):
    """Return a tuple of neuron, device, or synapse model names.
    Parameters
    ----------
    mtype : str, optional
        Use ``mtype='nodes'`` to only get neuron and device models,
        or ``mtype='synapses'`` to only get synapse models.
    sel : str, optional
        Filter results and only return models containing ``sel``.
    Returns
    -------
    tuple
        Available model names, sorted by name
    Raises
    ------
    ValueError
        Description
    Notes
    -----
    - Synapse model names ending in ``_hpc`` require less memory because of
      thread-local indices for target neuron IDs and fixed ``rport``s of 0.
    - Synapse model names ending in ``_lbl`` allow to assign an integer label
      (``synapse_label``) to each individual synapse, at the cost of increased
      memory requirements.
    """
    if mtype not in ("all", "nodes", "synapses"):
        raise ValueError("mtype has to be one of 'all', 'nodes', or 'synapses'")
    models = []
    if mtype in ("all", "nodes"):
        models += GetKernelStatus("node_models")
    if mtype in ("all", "synapses"):
        models += GetKernelStatus("synapse_models")
    if sel is not None:
        models = [x for x in models if sel in x]
    models.sort()
    return tuple(models)