code: def value_of(
              self,
              value: Union[sympy.Basic, float, str]
      ) -> Union[sympy.Basic, float]:
          
          if isinstance(value, str):
              return self.param_dict.get(value, sympy.Symbol(value))
          if isinstance(value, sympy.Basic):
              if sys.version_info.major < 3:
                  # coverage: ignore
                  # HACK: workaround https://github.com/sympy/sympy/issues/16087
                  d = {k.encode(): v for k, v in self.param_dict.items()}
                  v = value.subs(d)
              else:
                  v = value.subs(self.param_dict)
              return v if v.free_symbols else float(v)
          return value
docs: Attempt to resolve a Symbol or name or float to its assigned value.
  
          If unable to resolve a sympy.Symbol, returns it unchanged.
          If unable to resolve a name, returns a sympy.Symbol with that name.
  
          Args:
              value: The sympy.Symbol or name or float to try to resolve into just
                  a float.
  
          Returns:
              The value of the parameter as resolved by this resolver.