def SetBounds(self, bounddict):
        """
        Set bounds on one or more parameters.

        :param vardict: a dictionary where the key is the parameter
                     name and the value is a list of size 2 containing
                     the lower and upper bounds. You can provide one-sided
                     bounds using np.inf or -np.inf.
                     Valid parameter names can be found by invoking
                     DisplayVariables(fitonly=False)

        :return: None
        """
        """
        Similar to FitVariable, but it sets bounds on the variable. This can technically
          be done for any variable, but is only useful to set bounds for those variables
          being fit (and detector resolution)
        """
        for par in bounddict.keys():
            if bounddict[par][1] > 100 * bounddict[par][0] and bounddict[par][0] != 0 and bounddict[par][1] < np.inf:
                warnings.warn("To set only a lower limit, you should use np.inf for the upper limit!")
                bounddict[par][1] = np.inf
            try:
                idx = self.parnames.index(par)
                if par in ['wavestart', 'waveend'] and isinstance(bounddict[par], u.quantity.Quantity):
                    # Convert to nanometers
                    bounddict[par][0] = bounddict[par][0].to(u.nm).value
                    bounddict[par][1] = bounddict[par][1].to(u.nm).value
                self.bounds[idx] = bounddict[par]
                if par == "resolution":
                    self.resolution_bounds = bounddict[par]
            except ValueError:
                print("Error! Bad parameter name given. Currently available are: ")
                self.DisplayVariables()
                raise ValueError


            ### -----------------------------------------------
dataset/ETHPy150Open kgullikson88/Telluric-Fitter/src/TelluricFitter.py/TelluricFitter.SetBounds/original