MCPcopy Create free account
hub / github.com/go-python/gopy / genPyWrapPreamble

Method genPyWrapPreamble

bind/gen.go:634–693  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

632}
633
634func (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)

Callers 1

genPkgMethod · 0.95

Calls 3

AddPyImportMethod · 0.80
PrintfMethod · 0.80
NameMethod · 0.45

Tested by

no test coverage detected