Re: [Python-Dev] Why is nb_inplace_power ternary?
Brett Cannon schrieb: Seems reasonable to me. Is the argument of None passed in automatically somewhere? There are few callers of nb_inplace_power at all (AFAICT, only PyNumber_InPlacePower); in turn, PyNumber_InPlacePower is called with the implicit Py_None always: - ceval.c, for INPLACE_POWER (which is binary) - operator.ipow (which is also binary) - class.c, from bin_inplace_power, which in turn is called from instance_ipow if the instance's 3rd argument to nb_inplace_power is Py_None (if there is a non-None third argument, instance_ipow invokes __ipow__ with three arguments if __ipow__ is defined, else it invokes __pow__ with three arguments) The only case I could find where a third argument is non-None is when the builtin pow() is invoked, which then invokes nb_power (but not nb_inplace_power) with three arguments. Regards, Martin ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Why is nb_inplace_power ternary?
Raymond Hettinger schrieb: That made sense, but my question was whether there would be benefit to making the change in the middle of a major release. At worst, code that is currently working due to undefined behavior will stop working. I don't see any offsetting benefit. ISTM that Py2.5 should be left as-is and that the full signature change be made in Py2.6. I can't see left as is as an option, see #1648268 and #1653736. Apparently, there are platforms where the code traps when there is a signature mismatch. If raising an exception is unacceptable, I'd rather explicitly ignore the extra argument, instead of ignoring it implicitly. Regards, Martin ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Why is nb_inplace_power ternary?
Greg Ewing schrieb: Might we want to add an in-place version of the 3-arg pow() function one day? If so, leaving the third argument there could be useful. What could the syntax for that be? Instead of writing x = pow(x, n, 10) would you write x pow n = 10 ? or perhaps x ** n = 10 or x * n *= 10 Also, it would break existing __ipow__ implementations that only receive two arguments (unless there would be another __ method introduced). Regards, Martin ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Adding timeout option to httplib...connect()
Guido van Rossum schrieb: I recently needed to access an HTTP URL with a timeout. I ended up monkey-patching httplib.HTTPConnection so that the connect() method has an optional second paramer, timeout, defaulting to None; if not None, a call to settimeout() is added right after successful creation of the socket. Does anybody else think this is a good idea? (Personally I think this should've been done years ago. :-) Shall I check it into the head? Please also consider #723312, which is more general, but also more outdated. Regards, Martin ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Adding timeout option to httplib...connect()
Guido I recently needed to access an HTTP URL with a timeout. I ended Guido up monkey-patching httplib.HTTPConnection so that the connect() Guido method has an optional second paramer, timeout, defaulting to Guido None; if not None, a call to settimeout() is added right after Guido successful creation of the socket. Guido Does anybody else think this is a good idea? In principle it's probably a fine idea. We should consider if it's possible to develop a uniform approach to timeouts for all the libraries that use sockets though. Otherwise you run the risk of doing it in different ways for different libraries and having to make a (small, but annoying) semantic leap when going from, say, httplib to smtpllib or ftplib. Skip ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
[Python-Dev] Why is nb_inplace_power ternary?
Greg Ewing schrieb: Might we want to add an in-place version of the 3-arg pow() function one day? If so, leaving the third argument there could be useful. Martin v. Löwis martin at v.loewis.de replied: What could the syntax for that be? Instead of writing x = pow(x, n, 10) Either x**= n % 10 # The **= changes the parse context, so that % is no longer # immediately evaluated or x**= (n, 10) # exponentiation to a tuple isn't currently defined, and it # does show that both arguments are part of the power # expression -- but I'm not sure it needs a 3-argument form # instead of just unpacking the tuple itself. -jJ ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Why is nb_inplace_power ternary?
On 2/9/07, Martin v. Löwis [EMAIL PROTECTED] wrote: Brett Cannon schrieb: Seems reasonable to me. Is the argument of None passed in automatically somewhere? There are few callers of nb_inplace_power at all (AFAICT, only PyNumber_InPlacePower); in turn, PyNumber_InPlacePower is called with the implicit Py_None always: - ceval.c, for INPLACE_POWER (which is binary) - operator.ipow (which is also binary) - class.c, from bin_inplace_power, which in turn is called from instance_ipow if the instance's 3rd argument to nb_inplace_power is Py_None (if there is a non-None third argument, instance_ipow invokes __ipow__ with three arguments if __ipow__ is defined, else it invokes __pow__ with three arguments) The only case I could find where a third argument is non-None is when the builtin pow() is invoked, which then invokes nb_power (but not nb_inplace_power) with three arguments. Well then explicitly ignoring the object makes sense to me. While I am personally fine with raising the exception, erring on the side of caution as Raymond is suggesting wouldn't hurt either. -Brett ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Adding timeout option to httplib...connect()
On Friday 09 February 2007 08:52, [EMAIL PROTECTED] wrote: In principle it's probably a fine idea. We should consider if it's possible to develop a uniform approach to timeouts for all the libraries that use sockets though. Otherwise you run the risk of doing it in different ways for different libraries and having to make a (small, but annoying) semantic leap when going from, say, httplib to smtpllib or ftplib. Agreed. In the meanwhile, there's socket.setdefaulttimeout(), which has proved quite useful. -Fred -- Fred L. Drake, Jr. fdrake at acm.org ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Adding timeout option to httplib...connect()
On 2/9/07, Fred L. Drake, Jr. [EMAIL PROTECTED] wrote: On Friday 09 February 2007 08:52, [EMAIL PROTECTED] wrote: In principle it's probably a fine idea. We should consider if it's possible to develop a uniform approach to timeouts for all the libraries that use sockets though. Otherwise you run the risk of doing it in different ways for different libraries and having to make a (small, but annoying) semantic leap when going from, say, httplib to smtpllib or ftplib. Agreed. In the meanwhile, there's socket.setdefaulttimeout(), which has proved quite useful. Didn't work for me, since my ap is a multi-threaded webserver and I only want one specific type of request to time out. I'm not going to change ftplib.py and all the others. I do think it's relevant to decide whether the timeout should be passed to the constructor or to the connect() method. I think it may be better to pass the timeout to the constructor. -Fred -- Fred L. Drake, Jr. fdrake at acm.org -- --Guido van Rossum (home page: http://www.python.org/~guido/) ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Adding timeout option to httplib...connect()
Guido Didn't work for me, since my ap is a multi-threaded webserver and Guido I only want one specific type of request to time out. Understood. Guido I'm not going to change ftplib.py and all the others. Also understood. This has, as far as I know, been the response of everybody who has encountered this problem before. Most people are only interested in a single protocol (or module) and therefore aren't motivated to change/fix the other protocols which could benefit from timeouts. After all, who really wants to update gopherlib? So there is sits. Guido I do think it's relevant to decide whether the timeout should be Guido passed to the constructor or to the connect() method. I think it Guido may be better to pass the timeout to the constructor. Another thing to consider is how this change might percolate up to urllib/urllib2. (I advocate leaving urllib alone, but urllib2 should probably grow a timeout feature.) Skip ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Adding timeout option to httplib...connect()
You're not helping, Skip. Can you spend a minute looking at urllib2 and seeing how the two variants of my proposal (pass to constructor vs. pass to connect()) would impact on it? --Guido On 2/9/07, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Guido Didn't work for me, since my ap is a multi-threaded webserver and Guido I only want one specific type of request to time out. Understood. Guido I'm not going to change ftplib.py and all the others. Also understood. This has, as far as I know, been the response of everybody who has encountered this problem before. Most people are only interested in a single protocol (or module) and therefore aren't motivated to change/fix the other protocols which could benefit from timeouts. After all, who really wants to update gopherlib? So there is sits. Guido I do think it's relevant to decide whether the timeout should be Guido passed to the constructor or to the connect() method. I think it Guido may be better to pass the timeout to the constructor. Another thing to consider is how this change might percolate up to urllib/urllib2. (I advocate leaving urllib alone, but urllib2 should probably grow a timeout feature.) Skip -- --Guido van Rossum (home page: http://www.python.org/~guido/) ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Why is nb_inplace_power ternary?
Martin v. Löwis wrote: Greg Ewing schrieb: Might we want to add an in-place version of the 3-arg pow() function one day? What could the syntax for that be? It wouldn't be a syntax, just a function, e.g. ipow(x, n, 10) Also, it would break existing __ipow__ implementations that only receive two arguments You could consider them broken already, since the signature clearly implies that there could be a third argument. The fact that it's not currently used is no excuse. :-) -- Greg ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com