class_docstr: :param headers:
      An iterable of field-value pairs. Must not contain multiple field names
      when compared case-insensitively.
  
  :param kwargs:
      Additional field-value pairs to pass in to ``dict.update``.
  
  A ``dict`` like container for storing HTTP Headers.
  
  Field names are stored and compared case-insensitively in compliance with
  RFC 7230. Iteration provides the first case-sensitive key seen for each
  case-insensitive pair.
  
  Using ``__setitem__`` syntax overwrites fields that compare equal
  case-insensitively in order to maintain ``dict``'s api. For fields that
  compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add``
  in a loop.
  
  If multiple fields that are equal case-insensitively are passed to the
  constructor or ``.update``, the behavior is undefined and some will be
  lost.
  
  >>> headers = HTTPHeaderDict()
  >>> headers.add('Set-Cookie', 'foo=bar')
  >>> headers.add('set-cookie', 'baz=quxx')
  >>> headers['content-length'] = '7'
  >>> headers['SET-cookie']
  'foo=bar, baz=quxx'
  >>> headers['Content-Length']
  '7'
docstr: Adds a (name, value) pair, doesn't overwrite the value if it already
  exists.
  
  >>> headers = HTTPHeaderDict(foo='bar')
  >>> headers.add('Foo', 'baz')
  >>> headers['foo']
  'bar, baz'
docstr_tok: ["Adds","a","(","name",",","value",")","pair",",","does","n't","overwrite","the","value","if","it","already","exists",".",">",">",">","headers","=","HTTPHeaderDict","(","foo='bar","'",")",">",">",">","headers.add","(","'Foo","'",",","'baz","'",")",">",">",">","headers","[","'foo","'","]","'bar",",","baz","'"]
code: def add(self, key, val):
      """Adds a (name, value) pair, doesn't overwrite the value if it already
      exists.
  
      >>> headers = HTTPHeaderDict(foo='bar')
      >>> headers.add('Foo', 'baz')
      >>> headers['foo']
      'bar, baz'
      """
      key_lower = key.lower()
      new_vals = key, val
      # Keep the common case aka no item present as fast as possible
      vals = self._container.setdefault(key_lower, new_vals)
      if new_vals is not vals:
          # new_vals was not inserted, as there was a previous one
          if isinstance(vals, list):
              # If already several items got inserted, we have a list
              vals.append(val)
          else:
              # vals should be a tuple then, i.e. only one item so far
              # Need to convert the tuple to list for further extension
              self._container[key_lower] = [vals[0], vals[1], val]
  
imports: import sys
  import requests
label_desc: Use image node_id 12 for calling the HTTPHeaderDict obj's underlying member method code with example usage: obj.add(key, val) without return types