code: def reduce_permits(self, reduction):
          
          check_not_negative(reduction, "Reduction cannot be negative!")
          return self._encode_invoke(semaphore_reduce_permits_codec, reduction=reduction)
docs: Shrinks the number of available permits by the indicated reduction. This method differs from acquire in that it
          does not block waiting for permits to become available.
  
          :param reduction: (int),  the number of permits to remove.