<div dir="ltr">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.<br><br>For the poor soul who has a script with many urlopen("https"//<whatever>") calls, well, they probably don't mind the busywork of editing each and every one of them.<br><br>I'm fine with giving the actual keyword parameter a scary-sounding ugly name.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 8, 2014 at 3:48 PM, Donald Stufft <span dir="ltr"><<a href="mailto:donald@stufft.io" target="_blank">donald@stufft.io</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div class="h5"><br><div><blockquote type="cite"><div>On Sep 8, 2014, at 6:43 PM, Nick Coghlan <<a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>> wrote:</div><br><div><p dir="ltr"><br>
On 9 Sep 2014 08:30, "Donald Stufft" <<a href="mailto:donald@stufft.io" target="_blank">donald@stufft.io</a>> wrote:<br>
><br>
> If someone wants to do this, can’t they write their own 6 line function?</p><p dir="ltr">Unfortunately not, as the domain knowledge required to know what those six lines should look like is significant.</p><p dir="ltr">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".</p><p dir="ltr">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.</p><p dir="ltr">Cheers,<br>
Nick.</p><p dir="ltr">><br>
> import ssl<br>
> import urllib.request<br>
> _real_urlopen = urllib.request.urlopen<br>
> def _unverified(*args, **kwargs):<br>
>     if not kwargs.keys() & {“context”, “cafile”, “capath”, “cadefault”}:<br>
>         ctx = ssl.create_default_context()<br>
>         ctx.verify_mode = CERT_NONE<br>
>         ctx.verify_hostname = False<br>
>         kwargs[“context”] = ctx<br>
>     return _real_urlopen(*args, **kwargs)<br>
><br>
> ---<br>
> Donald Stufft<br>
> PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA<br>
><br>
</p>
</div></blockquote></div><div><br></div></div></div><div>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.</div><div><br></div><div>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.</div><span class=""><br><div>
<div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word"><div>---</div><div>Donald Stufft</div><div>PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA</div></div></div>
</div>
<br></span></div><br>_______________________________________________<br>
Python-Dev mailing list<br>
<a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-dev" target="_blank">https://mail.python.org/mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/guido%40python.org" target="_blank">https://mail.python.org/mailman/options/python-dev/guido%40python.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>--Guido van Rossum (<a href="http://python.org/~guido">python.org/~guido</a>)
</div>