)]}'
{"id":"openstack%2Fpython-glanceclient~157586","triplet_id":"openstack%2Fpython-glanceclient~master~I0235cb6f9c4bfdae69b6bce03c78b3a0727c71b9","project":"openstack/python-glanceclient","branch":"master","topic":"using-urllib3","hashtags":[],"change_id":"I0235cb6f9c4bfdae69b6bce03c78b3a0727c71b9","subject":"Do not use urllib3 vendorized","status":"ABANDONED","created":"2015-02-19 23:20:22.000000000","updated":"2015-03-01 16:42:13.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"c2a6c0c52bef7ced39e59e1ddca265c6ac335e42","_number":157586,"virtual_id_number":157586,"owner":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"value":-1,"date":"2015-02-20 10:45:24.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"rejected":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},{"value":-2,"date":"2015-02-20 12:36:17.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":-1,"date":"2015-02-20 12:22:36.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},{"value":0,"permitted_voting_range":{"min":-1,"max":2},"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Top Priority / Holds Gate"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-02-19 23:21:18.000000000","updated_by":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"reviewer":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"state":"REVIEWER"},{"updated":"2015-02-20 10:45:24.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"},{"updated":"2015-02-20 12:22:36.000000000","updated_by":{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},"reviewer":{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},"state":"REVIEWER"},{"updated":"2015-02-20 12:36:17.000000000","updated_by":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"reviewer":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"state":"REVIEWER"}],"messages":[{"id":"bb75f21c23a050a2cd62f5c9322b42bf84b399af","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2015-02-19 23:20:22.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"713c7637b33a2cebd46a637d817e309535be5a53","author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"date":"2015-02-19 23:21:18.000000000","message":"Patch Set 1: Code-Review-1\n\nThis has been discussed before and this is not the correct way to develop with requests.","accounts_in_message":[],"_revision_number":1},{"id":"8e7fc553cfcd1d71bd5e7733c421e5426571785f","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2015-02-19 23:24:22.000000000","message":"Patch Set 1:\n\nYeah, this has been discussed before, and you where the only one thinking this way, refusing to de-embed urllib3 from requests, when everyone else think you\u0027re mistaking.","accounts_in_message":[],"_revision_number":1},{"id":"a6f344ff5207720d4a55ef9358c08f23a235231f","author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"date":"2015-02-20 00:18:35.000000000","message":"Patch Set 1:\n\nThomas, this patch does not remove the vendored copy of urllib3. This patch fundamentally breaks installations that don\u0027t have heavily modified copies of requests (like source-based installations). Using a third-party version of urllib3 with requests when requests has a vendored copy of urllib3 breaks urllib3\u0027s instance checks due to sys.modules fun. You will be breaking glanceclient if this change merges.","accounts_in_message":[],"_revision_number":1},{"id":"d21323b3040bbd46d59c51373c06e27ca43315cb","author":{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},"date":"2015-02-20 00:28:45.000000000","message":"Patch Set 1: Code-Review-1\n\nThis is going to break anyone who is using requests as it comes from upstream (e.g. not someone who doesn\u0027t have it patched by a distribution). If I recall Debian has patches now so that even if you do ``from requests.packages.urllib3 import X`` it\u0027s going to import X from the global urllib3, so even on Debian importing from inside of requests.packages.urllib3 is an acceptable way that\u0027ll work just fine and has the distinct advantage of not breaking when using upstream.","accounts_in_message":[],"_revision_number":1},{"id":"32e8cefe492c4cae444b12a1146e2a45744bb27e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-02-20 01:24:05.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-glanceclient-python26 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-python26/5f67c41/ : SUCCESS in 1m 18s\n- gate-python-glanceclient-pep8 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-pep8/ab0bd33/ : FAILURE in 1m 16s\n- gate-python-glanceclient-docs http://docs-draft.openstack.org/86/157586/1/check/gate-python-glanceclient-docs/7134203//doc/build/html/ : SUCCESS in 1m 23s\n- gate-python-glanceclient-python27 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-python27/32b90c1/ : SUCCESS in 1m 28s\n- gate-python-glanceclient-python34 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-python34/ffc65e9/ : SUCCESS in 2m 25s\n- gate-python-glanceclient-requirements http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-requirements/d0e5340/ : SUCCESS in 26s\n- gate-tempest-dsvm-neutron-src-python-glanceclient-juno http://logs.openstack.org/86/157586/1/check/gate-tempest-dsvm-neutron-src-python-glanceclient-juno/9e17066/ : FAILURE in 9m 08s\n- gate-python-glanceclient-pypy http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-pypy/c2be3e7/ : SUCCESS in 1m 37s\n- gate-tempest-dsvm-neutron-src-python-glanceclient http://logs.openstack.org/86/157586/1/check/gate-tempest-dsvm-neutron-src-python-glanceclient/bd48d42/ : SUCCESS in 1h 17m 20s","accounts_in_message":[],"_revision_number":1},{"id":"7e5c067f09d396543b5fe6d774f21a40bf464130","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2015-02-20 08:29:59.000000000","message":"Patch Set 1:\n\nDonald, my patch is there so we *do not* use the version of urllib3 from upstream, so I don\u0027t understand why you wrote:\n\"This is going to break anyone who is using requests as it comes from upstream\". Who is that \"anyone\" that you\u0027re talking about? Even if we use pip, since I added urlllib3 in the requirements, it should work.","accounts_in_message":[],"_revision_number":1},{"id":"d10abc343363d78ed77bf4d74a534405ca9c6147","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2015-02-20 08:37:47.000000000","message":"Patch Set 1:\n\nrecheck no bug","accounts_in_message":[],"_revision_number":1},{"id":"405d021540652a35753912876d84a767c686c241","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-02-20 09:32:09.000000000","message":"Patch Set 1:\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-glanceclient-python26 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-python26/cfc829b/ : SUCCESS in 1m 26s\n- gate-python-glanceclient-pep8 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-pep8/4e65ed2/ : FAILURE in 1m 26s\n- gate-python-glanceclient-docs http://docs-draft.openstack.org/86/157586/1/check/gate-python-glanceclient-docs/71e6e21//doc/build/html/ : SUCCESS in 1m 20s\n- gate-python-glanceclient-python27 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-python27/3a3ff21/ : SUCCESS in 1m 17s\n- gate-python-glanceclient-python34 http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-python34/ee000f7/ : SUCCESS in 2m 39s\n- gate-python-glanceclient-requirements http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-requirements/a7a1fdf/ : SUCCESS in 16s\n- gate-tempest-dsvm-neutron-src-python-glanceclient-juno http://logs.openstack.org/86/157586/1/check/gate-tempest-dsvm-neutron-src-python-glanceclient-juno/15e4555/ : FAILURE in 5m 33s\n- gate-python-glanceclient-pypy http://logs.openstack.org/86/157586/1/check/gate-python-glanceclient-pypy/87a320a/ : SUCCESS in 2m 54s\n- gate-tempest-dsvm-neutron-src-python-glanceclient http://logs.openstack.org/86/157586/1/check/gate-tempest-dsvm-neutron-src-python-glanceclient/c55279d/ : SUCCESS in 54m 19s","accounts_in_message":[],"_revision_number":1},{"id":"fcf6d1b5ea80a8085ccc800168d636f1c6359c49","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2015-02-20 09:46:01.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"891c0035154c9c6bdb28bfef9abfcb557d2ceda4","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-02-20 10:45:24.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-glanceclient-python26 http://logs.openstack.org/86/157586/2/check/gate-python-glanceclient-python26/1fb44bc/ : SUCCESS in 1m 07s\n- gate-python-glanceclient-pep8 http://logs.openstack.org/86/157586/2/check/gate-python-glanceclient-pep8/7bf3373/ : SUCCESS in 1m 04s\n- gate-python-glanceclient-docs http://docs-draft.openstack.org/86/157586/2/check/gate-python-glanceclient-docs/b23f677//doc/build/html/ : SUCCESS in 1m 20s\n- gate-python-glanceclient-python27 http://logs.openstack.org/86/157586/2/check/gate-python-glanceclient-python27/91e90cb/ : SUCCESS in 1m 29s\n- gate-python-glanceclient-python34 http://logs.openstack.org/86/157586/2/check/gate-python-glanceclient-python34/1fb82d9/ : SUCCESS in 2m 45s\n- gate-python-glanceclient-requirements http://logs.openstack.org/86/157586/2/check/gate-python-glanceclient-requirements/a4df899/ : SUCCESS in 23s\n- gate-tempest-dsvm-neutron-src-python-glanceclient-juno http://logs.openstack.org/86/157586/2/check/gate-tempest-dsvm-neutron-src-python-glanceclient-juno/4f08c6c/ : FAILURE in 9m 20s\n- gate-python-glanceclient-pypy http://logs.openstack.org/86/157586/2/check/gate-python-glanceclient-pypy/4ed35ae/ : SUCCESS in 2m 15s\n- gate-tempest-dsvm-neutron-src-python-glanceclient http://logs.openstack.org/86/157586/2/check/gate-tempest-dsvm-neutron-src-python-glanceclient/33b459b/ : SUCCESS in 59m 20s","accounts_in_message":[],"_revision_number":2},{"id":"2f5db27c4137aea293308d9d1a0ca52a20975a51","author":{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},"date":"2015-02-20 12:22:36.000000000","message":"Patch Set 2: Code-Review-1\n\nThomas,\n\nThis simply isn\u0027t going to work. The problem is while glancelcient might be using the \"real\" urllib3, internally requests is still going to be using it\u0027s bundled copy of urllib3. In python the classes ``urllib3.exceptions.ProtocolError`` and ``requests.packages.urllib3.exceptions.ProtocolError`` are two entirely different, unrelated classes. So if requests is internally raising ``requests.packages.urllib3.exceptions.ProtocolError`` but glanceclient is catching ``urllib3.exceptions.ProtocolError``, python isn\u0027t going to see those as the same objects and is not going to trigger the except block in that scenario. While a human like you or me might be able to look at this code and go \"oh requests.pacakges.urllib3 and urllib3 are the same thing\" the interpreter isn\u0027t going to have any idea they are related and is going to treat them as entirely different objects.\n\nYou can see this interactively by installing both requests and urllib3 into a virtual environment and then running:\n\n\u003e\u003e\u003e from requests.packages.urllib3.exceptions import ProtocolError\n\u003e\u003e\u003e from urllib3.exceptions import ProtocolError as RealProtocolError\n\u003e\u003e\u003e ProtocolError is RealProtocolError\nFalse\n\nRequests has some code inside of it that does some trickery so that *if* someone removes the bundled copy of urllib3, then it\u0027ll alias ``requests.packages.urllib3`` to ``urlib3`` so that the interpreter *will* see those as the same thing, and I believe that Debian has backported that patch into at least Jessie.\n\nThe right way to use urllib3 in conjunction with requests is to always import it from requests.packages.urllib3 and never import directly from urllib3. It\u0027s up to Debian to make sure that this works (and Debian has, and then requests even adopted an officially sanctioned way that not only Debian, but all downstream redistributors can and should use).","accounts_in_message":[],"_revision_number":2},{"id":"0b007377fc708f421f8ab98bd201e2e32502f4f5","author":{"_account_id":7687,"name":"Donald Stufft","email":"donald@stufft.io","username":"dstufft"},"date":"2015-02-20 12:27:37.000000000","message":"Patch Set 2:\n\nThe only way this could possibly work is for glance to go through and anywhere requests uses it\u0027s bundled copy of urllib3, to go through and subclass/monkeypatch/etc and replace its usage of ``requests.packages.urllib3`` with just plain ``urllib3``. At that point you\u0027d basically be reimplementing large parts of requests inside of glanceclient just because you would prefer to import from the top level, even though Debian and other systems should (and are) be using the mechanism to allow ``requests.packages.urllib3`` to be an alias for ``urllib3``. Even if glancelcient wanted to duplicate requests in that fashion, it still might not even work because requests doesn\u0027t have a policy that it only relies on releases copies of urllib3, so it\u0027s entirely possible for a version of requests to be released that depends on an unreleased API or function or whatever inside of urllib3, so in that case even if you did reimplement all of that and are using the latest released copy of urllib3, that may not be enough to actually provide everything that requests needs.","accounts_in_message":[],"_revision_number":2},{"id":"fc622210164bea67856b2a24d1d19d4505bb5f07","author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"date":"2015-02-20 12:36:17.000000000","message":"Patch Set 2: Code-Review-2\n\nAt least this change will break stable compatibility.\n\nAlso I think we had enough gray hair last time we were battling with this. I do not want be chasing gate failures again because of this.\n\nThomas, you just need to make sure you don\u0027t break things when you do Debian specific changes (like de-vendorizing components).","accounts_in_message":[],"_revision_number":2},{"id":"a44265c6dafac733ee62e77d21bbcaf42111dd2d","author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"date":"2015-03-01 16:42:13.000000000","message":"Abandoned\n\nAs per the discussion of the patch, I should abandon it.","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"4c3cf9509457e291c1c4bfcdb5330befe983d2f2","revisions":{"cdeb161fe2d23a413b93f78dc07c4873379cfbb3":{"kind":"REWORK","_number":1,"created":"2015-02-19 23:20:22.000000000","uploader":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"ref":"refs/changes/86/157586/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-glanceclient","ref":"refs/changes/86/157586/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/1"}}},"commit":{"parents":[{"commit":"72f0bc3579043b2f6ebb3fcf06a96e43406e5664","subject":"Merge \"Update HTTPS certificate handling for pep-0476\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/72f0bc3579043b2f6ebb3fcf06a96e43406e5664"}]}],"author":{"name":"Thomas Goirand","email":"thomas@goirand.fr","date":"2015-02-19 23:15:13.000000000","tz":60},"committer":{"name":"Thomas Goirand","email":"thomas@goirand.fr","date":"2015-02-19 23:20:20.000000000","tz":60},"subject":"Do not use urllib3 vendorized","message":"Do not use urllib3 vendorized\n\nWe now have urllib3 within the global-requirements. Therefore,\nthere is no reason why we should even attempt to use the\nvendorized version of the requests package anymore. Using it\nis dangerous, because it may lead to behavior which will be\ndifferent from the one when running on a distribution\n(reminder: Debian has a de-vendorized version of requests).\nTo avoid any occurence of such bad thing, we should never\neven do:\ntry:\n    from requests.packages.urllib3 import X\nexcept ImportError:\n    from urllib3 import X\n\nit should be always just from urllib3 import X, otherwise\nthe gate will behave differently than distributions.\n\nThis patch also adds urllib3 in glanceclient\u0027s reqs.\n\nChange-Id: I0235cb6f9c4bfdae69b6bce03c78b3a0727c71b9\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/cdeb161fe2d23a413b93f78dc07c4873379cfbb3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/cdeb161fe2d23a413b93f78dc07c4873379cfbb3"}]},"branch":"refs/heads/master"},"4c3cf9509457e291c1c4bfcdb5330befe983d2f2":{"kind":"REWORK","_number":2,"created":"2015-02-20 09:46:01.000000000","uploader":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"ref":"refs/changes/86/157586/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-glanceclient","ref":"refs/changes/86/157586/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-glanceclient refs/changes/86/157586/2"}}},"commit":{"parents":[{"commit":"72f0bc3579043b2f6ebb3fcf06a96e43406e5664","subject":"Merge \"Update HTTPS certificate handling for pep-0476\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/72f0bc3579043b2f6ebb3fcf06a96e43406e5664"}]}],"author":{"name":"Thomas Goirand","email":"thomas@goirand.fr","date":"2015-02-19 23:15:13.000000000","tz":60},"committer":{"name":"Thomas Goirand","email":"thomas@goirand.fr","date":"2015-02-20 09:45:51.000000000","tz":60},"subject":"Do not use urllib3 vendorized","message":"Do not use urllib3 vendorized\n\nWe now have urllib3 within the global-requirements. Therefore,\nthere is no reason why we should even attempt to use the\nvendorized version of the requests package anymore. Using it\nis dangerous, because it may lead to behavior which will be\ndifferent from the one when running on a distribution\n(reminder: Debian has a de-vendorized version of requests).\nTo avoid any occurence of such bad thing, we should never\neven do:\ntry:\n    from requests.packages.urllib3 import X\nexcept ImportError:\n    from urllib3 import X\n\nit should be always just from urllib3 import X, otherwise\nthe gate will behave differently than distributions.\n\nThis patch also adds urllib3 in glanceclient\u0027s reqs.\n\nChange-Id: I0235cb6f9c4bfdae69b6bce03c78b3a0727c71b9\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/4c3cf9509457e291c1c4bfcdb5330befe983d2f2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/4c3cf9509457e291c1c4bfcdb5330befe983d2f2"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
