diff --git a/examples/list/main.go b/examples/list/main.go new file mode 100644 index 0000000..bc431d5 --- /dev/null +++ b/examples/list/main.go @@ -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 +} diff --git a/examples/python3/main.go b/examples/python3/main.go new file mode 100644 index 0000000..732c8d8 --- /dev/null +++ b/examples/python3/main.go @@ -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) + } +}