Collections — urllib3 1.16 documentation

# Collections

These datastructures are used to implement the behaviour of various urllib3 components in a decoupled and application-agnostic design.

class `urllib3._collections.` `RecentlyUsedContainer`(maxsize=10, dispose_func=None)

  Provides a thread-safe dict-like container which maintains up to `maxsize` keys while throwing away the least-recently-used keys beyond `maxsize`.

  Parameters: | maxsize – Maximum number of recent elements to retain. dispose_func – Every time an item is evicted from the container, `dispose_func(value)` is called. Callback which will get called

  `ContainerCls`

    alias of `OrderedDict`

class `urllib3._collections.` `HTTPHeaderDict`(headers=None, **kwargs)

  Parameters: | headers – An iterable of field-value pairs. Must not contain multiple field names when compared case-insensitively. 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'

  `add`(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'

  `extend`(*args, **kwargs)

    Generic import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__

  classmethod `from_httplib`(message)

    Read headers from a Python 2 httplib message object.

  `getallmatchingheaders`(key)

    Returns a list of all the values for the named field. Returns an empty list if the key doesn’t exist.

  `getheaders`(key)

    Returns a list of all the values for the named field. Returns an empty list if the key doesn’t exist.

  `getlist`(key)

    Returns a list of all the values for the named field. Returns an empty list if the key doesn’t exist.

  `iget`(key)

    Returns a list of all the values for the named field. Returns an empty list if the key doesn’t exist.

  `iteritems`()

    Iterate over all header lines, including duplicate ones.

  `iterkeys`() → an iterator over the keys of D
  `itermerged`()

    Iterate over all headers, merging duplicate ones together.

  `itervalues`() → an iterator over the values of D
  `pop`(k[, d]) → v, remove specified key and return the corresponding value.

    If key is not found, d is returned if given, otherwise KeyError is raised.