[Python-Dev] Proposed schedule for 3.4.2 (original) (raw)

Glenn Linderman v+python at g.nevcal.com
Tue Sep 9 04:46:07 CEST 2014


Well, this thread seems to be top-posted.... so...

Why not provide _urlopen_with_scary_keyword_parameter as the monkey-patch option?

So after the (global to the module) monkeypatch, they would still have to add the keyword parameter.

On 9/8/2014 4:31 PM, Guido van Rossum wrote:

I still prefer having a parameter on urlopen (or thereabouts) -- it feels wrong to make it easier to change this globally than on a per-call basis, and if you don't understand monkey-patching, it's impossible to debug if you put the patch in the wrong place.

For the poor soul who has a script with many urlopen("https"//") calls, well, they probably don't mind the busywork of editing each and every one of them. I'm fine with giving the actual keyword parameter a scary-sounding ugly name. On Mon, Sep 8, 2014 at 3:48 PM, Donald Stufft <donald at stufft.io_ _<mailto:donald at stufft.io>> wrote:

On Sep 8, 2014, at 6:43 PM, Nick Coghlan <ncoghlan at gmail.com_ _<mailto:ncoghlan at gmail.com>> wrote:

On 9 Sep 2014 08:30, "Donald Stufft" <donald at stufft.io_ _<mailto:donald at stufft.io>> wrote: > > If someone wants to do this, can’t they write their own 6 line function? Unfortunately not, as the domain knowledge required to know what those six lines should look like is significant. Keeping the old unsafe behaviour around with a more obviously dangerous name is much simpler than explaining to people "Here, copy this chunk of code you don't understand". If we were starting with a blank slate there's no way we'd offer such a thing, but as Jim pointed out, we do want to make it relatively easy for Standard Operating Environment maintainers to hack around it if necessary. Cheers, Nick. > > import ssl > import urllib.request > realurlopen = urllib.request.urlopen > def unverified(*args, **kwargs): > if not kwargs.keys() & {“context”, “cafile”, “capath”, “cadefault”}: > ctx = ssl.createdefaultcontext() > ctx.verifymode = CERTNONE > ctx.verifyhostname = False > kwargs[“context”] = ctx > return realurlopen(*args, **kwargs) > > --- > Donald Stufft > PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA > Why isn’t documentation with appropriate red warnings a suitable place if we really must have it? That sounds like a much better solution that some weird function people monkeypatch. It gives them more control over things (maybe they have a valid certificate chain, but an invalid host name!), it’ll work across all Python implementations, and most importantly, it gives us a place where there is some long form location to be like “yea you really probably don’t want to be doing this” in big red letters. Overall I’m -1 on either offering the function or documenting it at all, but if we must do something then I think documentation is more than enough.

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20140908/d3c24f43/attachment-0001.html>



More information about the Python-Dev mailing list