code: def _parse_linprog(c, A_ub, b_ub, A_eq, b_eq, bounds, options):
      """
      Parse the provided linear programming problem
  
      ``_parse_linprog`` employs two main steps ``_check_sparse_inputs`` and
      ``_clean_inputs``. ``_check_sparse_inputs`` checks for sparsity in the
      provided constraints (``A_ub`` and ``A_eq) and if these match the provided
      sparsity optional values.
  
      ``_clean inputs`` checks of the provided inputs. If no violations are
      identified the objective vector, upper bound constraints, equality
      constraints, and simple bounds are returned in the expected format.
  
      Parameters
      ----------
      c : 1D array
          Coefficients of the linear objective function to be minimized.
      A_ub : 2D array, optional
          2D array such that ``A_ub @ x`` gives the values of the upper-bound
          inequality constraints at ``x``.
      b_ub : 1D array, optional
          1D array of values representing the upper-bound of each inequality
          constraint (row) in ``A_ub``.
      A_eq : 2D array, optional
          2D array such that ``A_eq @ x`` gives the values of the equality
          constraints at ``x``.
      b_eq : 1D array, optional
          1D array of values representing the RHS of each equality constraint
          (row) in ``A_eq``.
      bounds : sequence
          ``(min, max)`` pairs for each element in ``x``, defining
          the bounds on that parameter. Use None for one of ``min`` or
          ``max`` when there is no bound in that direction. By default
          bounds are ``(0, None)`` (non-negative). If a sequence containing a
          single tuple is provided, then ``min`` and ``max`` will be applied to
          all variables in the problem.
      options : dict
          A dictionary of solver options. All methods accept the following
          generic options:
  
              maxiter : int
                  Maximum number of iterations to perform.
              disp : bool
                  Set to True to print convergence messages.
  
          For method-specific options, see :func:`show_options('linprog')`.
  
      Returns
      -------
      c : 1D array
          Coefficients of the linear objective function to be minimized.
      A_ub : 2D array, optional
          2D array such that ``A_ub @ x`` gives the values of the upper-bound
          inequality constraints at ``x``.
      b_ub : 1D array, optional
          1D array of values representing the upper-bound of each inequality
          constraint (row) in ``A_ub``.
      A_eq : 2D array, optional
          2D array such that ``A_eq @ x`` gives the values of the equality
          constraints at ``x``.
      b_eq : 1D array, optional
          1D array of values representing the RHS of each equality constraint
          (row) in ``A_eq``.
      bounds : sequence, optional
          ``(min, max)`` pairs for each element in ``x``, defining
          the bounds on that parameter. Use None for one of ``min`` or
          ``max`` when there is no bound in that direction. By default
          bounds are ``(0, None)`` (non-negative).
          If a sequence containing a single tuple is provided, then ``min`` and
          ``max`` will be applied to all variables in the problem.
      options : dict, optional
          A dictionary of solver options. All methods accept the following
          generic options:
  
              maxiter : int
                  Maximum number of iterations to perform.
              disp : bool
                  Set to True to print convergence messages.
  
          For method-specific options, see :func:`show_options('linprog')`.
  
      """
      if options is None:
          options = {}
  
      solver_options = {k: v for k, v in options.items()}
      solver_options, A_ub, A_eq = _check_sparse_inputs(
          solver_options, A_ub, A_eq
      )
      # Convert lists to numpy arrays, etc...
      c, A_ub, b_ub, A_eq, b_eq, bounds = _clean_inputs(
          c, A_ub, b_ub, A_eq, b_eq, bounds
      )
      return c, A_ub, b_ub, A_eq, b_eq, bounds, solver_options
  
file_path: catboost/contrib/python/scipy/py2/scipy/optimize/_linprog_util.py
imports: import numpy
  import scipy.sparse
  from warnings import warn
  from .optimize import OptimizeWarning
  from scipy.optimize._remove_redundancy import _remove_redundancy, _remove_redundancy_sparse, _remove_redundancy_dense
label_desc: Use image node_id 4 for calling a global function with example usage: _parse_linprog(c, A_ub, b_ub, A_eq, b_eq, bounds, options) and returns: c,  A_ub,  b_ub,  A_eq,  b_eq,  bounds,  solver_options