code: def top_priority_effect(effects):
      
      if len(effects) == 0:
          raise ValueError("List of effects cannot be empty")
  
      effects = map(
          select_between_exonic_splice_site_and_alternate_effect,
          effects)
  
      effects_grouped_by_gene = apply_groupby(
          effects, fn=gene_id_of_associated_transcript, skip_none=False)
  
      if None in effects_grouped_by_gene:
          effects_without_genes = effects_grouped_by_gene.pop(None)
      else:
          effects_without_genes = []
  
      # if we had any effects associated with genes then choose one of those
      if len(effects_grouped_by_gene) > 0:
          effects_with_genes = [
              top_priority_effect_for_single_gene(gene_effects)
              for gene_effects in effects_grouped_by_gene.values()
          ]
          return max(effects_with_genes, key=multi_gene_effect_sort_key)
      else:
          # if all effects were without genes then choose the best among those
          assert len(effects_without_genes) > 0
          return max(effects_without_genes, key=multi_gene_effect_sort_key)
docs: Given a collection of variant transcript effects,
      return the top priority object. ExonicSpliceSite variants require special
      treatment since they actually represent two effects -- the splicing modification
      and whatever else would happen to the exonic sequence if nothing else gets
      changed. In cases where multiple transcripts give rise to multiple
      effects, use a variety of filtering and sorting heuristics to pick
      the canonical transcript.