go-python / go-python/gopy

Methods with two outputs are expected to return an error, methods aren't visible from python

Ouverte
#345 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
Langage dominant
Go
Étoiles
2.3k
Forks
136
Merge moyen
14 min
PR mergées (30 j)
2

Description

Hi, I'm trying to build this project, https://github.com/holiman/uint256, but I've run into multiple issues:

Suppose we have a function with multiple outputs: `func (z *Int) AddOverflow(x, y *Int) (*Int, bool)`, bind expects second argument to be an `error` and outputs the following `gopy: second result value must be of type error`.

To reproduce, minimized testcase:
```go
package uint256

import (
"math/bits"
)

type Int [4]uint64

func NewInt(val uint64) *Int {
z := &Int{}
z.SetUint64(val)
return z
}

func (z *Int) SetUint64(x uint64) *Int {
z[3], z[2], z[1], z[0] = 0, 0, 0, x
return z
}

func (z *Int) AddOverflow(x, y *Int) (*Int, bool) {
var carry uint64
z[0], carry = bits.Add64(x[0], y[0], 0)
z[1], carry = bits.Add64(x[1], y[1], carry)
z[2], carry = bits.Add64(x[2], y[2], carry)
z[3], carry = bits.Add64(x[3], y[3], carry)
return z, carry != 0
}
```

The second issue I'm having is that after compiling the project, public methods of type `Int` aren't exposed to Python, e.g. the following code won't run:
```python
from uint256_py import uint256

x, y, z = uint256.NewInt(123), uint256.NewInt(456), uint256.NewInt(0)
z.Add(x, y) # doesn't work, method isn't visible
```

I suspect this has something to do with `Int` being represented as an array `[4]uint64`.
Versions I'm using: Go 1.21.3 & Python 3.11.5

It seemed related to #315, so I've run this in docker with Go 1.19.5 & Python3.10.12 but the issue persisted.

Thank you.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.