polymorphic methods supported?
The following simple test seems to indicate that polymorphic class members are not supported. It seems only the 2nd overload of call works.
Is there a workaround?
---- constellation.py ---
from transonic import boost A = "complex[:]" S = "int[:]" @boost class constellation: map: A def __init__(self, map: A): self.map = map @boost def __call__(self, s: int): return self.map[s] @boost def __call__(self, syms: S): out = np.empty(len(syms), dtype=complex) for i in range (len (syms)): out[i] = self.map[syms[i]] return out
--- test_constellation.py ---
from constellation import constellation import numpy as np A = np.array u = A([1+0j, -1+0j]) c = constellation (u) syms = A ([0,1]) xconst = c(syms) x = c(0)
---> 11 x = c(0) <string> in new_method(self, syms) TypeError: Invalid call to pythranized function `__for_method__constellation____call__(complex128[:], int)' Candidates are: - __for_method__constellation____call__(complex128[:], int[:])
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information