code: def normalize_names(self):
          
          for widget in self.get_widgets():
              if isinstance(widget, Gtk.Buildable):
                  widget_name = Gtk.Buildable.get_name(widget)
                  prefixes_name_l = widget_name.split(":")
                  prefixes = prefixes_name_l[:-1]
                  widget_api_name = prefixes_name_l[-1]
                  widget_api_name = "_".join(re.findall(tokenize.Name, widget_api_name))
                  widget_name = Gtk.Buildable.set_name(widget, widget_api_name)
                  if hasattr(self, widget_api_name):
                      raise AttributeError(
                          "instance %s already has an attribute %s" % (self, widget_api_name)
                      )
                  else:
                      setattr(self, widget_api_name, widget)
                      if prefixes:
                          # TODO is is a guess
                          Gtk.Buildable.set_data(widget, "prefixes", prefixes)
docs: It is internally used to normalize the name of the widgets.
          It means a widget named foo:vbox-dialog in glade
          is refered self.vbox_dialog in the code.
  
          It also sets a data "prefixes" with the list of
          prefixes a widget has for each widget.