code: def __init__(
      self,
      values: Collection[_VT],
      keys: Union[Callable[[_VT], _KT], Collection[_KT]],
  ) -> None:
      self.values = values
  
      if isinstance(keys, Callable):
          self.key_fn = keys
          self.keys = [keys(v) for v in values]
      else:
          self.key_fn = None
          self.keys = keys
  
      def value_generator() -> Generator[_VT, Any, None]:
          yield from values
  
      def key_generator() -> Generator[_KT, Any, None]:
          yield from self.keys
  
      self.value_generator = value_generator
      self.key_generator = key_generator
  
imports: from collections.abc import Collection
  from collections.abc import Iterable
  from collections.abc import Mapping
  from functools import cached_property
  from itertools import chain
  from itertools import combinations
  from typing import Any
  from typing import Callable
  from typing import Generator
  from typing import Generic
  from typing import Optional
  from typing import TypeVar
  from typing import Union
  import uuid
  from faker import Faker
  import pytest
  from typing_extensions import Self
  from syft.service.dataset.dataset import Contributor
  from syft.service.dataset.dataset import Dataset
  from syft.service.dataset.dataset import DatasetPageView
  from syft.service.user.roles import Roles
  from syft.types.dicttuple import DictTuple
label_desc: Use image node_id 1 to create a new Case object from inherited base classes: Generic with example: obj = Case(values, keys)