Add some examples

master
Rémi Calixte 2018-12-14 13:45:17 -05:00 committed by Maxime Mouial
parent a6de78a63f
commit 133b1e0f97
2 changed files with 94 additions and 0 deletions

63
examples/list/main.go Normal file
View File

@ -0,0 +1,63 @@
/*
Unless explicitly stated otherwise all files in this repository are licensed
under the $license_for_repo License.
This product includes software developed at Datadog (https://www.datadoghq.com/).
Copyright 2018 Datadog, Inc.
*/
package main
import (
"fmt"
"os"
"github.com/DataDog/go-python3"
)
func main() {
python3.Py_Initialize()
if !python3.Py_IsInitialized() {
fmt.Println("Error initializing the python interpreter")
os.Exit(1)
}
err := printList()
if err != nil {
fmt.Printf("failed to print the python list: %s\n", err)
}
python3.Py_Finalize()
}
func printList() error {
list := python3.PyList_New(5)
if exc := python3.PyErr_Occurred(); list == nil && exc != nil {
return fmt.Errorf("Fail to create python list object")
}
defer list.DecRef()
repr, err := pythonRepr(list)
if err != nil {
return fmt.Errorf("fail to get representation of object list")
}
fmt.Printf("python list: %s\n", repr)
return nil
}
func pythonRepr(o *python3.PyObject) (string, error) {
if o == nil {
return "", fmt.Errorf("object is nil")
}
s := o.Repr()
if s == nil {
python3.PyErr_Clear()
return "", fmt.Errorf("failed to call Repr object method")
}
defer s.DecRef()
return python3.PyUnicode_AsUTF8(s), nil
}

31
examples/python3/main.go Normal file
View File

@ -0,0 +1,31 @@
/*
Unless explicitly stated otherwise all files in this repository are licensed
under the $license_for_repo License.
This product includes software developed at Datadog (https://www.datadoghq.com/).
Copyright 2018 Datadog, Inc.
*/
package main
import (
"fmt"
"os"
"github.com/DataDog/go-python3"
)
func main() {
i, err := python3.Py_Main(os.Args)
if err != nil {
fmt.Printf("error launching the python interpreter: %s\n", err)
os.Exit(1)
}
if i == 1 {
fmt.Println("The interpreter exited due to an exception")
os.Exit(1)
}
if i == 2 {
fmt.Println("The parameter list does not represent a valid Python command line")
os.Exit(1)
}
}