<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def is_valid_package_module_name(name):
 """ Test whether it's a valid package or module name. - a-z, 0-9, and underline - starts with underline or alpha letter valid: - ``a`` - ``a.b.c`` - ``_a`` - ``_a._b._c`` invalid: - ``A`` - ``0`` - ``.a`` - ``a#b`` """

    if "." in name:
        for part in name.split("."):
            if not is_valid_package_module_name(part):
                return False
    elif len(name):
        if name[0] not in _first_letter_for_valid_name:
            return False

        if len(set(name).difference(_char_set_for_valid_name)):
            return False
    else:
        return False
    return True