code: def fill(self, value, weight=1):
          
          self._coerce_dtype(type(weight))
          if self._binning.is_adaptive():
              map = self._binning.force_bin_existence(value)
              self._reshape_data(self._binning.bin_count, map)
  
          ixbin = self.find_bin(value)
          if ixbin is None:
              self.overflow = np.nan
              self.underflow = np.nan
          elif ixbin == -1 and self.keep_missed:
              self.underflow += weight
          elif ixbin == self.bin_count and self.keep_missed:
              self.overflow += weight
          else:
              self._frequencies[ixbin] += weight
              self._errors2[ixbin] += weight ** 2
              if self._stats:
                  self._stats["sum"] += weight * value
                  self._stats["sum2"] += weight * value ** 2
          return ixbin
docs: Update histogram with a new value.
  
          Parameters
          ----------
          value: float
              Value to be added.
          weight: float, optional
              Weight assigned to the value.
  
          Returns
          -------
          int
              index of bin which was incremented (-1=underflow, N=overflow, None=not found)
  
          Note: If a gap in unconsecutive bins is matched, underflow & overflow are not valid anymore.
          Note: Name was selected because of the eponymous method in ROOT