class_docstr: StyleTransformation class that can dynamically returns any
  `StyleTransformation`.
  
  :param get_style_transformation: Callable that returns a
      :class:`.StyleTransformation` instance.
class_docstr_tok: ["StyleTransformation","class","that","can","dynamically","returns","any","`","StyleTransformation","`",".",":","param","get_style_transformation",":","Callable","that","returns","a",":","class",":","`",".StyleTransformation","`","instance","."]
code: def invalidation_hash(self) -> Hashable:
      style_transformation = (
          self.get_style_transformation() or DummyStyleTransformation()
      )
      return style_transformation.invalidation_hash()
  
imports: from __future__ import annotations
  from abc import ABCMeta, abstractmethod
  from colorsys import hls_to_rgb, rgb_to_hls
  from typing import Callable, Hashable, Sequence
  from prompt_toolkit.cache import memoized
  from prompt_toolkit.filters import FilterOrBool, to_filter
  from prompt_toolkit.utils import AnyFloat, to_float, to_str
  from .base import ANSI_COLOR_NAMES, Attrs
  from .style import parse_color
label_desc: Use image node_id 3 for calling the DynamicStyleTransformation obj's underlying member method code with example usage: obj.invalidation_hash() and returns: style_transformation