parameters: (self, places, rounding)
return_statement: return ans
docstring: Round a nonzero, nonspecial Decimal to a fixed number of
          significant figures, using the given rounding mode.
  
          Infinities, NaNs and zeros are returned unaltered.
  
          This operation is quiet: it raises no flags, and uses no
          information from the context.
docstring_summary: Round a nonzero, nonspecial Decimal to a fixed number of
          significant figures, using the given rounding mode.
docstring_tokens: Round a nonzero nonspecial Decimal to a fixed number of significant figures using the given rounding mode .
function: def _round(self, places, rounding):
          """Round a nonzero, nonspecial Decimal to a fixed number of
          significant figures, using the given rounding mode.
  
          Infinities, NaNs and zeros are returned unaltered.
  
          This operation is quiet: it raises no flags, and uses no
          information from the context.
  
          """
          if places <= 0:
              raise ValueError("argument should be at least 1 in _round")
          if self._is_special or not self:
              return Decimal(self)
          ans = self._rescale(self.adjusted()+1-places, rounding)
          # it can happen that the rescale alters the adjusted exponent;
          # for example when rounding 99.97 to 3 significant figures.
          # When this happens we end up with an extra 0 at the end of
          # the number; a second rescale fixes this.
          if ans.adjusted() != self.adjusted():
              ans = ans._rescale(ans.adjusted()+1-places, rounding)
          return ans
function_tokens: def _round ( self , places , rounding ) : if places <= 0 : raise ValueError ( "argument should be at least 1 in _round" ) if self . _is_special or not self : return Decimal ( self ) ans = self . _rescale ( self . adjusted ( ) + 1 - places , rounding ) # it can happen that the rescale alters the adjusted exponent; # for example when rounding 99.97 to 3 significant figures. # When this happens we end up with an extra 0 at the end of # the number; a second rescale fixes this. if ans . adjusted ( ) != self . adjusted ( ) : ans = ans . _rescale ( ans . adjusted ( ) + 1 - places , rounding ) return ans