def load(self, filename=None, key=None, silent=True, merge=empty):
        """
        Reads and loads in to `self.obj` a single key or all keys from source

        :param filename: Optional filename to load
        :param key: if provided load a single key
        :param silent: if load errors should be silenced
        """

        filename = filename or self.obj.get(self.identifier.upper())
        if not filename:
            return

        if not isinstance(filename, (list, tuple)):
            split_files = ensure_a_list(filename)
            if all([f.endswith(self.extensions) for f in split_files]):  # noqa
                files = split_files  # it is a ['file.ext', ...]
            else:  # it is a single config as string
                files = [filename]
        else:  # it is already a list/tuple
            files = filename

        source_data = self.get_source_data(files)

        if (
            self.env == "_envless"
            or self.obj.get("ENVIRONMENTS_FOR_DYNACONF") is False
        ):
            self._envless_load(source_data, silent, key)
        else:
            self._load_all_envs(source_data, silent, key)

        Reads and loads in to `self.obj` a single key or all keys from source

        :param filename: Optional filename to load
        :param key: if provided load a single key
        :param silent: if load errors should be silenced
        
dynaconf/loaders/base.py