code: def pick_config_ids(device_type, os, navigator):
      
  
  
      if os is None:
          default_dev_types = ['desktop']
      else:
          default_dev_types = list(DEVICE_TYPE_OS.keys())
      dev_type_choices = get_option_choices(
          'device_type', device_type, default_dev_types,
          list(DEVICE_TYPE_OS.keys())
      )
      os_choices = get_option_choices('os', os, list(OS_NAVIGATOR.keys()),
                                      list(OS_NAVIGATOR.keys()))
      nav_choices = get_option_choices('navigator', navigator,
                                       list(NAVIGATOR_OS.keys()),
                                       list(NAVIGATOR_OS.keys()))
  
      variants = []
      for dev, os, nav in product(dev_type_choices, os_choices,
                                  nav_choices):
  
          if (os in DEVICE_TYPE_OS[dev]
                  and nav in DEVICE_TYPE_NAVIGATOR[dev]
                  and nav in OS_NAVIGATOR[os]):
              variants.append((dev, os, nav))
      if not variants:
          raise InvalidOption('Options device_type, os and navigator'
                              ' conflicts with each other')
      device_type, os_id, navigator_id = choice(variants)
  
      assert os_id in OS_PLATFORM
      assert navigator_id in NAVIGATOR_OS
      assert device_type in DEVICE_TYPE_OS
  
      return device_type, os_id, navigator_id
docs: Select one random pair (device_type, os_id, navigator_id) from
      all possible combinations matching the given os and
      navigator filters.
  
      :param os: allowed os(es)
      :type os: string or list/tuple or None
      :param navigator: allowed browser engine(s)
      :type navigator: string or list/tuple or None
      :param device_type: limit possible oses by device type
      :type device_type: list/tuple or None, possible values:
          "desktop", "smartphone", "tablet", "all"