docs: def configure_sources(update=False,
                        sources_var='install_sources',
                        keys_var='install_keys'):
      """Configure multiple sources from charm configuration.
  
      The lists are encoded as yaml fragments in the configuration.
      The fragment needs to be included as a string. Sources and their
      corresponding keys are of the types supported by add_source().
  
      Example config:
          install_sources: |
            - "ppa:foo"
            - "http://example.com/repo precise main"
          install_keys: |
            - null
            - "a1b2c3d4"
  
      Note that 'null' (a.k.a. None) should not be quoted.
      """
      sources = safe_load((config(sources_var) or '').strip()) or []
      keys = safe_load((config(keys_var) or '').strip()) or None
  
      if isinstance(sources, six.string_types):
          sources = [sources]
  
      if keys is None:
          for source in sources:
              add_source(source, None)
      else:
          if isinstance(keys, six.string_types):
              keys = [keys]
  
          if len(sources) != len(keys):
              raise SourceConfigError(
                  'Install sources and keys lists are different lengths')
          for source, key in zip(sources, keys):
              add_source(source, key)
      if update:
          _fetch_update(fatal=True)