code: def _obtain_version(
      self, dist: "Distribution", package_dir: Mapping[str, str]
  ):
      # Since plugins can set version, let's silently skip if it cannot be obtained
      if "version" in self.dynamic and "version" in self.dynamic_cfg:
          return _expand.version(
              self._obtain(dist, "version", package_dir)
          )
      return None
  
imports: import logging
  import os
  from contextlib import contextmanager
  from functools import partial
  from typing import TYPE_CHECKING, Callable, Dict, Mapping, Optional, Set, Union
  from ..errors import FileError, InvalidConfigError
  from ..warnings import SetuptoolsWarning
  from .None import expand
  from ._apply_pyprojecttoml import _PREVIOUSLY_DEFINED, _MissingDynamic
  from ._apply_pyprojecttoml import apply
label_desc: Use image node_id 13 for calling the _ConfigExpander obj's underlying member method code with example usage: obj._obtain_version(dist, package_dir) and returns: None, _expand