code: def requires_gurobipy(_has_gurobi):
      '''
      Decorator function which takes a boolean _has_gurobi as an argument.
      Use decorate any functions which require gurobi.
      Raises an import error at runtime if gurobi is not present.
      Note that all runtime errors should be avoided in the working code,
      using brute force options as preference.
      '''
      def _outer_wrapper(wrapped_function):
          def _wrapper(*args, **kwargs):
              if _has_gurobi:
                  result = wrapped_function(*args, **kwargs)
              else:
                  warn("Gurobi not available", ImportWarning)
                  result = None
              return result
          return _wrapper
      return _outer_wrappef requires_gurobipy(_has_gurobi):
      '''
      Decorator function which takes a boolean _has_gurobi as an argument.
      Use decorate any functions which require gurobi.
      Raises an import error at runtime if gurobi is not present.
      Note that all runtime errors should be avoided in the working code,
      using brute force options as preference.
      '''
      def _outer_wrapper(wrapped_function):
          def _wrapper(*args, **kwargs):
              if _has_gurobi:
                  result = wrapped_function(*args, **kwargs)
              else:
                  warn("Gurobi not available", ImportWarning)
                  result = None
              return result
          return _wrapper
      return _outer_wrapper
docs: Decorator function which takes a boolean _has_gurobi as an argument.
      Use decorate any functions which require gurobi.
      Raises an import error at runtime if gurobi is not present.
      Note that all runtime errors should be avoided in the working code,
      using brute force options as preference.