def _load_all_envs(self, source_data, silent=True, key=None):
        """
        Load configs from files separating by each environment
        source_data should have format:
            {
                "path/to/src": {
                    "env": {...},
                    "env2": {...}
                }
            }
        """
        for file_name, file_data in source_data.items():
            # env name is checked in lower
            file_data = {k.lower(): value for k, value in file_data.items()}

            # is there a `dynaconf_merge` on top level of file?
            file_merge = file_data.get("dynaconf_merge", empty)

            # is there a flag disabling dotted lookup on file?
            file_dotted_lookup = file_data.get("dynaconf_dotted_lookup")

            for env in build_env_list(self.obj, self.env):
                env = env.lower()  # lower for better comparison
                # print(self.env, file_data)

                # set source metadata
                source_metadata = SourceMetadata(
                    self.identifier, file_name, env
                )

                try:
                    data = file_data[env] or {}
                except KeyError:
                    if silent:
                        continue
                    raise

                if not data:
                    continue

                self._set_data_to_obj(
                    data,
                    source_metadata,
                    file_merge,
                    key,
                    file_dotted_lookup=file_dotted_lookup,
                )

        Load configs from files separating by each environment
        source_data should have format:
            {
                "path/to/src": {
                    "env": {...},
                    "env2": {...}
                }
            }
        
dynaconf/loaders/base.py