class_docstr: A cache that looks up labels of biomedical entities based on their CURIEs.
class_docstr_tok: ["A","cache","that","looks","up","labels","of","biomedical","entities","based","on","their","CURIEs","."]
docstr: Get text for the given CURIEs.
  
  :param identifiers:
      The compact URIs for each entity (e.g., ``['doid:1234', ...]``)
  
  :return:
      the label for each entity, looked up via :func:`pyobo.get_name`.
      Might be none if no label is available.
docstr_tok: ["Get","text","for","the","given","CURIEs",".",":","param","identifiers",":","The","compact","URIs","for","each","entity","(","e.g.",",","``","[","'doid:1234","'",",","...","]","``",")",":","return",":","the","label","for","each","entity",",","looked","up","via",":","func",":","`","pyobo.get_name","`",".","Might","be","none","if","no","label","is","available","."]
code: def get_texts(
      self, identifiers: Sequence[str]
  ) -> Sequence[Optional[str]]:
      """Get text for the given CURIEs.
  
      :param identifiers:
          The compact URIs for each entity (e.g., ``['doid:1234', ...]``)
  
      :return:
          the label for each entity, looked up via :func:`pyobo.get_name`.
          Might be none if no label is available.
      """
      # This import doesn't need a wrapper since it's a transitive
      # requirement of PyOBO
      import bioregistry
  
      res: List[Optional[str]] = []
      for curie in identifiers:
          try:
              prefix, identifier = curie.split(":", maxsplit=1)
          except ValueError:
              res.append(None)
              continue
  
          norm_prefix = bioregistry.normalize_prefix(prefix)
          if norm_prefix is None:
              if prefix not in PYOBO_PREFIXES_WARNED:
                  logger.warning(
                      "Prefix not registered in the Bioregistry: %s",
                      prefix,
                  )
                  PYOBO_PREFIXES_WARNED.add(prefix)
              res.append(None)
              continue
  
          try:
              name = self._get_name(norm_prefix, identifier)
          except subprocess.CalledProcessError:
              if norm_prefix not in PYOBO_PREFIXES_WARNED:
                  logger.warning(
                      "could not get names from %s", norm_prefix
                  )
                  PYOBO_PREFIXES_WARNED.add(norm_prefix)
              res.append(None)
              continue
          else:
              res.append(name)
      return res
  
imports: from __future__ import annotations
  import functools
  import logging
  import pathlib
  import re
  import subprocess
  from abc import ABC, abstractmethod
  from itertools import chain
  from textwrap import dedent
  from typing import Any, Callable, Collection, Dict, Iterable, List, Literal, Mapping, Optional, Sequence, Union, cast
  import more_itertools
  import requests
  import torch
  from tqdm.auto import tqdm
  from ..constants import PYKEEN_MODULE
  from ..typing import OneOrSequence
  from ..utils import nested_get, rate_limited, upgrade_to_sequence
  from ..version import get_version
label_desc: Use image node_id 2 for calling the PyOBOCache obj's underlying member method code with example usage: obj.get_texts(identifiers) and returns: res