docs: def load_name(*names, load_order=DEFAULT_LOAD_ORDER, extension='yaml', missing=Missing.silent):
      """
      Read a `.Configuration` instance by name, trying to read from files in
      increasing significance. The default load order is `.system`, `.user`,
      `.application`, `.environment`.
  
      Multiple names are combined with multiple loaders using names as the 'inner
      loop / selector', loading ``/etc/name1.yaml`` and ``/etc/name2.yaml``
      before ``./name1.yaml`` and ``./name2.yaml``.
  
      :param names: application or configuration set names, in increasing
          significance
      :param load_order: ordered list of name templates or `callable`s, in
          increasing order of significance
      :param extension: file extension to be used
      :param missing: policy to be used when a configured key is missing, either
          as a `.Missing` instance or a default value
      :return: a `.Configuration` instances providing values loaded from *names*
          in *load_order* ordering
      """
      def generate_sources():
          # argument order for product matters, for names "foo" and "bar":
          # /etc/foo.yaml before /etc/bar.yaml, but both of them before ~/.foo.yaml and ~/.bar.yaml
          for source, name in product(load_order, names):
              if callable(source):
                  yield source(name, extension)
              else:
                  # expand user to turn ~/.name.yaml into /home/user/.name.yaml
                  candidate = path.expanduser(source.format(name=name, extension=extension))
                  yield loadf(candidate, default=NotConfigured)
  
      return Configuration(*generate_sources(), missing=missing)