Hello community, here is the log from the commit of package python-msrestazure for openSUSE:Factory checked in at 2019-05-14 13:39:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-msrestazure (Old) and /work/SRC/openSUSE:Factory/.python-msrestazure.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-msrestazure" Tue May 14 13:39:18 2019 rev:7 rq:694564 version:0.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-msrestazure/python-msrestazure.changes 2018-09-26 16:16:15.915004379 +0200 +++ /work/SRC/openSUSE:Factory/.python-msrestazure.new.5148/python-msrestazure.changes 2019-05-14 13:39:25.492134996 +0200 @@ -1,0 +2,10 @@ +Mon Apr 15 10:01:19 UTC 2019 - John Paul Adrian Glaubitz <adrian.glaub...@suse.com> + +- New upstream release + + Version 0.6.0 + + No upstream changelog provided +- Add %python_expand to %fdupes invocation +- Remove python-devel package from BuildRequires +- Update Requires from setup.py + +------------------------------------------------------------------- Old: ---- msrestazure-0.5.0.tar.gz New: ---- msrestazure-0.6.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-msrestazure.spec ++++++ --- /var/tmp/diff_new_pack.Tvv6ZJ/_old 2019-05-14 13:39:26.276136959 +0200 +++ /var/tmp/diff_new_pack.Tvv6ZJ/_new 2019-05-14 13:39:26.276136959 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-msrestazure # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 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 @@ -12,13 +12,13 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-msrestazure -Version: 0.5.0 +Version: 0.6.0 Release: 0 Summary: AutoRest swagger generator - Azure-specific module License: MIT @@ -26,14 +26,13 @@ Url: https://pypi.python.org/pypi/msrestazure Source: https://files.pythonhosted.org/packages/source/m/msrestazure/msrestazure-%{version}.tar.gz Source1: LICENSE.md -BuildRequires: %{python_module devel} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-adal < 2.0.0 Requires: python-adal >= 0.6.0 Requires: python-msrest < 2.0.0 -Requires: python-msrest >= 0.4.28 +Requires: python-msrest >= 0.6.0 BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch @@ -51,8 +50,7 @@ %install %python_install - -%fdupes %{buildroot}/%{python_sitelib}/* +%python_expand %fdupes %{buildroot}%{$python_sitelib} %files %{python_files} %defattr(-,root,root,-) ++++++ msrestazure-0.5.0.tar.gz -> msrestazure-0.6.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/PKG-INFO new/msrestazure-0.6.0/PKG-INFO --- old/msrestazure-0.5.0/PKG-INFO 2018-08-02 21:17:34.000000000 +0200 +++ new/msrestazure-0.6.0/PKG-INFO 2018-12-17 23:35:19.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: msrestazure -Version: 0.5.0 +Version: 0.6.0 Summary: AutoRest swagger generator Python client runtime. Azure-specific module. Home-page: https://github.com/Azure/msrestazure-for-python Author: Microsoft Corporation @@ -28,6 +28,31 @@ Release History --------------- + 2018-12-17 Version 0.6.0 + ++++++++++++++++++++++++ + + **Features** + + - Implementation of LRO async, based on msrest 0.6.x series (*experimental*) + + **Disclaimer** + + - This version contains no direct breaking changes, but is bumped to 0.6.x since it requires a breaking change version of msrest. + + Thanks to @gison93 for his documentation contribution + + 2018-11-01 Version 0.5.1 + ++++++++++++++++++++++++ + + **Bugfixes** + + - Fix CloudError if response and error message are provided at the same time #114 + - Fix LRO polling if last call is an empty Location (Autorest.Python 3.x only) #120 + + **Features** + + - Altered resource id parsing logic to allow for resource group IDs #117 + 2018-08-02 Version 0.5.0 ++++++++++++++++++++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/README.rst new/msrestazure-0.6.0/README.rst --- old/msrestazure-0.5.0/README.rst 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/README.rst 2018-12-17 23:34:36.000000000 +0100 @@ -20,6 +20,31 @@ Release History --------------- +2018-12-17 Version 0.6.0 +++++++++++++++++++++++++ + +**Features** + +- Implementation of LRO async, based on msrest 0.6.x series (*experimental*) + +**Disclaimer** + +- This version contains no direct breaking changes, but is bumped to 0.6.x since it requires a breaking change version of msrest. + +Thanks to @gison93 for his documentation contribution + +2018-11-01 Version 0.5.1 +++++++++++++++++++++++++ + +**Bugfixes** + +- Fix CloudError if response and error message are provided at the same time #114 +- Fix LRO polling if last call is an empty Location (Autorest.Python 3.x only) #120 + +**Features** + +- Altered resource id parsing logic to allow for resource group IDs #117 + 2018-08-02 Version 0.5.0 ++++++++++++++++++++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure/azure_active_directory.py new/msrestazure-0.6.0/msrestazure/azure_active_directory.py --- old/msrestazure-0.5.0/msrestazure/azure_active_directory.py 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure/azure_active_directory.py 2018-12-17 23:34:36.000000000 +0100 @@ -485,7 +485,7 @@ result.raise_for_status() except Exception as ex: # pylint: disable=broad-except _LOGGER.warning("MSI: Failed to retrieve a token from '%s' with an error of '%s'. This could be caused " - "by the MSI extension not yet fullly provisioned.", + "by the MSI extension not yet fully provisioned.", request_uri, ex) raise token_entry = result.json() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure/azure_exceptions.py new/msrestazure-0.6.0/msrestazure/azure_exceptions.py --- old/msrestazure-0.5.0/msrestazure/azure_exceptions.py 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure/azure_exceptions.py 2018-12-17 23:34:36.000000000 +0100 @@ -91,14 +91,14 @@ error_str += "\n\tMessage: {}".format(error_obj.message) if error_obj.target: error_str += "\n\tTarget: {}".format(error_obj.target) - if error_obj.innererror: - error_str += "\nInner error: {}".format(json.dumps(error_obj.innererror, indent=4)) + if error_obj.innererror: + error_str += "\nInner error: {}".format(json.dumps(error_obj.innererror, indent=4)) if error_obj.additionalInfo: error_str += "\n\tAdditional Information:" for error_info in error_obj.additionalInfo: error_str += "\n\t\t{}".format(str(error_info).replace("\n", "\n\t\t")) - if self.innererror: - error_str += "\nInner error: {}".format(json.dumps(self.innererror, indent=4)) + if self.innererror: + error_str += "\nInner error: {}".format(json.dumps(self.innererror, indent=4)) if self.additionalInfo: error_str += "\nAdditional Information:" for error_info in self.additionalInfo: @@ -168,9 +168,9 @@ else: self._build_error_data(response) - if not self.error or not self.message: - self._build_error_message(response) - + if not self.error or not self.message: + self._build_error_message(response) + super(CloudError, self).__init__( self.message, self.error, *args, **kwargs) @@ -203,15 +203,17 @@ return "Resource state {}".format(state) if state else "none" def _build_error_message(self, response): + # Assume ClientResponse has "body", and otherwise it's a requests.Response + content = response.text() if hasattr(response, "body") else response.text try: - data = response.json() + data = json.loads(content) except ValueError: message = "none" else: try: message = data.get("message", self._get_state(data)) except AttributeError: # data is not a dict, but is a requests.Response parsable as JSON - message = str(response.text) + message = str(content) try: response.raise_for_status() except RequestException as err: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure/azure_operation.py new/msrestazure-0.6.0/msrestazure/azure_operation.py --- old/msrestazure-0.5.0/msrestazure/azure_operation.py 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure/azure_operation.py 2018-12-17 23:34:36.000000000 +0100 @@ -335,9 +335,6 @@ """Initiates long running operation and polls status in separate thread. - This class is used in old SDK and has been replaced. See "polling" - submodule now. - :param callable send_cmd: The API request to initiate the operation. :param callable update_cmd: The API reuqest to check the status of the operation. @@ -502,7 +499,7 @@ :param int timeout: Perion of time to wait for the long running operation to complete. - :raises ~msrestazure.azure_exceptions.CloudError: Server problem with the query. + :raises CloudError: Server problem with the query. """ if self._thread is None: return diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure/polling/arm_polling.py new/msrestazure-0.6.0/msrestazure/polling/arm_polling.py --- old/msrestazure-0.5.0/msrestazure/polling/arm_polling.py 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure/polling/arm_polling.py 2018-12-17 23:34:36.000000000 +0100 @@ -23,14 +23,14 @@ # IN THE SOFTWARE. # # -------------------------------------------------------------------------- -import re +import json import time try: from urlparse import urlparse except ImportError: from urllib.parse import urlparse -from msrest.exceptions import DeserializationError, ClientException +from msrest.exceptions import DeserializationError from msrest.polling import PollingMethod from ..azure_exceptions import CloudError @@ -143,14 +143,29 @@ """Check if response body contains meaningful content. :rtype: bool - :raises: DeserializationError if response body contains invalid - json data. + :raises: DeserializationError if response body contains invalid json data. """ - if not response.content: + # Assume ClientResponse has "body", and otherwise it's a requests.Response + content = response.text() if hasattr(response, "body") else response.text + if not content: return True try: - body = response.json() - return not body + return not json.loads(content) + except ValueError: + raise DeserializationError( + "Error occurred in deserializing the response body.") + + def _as_json(self, response): + """Assuming this is not empty, return the content as JSON. + + Result/exceptions is not determined if you call this method without testing _is_empty. + + :raises: DeserializationError if response body contains invalid json data. + """ + # Assume ClientResponse has "body", and otherwise it's a requests.Response + content = response.text() if hasattr(response, "body") else response.text + try: + return json.loads(content) except ValueError: raise DeserializationError( "Error occurred in deserializing the response body.") @@ -171,7 +186,7 @@ """ if self._is_empty(response): return None - body = response.json() + body = self._as_json(response) return body.get('status') def _get_provisioning_state(self, response): @@ -182,7 +197,7 @@ """ if self._is_empty(response): return None - body = response.json() + body = self._as_json(response) return body.get("properties", {}).get("provisioningState") def should_do_final_get(self): @@ -262,7 +277,17 @@ status = self._get_provisioning_state(response) self.status = status or 'Succeeded' - self.resource = self._deserialize(response) + self.parse_resource(response) + + def parse_resource(self, response): + """Assuming this response is a resource, use the deserialization callback to parse it. + If body is empty, assuming no resource to return. + """ + self._raise_if_bad_http_status_and_method(response) + if not self._is_empty(response): + self.resource = self._deserialize(response) + else: + self.resource = None def get_status_from_async(self, response): """Process the latest status update retrieved from a @@ -398,7 +423,7 @@ else: final_get_url = self._operation.initial_response.request.url self._response = self.request_status(final_get_url) - self._operation.get_status_from_resource(self._response) + self._operation.parse_resource(self._response) def _delay(self): """Check for a 'retry-after' header to set timeout, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure/polling/async_arm_polling.py new/msrestazure-0.6.0/msrestazure/polling/async_arm_polling.py --- old/msrestazure-0.5.0/msrestazure/polling/async_arm_polling.py 1970-01-01 01:00:00.000000000 +0100 +++ new/msrestazure-0.6.0/msrestazure/polling/async_arm_polling.py 2018-12-17 23:34:36.000000000 +0100 @@ -0,0 +1,125 @@ +# -------------------------------------------------------------------------- +# +# Copyright (c) Microsoft Corporation. All rights reserved. +# +# The MIT License (MIT) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the ""Software""), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# -------------------------------------------------------------------------- +import asyncio + +from ..azure_exceptions import CloudError +from .arm_polling import ( + failed, + BadStatus, + BadResponse, + OperationFailed, + ARMPolling +) + +__all__ = ["AsyncARMPolling"] + +class AsyncARMPolling(ARMPolling): + """A subclass or ARMPolling that redefine "run" as async. + """ + + async def run(self): + try: + await self._poll() + except BadStatus: + self._operation.status = 'Failed' + raise CloudError(self._response) + + except BadResponse as err: + self._operation.status = 'Failed' + raise CloudError(self._response, str(err)) + + except OperationFailed: + raise CloudError(self._response) + + async def _poll(self): + """Poll status of operation so long as operation is incomplete and + we have an endpoint to query. + + :param callable update_cmd: The function to call to retrieve the + latest status of the long running operation. + :raises: OperationFailed if operation status 'Failed' or 'Cancelled'. + :raises: BadStatus if response status invalid. + :raises: BadResponse if response invalid. + """ + + while not self.finished(): + await self._delay() + await self.update_status() + + if failed(self._operation.status): + raise OperationFailed("Operation failed or cancelled") + + elif self._operation.should_do_final_get(): + if self._operation.method == 'POST' and self._operation.location_url: + final_get_url = self._operation.location_url + else: + final_get_url = self._operation.initial_response.request.url + self._response = await self.request_status(final_get_url) + self._operation.get_status_from_resource(self._response) + + async def _delay(self): + """Check for a 'retry-after' header to set timeout, + otherwise use configured timeout. + """ + if self._response is None: + await asyncio.sleep(0) + if self._response.headers.get('retry-after'): + await asyncio.sleep(int(self._response.headers['retry-after'])) + else: + await asyncio.sleep(self._timeout) + + async def update_status(self): + """Update the current status of the LRO. + """ + if self._operation.async_url: + self._response = await self.request_status(self._operation.async_url) + self._operation.set_async_url_if_present(self._response) + self._operation.get_status_from_async(self._response) + elif self._operation.location_url: + self._response = await self.request_status(self._operation.location_url) + self._operation.set_async_url_if_present(self._response) + self._operation.get_status_from_location(self._response) + elif self._operation.method == "PUT": + initial_url = self._operation.initial_response.request.url + self._response = await self.request_status(initial_url) + self._operation.set_async_url_if_present(self._response) + self._operation.get_status_from_resource(self._response) + else: + raise BadResponse("Unable to find status link for polling.") + + async def request_status(self, status_link): + """Do a simple GET to this status link. + + This method re-inject 'x-ms-client-request-id'. + + :rtype: requests.Response + """ + # ARM requires to re-inject 'x-ms-client-request-id' while polling + header_parameters = { + 'x-ms-client-request-id': self._operation.initial_response.request.headers['x-ms-client-request-id'] + } + request = self._client.get(status_link, headers=header_parameters) + return await self._client.async_send(request, stream=False, **self._operation_config) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure/tools.py new/msrestazure-0.6.0/msrestazure/tools.py --- old/msrestazure-0.5.0/msrestazure/tools.py 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure/tools.py 2018-12-17 23:34:36.000000000 +0100 @@ -33,7 +33,7 @@ _LOGGER = logging.getLogger(__name__) _ARMID_RE = re.compile( '(?i)/subscriptions/(?P<subscription>[^/]*)(/resourceGroups/(?P<resource_group>[^/]*))?' - '/providers/(?P<namespace>[^/]*)/(?P<type>[^/]*)/(?P<name>[^/]*)(?P<children>.*)') + '(/providers/(?P<namespace>[^/]*)/(?P<type>[^/]*)/(?P<name>[^/]*)(?P<children>.*))?') _CHILDREN_RE = re.compile('(?i)(/providers/(?P<child_namespace>[^/]*))?/' '(?P<child_type>[^/]*)/(?P<child_name>[^/]*)') @@ -133,12 +133,12 @@ match = _ARMID_RE.match(rid) if match: result = match.groupdict() - children = _CHILDREN_RE.finditer(result["children"]) + children = _CHILDREN_RE.finditer(result['children'] or '') count = None for count, child in enumerate(children): result.update({ key + '_%d' % (count + 1): group for key, group in child.groupdict().items()}) - result["last_child_num"] = count + 1 if isinstance(count, int) else None + result['last_child_num'] = count + 1 if isinstance(count, int) else None result = _populate_alternate_kwargs(result) else: result = dict(name=rid) @@ -177,7 +177,7 @@ if child_namespace is not None: parent_builder.append('providers/{}/'.format(child_namespace)) kwargs['child_parent_{}'.format(kwargs['last_child_num'])] = ''.join(parent_builder) - kwargs['resource_parent'] = ''.join(parent_builder) + kwargs['resource_parent'] = ''.join(parent_builder) if kwargs['name'] else None return kwargs def resource_id(**kwargs): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure/version.py new/msrestazure-0.6.0/msrestazure/version.py --- old/msrestazure-0.5.0/msrestazure/version.py 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure/version.py 2018-12-17 23:34:36.000000000 +0100 @@ -25,4 +25,4 @@ # -------------------------------------------------------------------------- #: version of the package. Use msrestazure.__version__ instead. -msrestazure_version = "0.5.0" +msrestazure_version = "0.6.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure.egg-info/PKG-INFO new/msrestazure-0.6.0/msrestazure.egg-info/PKG-INFO --- old/msrestazure-0.5.0/msrestazure.egg-info/PKG-INFO 2018-08-02 21:17:34.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure.egg-info/PKG-INFO 2018-12-17 23:35:19.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: msrestazure -Version: 0.5.0 +Version: 0.6.0 Summary: AutoRest swagger generator Python client runtime. Azure-specific module. Home-page: https://github.com/Azure/msrestazure-for-python Author: Microsoft Corporation @@ -28,6 +28,31 @@ Release History --------------- + 2018-12-17 Version 0.6.0 + ++++++++++++++++++++++++ + + **Features** + + - Implementation of LRO async, based on msrest 0.6.x series (*experimental*) + + **Disclaimer** + + - This version contains no direct breaking changes, but is bumped to 0.6.x since it requires a breaking change version of msrest. + + Thanks to @gison93 for his documentation contribution + + 2018-11-01 Version 0.5.1 + ++++++++++++++++++++++++ + + **Bugfixes** + + - Fix CloudError if response and error message are provided at the same time #114 + - Fix LRO polling if last call is an empty Location (Autorest.Python 3.x only) #120 + + **Features** + + - Altered resource id parsing logic to allow for resource group IDs #117 + 2018-08-02 Version 0.5.0 ++++++++++++++++++++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure.egg-info/SOURCES.txt new/msrestazure-0.6.0/msrestazure.egg-info/SOURCES.txt --- old/msrestazure-0.5.0/msrestazure.egg-info/SOURCES.txt 2018-08-02 21:17:34.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure.egg-info/SOURCES.txt 2018-12-17 23:35:19.000000000 +0100 @@ -16,4 +16,5 @@ msrestazure.egg-info/requires.txt msrestazure.egg-info/top_level.txt msrestazure/polling/__init__.py -msrestazure/polling/arm_polling.py \ No newline at end of file +msrestazure/polling/arm_polling.py +msrestazure/polling/async_arm_polling.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/msrestazure.egg-info/requires.txt new/msrestazure-0.6.0/msrestazure.egg-info/requires.txt --- old/msrestazure-0.5.0/msrestazure.egg-info/requires.txt 2018-08-02 21:17:34.000000000 +0200 +++ new/msrestazure-0.6.0/msrestazure.egg-info/requires.txt 2018-12-17 23:35:19.000000000 +0100 @@ -1,2 +1,2 @@ -msrest<2.0.0,>=0.4.28 +msrest<2.0.0,>=0.6.0 adal<2.0.0,>=0.6.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msrestazure-0.5.0/setup.py new/msrestazure-0.6.0/setup.py --- old/msrestazure-0.5.0/setup.py 2018-08-02 21:16:52.000000000 +0200 +++ new/msrestazure-0.6.0/setup.py 2018-12-17 23:34:36.000000000 +0100 @@ -28,7 +28,7 @@ setup( name='msrestazure', - version='0.5.0', + version='0.6.0', author='Microsoft Corporation', author_email='azpysdkh...@microsoft.com', packages=find_packages(exclude=["tests", "tests.*"]), @@ -50,7 +50,7 @@ 'License :: OSI Approved :: MIT License', 'Topic :: Software Development'], install_requires=[ - "msrest>=0.4.28,<2.0.0", + "msrest>=0.6.0,<2.0.0", "adal>=0.6.0,<2.0.0", ], )