Is a namespace ID valid?

    >>> is_namespace_valid('abcd')
    True
    >>> is_namespace_valid('+abcd')
    False
    >>> is_namespace_valid('abc.def')
    False
    >>> is_namespace_valid('.abcd')
    False
    >>> is_namespace_valid('abcdabcdabcdabcdabcd')
    False
    >>> is_namespace_valid('abcdabcdabcdabcdabc')
    True

def is_namespace_valid( namespace_id ):
    """
    Is a namespace ID valid?

    >>> is_namespace_valid('abcd')
    True
    >>> is_namespace_valid('+abcd')
    False
    >>> is_namespace_valid('abc.def')
    False
    >>> is_namespace_valid('.abcd')
    False
    >>> is_namespace_valid('abcdabcdabcdabcdabcd')
    False
    >>> is_namespace_valid('abcdabcdabcdabcdabc')
    True
    """
    if not is_b40( namespace_id ) or "+" in namespace_id or namespace_id.count(".") > 0:
        return False

    if len(namespace_id) == 0 or len(namespace_id) > LENGTHS['blockchain_id_namespace_id']:
        return False

    return True