docs: def conversations(self, getsrcdst=None, **kargs):
          """Graphes a conversations between sources and destinations and display it
          (using graphviz and imagemagick)
          getsrcdst: a function that takes an element of the list and
                     returns the source, the destination and optionally
                     a label. By default, returns the IP source and
                     destination from IP and ARP layers
          type: output type (svg, ps, gif, jpg, etc.), passed to dot's "-T" option  # noqa: E501
          target: filename or redirect. Defaults pipe to Imagemagick's display program  # noqa: E501
          prog: which graphviz program to use"""
          if getsrcdst is None:
              def getsrcdst(pkt):
                  """Extract src and dst addresses"""
                  if 'IP' in pkt:
                      return (pkt['IP'].src, pkt['IP'].dst)
                  if 'IPv6' in pkt:
                      return (pkt['IPv6'].src, pkt['IPv6'].dst)
                  if 'ARP' in pkt:
                      return (pkt['ARP'].psrc, pkt['ARP'].pdst)
                  raise TypeError()
          conv = {}
          for p in self.res:
              p = self._elt2pkt(p)
              try:
                  c = getsrcdst(p)
              except Exception:
                  # No warning here: it's OK that getsrcdst() raises an
                  # exception, since it might be, for example, a
                  # function that expects a specific layer in each
                  # packet. The try/except approach is faster and
                  # considered more Pythonic than adding tests.
                  continue
              if len(c) == 3:
                  conv.setdefault(c[:2], set()).add(c[2])
              else:
                  conv[c] = conv.get(c, 0) + 1
          gr = 'digraph "conv" {\n'
          for (s, d), l in six.iteritems(conv):
              gr += '\t "%s" -> "%s" [label="%s"]\n' % (
                  s, d, ', '.join(str(x) for x in l) if isinstance(l, set) else l
              )
          gr += "}\n"
          return do_graph(gr, **kargs)