code: def assemble(self, module, *modules, **kwargs):
          # type: (AbstractModule, *AbstractModule, **Any) -> SeqRecord
          
  
          mgr = AssemblyManager(
              vector=self,
              modules=[module] + list(modules),
              name=kwargs.get("name", "assembly"),
              id_=kwargs.get("id", "assembly"),
          )
          return mgr.assemble()
docs: Assemble the provided modules into the vector.
  
          Arguments:
              module (`~moclo.base.modules.AbstractModule`): a module to insert
                  in the vector.
              modules (`~moclo.base.modules.AbstractModule`, optional): additional
                  modules to insert in the vector. The order of the parameters
                  is not important, since modules will be sorted by their start
                  overhang in the function.
  
          Returns:
              `~Bio.SeqRecord.SeqRecord`: the assembled sequence with sequence
              annotations inherited from the vector and the modules.
  
          Raises:
              `~moclo.errors.DuplicateModules`: when two different modules share
                  the same start overhang, leading in possibly non-deterministic
                  constructs.
              `~moclo.errors.MissingModule`: when a module has an end overhang
                  that is not shared by any other module, leading to a partial
                  construct only
              `~moclo.errors.InvalidSequence`: when one of the modules does not
                  match the required module structure (missing site, wrong
                  overhang, etc.).
              `~moclo.errors.UnusedModules`: when some modules were not used
                  during the assembly (mostly caused by duplicate parts).