class_docstr: This ``Field`` represents a list of string tokens.  Before constructing this object, you need
  to tokenize raw strings using a :class:`~allennlp.data.tokenizers.tokenizer.Tokenizer`.
  
  Because string tokens can be represented as indexed arrays in a number of ways, we also take a
  dictionary of :class:`~allennlp.data.token_indexers.token_indexer.TokenIndexer`
  objects that will be used to convert the tokens into indices.
  Each ``TokenIndexer`` could represent each token as a single ID, or a list of character IDs, or
  something else.
  
  This field will get converted into a dictionary of arrays, one for each ``TokenIndexer``.  A
  ``SingleIdTokenIndexer`` produces an array of shape (num_tokens,), while a
  ``TokenCharactersIndexer`` produces an array of shape (num_tokens, num_characters).
class_docstr_tok: ["This","``","Field","``","represents","a","list","of","string","tokens",".","Before","constructing","this","object",",","you","need","to","tokenize","raw","strings","using","a",":","class",":","`","~allennlp.data.tokenizers.tokenizer.Tokenizer","`",".","Because","string","tokens","can","be","represented","as","indexed","arrays","in","a","number","of","ways",",","we","also","take","a","dictionary","of",":","class",":","`","~allennlp.data.token_indexers.token_indexer.TokenIndexer","`","objects","that","will","be","used","to","convert","the","tokens","into","indices",".","Each","``","TokenIndexer","``","could","represent","each","token","as","a","single","ID",",","or","a","list","of","character","IDs",",","or","something","else",".","This","field","will","get","converted","into","a","dictionary","of","arrays",",","one","for","each","``","TokenIndexer","``",".","A","``","SingleIdTokenIndexer","``","produces","an","array","of","shape","(","num_tokens",",",")",",","while","a","``","TokenCharactersIndexer","``","produces","an","array","of","shape","(","num_tokens",",","num_characters",")","."]
docstr: The ``TextField`` has a list of ``Tokens``, and each ``Token`` gets converted into arrays by
  (potentially) several ``TokenIndexers``.  This method gets the max length (over tokens)
  associated with each of these arrays.
docstr_tok: ["The","``","TextField","``","has","a","list","of","``","Tokens","``",",","and","each","``","Token","``","gets","converted","into","arrays","by","(","potentially",")","several","``","TokenIndexers","``",".","This","method","gets","the","max","length","(","over","tokens",")","associated","with","each","of","these","arrays","."]
code: def get_padding_lengths(self):
      """
      The ``TextField`` has a list of ``Tokens``, and each ``Token`` gets converted into arrays by
      (potentially) several ``TokenIndexers``.  This method gets the max length (over tokens)
      associated with each of these arrays.
      """
      # Our basic outline: we will iterate over `TokenIndexers`, and aggregate lengths over tokens
      # for each indexer separately.  Then we will combine the results for each indexer into a single
      # dictionary, resolving any (unlikely) key conflicts by taking a max.
      lengths = []
      if self._indexed_tokens is None:
          raise ConfigurationError(
              "You must call .index(vocabulary) on a "
              "field before determining padding lengths."
          )
  
      # Each indexer can return a different sequence length, and for indexers that return
      # multiple arrays each can have a different length.  We'll keep track of them here.
      for indexer_name, indexer in list(self._token_indexers.items()):
          indexer_lengths = {}
  
          for indexed_tokens_key in self._indexer_name_to_indexed_token[
              indexer_name
          ]:
              # This is a list of dicts, one for each token in the field.
              token_lengths = [
                  indexer.get_padding_lengths(token)
                  for token in self._indexed_tokens[indexed_tokens_key]
              ]
          if not token_lengths:
              # This is a padding edge case and occurs when we want to pad a ListField of
              # TextFields. In order to pad the list field, we need to be able to have an
              # _empty_ TextField, but if this is the case, token_lengths will be an empty
              # list, so we add the default empty padding dictionary to the list instead.
              token_lengths = [{}]
          # Iterate over the keys and find the maximum token length.
          # It's fine to iterate over the keys of the first token since all tokens have the same keys.
          for key in token_lengths[0]:
              indexer_lengths[key] = max(
                  x[key] if key in x else 0 for x in token_lengths
              )
          lengths.append(indexer_lengths)
  
      indexer_sequence_lengths = dict(
          (key, len(val))
          for key, val in list(self._indexed_tokens.items())
      )
      # Get the padding lengths for sequence lengths.
      if len(set(indexer_sequence_lengths.values())) == 1:
          # This is the default case where all indexers return the same length.
          # Keep the existing 'num_tokens' key for backward compatibility with existing config files.
          padding_lengths = {
              "num_tokens": list(indexer_sequence_lengths.values())[0]
          }
      else:
          # The indexers return different lengths.
          padding_lengths = indexer_sequence_lengths
  
      # Get all keys which have been used for padding for each indexer and take the max if there are duplicates.
      padding_keys = set(
          [key for d in lengths for key in list(d.keys())]
      )
      for padding_key in padding_keys:
          padding_lengths[padding_key] = max(
              x[padding_key] if padding_key in x else 0 for x in lengths
          )
      return padding_lengths
  
imports: from __future__ import absolute_import
  import textwrap
  from spacy.tokens import Token
  import torch
  from allennlp.common.checks import ConfigurationError
  from allennlp.data.fields.sequence_field import SequenceField
  from allennlp.data.tokenizers.token import Token
  from allennlp.data.token_indexers.token_indexer import TokenIndexer
  from allennlp.data.vocabulary import Vocabulary
  from allennlp.nn import util
label_desc: Use image node_id 4 for calling the TextField obj's underlying member method code with example usage: obj.get_padding_lengths() and returns: padding_lengths