From: Lander <la...@we...> - 2007-03-15 14:29:04
|
Hello, I'd like to thank the PyX developers for this amazing package. Congratulations and keep up the good work. This is for PyX 0.9. There's something I don't understand about the tangent method provided by path. After reading the documentation, I thought that "length" was an optional argument, with None as default value. In this case, a normalized unit vector would be returned. Please, consider the following trivial example: cir = path.circle(0, 0, 1) tg = cir.tangent(cir.atbegin()) When Python executes the second line, it throws a TypeError exception. Here's the traceback: File "circles.py", line 9, in ? tg = cir.tangent(cir.begin(), None) File "[...]/pyx/path.py", line 1164, in tangent return self.normpath().tangent(params, length) File "[...]/pyx/normpath.py", line 1418, in wrappedmethod return method(self, [valueorlist], *args, **kwargs)[0] File "[...]/pyx/normpath.py", line 1900, in tangent return self._tangent(self._convertparams(params, self.arclentoparam), unit.topt(length)) File "[...]/pyx/unit.py", line 72, in topt return _convert_to(l, "pt") File "[...]/pyx/unit.py", line 55, in _convert_to l = length(l) # convert to length instance if necessary File "[...]/pyx/unit.py", line 94, in __init__ l = float(f) * _m[unit or _default_unit] TypeError: float() argument must be a string or a number If you add a length argument different from None, then it works as expected. I'm rather new to Python, so don't take the following very seriously: I've been reading over the code, and I suspect that neither the tangent method provided by path nor the one provided by normpath check the type of "length"; therefore, this length transparently passes as an argument to unit.topt, and a TypeError is thrown if it's None. I'd appreciate your helping me understand this. Cheers. Lander |