(self)
| 378 | self.suffix.append(line) |
| 379 | |
| 380 | def __str__(self): |
| 381 | script = "#!/usr/bin/env python3\n" |
| 382 | script += f"# Template auto-generated by polygraphy [v{polygraphy.__version__}] on {time.strftime('%D')} at {time.strftime('%H:%M:%S')}\n" |
| 383 | script += f"# Generation Command: {' '.join(sys.argv)}\n" |
| 384 | if self.summary: |
| 385 | script += "# " + "\n# ".join(self.summary.splitlines()) + "\n" |
| 386 | script += ("\n" if self.preimport else "") + "\n".join(self.preimport) + ("\n\n" if self.preimport else "") |
| 387 | |
| 388 | has_external_import = False |
| 389 | imports = [] |
| 390 | for frm, imps in self.imports.items(): |
| 391 | imps = sorted(imps) |
| 392 | is_external_import = False |
| 393 | if frm is not None: |
| 394 | # NOTE: We do not currently translate 'from' imports to `lazy_import`. |
| 395 | imps = [f"{imp}" if imp_as is None else f"{imp} as {imp_as}" for imp, imp_as in imps] |
| 396 | imports.append(f"from {frm} import {', '.join(imps)}") |
| 397 | else: |
| 398 | # When `frm` is None, we want to treat each import separately. |
| 399 | # Translate external imports to use `mod.lazy_import()`. |
| 400 | for imp, imp_as in imps: |
| 401 | is_external_import = "polygraphy" not in imp |
| 402 | if is_external_import: |
| 403 | imp_as = imp_as or imp |
| 404 | imports.append(f"{imp_as} = mod.lazy_import({repr(imp)})") |
| 405 | else: |
| 406 | imports.append(f"import {imp}{'' if imp_as is None else f' as {imp_as}'}") |
| 407 | has_external_import |= is_external_import |
| 408 | |
| 409 | if has_external_import: |
| 410 | script += "from polygraphy import mod" + "\n" |
| 411 | script += "\n".join(sorted(imports)) + "\n" |
| 412 | |
| 413 | if self.data_loader: |
| 414 | script += "\n# Data Loader\n" |
| 415 | script += f"{Script.DATA_LOADER_NAME} = {self.data_loader}\n" |
| 416 | script += "\n" |
| 417 | |
| 418 | if self.loaders: |
| 419 | script += "# Loaders\n" |
| 420 | for loader, loader_name in self.loaders.items(): |
| 421 | script += f"{loader_name} = {loader}\n" |
| 422 | script += "\n" |
| 423 | |
| 424 | if self.runners or self.always_create_runners: |
| 425 | script += "# Runners\n" |
| 426 | script += f"{self.get_runners()} = [" |
| 427 | for runner in self.runners: |
| 428 | script += f"\n{constants.TAB}{runner}," |
| 429 | if self.runners: |
| 430 | script += "\n" |
| 431 | script += "]\n" |
| 432 | |
| 433 | script += "\n".join(self.suffix) + "\n" |
| 434 | script = script.replace("\n\n\n", "\n\n") |
| 435 | |
| 436 | G_LOGGER.super_verbose(f"Created script:\n{script}") |
| 437 | return script |
nothing calls this directly
no test coverage detected