Source code for pyarts3.utils.workspace

import pyarts3.arts as cxx


__all__ = [
    'builtin_groups',
    'builtin_group_methods',
]


def is_nb_module(obj):
    from inspect import ismodule
    return ismodule(obj)


def is_nb_class(obj):
    from inspect import isclass
    return isclass(obj)


def is_nb_function(obj):
    return isinstance(obj, type(cxx.igrf))


def is_nb_member_method(obj):
    return isinstance(obj, type(cxx.Index.conj))


[docs] def builtin_groups(mod=cxx): assert is_nb_module(mod), f"{mod} is not a module" out = [] for x in dir(mod): v = getattr(mod, x) if is_nb_module(v): out.extend(builtin_groups(v)) elif is_nb_class(v): out.append(v) return out
[docs] def builtin_group_methods(groups=None, dunders=None): if groups is None: groups = builtin_groups() if dunders is None: dunders = [] out = {} for x in groups: for y in dir(x): v = getattr(x, y) if is_nb_member_method(v) and (not y.startswith("__") or y in dunders): if x not in out: out[x] = {} out[x][y] = v return out