class_docstr: Abstract base class for reparametrizer configuration strategies.
  
  Derived classes must implement the :meth:`configure` method.
  
  :ivar dict config: A dictionary configuration. This will be populated the
      first time the model is run. Thereafter it can be used as an argument
      to ``poutine.reparam(config=___)``.
class_docstr_tok: ["Abstract","base","class","for","reparametrizer","configuration","strategies",".","Derived","classes","must","implement","the",":","meth",":","`","configure","`","method",".",":","ivar","dict","config",":","A","dictionary","configuration",".","This","will","be","populated","the","first","time","the","model","is","run",".","Thereafter","it","can","be","used","as","an","argument","to","``","poutine.reparam","(","config=___",")","``","."]
docstr: Strategies can be used as decorators to reparametrize a model.
  
  :param msg_or_fn: Public use: a model to be decorated. (Internal use: a
      site to be configured for reparametrization).
docstr_tok: ["Strategies","can","be","used","as","decorators","to","reparametrize","a","model",".",":","param","msg_or_fn",":","Public","use",":","a","model","to","be","decorated",".","(","Internal","use",":","a","site","to","be","configured","for","reparametrization",")","."]
code: def __call__(self, msg_or_fn: Union[dict, Callable]):
      """
      Strategies can be used as decorators to reparametrize a model.
  
      :param msg_or_fn: Public use: a model to be decorated. (Internal use: a
          site to be configured for reparametrization).
      """
      if isinstance(
          msg_or_fn, dict
      ):  # Internal use during configuration.
          msg = msg_or_fn
          name = msg["name"]
          if name in self.config:
              return self.config[name]
          result = self.configure(msg)
          self.config[name] = result
          return result
      else:  # Public use as a decorator or handler.
          fn = msg_or_fn
          return poutine.reparam(fn, self)
  
imports: from abc import ABC, abstractmethod
  from typing import Callable, Dict, Optional, Union
  import torch
  from torch.distributions import constraints
  import pyro.distributions
  import pyro.poutine
  from .loc_scale import LocScaleReparam
  from .projected_normal import ProjectedNormalReparam
  from .reparam import Reparam
  from .softmax import GumbelSoftmaxReparam
  from .stable import LatentStableReparam, StableReparam, SymmetricStableReparam
  from .transform import TransformReparam
label_desc: Use image node_id 3 for calling the Strategy obj's underlying member method code with example usage: obj.__call__(msg_or_fn) and returns: result, poutine, self