()
| 632 | } |
| 633 | |
| 634 | func (g *pyGen) genPyWrapPreamble() { |
| 635 | n := g.pkg.pkg.Name() |
| 636 | pkgimport := g.pkg.pkg.Path() |
| 637 | pkgDoc := "" |
| 638 | if g.pkg.doc != nil { |
| 639 | pkgDoc = g.pkg.doc.Doc |
| 640 | } |
| 641 | if pkgDoc != "" { |
| 642 | pkgDoc = `"""` + "\n" + pkgDoc + "\n" + `"""` |
| 643 | } |
| 644 | |
| 645 | // import other packages for other types that we might use |
| 646 | var impstr, impgenstr string |
| 647 | impgenNames := []string{"_" + g.cfg.Name, "go"} |
| 648 | switch { |
| 649 | case g.pkg.Name() == "go": |
| 650 | if g.cfg.PkgPrefix != "" { |
| 651 | impgenstr += fmt.Sprintf("from %s import %s\n", g.cfg.PkgPrefix, "_"+g.cfg.Name) |
| 652 | } else { |
| 653 | impgenstr += fmt.Sprintf("import %s\n", "_"+g.cfg.Name) |
| 654 | } |
| 655 | impstr += fmt.Sprintf(GoPkgDefs, g.cfg.Name) |
| 656 | case g.mode == ModeGen || g.mode == ModeBuild || g.mode == ModePkg: |
| 657 | if g.cfg.PkgPrefix != "" { |
| 658 | for _, name := range impgenNames { |
| 659 | impgenstr += fmt.Sprintf("from %s import %s\n", g.cfg.PkgPrefix, name) |
| 660 | } |
| 661 | } else { |
| 662 | for _, name := range impgenNames { |
| 663 | impgenstr += fmt.Sprintf("import %s\n", name) |
| 664 | } |
| 665 | } |
| 666 | case g.mode == ModeExe: |
| 667 | // exe mode ignores PkgPrefix, because it is always built in to exe |
| 668 | impgenstr += fmt.Sprintf("import _%s\n", g.cfg.Name) |
| 669 | impgenstr += fmt.Sprintf("from %s import go\n", g.cfg.Name) |
| 670 | default: |
| 671 | pkg := g.cfg.Name |
| 672 | if g.cfg.PkgPrefix != "" { |
| 673 | pkg = g.cfg.PkgPrefix + "." + pkg |
| 674 | } |
| 675 | for _, name := range impgenNames { |
| 676 | impgenstr += fmt.Sprintf("from %s import %s\n", pkg, name) |
| 677 | } |
| 678 | } |
| 679 | imps := g.pkg.pkg.Imports() |
| 680 | for _, im := range imps { |
| 681 | ipath := im.Path() |
| 682 | if _, has := g.pkgmap[ipath]; has { |
| 683 | g.pkg.AddPyImport(ipath, false) |
| 684 | } |
| 685 | } |
| 686 | impstr += importHereKeyString |
| 687 | |
| 688 | if g.mode == ModeExe { |
| 689 | g.pywrap.Printf(PyWrapExePreamble, g.cfg.Name, g.cfg.Cmd, n, pkgimport, pkgDoc, impgenstr, impstr) |
| 690 | } else { |
| 691 | g.pywrap.Printf(PyWrapPreamble, g.cfg.Name, g.cfg.Cmd, n, pkgimport, pkgDoc, impgenstr, impstr) |
no test coverage detected