class_docstr: Wrap a function to aid in variable sharing in Eager mode.
  
  Templates are functions that create variables the first time they are called
  and reuse them thereafter. See `make_template` for full documentation.
  
  Note: By default, the full variable scope is captured at the time of first
  call. If `create_scope_now` is passed as True to the constructor, the full
  scope will be captured there, but no variables will be created until the first
  call.
code: def __call__(self, *args, **kwargs):
      # In both branches below, the template store is installed as default after
      # the variable scope is opened in order to ensure that templates nested at
      # the same level correctly uniquify lower variable scope names.
      if self._variable_scope:
          # Create a cache for the variable scope context manager the first time
          # around so that we don't have to keep recreating it.
          if not self._variable_scope_context_manager:
              self._variable_scope_context_manager = (
                  variable_scope.variable_scope(
                      self._variable_scope,
                      reuse=variable_scope.AUTO_REUSE,
                  )
              )
          with self._variable_scope_context_manager:
              with self._template_store.as_default():
                  return self._call_func(args, kwargs)
      else:
          # The scope was not created at construction time, so create it here.
          # Subsequent calls should reuse variables.
          with variable_scope.variable_scope(
              self._unique_name,
              self._name,
              custom_getter=self._custom_getter,
          ) as vs:
              self._variable_scope = vs
              # Because the scope was not created at construction time, the template
              # store's variable scope name is unset; set it here.
              self._template_store.set_variable_scope_name(vs.name)
              with self._template_store.as_default():
                  return self._call_func(args, kwargs)
  
imports: import functools
  import traceback
  from tensorflow.python.checkpoint import checkpoint
  from tensorflow.python.eager import context
  from tensorflow.python.eager import def_function
  from tensorflow.python.framework import ops
  from tensorflow.python.ops import variable_scope
  from tensorflow.python.platform import tf_logging
  from tensorflow.python.trackable import base
  from tensorflow.python.util import object_identity
  from tensorflow.python.util import tf_contextlib
  from tensorflow.python.util.deprecation import deprecated
  from tensorflow.python.util.tf_export import tf_export
label_desc: Use image node_id 3 for calling the EagerTemplate obj's underlying member method code with example usage: obj.__call__() and returns: self, self