code: def _validate_numbers(self, proposal):
      for tag_value in proposal["value"]:
          if self.min is not None and tag_value < self.min:
              raise TraitError(
                  "Tag value {} should be >= {}".format(
                      tag_value, self.min
                  )
              )
          if self.max is not None and tag_value > self.max:
              raise TraitError(
                  "Tag value {} should be <= {}".format(
                      tag_value, self.max
                  )
              )
  
      return proposal["value"]
  
imports: from traitlets import CaselessStrEnum, CInt, CFloat, Bool, Unicode, List, TraitError, validate
  from .widget_description import DescriptionWidget
  from .valuewidget import ValueWidget
  from .widget_core import CoreWidget
  from .widget import register
  from .trait_types import Color, NumberFormat
label_desc: Use image node_id 1 for calling the NumbersInputBase obj's underlying member method code with example usage: obj._validate_numbers(proposal) and returns: proposal