code: def clip(self, lower=float('nan'), upper=float('nan')):
          
          with cython_context():
              return SArray(_proxy=self.__proxy__.clip(lower, upper))
docs: Create a new SArray with each value clipped to be within the given
          bounds.
  
          In this case, "clipped" means that values below the lower bound will be
          set to the lower bound value. Values above the upper bound will be set
          to the upper bound value. This function can operate on SArrays of
          numeric type as well as array type, in which case each individual
          element in each array is clipped. By default ``lower`` and ``upper`` are
          set to ``float('nan')`` which indicates the respective bound should be
          ignored. The method fails if invoked on an SArray of non-numeric type.
  
          Parameters
          ----------
          lower : int, optional
              The lower bound used to clip. Ignored if equal to ``float('nan')``
              (the default).
  
          upper : int, optional
              The upper bound used to clip. Ignored if equal to ``float('nan')``
              (the default).
  
          Returns
          -------
          out : SArray
  
          See Also
          --------
          clip_lower, clip_upper
  
          Examples
          --------
          >>> sa = turicreate.SArray([1,2,3])
          >>> sa.clip(2,2)
          dtype: int
          Rows: 3
          [2, 2, 2]