Hello community,

here is the log from the commit of package python-msrest for openSUSE:Factory 
checked in at 2017-07-19 11:21:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-msrest (Old)
 and      /work/SRC/openSUSE:Factory/.python-msrest.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-msrest"

Wed Jul 19 11:21:24 2017 rev:2 rq:510104 version:0.4.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-msrest/python-msrest.changes      
2017-02-03 18:57:51.453661784 +0100
+++ /work/SRC/openSUSE:Factory/.python-msrest.new/python-msrest.changes 
2017-07-19 12:21:53.384902716 +0200
@@ -1,0 +2,9 @@
+Mon Jul 10 13:20:42 UTC 2017 - adrian.glaub...@suse.com
+
+- New upstream release
+  + Version 0.4.11
+- Provide full source URL in Source field
+- Convert package to single spec
+- Remove python-enum34 from Requires
+
+-------------------------------------------------------------------

Old:
----
  msrest-0.4.4.tar.gz

New:
----
  msrest-0.4.11.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-msrest.spec ++++++
--- /var/tmp/diff_new_pack.Lg0E5h/_old  2017-07-19 12:21:53.876833299 +0200
+++ /var/tmp/diff_new_pack.Lg0E5h/_new  2017-07-19 12:21:53.876833299 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-msrest
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -14,27 +14,32 @@
 
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
+
+
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-msrest
-Version:        0.4.4
+Version:        0.4.11
 Release:        0
 Summary:        AutoRest swagger generator Python client runtime
 License:        MIT
 Group:          Development/Languages/Python
 Url:            https://pypi.python.org/pypi/msrest
-Source:         msrest-%{version}.tar.gz
+Source:         
https://files.pythonhosted.org/packages/source/m/msrest/msrest-%{version}.tar.gz
+BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
-BuildRequires:  python-devel
-BuildRequires:  python-setuptools
-Requires:       python-requests >= 2.7.0
-Requires:       python-keyring >= 5.6
-Requires:       python-requests-oauthlib >= 0.5.0
-Requires:       python-isodate >= 0.5.4
+BuildRequires:  python-rpm-macros
 Requires:       python-certifi >= 2015.9.6.2
 Requires:       python-chardet >= 2.3.0
-Requires:       python-enum34 >= 1.0.4
+Requires:       python-isodate >= 0.5.4
+Requires:       python-keyring >= 5.6
+Requires:       python-requests >= 2.7.0
+Requires:       python-requests-oauthlib >= 0.5.0
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildArch:      noarch
 
+%python_subpackages
+
 %description
 AutoRest swagger generator Python client runtime
 Swagger is a powerful open source framework: http://swagger.io
@@ -43,14 +48,14 @@
 %setup -q -n msrest-%{version}
 
 %build
-python setup.py build
+%python_build
 
 %install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%python_install
 
 %fdupes %{buildroot}/%{python_sitelib}/*
 
-%files
+%files %{python_files}
 %defattr(-,root,root,-)
 %{python_sitelib}/*
 

++++++ msrest-0.4.4.tar.gz -> msrest-0.4.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/PKG-INFO new/msrest-0.4.11/PKG-INFO
--- old/msrest-0.4.4/PKG-INFO   2016-09-14 17:29:02.000000000 +0200
+++ new/msrest-0.4.11/PKG-INFO  2017-06-21 21:22:45.000000000 +0200
@@ -1,14 +1,19 @@
 Metadata-Version: 1.1
 Name: msrest
-Version: 0.4.4
+Version: 0.4.11
 Summary: AutoRest swagger generator Python client runtime.
-Home-page: 
https://github.com/xingwu1/autorest/tree/python/ClientRuntimes/Python/msrest
+Home-page: https://github.com/Azure/msrest-for-python
 Author: Microsoft Corporation
 Author-email: UNKNOWN
 License: MIT License
 Description: AutoRest: Python Client Runtime
         ================================
         
+        .. image:: 
https://travis-ci.org/Azure/msrest-for-python.svg?branch=master
+         :target: https://travis-ci.org/Azure/msrest-for-python
+        
+        .. image:: 
https://codecov.io/gh/azure/msrest-for-python/branch/master/graph/badge.svg
+         :target: https://codecov.io/gh/azure/msrest-for-python
         
         Installation
         ------------
@@ -23,6 +28,71 @@
         Release History
         ---------------
         
+        2017-06-21 Version 0.4.11
+        +++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Fix incorrect dependency to "requests" 2.14.x, instead of 2.x meant 
in 0.4.8
+        
+        2017-06-15 Version 0.4.10
+        +++++++++++++++++++++++++
+        
+        **Features**
+        
+        - Add requests hooks to configuration
+        
+        2017-06-08 Version 0.4.9
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Accept "null" value for paging array as an empty list and do not 
raise (#30)
+        
+        2017-05-22 Version 0.4.8
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Fix random "pool is closed" error (#29)
+        - Fix requests dependency to version 2.x, since version 3.x is 
annunced to be breaking.
+        
+        2017-04-04 Version 0.4.7
+        ++++++++++++++++++++++++
+        
+        **BugFixes**
+        
+        - Refactor paging #22:
+        
+           - "next" is renamed "advance_page" and "next" returns only 1 
element (Python 2 expected behavior)
+           - paging objects are now real generator and support the "next()" 
built-in function without need for "iter()"
+        
+        - Raise accurate DeserialisationError on incorrect RestAPI 
discriminator usage #27
+        - Fix discriminator usage of the base class name #27
+        - Remove default mutable arguments in Clients #20
+        - Fix object comparison in some scenarios #24
+        
+        2017-03-06 Version 0.4.6
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Allow Model sub-classes to be serialized if type is "object"
+        
+        2017-02-13 Version 0.4.5
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Fix polymorphic deserialization #11
+        - Fix regexp validation if '\\w' is used in Python 2.7 #13
+        - Fix dict deserialization if keys are unicode in Python 2.7
+        
+        **Improvements**
+        
+        - Add polymorphic serialisation from dict objects
+        - Remove chardet and use HTTP charset declaration (fallback to utf8)
+        
         2016-09-14 Version 0.4.4
         ++++++++++++++++++++++++
         
@@ -152,6 +222,7 @@
         ++++++++++++++++++++++++
         
         - Initial release.
+        
 Platform: UNKNOWN
 Classifier: Development Status :: 4 - Beta
 Classifier: Programming Language :: Python
@@ -161,5 +232,6 @@
 Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Topic :: Software Development
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/README.rst new/msrest-0.4.11/README.rst
--- old/msrest-0.4.4/README.rst 1970-01-01 01:00:00.000000000 +0100
+++ new/msrest-0.4.11/README.rst        2017-06-21 21:21:28.000000000 +0200
@@ -0,0 +1,216 @@
+AutoRest: Python Client Runtime
+================================
+
+.. image:: https://travis-ci.org/Azure/msrest-for-python.svg?branch=master
+ :target: https://travis-ci.org/Azure/msrest-for-python
+
+.. image:: 
https://codecov.io/gh/azure/msrest-for-python/branch/master/graph/badge.svg
+ :target: https://codecov.io/gh/azure/msrest-for-python
+
+Installation
+------------
+
+To install:
+
+.. code-block:: bash
+
+    $ pip install msrest
+
+
+Release History
+---------------
+
+2017-06-21 Version 0.4.11
++++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Fix incorrect dependency to "requests" 2.14.x, instead of 2.x meant in 0.4.8
+
+2017-06-15 Version 0.4.10
++++++++++++++++++++++++++
+
+**Features**
+
+- Add requests hooks to configuration
+
+2017-06-08 Version 0.4.9
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Accept "null" value for paging array as an empty list and do not raise (#30)
+
+2017-05-22 Version 0.4.8
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Fix random "pool is closed" error (#29)
+- Fix requests dependency to version 2.x, since version 3.x is annunced to be 
breaking.
+
+2017-04-04 Version 0.4.7
+++++++++++++++++++++++++
+
+**BugFixes**
+
+- Refactor paging #22:
+
+   - "next" is renamed "advance_page" and "next" returns only 1 element 
(Python 2 expected behavior)
+   - paging objects are now real generator and support the "next()" built-in 
function without need for "iter()"
+
+- Raise accurate DeserialisationError on incorrect RestAPI discriminator usage 
#27
+- Fix discriminator usage of the base class name #27
+- Remove default mutable arguments in Clients #20
+- Fix object comparison in some scenarios #24
+
+2017-03-06 Version 0.4.6
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Allow Model sub-classes to be serialized if type is "object"
+
+2017-02-13 Version 0.4.5
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Fix polymorphic deserialization #11
+- Fix regexp validation if '\\w' is used in Python 2.7 #13
+- Fix dict deserialization if keys are unicode in Python 2.7
+
+**Improvements**
+
+- Add polymorphic serialisation from dict objects
+- Remove chardet and use HTTP charset declaration (fallback to utf8)
+
+2016-09-14 Version 0.4.4
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Remove paging URL validation, part of fix 
https://github.com/Azure/autorest/pull/1420
+
+**Disclaimer**
+
+In order to get paging fixes for impacted clients, you need this package and 
Autorest > 0.17.0 Nightly 20160913
+
+2016-09-01 Version 0.4.3
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Better exception message (https://github.com/Azure/autorest/pull/1300)
+
+2016-08-15 Version 0.4.2
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Fix serialization if "object" type contains None 
(https://github.com/Azure/autorest/issues/1353)
+
+2016-08-08 Version 0.4.1
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Fix compatibility issues with requests 2.11.0 
(https://github.com/Azure/autorest/issues/1337)
+- Allow url of ClientRequest to have parameters 
(https://github.com/Azure/autorest/issues/1217)
+
+2016-05-25 Version 0.4.0
+++++++++++++++++++++++++
+
+This version has no bug fixes, but implements new features of Autorest:
+- Base64 url type
+- unixtime type
+- x-ms-enum modelAsString flag
+
+**Behaviour changes**
+
+- Add Platform information in UserAgent
+- Needs Autorest > 0.17.0 Nightly 20160525
+
+2016-04-26 Version 0.3.0
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Read only values are no longer in __init__ or sent to the server 
(https://github.com/Azure/autorest/pull/959)
+- Useless kwarg removed
+
+**Behaviour changes**
+
+- Needs Autorest > 0.16.0 Nightly 20160426
+
+
+2016-03-25 Version 0.2.0
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Manage integer enum values (https://github.com/Azure/autorest/pull/879)
+- Add missing application/json Accept HTTP header 
(https://github.com/Azure/azure-sdk-for-python/issues/553)
+
+**Behaviour changes**
+
+- Needs Autorest > 0.16.0 Nightly 20160324
+
+
+2016-03-21 Version 0.1.3
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Deserialisation of generic resource if null in JSON 
(https://github.com/Azure/azure-sdk-for-python/issues/544)
+
+
+2016-03-14 Version 0.1.2
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- urllib3 side effect (https://github.com/Azure/autorest/issues/824)
+
+
+2016-03-04 Version 0.1.1
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Source package corrupted in Pypi 
(https://github.com/Azure/autorest/issues/799)
+
+2016-03-04 Version 0.1.0
++++++++++++++++++++++++++
+
+**Behavioural Changes**
+
+- Removed custom logging set up and configuration. All loggers are now 
children of the root logger 'msrest' with no pre-defined configurations.
+- Replaced _required attribute in Model class with more extensive _validation 
dict.
+
+**Improvement**
+
+- Removed hierarchy scanning for attribute maps from base Model class - relies 
on generator to populate attribute
+  maps according to hierarchy.
+- Base class Paged now inherits from collections.Iterable.
+- Data validation during serialization using custom parameters (e.g. max, min 
etc).
+- Added ValidationError to be raised if invalid data encountered during 
serialization.
+
+2016-02-29 Version 0.0.3
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Source package corrupted in Pypi 
(https://github.com/Azure/autorest/issues/718)
+
+2016-02-19 Version 0.0.2
+++++++++++++++++++++++++
+
+**Bugfixes**
+
+- Fixed bug in exception logging before logger configured.
+
+2016-02-19 Version 0.0.1
+++++++++++++++++++++++++
+
+- Initial release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/configuration.py 
new/msrest-0.4.11/msrest/configuration.py
--- old/msrest-0.4.4/msrest/configuration.py    2016-08-08 22:09:28.000000000 
+0200
+++ new/msrest-0.4.11/msrest/configuration.py   2017-06-21 21:21:28.000000000 
+0200
@@ -74,6 +74,11 @@
             requests.__version__,
             msrest_version)
 
+        # Requests hooks. Must respect requests hook callback signature
+        # Note that we will inject the following parameters:
+        # - kwargs['msrest']['session'] with the current session
+        self.hooks = []
+
         self._config = configparser.ConfigParser()
         self._config.optionxform = str
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/exceptions.py 
new/msrest-0.4.11/msrest/exceptions.py
--- old/msrest-0.4.4/msrest/exceptions.py       2016-09-01 22:15:32.000000000 
+0200
+++ new/msrest-0.4.11/msrest/exceptions.py      2017-06-21 21:21:28.000000000 
+0200
@@ -113,7 +113,7 @@
 
 
 class HttpOperationError(ClientException):
-    """Client request failed due to server-specificed HTTP operation error.
+    """Client request failed due to server-specified HTTP operation error.
     Attempts to deserialize response into specific error object.
 
     :param Deserializer deserialize: Deserializer with data on custom
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/http_logger.py 
new/msrest-0.4.11/msrest/http_logger.py
--- old/msrest-0.4.4/msrest/http_logger.py      2016-08-08 22:09:28.000000000 
+0200
+++ new/msrest-0.4.11/msrest/http_logger.py     2017-06-21 21:21:28.000000000 
+0200
@@ -43,6 +43,8 @@
         _LOGGER.debug("Request method: %r", request.method)
         _LOGGER.debug("Request headers:")
         for header, value in request.headers.items():
+            if header.lower() == 'authorization':
+                value = '*****'
             _LOGGER.debug("    %r: %r", header, value)
         _LOGGER.debug("Request body:")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/paging.py 
new/msrest-0.4.11/msrest/paging.py
--- old/msrest-0.4.4/msrest/paging.py   2016-09-14 17:28:38.000000000 +0200
+++ new/msrest-0.4.11/msrest/paging.py  2017-06-21 21:21:28.000000000 +0200
@@ -23,14 +23,17 @@
 # IN THE SOFTWARE.
 #
 # --------------------------------------------------------------------------
-
-import collections
+try:
+    from collections.abc import Iterator
+    xrange = range
+except ImportError:
+    from collections import Iterator
 
 from .serialization import Deserializer
 from .pipeline import ClientRawResponse
 
 
-class Paged(collections.Iterable):
+class Paged(Iterator):
     """A container for paged REST responses.
 
     :param requests.Response response: server response object.
@@ -42,23 +45,18 @@
     _attribute_map = {}
 
     def __init__(self, command, classes, raw_headers=None):
-        self.next_link = ""
-        self.current_page = []
+        # Sets next_link, current_page, and _current_page_iter_index.
+        self.reset()
         self._derserializer = Deserializer(classes)
         self._get_next = command
         self._response = None
         self._raw_headers = raw_headers
 
     def __iter__(self):
-        """Iterate over response items in current page, automatically
-        retrieves next page.
-        """
-        for i in self.current_page:
-            yield i
-
-        while self.next_link is not None:
-            for i in self.next():
-                yield i
+        """Return 'self'."""
+        # Since iteration mutates this object, consider it an iterator 
in-and-of
+        # itself.
+        return self
 
     @classmethod
     def _get_subtype_map(cls):
@@ -73,22 +71,42 @@
         return raw
 
     def get(self, url):
-        """Get arbitrary page.
+        """Get an arbitrary page.
+
+        This resets the iterator and then fully consumes it to return the
+        specific page **only**.
 
         :param str url: URL to arbitrary page results.
         """
+        self.reset()
         self.next_link = url
-        return self.next()
+        return self.advance_page()
 
     def reset(self):
         """Reset iterator to first page."""
         self.next_link = ""
         self.current_page = []
+        self._current_page_iter_index = 0
 
-    def next(self):
-        """Get next page."""
+    def advance_page(self):
         if self.next_link is None:
-            raise GeneratorExit("End of paging")
+            raise StopIteration("End of paging")
+        self._current_page_iter_index = 0
         self._response = self._get_next(self.next_link)
         self._derserializer(self, self._response)
         return self.current_page
+
+    def __next__(self):
+        """Iterate through responses."""
+        # Storing the list iterator might work out better, but there's no
+        # guarantee that some code won't replace the list entirely with a copy,
+        # invalidating an list iterator that might be saved between iterations.
+        if self.current_page and self._current_page_iter_index < 
len(self.current_page):
+            response = self.current_page[self._current_page_iter_index]
+            self._current_page_iter_index += 1
+            return response
+        else:
+            self.advance_page()
+            return self.__next__()
+
+    next = __next__  # Python 2 compatibility.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/pipeline.py 
new/msrest-0.4.11/msrest/pipeline.py
--- old/msrest-0.4.4/msrest/pipeline.py 2016-08-08 22:12:12.000000000 +0200
+++ new/msrest-0.4.11/msrest/pipeline.py        2017-06-21 21:21:28.000000000 
+0200
@@ -42,136 +42,6 @@
 _LOGGER = logging.getLogger(__name__)
 
 
-class ClientHTTPAdapter(requests.adapters.HTTPAdapter):
-    """HTTP Adapter to customize REST pipeline in Requests.
-    Handles both request and response objects.
-    """
-
-    def __init__(self, config):
-        self._client_hooks = {
-            'request': ClientPipelineHook(),
-            'response': ClientPipelineHook()}
-
-        super(ClientHTTPAdapter, self).__init__()
-
-    def _test_pipeline(self, *args, **kwargs):
-        """
-        Custom pipeline manipulation for test framework,
-        """
-        test_hosts = [('http', 'localhost', 3000),
-                      ('http', 'localhost.', 3000)]
-        for host in test_hosts:
-            self.poolmanager.pools[host] = \
-                ClientHTTPConnectionPool(host[1], port=host[2])
-
-    def event_hook(event):
-        """Function decorator to wrap events with hook callbacks."""
-        def event_wrapper(func):
-
-            @functools.wraps(func)
-            def execute_hook(self, *args, **kwargs):
-                return self._client_hooks[event](func, self, *args, **kwargs)
-
-            return execute_hook
-        return event_wrapper
-
-    def add_hook(self, event, callback, precall=True, overwrite=False):
-        """Add an event callback to hook into the REST pipeline.
-
-        :param str event: The event to hook. Currently supports 'request'
-         and 'response'.
-        :param callable callback: The function to call.
-        :param bool precall: Whether the function will be called before or
-         after the event.
-        :param bool overwrite: Whether the function will overwrite the
-         original event.
-        :raises: TypeError if the callback is not a function.
-        :raises: KeyError if the event is not supported.
-        """
-        if not callable(callback):
-            raise TypeError("Callback must be callable.")
-
-        if event not in self._client_hooks:
-            raise KeyError(
-                "Event: {!r} is not able to be hooked.".format(event))
-
-        if precall:
-            debug = "Adding %r callback before event: %r"
-            _LOGGER.debug(debug, callback.__name__, event)
-            self._client_hooks[event].precalls.append(callback)
-        else:
-            debug = "Adding %r callback after event: %r"
-            _LOGGER.debug(debug, callback.__name__, event)
-            self._client_hooks[event].postcalls.append(callback)
-
-        debug = "Callback to overwrite original call: %r"
-        _LOGGER.debug(debug, overwrite)
-        self._client_hooks[event].overwrite_call = overwrite
-
-    def remove_hook(self, event, callback):
-        """Remove a specified event hook from the pipeline.
-
-        :param str event: The event to hook. Currently supports 'request'
-         and 'response'.
-        :param callable callback: The function to remove.
-        :raises: KeyError if the event is not supported.
-        """
-        try:
-            hook_event = self._client_hooks[event]
-        except KeyError:
-            raise KeyError(
-                "Event: {!r} is not able to be hooked.".format(event))
-        else:
-            self._client_hooks[event].precalls = [
-                c for c in hook_event.precalls if c != callback]
-            self._client_hooks[event].postcalls = [
-                c for c in hook_event.postcalls if c != callback]
-
-    @event_hook("request")
-    def send(self, request, stream=False, timeout=None, verify=True,
-             cert=None, proxies=None):
-        """Sends the request object."""
-        return super(ClientHTTPAdapter, self).send(
-            request, stream, timeout, verify, cert, proxies)
-
-    @event_hook("response")
-    def build_response(self, req, resp):
-        """Builds the response object."""
-        return super(ClientHTTPAdapter, self).build_response(req, resp)
-
-
-class ClientPipelineHook(object):
-    """Pipeline hook to wrap a specific event.
-
-    :param bool overwrite: Whether to overwrite the original event.
-    """
-
-    def __init__(self, overwrite=False):
-        self.precalls = []
-        self.postcalls = []
-        self.overwrite_call = overwrite
-
-    def __call__(self, func, *args, **kwargs):
-        """Execute event and any wrapping callbacks.
-        The result of the event is passed into all post-event
-        callbacks with a 'result' keyword arg.
-        """
-        result = requests.Response()
-
-        for call in self.precalls:
-            # Execute any pre-event callabcks
-            call(*args, **kwargs)
-
-        if not self.overwrite_call:
-            # Execute original event
-            result = func(*args, **kwargs)
-
-        for call in self.postcalls:
-            # Execute any post-event callbacks
-            result = call(result=result, *args, **kwargs)
-
-        return result
-
 
 class ClientRequest(requests.Request):
     """Wrapper for requests.Request object."""
@@ -255,38 +125,6 @@
             self.headers[name] = value
 
 
-class ClientRetry(Retry):
-    """Wrapper for urllib3 Retry object.
-    """
-
-    def __init__(self, **kwargs):
-        self.retry_cookie = None
-
-        return super(ClientRetry, self).__init__(**kwargs)
-
-    def increment(self, method=None, url=None, response=None,
-                  error=None, _pool=None, _stacktrace=None):
-        increment = super(ClientRetry, self).increment(
-            method, url, response, error, _pool, _stacktrace)
-
-        if response:
-            # Fixes open socket warnings in Python 3.
-            response.close()
-            response.release_conn()
-
-            # Collect retry cookie - we only do this for the test server
-            # at this point, unless we implement a proper cookie policy.
-            increment.retry_cookie = response.getheader("Set-Cookie")
-        return increment
-
-    def is_forced_retry(self, method, status_code):
-        debug = "Received status: %r for method %r"
-        _LOGGER.debug(debug, status_code, method)
-        output = super(ClientRetry, self).is_forced_retry(method, status_code)
-        _LOGGER.debug("Is forced retry: %r", output)
-        return output
-
-
 class ClientRetryPolicy(object):
     """Retry configuration settings.
     Container for retry policy object.
@@ -295,7 +133,7 @@
     safe_codes = [i for i in range(500) if i != 408] + [501, 505]
 
     def __init__(self):
-        self.policy = ClientRetry()
+        self.policy = Retry()
         self.policy.total = 3
         self.policy.connect = 3
         self.policy.read = 3
@@ -419,36 +257,3 @@
         return {'timeout': self.timeout,
                 'verify': self.verify,
                 'cert': self.cert}
-
-
-class ClientHTTPConnectionPool(HTTPConnectionPool):
-    """Cookie logic only used for test server (localhost)"""
-
-    def _add_test_cookie(self, retries, headers):
-        host = self.host.strip('.')
-        if retries.retry_cookie and host == 'localhost':
-            if headers:
-                headers['cookie'] = retries.retry_cookie
-            else:
-                self.headers['cookie'] = retries.retry_cookie
-
-    def _remove_test_cookie(self, retries, headers):
-        host = self.host.strip('.')
-        if retries.retry_cookie and host == 'localhost':
-            retries.retry_cookie = None
-            if headers:
-                del headers['cookie']
-            else:
-                del self.headers['cookie']
-
-    def urlopen(self, method, url, body=None, headers=None,
-                retries=None, *args, **kwargs):
-        if hasattr(retries, 'retry_cookie'):
-            self._add_test_cookie(retries, headers)
-
-        response = super(ClientHTTPConnectionPool, self).urlopen(
-            method, url, body, headers, retries, *args, **kwargs)
-
-        if hasattr(retries, 'retry_cookie'):
-            self._remove_test_cookie(retries, headers)
-        return response
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/serialization.py 
new/msrest-0.4.11/msrest/serialization.py
--- old/msrest-0.4.4/msrest/serialization.py    2016-08-15 19:35:24.000000000 
+0200
+++ new/msrest-0.4.11/msrest/serialization.py   2017-06-21 21:21:28.000000000 
+0200
@@ -37,7 +37,6 @@
 except ImportError:
     from urllib.parse import quote
 
-import chardet
 import isodate
 
 from .exceptions import (
@@ -94,7 +93,7 @@
     def __eq__(self, other):
         """Compare objects by comparing all attributes."""
         if isinstance(other, self.__class__):
-            return self.__class__.__dict__ == other.__class__.__dict__
+            return self.__dict__ == other.__dict__
         return False
 
     def __ne__(self, other):
@@ -105,39 +104,46 @@
         return str(self.__dict__)
 
     @classmethod
-    def _get_subtype_map(cls):
-        attr = '_subtype_map'
-        parents = cls.__bases__
-        for base in parents:
-            if hasattr(base, attr) and base._subtype_map:
-                return base._subtype_map
-        return {}
+    def _flatten_subtype(cls, key, objects):
+        if not '_subtype_map' in cls.__dict__:
+            return {}
+        result = dict(cls._subtype_map[key])
+        for valuetype in cls._subtype_map[key].values():
+            result.update(objects[valuetype]._flatten_subtype(key, objects))
+        return result
 
     @classmethod
     def _classify(cls, response, objects):
         """Check the class _subtype_map for any child classes.
-        We want to ignore any inheirited _subtype_maps.
+        We want to ignore any inherited _subtype_maps.
+        Remove the polymorphic key from the initial data.
         """
-        try:
-            map = cls.__dict__.get('_subtype_map', {})
+        for subtype_key in cls.__dict__.get('_subtype_map', {}).keys():
+            subtype_value = None
 
-            for _type, _classes in map.items():
-                classification = response.get(_type)
+            rest_api_response_key = 
_decode_attribute_map_key(cls._attribute_map[subtype_key]['key'])
+            subtype_value = response.pop(rest_api_response_key, None) or 
response.pop(subtype_key, None)
+            if subtype_value:
+                # Try to match base class. Can be class name only
+                # (bug to fix in Autorest to support x-ms-discriminator-name)
+                if cls.__name__ == subtype_value:
+                    return cls
+                flatten_mapping_type = cls._flatten_subtype(subtype_key, 
objects)
                 try:
-                    return objects[_classes[classification]]
+                    return objects[flatten_mapping_type[subtype_value]]
                 except KeyError:
-                    pass
+                    raise DeserializationError("Subtype value {} has no 
mapping".format(subtype_value))
+            else:
+                raise DeserializationError("Discriminator {} cannot be absent 
or null".format(subtype_key))
+        return cls
 
-                for c in _classes:
-                    try:
-                        _cls = objects[_classes[c]]
-                        return _cls._classify(response, objects)
-                    except (KeyError, TypeError):
-                        continue
-            raise TypeError("Object cannot be classified futher.")
-        except AttributeError:
-            raise TypeError("Object cannot be classified futher.")
+def _decode_attribute_map_key(key):
+    """This decode a key in an _attribute_map to the actual key we want to 
look at
+       inside the received data.
 
+       :param str key: A key string from the generated code
+    """
+    return key.replace('\\.', '.')
 
 def _convert_to_datatype(data, data_type, localtypes):
     if data is None:
@@ -157,6 +163,7 @@
         elif issubclass(data_obj, Enum):
             return data
         elif not isinstance(data, data_obj):
+            data_obj = data_obj._classify(data, localtypes)
             result = {
                 key: _convert_to_datatype(
                     data[key],
@@ -165,10 +172,14 @@
             }
             data = data_obj(**result)
         else:
+            constants = [name for name, config in getattr(data, '_validation', 
{}).items()
+                         if config.get('constant')]
             try:
-                for attr, map in data._attribute_map.items():
+                for attr, mapconfig in data._attribute_map.items():
+                    if attr in constants:
+                        continue
                     setattr(data, attr, _convert_to_datatype(
-                        getattr(data, attr), map['type'], localtypes))
+                        getattr(data, attr), mapconfig['type'], localtypes))
             except AttributeError:
                 pass
     return data
@@ -191,11 +202,11 @@
         "maximum_ex": lambda x, y: x >= y,
         "min_items": lambda x, y: len(x) < y,
         "max_items": lambda x, y: len(x) > y,
-        "pattern": lambda x, y: not re.match(y, x),
+        "pattern": lambda x, y: not re.match(y, x, re.UNICODE),
         "unique": lambda x, y: len(x) != len(set(x)),
         "multiple": lambda x, y: x % y != 0
         }
-    flattten = re.compile(r"(?<!\\)\.")
+    flatten = re.compile(r"(?<!\\)\.")
 
     def __init__(self, classes=None):
         self.serialize_type = {
@@ -241,18 +252,17 @@
 
         try:
             attributes = target_obj._attribute_map
-            self._classify_data(target_obj, class_name, serialized)
-
             for attr, map in attributes.items():
                 attr_name = attr
+                debug_name = "{}.{}".format(class_name, attr_name)
                 try:
-                    keys = self.flattten.split(map['key'])
-                    keys = [k.replace('\\.', '.') for k in keys]
+                    keys = self.flatten.split(map['key'])
+                    keys = [_decode_attribute_map_key(k) for k in keys]
                     attr_type = map['type']
                     orig_attr = getattr(target_obj, attr)
                     validation = target_obj._validation.get(attr_name, {})
                     orig_attr = self.validate(
-                        orig_attr, attr_name, **validation)
+                        orig_attr, debug_name, **validation)
                     new_attr = self.serialize_data(
                         orig_attr, attr_type, **kwargs)
 
@@ -271,24 +281,12 @@
                     continue
 
         except (AttributeError, KeyError, TypeError) as err:
-            msg = "Attribute {} in object {} cannot be serialized.".format(
-                attr_name, class_name)
+            msg = "Attribute {} in object {} cannot be serialized.\n{}".format(
+                attr_name, class_name, str(target_obj))
             raise_with_traceback(SerializationError, msg, err)
         else:
             return serialized
 
-    def _classify_data(self, target_obj, class_name, serialized):
-        """Check whether this object is a child and therefor needs to be
-        classified in the message.
-        """
-        try:
-            for _type, _classes in target_obj._get_subtype_map().items():
-                for ref, name in _classes.items():
-                    if name == class_name:
-                        serialized[_type] = ref
-        except AttributeError:
-            pass  # TargetObj has no _subtype_map so we don't need to classify.
-
     def body(self, data, data_type, **kwargs):
         """Serialize data intended for a request body.
 
@@ -498,10 +496,10 @@
         serialized = {}
         for key, value in attr.items():
             try:
-                serialized[str(key)] = self.serialize_data(
+                serialized[self.serialize_unicode(key)] = self.serialize_data(
                     value, dict_type, **kwargs)
             except ValueError:
-                serialized[str(key)] = None
+                serialized[self.serialize_unicode(key)] = None
         return serialized
 
     def serialize_object(self, attr, **kwargs):
@@ -518,15 +516,17 @@
         obj_type = type(attr)
         if obj_type in self.basic_types:
             return self.serialize_basic(attr, self.basic_types[obj_type])
+        elif obj_type in self.dependencies.values():
+            return self._serialize(attr)
 
         if obj_type == dict:
             serialized = {}
             for key, value in attr.items():
                 try:
-                    serialized[str(key)] = self.serialize_object(
+                    serialized[self.serialize_unicode(key)] = 
self.serialize_object(
                         value, **kwargs)
                 except ValueError:
-                    serialized[str(key)] = None
+                    serialized[self.serialize_unicode(key)] = None
             return serialized
 
         if obj_type == list:
@@ -751,9 +751,9 @@
                 while '.' in key:
                     dict_keys = self.flatten.split(key)
                     if len(dict_keys) == 1:
-                        key = dict_keys[0].replace('\\.', '.')
+                        key = _decode_attribute_map_key(dict_keys[0])
                         break
-                    working_key = dict_keys[0].replace('\\.', '.')
+                    working_key = _decode_attribute_map_key(dict_keys[0])
                     working_data = working_data.get(working_key, data)
                     key = '.'.join(dict_keys[1:])
 
@@ -785,8 +785,8 @@
 
         try:
             target = target._classify(data, self.dependencies)
-        except (TypeError, AttributeError):
-            pass  # Target has no subclasses, so can't classify further.
+        except AttributeError:
+            pass  # Target is not a Model, no classify
         return target, target.__class__.__name__
 
     def _unpack_content(self, raw_data):
@@ -797,25 +797,17 @@
          be returned.
         """
         if raw_data and isinstance(raw_data, bytes):
-            data = raw_data.decode(
-                encoding=chardet.detect(raw_data)['encoding'])
+            data = raw_data.decode(encoding='utf-8')
         else:
             data = raw_data
 
-        if hasattr(raw_data, 'content'):
-            if not raw_data.content:
+        try:
+            # This is a requests.Response, json valid if nothing fail
+            if not raw_data.text:
                 return None
-
-            if isinstance(raw_data.content, bytes):
-                encoding = chardet.detect(raw_data.content)["encoding"]
-                data = raw_data.content.decode(encoding=encoding)
-            else:
-                data = raw_data.content
-            try:
-                return json.loads(data)
-            except (ValueError, TypeError):
-                return data
-
+            return json.loads(raw_data.text)
+        except (ValueError, TypeError, AttributeError):
+                pass
         return data
 
     def _instantiate_model(self, response, attrs):
@@ -825,7 +817,7 @@
         :param d_attrs: The deserialized response attributes.
         """
         if callable(response):
-            subtype = response._get_subtype_map()
+            subtype = getattr(response, '_subtype_map', {})
             try:
                 readonly = [k for k, v in response._validation.items()
                             if v.get('readonly')]
@@ -906,9 +898,9 @@
         :rtype: dict
         """
         if isinstance(attr, list):
-            return {str(x['key']): self.deserialize_data(
+            return {x['key']: self.deserialize_data(
                 x['value'], dict_type) for x in attr}
-        return {str(k): self.deserialize_data(
+        return {k: self.deserialize_data(
             v, dict_type) for k, v in attr.items()}
 
     def deserialize_object(self, attr, **kwargs):
@@ -931,10 +923,10 @@
             deserialized = {}
             for key, value in attr.items():
                 try:
-                    deserialized[str(key)] = self.deserialize_object(
+                    deserialized[key] = self.deserialize_object(
                         value, **kwargs)
                 except ValueError:
-                    deserialized[str(key)] = None
+                    deserialized[key] = None
             return deserialized
 
         if obj_type == list:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/service_client.py 
new/msrest-0.4.11/msrest/service_client.py
--- old/msrest-0.4.4/msrest/service_client.py   2016-08-08 22:09:28.000000000 
+0200
+++ new/msrest-0.4.11/msrest/service_client.py  2017-06-21 21:21:28.000000000 
+0200
@@ -33,10 +33,10 @@
     from urllib.parse import urljoin, urlparse
 
 from oauthlib import oauth2
-import requests
+import requests.adapters
 
 from .authentication import Authentication
-from .pipeline import ClientHTTPAdapter, ClientRequest
+from .pipeline import ClientRequest
 from .http_logger import log_request, log_response
 from .exceptions import (
     TokenExpiredError,
@@ -60,13 +60,8 @@
     def __init__(self, creds, config):
         self.config = config
         self.creds = creds if creds else Authentication()
-
-        self._adapter = ClientHTTPAdapter(config)
         self._headers = {}
 
-        self._adapter.add_hook("request", log_request)
-        self._adapter.add_hook("response", log_response, precall=False)
-
     def _format_data(self, data):
         """Format field data according to whether it is a stream or
         a string for a form-data request.
@@ -131,14 +126,28 @@
             return redirect_logic(resp, req, **kwargs) if attempt else []
 
         session.resolve_redirects = wrapped_redirect
-        self._adapter.max_retries = config.get(
+        def log_hook(r, *args, **kwargs):
+            log_request(None, r.request)
+            log_response(None, r.request, r, result=r)
+        session.hooks['response'].append(log_hook)
+
+        def make_user_hook_cb(user_hook, session):
+            def user_hook_cb(r, *args, **kwargs):
+                kwargs.setdefault("msrest", {})['session'] = session
+                return user_hook(r, *args, **kwargs)
+            return user_hook_cb
+
+        for user_hook in self.config.hooks:
+            session.hooks['response'].append(make_user_hook_cb(user_hook, 
session))
+
+        max_retries = config.get(
             'retries', self.config.retry_policy())
         for protocol in self._protocols:
-            session.mount(protocol, self._adapter)
-
+            session.mount(protocol,
+                          
requests.adapters.HTTPAdapter(max_retries=max_retries))
         return kwargs
 
-    def send_formdata(self, request, headers={}, content={}, **config):
+    def send_formdata(self, request, headers=None, content=None, **config):
         """Send data as a multipart form-data request.
         We only deal with file-like objects or strings at this point.
         The requests is not yet streamed.
@@ -148,11 +157,11 @@
         :param dict content: Dictionary of the fields of the formdata.
         :param config: Any specific config overrides.
         """
+        if content is None:
+            content = {}
         file_data = {f: self._format_data(d) for f, d in content.items()}
-        try:
-            del headers['Content-Type']
-        except KeyError:
-            pass
+        if headers:
+            headers.pop('Content-Type', None)
         return self.send(request, headers, None, files=file_data, **config)
 
     def send(self, request, headers=None, content=None, **config):
@@ -231,7 +240,6 @@
                     callback(chunk, response=data)
                 yield chunk
         data.close()
-        self._adapter.close()
 
     def stream_upload(self, data, callback):
         """Generator for streaming request body data.
@@ -261,26 +269,6 @@
             url = urljoin(base + '/', url)
         return url
 
-    def add_hook(self, event, hook, precall=True, overwrite=False):
-        """
-        Add event callback.
-
-        :param str event: The pipeline event to hook. Currently supports
-         'request' and 'response'.
-        :param callable hook: The callback function.
-        """
-        self._adapter.add_hook(event, hook, precall, overwrite)
-
-    def remove_hook(self, event, hook):
-        """
-        Remove event callback.
-
-        :param str event: The pipeline event to hook. Currently supports
-         'request' and 'response'.
-        :param callable hook: The callback function.
-        """
-        self._adapter.remove_hook(event, hook)
-
     def add_header(self, header, value):
         """Add a persistent header - this header will be applied to all
         requests sent during the current client session.
@@ -290,7 +278,7 @@
         """
         self._headers[header] = value
 
-    def get(self, url=None, params={}):
+    def get(self, url=None, params=None):
         """Create a GET request object.
 
         :param str url: The request URL.
@@ -300,7 +288,7 @@
         request.method = 'GET'
         return request
 
-    def put(self, url=None, params={}):
+    def put(self, url=None, params=None):
         """Create a PUT request object.
 
         :param str url: The request URL.
@@ -310,7 +298,7 @@
         request.method = 'PUT'
         return request
 
-    def post(self, url=None, params={}):
+    def post(self, url=None, params=None):
         """Create a POST request object.
 
         :param str url: The request URL.
@@ -320,7 +308,7 @@
         request.method = 'POST'
         return request
 
-    def head(self, url=None, params={}):
+    def head(self, url=None, params=None):
         """Create a HEAD request object.
 
         :param str url: The request URL.
@@ -330,7 +318,7 @@
         request.method = 'HEAD'
         return request
 
-    def patch(self, url=None, params={}):
+    def patch(self, url=None, params=None):
         """Create a PATCH request object.
 
         :param str url: The request URL.
@@ -340,7 +328,7 @@
         request.method = 'PATCH'
         return request
 
-    def delete(self, url=None, params={}):
+    def delete(self, url=None, params=None):
         """Create a DELETE request object.
 
         :param str url: The request URL.
@@ -350,7 +338,7 @@
         request.method = 'DELETE'
         return request
 
-    def merge(self, url=None, params={}):
+    def merge(self, url=None, params=None):
         """Create a MERGE request object.
 
         :param str url: The request URL.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest/version.py 
new/msrest-0.4.11/msrest/version.py
--- old/msrest-0.4.4/msrest/version.py  2016-09-14 17:28:38.000000000 +0200
+++ new/msrest-0.4.11/msrest/version.py 2017-06-21 21:21:28.000000000 +0200
@@ -25,4 +25,4 @@
 # --------------------------------------------------------------------------
 
 
-msrest_version = "0.4.4"
+msrest_version = "0.4.11"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest.egg-info/PKG-INFO 
new/msrest-0.4.11/msrest.egg-info/PKG-INFO
--- old/msrest-0.4.4/msrest.egg-info/PKG-INFO   2016-09-14 17:29:02.000000000 
+0200
+++ new/msrest-0.4.11/msrest.egg-info/PKG-INFO  2017-06-21 21:22:45.000000000 
+0200
@@ -1,14 +1,19 @@
 Metadata-Version: 1.1
 Name: msrest
-Version: 0.4.4
+Version: 0.4.11
 Summary: AutoRest swagger generator Python client runtime.
-Home-page: 
https://github.com/xingwu1/autorest/tree/python/ClientRuntimes/Python/msrest
+Home-page: https://github.com/Azure/msrest-for-python
 Author: Microsoft Corporation
 Author-email: UNKNOWN
 License: MIT License
 Description: AutoRest: Python Client Runtime
         ================================
         
+        .. image:: 
https://travis-ci.org/Azure/msrest-for-python.svg?branch=master
+         :target: https://travis-ci.org/Azure/msrest-for-python
+        
+        .. image:: 
https://codecov.io/gh/azure/msrest-for-python/branch/master/graph/badge.svg
+         :target: https://codecov.io/gh/azure/msrest-for-python
         
         Installation
         ------------
@@ -23,6 +28,71 @@
         Release History
         ---------------
         
+        2017-06-21 Version 0.4.11
+        +++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Fix incorrect dependency to "requests" 2.14.x, instead of 2.x meant 
in 0.4.8
+        
+        2017-06-15 Version 0.4.10
+        +++++++++++++++++++++++++
+        
+        **Features**
+        
+        - Add requests hooks to configuration
+        
+        2017-06-08 Version 0.4.9
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Accept "null" value for paging array as an empty list and do not 
raise (#30)
+        
+        2017-05-22 Version 0.4.8
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Fix random "pool is closed" error (#29)
+        - Fix requests dependency to version 2.x, since version 3.x is 
annunced to be breaking.
+        
+        2017-04-04 Version 0.4.7
+        ++++++++++++++++++++++++
+        
+        **BugFixes**
+        
+        - Refactor paging #22:
+        
+           - "next" is renamed "advance_page" and "next" returns only 1 
element (Python 2 expected behavior)
+           - paging objects are now real generator and support the "next()" 
built-in function without need for "iter()"
+        
+        - Raise accurate DeserialisationError on incorrect RestAPI 
discriminator usage #27
+        - Fix discriminator usage of the base class name #27
+        - Remove default mutable arguments in Clients #20
+        - Fix object comparison in some scenarios #24
+        
+        2017-03-06 Version 0.4.6
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Allow Model sub-classes to be serialized if type is "object"
+        
+        2017-02-13 Version 0.4.5
+        ++++++++++++++++++++++++
+        
+        **Bugfixes**
+        
+        - Fix polymorphic deserialization #11
+        - Fix regexp validation if '\\w' is used in Python 2.7 #13
+        - Fix dict deserialization if keys are unicode in Python 2.7
+        
+        **Improvements**
+        
+        - Add polymorphic serialisation from dict objects
+        - Remove chardet and use HTTP charset declaration (fallback to utf8)
+        
         2016-09-14 Version 0.4.4
         ++++++++++++++++++++++++
         
@@ -152,6 +222,7 @@
         ++++++++++++++++++++++++
         
         - Initial release.
+        
 Platform: UNKNOWN
 Classifier: Development Status :: 4 - Beta
 Classifier: Programming Language :: Python
@@ -161,5 +232,6 @@
 Classifier: Programming Language :: Python :: 3.3
 Classifier: Programming Language :: Python :: 3.4
 Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Topic :: Software Development
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest.egg-info/SOURCES.txt 
new/msrest-0.4.11/msrest.egg-info/SOURCES.txt
--- old/msrest-0.4.4/msrest.egg-info/SOURCES.txt        2016-09-14 
17:29:02.000000000 +0200
+++ new/msrest-0.4.11/msrest.egg-info/SOURCES.txt       2017-06-21 
21:22:45.000000000 +0200
@@ -1,5 +1,6 @@
 MANIFEST.in
-readme.rst
+README.rst
+setup.cfg
 setup.py
 msrest/__init__.py
 msrest/authentication.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/msrest.egg-info/requires.txt 
new/msrest-0.4.11/msrest.egg-info/requires.txt
--- old/msrest-0.4.4/msrest.egg-info/requires.txt       2016-09-14 
17:29:02.000000000 +0200
+++ new/msrest-0.4.11/msrest.egg-info/requires.txt      2017-06-21 
21:22:45.000000000 +0200
@@ -1,7 +1,7 @@
-requests>=2.7.0
-keyring>=5.6
+requests~=2.14
 requests_oauthlib>=0.5.0
 isodate>=0.5.4
-certifi>=2015.9.6.2
-chardet>=2.3.0
+certifi>=2017.4.17
+
+[:python_version<'3.4']
 enum34>=1.0.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/readme.rst new/msrest-0.4.11/readme.rst
--- old/msrest-0.4.4/readme.rst 2016-09-14 17:28:38.000000000 +0200
+++ new/msrest-0.4.11/readme.rst        1970-01-01 01:00:00.000000000 +0100
@@ -1,146 +0,0 @@
-AutoRest: Python Client Runtime
-================================
-
-
-Installation
-------------
-
-To install:
-
-.. code-block:: bash
-
-    $ pip install msrest
-
-
-Release History
----------------
-
-2016-09-14 Version 0.4.4
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Remove paging URL validation, part of fix 
https://github.com/Azure/autorest/pull/1420
-
-**Disclaimer**
-
-In order to get paging fixes for impacted clients, you need this package and 
Autorest > 0.17.0 Nightly 20160913
-
-2016-09-01 Version 0.4.3
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Better exception message (https://github.com/Azure/autorest/pull/1300)
-
-2016-08-15 Version 0.4.2
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Fix serialization if "object" type contains None 
(https://github.com/Azure/autorest/issues/1353)
-
-2016-08-08 Version 0.4.1
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Fix compatibility issues with requests 2.11.0 
(https://github.com/Azure/autorest/issues/1337)
-- Allow url of ClientRequest to have parameters 
(https://github.com/Azure/autorest/issues/1217)
-
-2016-05-25 Version 0.4.0
-++++++++++++++++++++++++
-
-This version has no bug fixes, but implements new features of Autorest:
-- Base64 url type
-- unixtime type
-- x-ms-enum modelAsString flag
-
-**Behaviour changes**
-
-- Add Platform information in UserAgent
-- Needs Autorest > 0.17.0 Nightly 20160525
-
-2016-04-26 Version 0.3.0
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Read only values are no longer in __init__ or sent to the server 
(https://github.com/Azure/autorest/pull/959)
-- Useless kwarg removed
-
-**Behaviour changes**
-
-- Needs Autorest > 0.16.0 Nightly 20160426
-
-
-2016-03-25 Version 0.2.0
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Manage integer enum values (https://github.com/Azure/autorest/pull/879)
-- Add missing application/json Accept HTTP header 
(https://github.com/Azure/azure-sdk-for-python/issues/553)
-
-**Behaviour changes**
-
-- Needs Autorest > 0.16.0 Nightly 20160324
-
-
-2016-03-21 Version 0.1.3
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Deserialisation of generic resource if null in JSON 
(https://github.com/Azure/azure-sdk-for-python/issues/544)
-
-
-2016-03-14 Version 0.1.2
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- urllib3 side effect (https://github.com/Azure/autorest/issues/824)
-
-
-2016-03-04 Version 0.1.1
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Source package corrupted in Pypi 
(https://github.com/Azure/autorest/issues/799)
-
-2016-03-04 Version 0.1.0
-+++++++++++++++++++++++++
-
-**Behavioural Changes**
-
-- Removed custom logging set up and configuration. All loggers are now 
children of the root logger 'msrest' with no pre-defined configurations.
-- Replaced _required attribute in Model class with more extensive _validation 
dict.
-
-**Improvement**
-
-- Removed hierarchy scanning for attribute maps from base Model class - relies 
on generator to populate attribute
-  maps according to hierarchy.
-- Base class Paged now inherits from collections.Iterable.
-- Data validation during serialization using custom parameters (e.g. max, min 
etc).
-- Added ValidationError to be raised if invalid data encountered during 
serialization.
-
-2016-02-29 Version 0.0.3
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Source package corrupted in Pypi 
(https://github.com/Azure/autorest/issues/718)
-
-2016-02-19 Version 0.0.2
-++++++++++++++++++++++++
-
-**Bugfixes**
-
-- Fixed bug in exception logging before logger configured.
-
-2016-02-19 Version 0.0.1
-++++++++++++++++++++++++
-
-- Initial release.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/setup.cfg new/msrest-0.4.11/setup.cfg
--- old/msrest-0.4.4/setup.cfg  2016-09-14 17:29:02.000000000 +0200
+++ new/msrest-0.4.11/setup.cfg 2017-06-21 21:22:45.000000000 +0200
@@ -1,5 +1,7 @@
+[bdist_wheel]
+universal = 1
+
 [egg_info]
-tag_date = 0
-tag_svn_revision = 0
 tag_build = 
+tag_date = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msrest-0.4.4/setup.py new/msrest-0.4.11/setup.py
--- old/msrest-0.4.4/setup.py   2016-09-14 17:28:38.000000000 +0200
+++ new/msrest-0.4.11/setup.py  2017-06-21 21:21:28.000000000 +0200
@@ -28,14 +28,13 @@
 
 setup(
     name='msrest',
-    version='0.4.4',
+    version='0.4.11',
     author='Microsoft Corporation',
     packages=['msrest'],
-    url=("https://github.com/xingwu1/autorest/tree/python/";
-         "ClientRuntimes/Python/msrest"),
+    url=("https://github.com/Azure/msrest-for-python";),
     license='MIT License',
     description='AutoRest swagger generator Python client runtime.',
-    long_description=open('readme.rst').read(),
+    long_description=open('README.rst').read(),
     classifiers=[
         'Development Status :: 4 - Beta',
         'Programming Language :: Python',
@@ -45,14 +44,16 @@
         'Programming Language :: Python :: 3.3',
         'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
+        'Programming Language :: Python :: 3.6',
         'License :: OSI Approved :: MIT License',
         'Topic :: Software Development'],
     install_requires=[
-        "requests>=2.7.0",
-        "keyring>=5.6",
+        "requests~=2.14",
         "requests_oauthlib>=0.5.0",
         "isodate>=0.5.4",
-        "certifi>=2015.9.6.2",
-        "chardet>=2.3.0",
-        "enum34>=1.0.4"],
+        "certifi>=2017.4.17",
+    ],
+    extras_require={
+        ":python_version<'3.4'": ['enum34>=1.0.4'],
+    }
 )


Reply via email to