could this be 

```
"%(name)s takes %(possible)s argument%(plural)s but %(given)s were given" % (
    name, (','.join(self.nargs[:-1])+"or " + str(self.nargs[-1])) if self.nargs > 1 else str(self.nargs[0]), len(args))
```

I'm not sure what must be unchanged in order to be compatible with NumPy.