Please read and share my post on the changes and how to try them out.
http://libcloud.apache.org/blog/2016/04/06/requests-support.html

Anthony

On Wed, Apr 6, 2016 at 11:10 AM, anthony shaw <anthony.p.s...@gmail.com> wrote:
> I've dropped a package for anyone wanting to test this out on my
> personal apache space.
>
> They are signed with my PGP key as usual.
>
> pip install -e 
> http://people.apache.org/~anthonyshaw/libcloud/1.0.0-rc2-requests/apache-libcloud-1.0.0-rc2-requests.zip@feature#egg=apache-libcloud
>
> The hashes are on the space
> http://people.apache.org/~anthonyshaw/libcloud/1.0.0-rc2-requests/
>
> Anthony
>
> On Mon, Apr 4, 2016 at 11:22 PM, Markos Gogoulos <mgogou...@mist.io> wrote:
>> I don't think I will have the time during this week to test this, would
>> just like to say a big 'Bravo' for this work!
>>
>>
>>
>> On Mon, Apr 4, 2016 at 1:27 PM, anthony shaw <anthony.p.s...@gmail.com>
>> wrote:
>>
>>> As per the request of a number of our users, I've been working on a PR
>>> to replace the base HTTP connection classes with an implementation
>>> using the requests library.
>>>
>>> For the following reasons
>>>
>>> 1. requests is the defacto standard - it would be in the standard
>>> library but agreed against to allow it to develop faster
>>> https://github.com/kennethreitz/requests/issues/2424
>>> 2. it works with python 2.6->3.5
>>> 3. Our SSL implementation is bad for Windows users (yes, they do
>>> exist!) they have to download a copy of the certificate authority
>>> database from some random website, I've seen security people turn to
>>> stone whilst reading this
>>> 4. Developers can use requests_mock for deeper integration testing
>>> 5. less code to maintain
>>>
>>> The PR is #728 https://github.com/apache/libcloud/pull/728
>>>
>>> This started out as what I thought would be a simple change to update
>>> LibcloudHTTPSConnection and LibcloudHTTPConnection, after refactoring
>>> then I realised the classes were now identical and moved them into 1
>>> instance. There is no longer a need for conn_classes tuple in the
>>> Connection class, which is now a conn_class for a single class
>>> instance.
>>>
>>> This change ended up being less about the implementation of the base
>>> classes, which was quite simple really, but about updating tests.
>>>
>>> Aside from the Yak shaving I noticed a few things:
>>> 1) the tests were coupled to there being a conn_classes tuple, of the
>>> 6300+ tests, I broken 4300 in the first few commits
>>> 2) some of the test classes had a method called "respond" and due to
>>> Pythons multiple inheritance algorithm this covered the underlying
>>> response classes' implementation.
>>> 3) Our chunking support mocks for storage tests were designed to
>>> always pass, I've implemented a string iterator for the tests, but
>>> this still doesn't seem like a fair test
>>>
>>> So, after updating all of the test classes due to a combination of
>>> test fragility, changing the API (and the test mocks making
>>> assumptions about the existence and behaviour of internal fields), I
>>> now don't have the confidence that a 100% test pass means 0
>>> regression.
>>>
>>> I think the best approach is not to merge this PR into trunk, but into
>>> a seperate branch and allow further testing as a seperate package,
>>> e.g. apache-libcloud-requests
>>>
>>> Please share your thoughts, concerns and ideas
>>>
>>> Anthony
>>>

Reply via email to