code: def sample(population, k, split_every=None):
      """Chooses k unique random elements from a bag.
  
      Returns a new bag containing elements from the population while
      leaving the original population unchanged.
  
      Parameters
      ----------
      population: Bag
          Elements to sample.
      k: integer, optional
          Number of elements to sample.
      split_every: int (optional)
          Group partitions into groups of this size while performing reduction.
          Defaults to 8.
  
      Examples
      --------
      >>> import dask.bag as db
      >>> from dask.bag import random
      >>> b = db.from_sequence(range(5), npartitions=2)
      >>> list(random.sample(b, 3).compute())  # doctest: +SKIP
      [1, 3, 5]
      """
      res = _sample(population=population, k=k, split_every=split_every)
      return res.map_partitions(_finalize_sample, k)
  
file_path: dask/dask/bag/random.py
imports: from __future__ import annotations
  import heapq
  import math
  import random
  from functools import partial
  from itertools import islice
  from dask.bag.core import Bag
label_desc: Use image node_id 1 for calling a global function with example usage: sample(population, k, split_every) and returns: res