class_docstr: This class is a Torchscript-friendly version of
  pytext.models.embeddings.EmbeddingList. The main differences are that it
  requires input arguments to be passed in as a list of Tensors, since
  Torchscript does not allow variable arguments, and that it only supports
  concat mode, since Torchscript does not support return value variance.
code: def __init__(self, embeddings: Iterable[EmbeddingBase]):
      EmbeddingBase.__init__(self, 0)
      embeddings = list(filter(None, embeddings))
      self.num_emb_modules = sum(
          emb.num_emb_modules for emb in embeddings
      )
      embeddings_list: List[EmbeddingBase] = []
      input_start_indices: List[int] = []
      start = 0
      embedding_dim = 0
      for emb in embeddings:
          if emb.embedding_dim > 0:
              embeddings_list.append(emb)
              input_start_indices.append(start)
              embedding_dim += emb.embedding_dim
          start += emb.num_emb_modules
      self.embeddings_list = torch.nn.ModuleList(
          map(ScriptableEmbeddingList._adapt_embedding, embeddings_list)
      )
      self.input_start_indices: Tuple[int] = tuple(input_start_indices)
      assert (
          len(self.embeddings_list) > 0
      ), "must have at least 1 sub embedding"
      self.embedding_dim = embedding_dim
  
file_path: pytext/pytext/models/embeddings/scriptable_embedding_list.py
imports: import inspect
  from inspect import signature
  from typing import Iterable, List, Tuple
  import torch
  from pytext.models.embeddings import EmbeddingBase
  from torch.utils.tensorboard import SummaryWriter
label_desc: Use image node_id 2 to create a new ScriptableEmbeddingList object from inherited base classes: EmbeddingBase with example: obj = ScriptableEmbeddingList(embeddings)