code: def get_bracket_info(self):
      # set up
      func = self.func
      args = self.args
      brack = self.brack
      ### BEGIN core bracket_info code ###
      ### carefully DOCUMENT any CHANGES in core ##
      if brack is None:
          xa, xb, xc, fa, fb, fc, funcalls = bracket(func, args=args)
      elif len(brack) == 2:
          xa, xb, xc, fa, fb, fc, funcalls = bracket(
              func, xa=brack[0], xb=brack[1], args=args
          )
      elif len(brack) == 3:
          xa, xb, xc = brack
          if xa > xc:  # swap so xa < xc can be assumed
              xc, xa = xa, xc
          if not ((xa < xb) and (xb < xc)):
              raise ValueError("Not a bracketing interval.")
          fa = func(*((xa,) + args))
          fb = func(*((xb,) + args))
          fc = func(*((xc,) + args))
          if not ((fb < fa) and (fb < fc)):
              raise ValueError("Not a bracketing interval.")
          funcalls = 3
      else:
          raise ValueError(
              "Bracketing interval must be " "length 2 or 3 sequence."
          )
      ### END core bracket_info code ###
  
      return xa, xb, xc, fa, fb, fc, funcalls
  
imports: from __future__ import division, print_function, absolute_import
  import warnings
  import sys
  import numpy
  from scipy._lib.six import callable, xrange
  from numpy import atleast_1d, eye, mgrid, argmin, zeros, shape, squeeze, vectorize, asarray, sqrt, Inf, asfarray, isinf
  import numpy
  from .linesearch import line_search_wolfe1, line_search_wolfe2, line_search_wolfe2, LineSearchWarning
  from scipy._lib._util import getargspec_no_self
label_desc: Use image node_id 3 for calling the Brent obj's underlying member method code with example usage: obj.get_bracket_info() and returns: xa,  xb,  xc,  fa,  fb,  fc,  funcalls