Esempio n. 1
0
    def _print_plugins_profiling_info(self, top_n: int) -> None:
        assert log is not None
        stats = Plugins.instance().get_stats()
        if stats is None:
            return

        items = list(stats.modules_import_time.items())
        # hide anything that took less than 5ms
        filtered = filter(lambda x: x[1] > 0.0005, items)
        sorted_items = sorted(filtered, key=lambda x: x[1], reverse=True)

        top_n = max(len(sorted_items), top_n)
        box: List[List[str]] = [["Module", "Sec"]]

        for item in sorted_items[0:top_n]:
            box.append([item[0], f"{item[1]:.3f}"])
        padding = get_column_widths(box)

        log.debug("")
        self._log_header(header="Profiling information", filler="*")
        self._log_header(
            header=f"Total plugins scan time : {stats.total_time:.3f} seconds",
            filler="-",
        )

        header = f"| {box[0][0].ljust(padding[0])} | {box[0][1].ljust(padding[1])} |"
        self._log_header(header=header, filler="-")
        del box[0]

        for row in box:
            a = row[0].ljust(padding[0])
            b = row[1].ljust(padding[1])
            log.debug(f"| {a} | {b} |")

        self._log_footer(header=header, filler="-")
Esempio n. 2
0
    def _print_search_path(self, config_name: Optional[str],
                           overrides: List[str]) -> None:
        assert log is not None
        log.debug("")
        self._log_header(header="Config search path", filler="*")

        box: List[List[str]] = [["Provider", "Search path"]]

        cfg = self.compose_config(
            config_name=config_name,
            overrides=overrides,
            run_mode=RunMode.RUN,
            with_log_configuration=False,
        )
        HydraConfig.instance().set_config(cfg)
        cfg = self.get_sanitized_cfg(cfg, cfg_type="hydra")

        sources = cfg.hydra.runtime.config_sources

        for sp in sources:
            box.append([sp.provider, f"{sp.schema}://{sp.path}"])

        provider_pad, search_path_pad = get_column_widths(box)
        header = "| {} | {} |".format("Provider".ljust(provider_pad),
                                      "Search path".ljust(search_path_pad))
        self._log_header(header=header, filler="-")

        for source in sources:
            log.debug("| {} | {} |".format(
                source.provider.ljust(provider_pad),
                f"{source.schema}://{source.path}".ljust(search_path_pad),
            ))
        self._log_footer(header=header, filler="-")
Esempio n. 3
0
    def _print_search_path(self) -> None:
        assert log is not None
        log.debug("")
        self._log_header(header="Config search path", filler="*")

        box: List[List[str]] = [["Provider", "Search path"]]

        for sp in self.config_loader.get_sources():
            box.append([sp.provider, sp.full_path()])

        provider_pad, search_path_pad = get_column_widths(box)
        self._log_header(
            "| {} | {} |".format(
                "Provider".ljust(provider_pad), "Search path".ljust(search_path_pad)
            ),
            filler="-",
        )

        for source in self.config_loader.get_sources():
            log.debug(
                "| {} | {} |".format(
                    source.provider.ljust(provider_pad),
                    source.full_path().ljust(search_path_pad),
                )
            )
Esempio n. 4
0
    def _print_defaults_list(
        self, config_name: Optional[str], overrides: List[str]
    ) -> None:
        assert log is not None
        defaults = self.config_loader.compute_defaults_list(
            config_name=config_name,
            overrides=overrides,
            run_mode=RunMode.RUN,
        )

        box: List[List[str]] = [
            [
                "Config path",
                "Package",
                "_self_",
                "Parent",
            ]
        ]
        for d in defaults.defaults:
            row = [
                d.config_path,
                d.package,
                "True" if d.is_self else "False",
                d.parent,
            ]
            row = [x if x is not None else "" for x in row]
            box.append(row)
        padding = get_column_widths(box)
        del box[0]
        log.debug("")
        self._log_header("Defaults List", filler="*")
        header = "| {} | {} | {} | {} | ".format(
            "Config path".ljust(padding[0]),
            "Package".ljust(padding[1]),
            "_self_".ljust(padding[2]),
            "Parent".ljust(padding[3]),
        )
        self._log_header(header=header, filler="-")

        for row in box:
            log.debug(
                "| {} | {} | {} | {} |".format(
                    row[0].ljust(padding[0]),
                    row[1].ljust(padding[1]),
                    row[2].ljust(padding[2]),
                    row[3].ljust(padding[3]),
                )
            )

        self._log_footer(header=header, filler="-")
Esempio n. 5
0
    def _print_composition_trace(self, cfg: DictConfig) -> None:
        # Print configurations used to compose the config object
        assert log is not None
        log.debug("")
        self._log_header("Composition trace", filler="*")
        box: List[List[str]] = [[
            "Config group",
            "Config name",
            "Search path",
            "Provider",
            "Schema provider",
        ]]
        composition_trace = [
            LoadTrace(**x) for x in cfg.hydra.composition_trace
        ]
        for trace in composition_trace:
            box.append([
                trace.config_group if trace.config_group is not None else "",
                trace.config_name if trace.config_name is not None else "",
                trace.search_path if trace.search_path is not None else "",
                trace.provider if trace.provider is not None else "",
                trace.schema_provider
                if trace.schema_provider is not None else "",
            ])
        padding = get_column_widths(box)
        del box[0]

        header = "| {} | {} | {} | {} | {} |".format(
            "Config group".ljust(padding[0]),
            "Config name".ljust(padding[1]),
            "Search path".ljust(padding[2]),
            "Provider".ljust(padding[3]),
            "Schema provider".ljust(padding[4]),
        )
        self._log_header(header=header, filler="-")

        for row in box:
            log.debug("| {} | {} | {} | {} | {} |".format(
                row[0].ljust(padding[0]),
                row[1].ljust(padding[1]),
                row[2].ljust(padding[2]),
                row[3].ljust(padding[3]),
                row[4].ljust(padding[4]),
            ))

        self._log_footer(header=header, filler="-")
Esempio n. 6
0
    def _print_composition_trace(self) -> None:
        # Print configurations used to compose the config object
        assert log is not None
        log.debug("")
        self._log_header("Composition trace", filler="*")
        box: List[List[str]] = [
            ["Config name", "Search path", "Provider", "Schema provider"]
        ]
        for trace in self.config_loader.get_load_history():
            box.append(
                [
                    trace.filename,
                    trace.path if trace.path is not None else "",
                    trace.provider if trace.provider is not None else "",
                    trace.schema_provider if trace.schema_provider is not None else "",
                ]
            )
        padding = get_column_widths(box)
        del box[0]

        self._log_header(
            "| {} | {} | {} | {} |".format(
                "Config name".ljust(padding[0]),
                "Search path".ljust(padding[1]),
                "Provider".ljust(padding[2]),
                "Schema provider".ljust(padding[3]),
            ),
            filler="-",
        )

        for row in box:
            log.debug(
                "| {} | {} | {} | {} |".format(
                    row[0].ljust(padding[0]),
                    row[1].ljust(padding[1]),
                    row[2].ljust(padding[2]),
                    row[3].ljust(padding[3]),
                )
            )
Esempio n. 7
0
def test_get_column_widths(matrix: Any, expected: Any) -> None:
    assert utils.get_column_widths(matrix) == expected