<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_in_scope(cls, want_scope: str, have_scopes: List[Scope]) -> bool: """Return True if wanted scope is in list of scopes or derived scopes. :param want_scope: scope wanted for permission to do something (str because could be invalid scope) :param have_scopes: list of valid scopes that user has been assigned """

        if not want_scope:
            return True
        if want_scope in have_scopes or want_scope.split(':')[0] in have_scopes:
            return True
        elif want_scope.startswith('read'):
            return cls.is_in_scope(want_scope.replace('read', 'write'), have_scopes)
        elif want_scope.startswith('write'):
            return cls.is_in_scope(want_scope.replace('write', 'admin'), have_scopes)
        else:
            return False