code: def roles_for_level(level: Union[int, Self]) -> List[Self]:
      if isinstance(level, ServiceRole):
          level = level.value
      roles = []
      level_float = float(level)
      service_roles = ServiceRole.roles_descending()
      for role in service_roles:
          role_num = role[0]
          if role_num == 0:
              continue
          role_enum = role[1]
          if level_float / role_num >= 1:
              roles.append(role_enum)
              level_float = level_float % role_num
      return roles
  
file_path: PySyft/packages/syft/src/syft/service/user/user_roles.py
imports: from enum import Enum
  from typing import Any
  from typing import List
  from typing import Tuple
  from typing import Union
  from typing_extensions import Self
  from ...serde.serializable import serializable
label_desc: Use image node_id 2 for calling the ServiceRole obj's underlying member method code with example usage: obj.roles_for_level(level) and returns: roles