code: def create_output_modules(self):
          
          py3_config = self.config["py3_config"]
          i3modules = self.i3status_thread.i3modules
          output_modules = self.output_modules
          # position in the bar of the modules
          positions = {}
          for index, name in enumerate(py3_config["order"]):
              if name not in positions:
                  positions[name] = []
              positions[name].append(index)
  
          # py3status modules
          for name in self.modules:
              if name not in output_modules:
                  output_modules[name] = {}
                  output_modules[name]["position"] = positions.get(name, [])
                  output_modules[name]["module"] = self.modules[name]
                  output_modules[name]["type"] = "py3status"
                  output_modules[name]["color"] = self.mappings_color.get(name)
          # i3status modules
          for name in i3modules:
              if name not in output_modules:
                  output_modules[name] = {}
                  output_modules[name]["position"] = positions.get(name, [])
                  output_modules[name]["module"] = i3modules[name]
                  output_modules[name]["type"] = "i3status"
                  output_modules[name]["color"] = self.mappings_color.get(name)
  
          self.output_modules = output_modules
docs: Setup our output modules to allow easy updating of py3modules and
          i3status modules allows the same module to be used multiple times.