Hello community,

here is the log from the commit of package python-marathon for 
openSUSE:Leap:15.2 checked in at 2020-03-15 13:35:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-marathon (Old)
 and      /work/SRC/openSUSE:Leap:15.2/.python-marathon.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-marathon"

Sun Mar 15 13:35:46 2020 rev:16 rq:783214 version:0.12.0

Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-marathon/python-marathon.changes        
2020-03-09 18:08:37.732961224 +0100
+++ 
/work/SRC/openSUSE:Leap:15.2/.python-marathon.new.3160/python-marathon.changes  
    2020-03-15 13:35:50.658819592 +0100
@@ -1,0 +2,8 @@
+Thu Mar  5 14:40:42 UTC 2020 - [email protected]
+
+- version update to 0.12.0
+    Downloading Log For App #265
+    Always create TZ-aware datetime objects. (also drop support for python 2) 
#267 (EvanKrall)
+    Compatible with event stream redirect behavior. #262 (fengyehong)
+
+-------------------------------------------------------------------

Old:
----
  marathon-0.11.0.tar.gz

New:
----
  marathon-0.12.0.tar.gz

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

Other differences:
------------------
++++++ python-marathon.spec ++++++
--- /var/tmp/diff_new_pack.E5LhLa/_old  2020-03-15 13:35:51.010819802 +0100
+++ /var/tmp/diff_new_pack.E5LhLa/_new  2020-03-15 13:35:51.014819804 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-marathon
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,8 +17,9 @@
 
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define skip_python2 1
 Name:           python-marathon
-Version:        0.11.0
+Version:        0.12.0
 Release:        0
 Summary:        Marathon Client Library
 License:        MIT

++++++ marathon-0.11.0.tar.gz -> marathon-0.12.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/PKG-INFO new/marathon-0.12.0/PKG-INFO
--- old/marathon-0.11.0/PKG-INFO        2019-01-15 20:14:09.000000000 +0100
+++ new/marathon-0.12.0/PKG-INFO        2019-11-14 02:39:46.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: marathon
-Version: 0.11.0
+Version: 0.12.0
 Summary: Marathon Client Library
 Home-page: https://github.com/thefactory/marathon-python
 Author: Mike Babineau
@@ -13,9 +13,8 @@
 Classifier: Intended Audience :: System Administrators
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/_compat.py 
new/marathon-0.12.0/marathon/_compat.py
--- old/marathon-0.11.0/marathon/_compat.py     2017-06-21 18:49:56.000000000 
+0200
+++ new/marathon-0.12.0/marathon/_compat.py     1970-01-01 01:00:00.000000000 
+0100
@@ -1,11 +0,0 @@
-"""
-Support for python 2 & 3, ripped pieces from six.py
-"""
-import sys
-
-PY3 = sys.version_info[0] == 3
-
-if PY3:
-    string_types = str,
-else:
-    string_types = basestring,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/client.py 
new/marathon-0.12.0/marathon/client.py
--- old/marathon-0.11.0/marathon/client.py      2019-01-15 20:07:53.000000000 
+0100
+++ new/marathon-0.12.0/marathon/client.py      2019-11-14 02:17:23.000000000 
+0100
@@ -17,7 +17,7 @@
 from .util import MarathonJsonEncoder, MarathonMinimalJsonEncoder
 
 
-class MarathonClient(object):
+class MarathonClient:
 
     """Client interface for the Marathon REST API."""
 
@@ -79,7 +79,7 @@
             'Content-Type': 'application/json', 'Accept': 'application/json'}
 
         if self.auth_token:
-            headers['Authorization'] = "token={}".format(self.auth_token)
+            headers['Authorization'] = f"token={self.auth_token}"
 
         response = None
         servers = list(self.servers)
@@ -122,9 +122,12 @@
 
     def _do_sse_request(self, path, params=None):
         """Query Marathon server for events."""
-        for server in list(self.servers):
-            url = ''.join([server.rstrip('/'), path])
+        urls = [''.join([server.rstrip('/'), path]) for server in self.servers]
+        while urls:
+            url = urls.pop()
             try:
+                # Requests does not set the original Authorization header on 
cross origin
+                # redirects. If set allow_redirects=True we may get a 401 
response.
                 response = self.sse_session.get(
                     url,
                     params=params,
@@ -132,12 +135,16 @@
                     headers={'Accept': 'text/event-stream'},
                     auth=self.auth,
                     verify=self.verify,
+                    allow_redirects=False
                 )
             except Exception as e:
                 marathon.log.error(
                     'Error while calling %s: %s', url, e.message)
             else:
-                if response.ok:
+                if response.is_redirect and response.next:
+                    urls.append(response.next.url)
+                    marathon.log.debug(f"Got redirect to {response.next.url}")
+                elif response.ok:
                     return response.iter_lines()
 
         raise MarathonError('No remaining Marathon servers to try')
@@ -250,7 +257,7 @@
             params['embed'] = filtered_embed_params
 
         response = self._do_request(
-            'GET', '/v2/apps/{app_id}'.format(app_id=app_id), params=params)
+            'GET', f'/v2/apps/{app_id}', params=params)
         return self._parse_response(response, MarathonApp, resource_name='app')
 
     def restart_app(self, app_id, force=False):
@@ -263,7 +270,7 @@
         """
         params = {'force': force}
         response = self._do_request(
-            'POST', '/v2/apps/{app_id}/restart'.format(app_id=app_id), 
params=params)
+            'POST', f'/v2/apps/{app_id}/restart', params=params)
         return response.json()
 
     def update_app(self, app_id, app, force=False, minimal=True):
@@ -288,7 +295,7 @@
         data = app.to_json(minimal=minimal)
 
         response = self._do_request(
-            'PUT', '/v2/apps/{app_id}'.format(app_id=app_id), params=params, 
data=data)
+            'PUT', f'/v2/apps/{app_id}', params=params, data=data)
         return response.json()
 
     def update_apps(self, apps, force=False, minimal=True):
@@ -330,7 +337,7 @@
         params = {'force': force}
         data = json.dumps({'version': version})
         response = self._do_request(
-            'PUT', '/v2/apps/{app_id}'.format(app_id=app_id), params=params, 
data=data)
+            'PUT', f'/v2/apps/{app_id}', params=params, data=data)
         return response.json()
 
     def delete_app(self, app_id, force=False):
@@ -344,7 +351,7 @@
         """
         params = {'force': force}
         response = self._do_request(
-            'DELETE', '/v2/apps/{app_id}'.format(app_id=app_id), params=params)
+            'DELETE', f'/v2/apps/{app_id}', params=params)
         return response.json()
 
     def scale_app(self, app_id, instances=None, delta=None, force=False):
@@ -371,7 +378,7 @@
         try:
             app = self.get_app(app_id)
         except NotFoundError:
-            marathon.log.error('App "{app}" not found'.format(app=app_id))
+            marathon.log.error(f'App "{app_id}" not found')
             return
 
         desired = instances if instances is not None else (
@@ -414,7 +421,7 @@
         :rtype: :class:`marathon.models.group.MarathonGroup`
         """
         response = self._do_request(
-            'GET', '/v2/groups/{group_id}'.format(group_id=group_id))
+            'GET', f'/v2/groups/{group_id}')
         return self._parse_response(response, MarathonGroup)
 
     def update_group(self, group_id, group, force=False, minimal=True):
@@ -439,7 +446,7 @@
         data = group.to_json(minimal=minimal)
 
         response = self._do_request(
-            'PUT', '/v2/groups/{group_id}'.format(group_id=group_id), 
data=data, params=params)
+            'PUT', f'/v2/groups/{group_id}', data=data, params=params)
         return response.json()
 
     def rollback_group(self, group_id, version, force=False):
@@ -471,7 +478,7 @@
         """
         params = {'force': force}
         response = self._do_request(
-            'DELETE', '/v2/groups/{group_id}'.format(group_id=group_id), 
params=params)
+            'DELETE', f'/v2/groups/{group_id}', params=params)
         return response.json()
 
     def scale_group(self, group_id, scale_by):
@@ -485,7 +492,7 @@
         """
         data = {'scaleBy': scale_by}
         response = self._do_request(
-            'PUT', '/v2/groups/{group_id}'.format(group_id=group_id), 
data=json.dumps(data))
+            'PUT', f'/v2/groups/{group_id}', data=json.dumps(data))
         return response.json()
 
     def list_tasks(self, app_id=None, **kwargs):
@@ -551,7 +558,7 @@
             if host:
                 params['host'] = host
             response = self._do_request(
-                'DELETE', '/v2/apps/{app_id}/tasks'.format(app_id=app_id), 
params)
+                'DELETE', f'/v2/apps/{app_id}/tasks', params)
             # Marathon is inconsistent about what type of object it returns on 
the multi
             # task deletion endpoint, depending on the version of Marathon. 
See:
             # 
https://github.com/mesosphere/marathon/blob/06a6f763a75fb6d652b4f1660685ae234bd15387/src/main/scala/mesosphere/marathon/api/v2/AppTasksResource.scala#L88-L95
@@ -569,12 +576,12 @@
 
                 # Pause until the tasks have been killed to avoid race
                 # conditions
-                killed_task_ids = set(t.id for t in killed_tasks)
+                killed_task_ids = {t.id for t in killed_tasks}
                 running_task_ids = killed_task_ids
                 while killed_task_ids.intersection(running_task_ids):
                     time.sleep(1)
-                    running_task_ids = set(
-                        t.id for t in self.get_app(app_id).tasks)
+                    running_task_ids = {
+                        t.id for t in self.get_app(app_id).tasks}
 
                 if batch_delay == 0:
                     # Pause until the replacement tasks are healthy
@@ -619,7 +626,7 @@
         :rtype: list[str]
         """
         response = self._do_request(
-            'GET', '/v2/apps/{app_id}/versions'.format(app_id=app_id))
+            'GET', f'/v2/apps/{app_id}/versions')
         return [version for version in response.json()['versions']]
 
     def get_version(self, app_id, version):
@@ -708,12 +715,12 @@
             return {}
         else:
             response = self._do_request(
-                'DELETE', 
'/v2/deployments/{deployment}'.format(deployment=deployment_id))
+                'DELETE', f'/v2/deployments/{deployment_id}')
             return response.json()
 
     def reset_delay(self, app_id):
         self._do_request(
-            "DELETE", '/v2/queue/{app_id}/delay'.format(app_id=app_id)
+            "DELETE", f'/v2/queue/{app_id}/delay'
         )
 
     def get_info(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/exceptions.py 
new/marathon-0.12.0/marathon/exceptions.py
--- old/marathon-0.11.0/marathon/exceptions.py  2019-01-15 20:07:53.000000000 
+0100
+++ new/marathon-0.12.0/marathon/exceptions.py  2019-11-14 02:17:23.000000000 
+0100
@@ -14,7 +14,7 @@
             self.error_message = content.get('message', self.error_message)
             self.error_details = content.get('details')
         self.status_code = response.status_code
-        super(MarathonHttpError, self).__init__(self.__str__())
+        super().__init__(self.__str__())
 
     def __repr__(self):
         return 'MarathonHttpError: HTTP %s returned with message, "%s"' % \
@@ -39,7 +39,7 @@
 class InvalidChoiceError(MarathonError):
 
     def __init__(self, param, value, options):
-        super(InvalidChoiceError, self).__init__(
+        super().__init__(
             'Invalid choice "{value}" for param "{param}". Must be one of 
{options}'.format(
                 param=param, value=value, options=options
             )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/models/app.py 
new/marathon-0.12.0/marathon/models/app.py
--- old/marathon-0.11.0/marathon/models/app.py  2018-08-08 19:24:04.000000000 
+0200
+++ new/marathon-0.12.0/marathon/models/app.py  2019-11-14 02:17:23.000000000 
+0100
@@ -1,12 +1,11 @@
-from datetime import datetime
-
 from ..exceptions import InvalidChoiceError
 from .base import MarathonResource, MarathonObject, assert_valid_path
 from .constraint import MarathonConstraint
 from .container import MarathonContainer
 from .deployment import MarathonDeployment
 from .task import MarathonTask
-from ..util import is_stringy, get_log
+from ..util import get_log
+from ..util import to_datetime
 
 log = get_log()
 
@@ -216,7 +215,7 @@
 
         if command is None:
             self.command = None
-        elif is_stringy(command):
+        elif isinstance(command, str):
             self.command = {
                 "value": command
             }
@@ -226,7 +225,7 @@
                 "value": command['value']
             }
         else:
-            raise ValueError('Invalid command format: {}'.format(command))
+            raise ValueError(f'Invalid command format: {command}')
 
         self.grace_period_seconds = grace_period_seconds
         self.interval_seconds = interval_seconds
@@ -256,8 +255,6 @@
     :param str version: app version with which this task was started
     """
 
-    DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'
-
     def __init__(self, app_id=None, host=None, message=None, task_id=None, 
instance_id=None,
                  slave_id=None, state=None, timestamp=None, version=None):
         self.app_id = app_id
@@ -267,8 +264,7 @@
         self.instance_id = instance_id
         self.slave_id = slave_id
         self.state = state
-        self.timestamp = timestamp if (timestamp is None or 
isinstance(timestamp, datetime)) \
-            else datetime.strptime(timestamp, self.DATETIME_FORMAT)
+        self.timestamp = to_datetime(timestamp)
         self.version = version
 
 
@@ -320,7 +316,7 @@
     def from_json(cls, attributes):
         if attributes == cls.DISABLED:
             return cls.DISABLED
-        return super(MarathonUnreachableStrategy, cls).from_json(attributes)
+        return super().from_json(attributes)
 
 
 class MarathonAppVersionInfo(MarathonObject):
@@ -334,25 +330,9 @@
     :param str host: mesos slave running the task
     """
 
-    DATETIME_FORMATS = [
-        '%Y-%m-%dT%H:%M:%S.%fZ',
-        '%Y-%m-%dT%H:%M:%SZ',
-    ]
-
     def __init__(self, last_scaling_at=None, last_config_change_at=None):
-        self.last_scaling_at = self._to_datetime(last_scaling_at)
-        self.last_config_change_at = self._to_datetime(last_config_change_at)
-
-    def _to_datetime(self, timestamp):
-        if (timestamp is None or isinstance(timestamp, datetime)):
-            return timestamp
-        else:
-            for fmt in self.DATETIME_FORMATS:
-                try:
-                    return datetime.strptime(timestamp, fmt)
-                except ValueError:
-                    pass
-            raise ValueError('Unrecognized datetime format: 
{}'.format(timestamp))
+        self.last_scaling_at = to_datetime(last_scaling_at)
+        self.last_config_change_at = to_datetime(last_config_change_at)
 
 
 class MarathonTaskStats(MarathonObject):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/models/base.py 
new/marathon-0.12.0/marathon/models/base.py
--- old/marathon-0.11.0/marathon/models/base.py 2018-08-08 19:24:04.000000000 
+0200
+++ new/marathon-0.12.0/marathon/models/base.py 2019-11-14 02:17:23.000000000 
+0100
@@ -4,7 +4,7 @@
 from marathon.util import to_camel_case, to_snake_case, MarathonJsonEncoder, 
MarathonMinimalJsonEncoder
 
 
-class MarathonObject(object):
+class MarathonObject:
     """Base Marathon object."""
 
     def __repr__(self):
@@ -61,7 +61,7 @@
 
     def __repr__(self):
         if 'id' in list(vars(self).keys()):
-            return "{clazz}::{id}".format(clazz=self.__class__.__name__, 
id=self.id)
+            return f"{self.__class__.__name__}::{self.id}"
         else:
             return "{clazz}::{obj}".format(clazz=self.__class__.__name__, 
obj=self.to_json())
 
@@ -78,7 +78,7 @@
         return hash(self.to_json())
 
     def __str__(self):
-        return "{clazz}::".format(clazz=self.__class__.__name__) + 
str(self.__dict__)
+        return f"{self.__class__.__name__}::" + str(self.__dict__)
 
 
 # See:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/models/events.py 
new/marathon-0.12.0/marathon/models/events.py
--- old/marathon-0.11.0/marathon/models/events.py       2018-08-08 
19:24:04.000000000 +0200
+++ new/marathon-0.12.0/marathon/models/events.py       2019-11-14 
02:17:23.000000000 +0100
@@ -206,7 +206,7 @@
         'pod_deleted_event': MarathonPodDeletedEvent,
     }
 
-    class_to_event = dict((v, k) for k, v in event_to_class.items())
+    class_to_event = {v: k for k, v in event_to_class.items()}
 
     def process(self, event):
         event_type = event['eventType']
@@ -214,4 +214,4 @@
             clazz = self.event_to_class[event_type]
             return clazz.from_json(event)
         else:
-            raise MarathonError('Unknown event_type: {}, data: 
{}'.format(event_type, event))
+            raise MarathonError(f'Unknown event_type: {event_type}, data: 
{event}')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/models/task.py 
new/marathon-0.12.0/marathon/models/task.py
--- old/marathon-0.11.0/marathon/models/task.py 2019-01-15 20:07:53.000000000 
+0100
+++ new/marathon-0.12.0/marathon/models/task.py 2019-11-14 02:17:23.000000000 
+0100
@@ -1,6 +1,5 @@
-from datetime import datetime
-
 from .base import MarathonResource, MarathonObject
+from ..util import to_datetime
 
 
 class MarathonTask(MarathonResource):
@@ -44,10 +43,8 @@
         self.ports = ports or []
         self.service_ports = service_ports or []
         self.slave_id = slave_id
-        self.staged_at = staged_at if (staged_at is None or 
isinstance(staged_at, datetime)) \
-            else datetime.strptime(staged_at, self.DATETIME_FORMAT)
-        self.started_at = started_at if (started_at is None or 
isinstance(started_at, datetime)) \
-            else datetime.strptime(started_at, self.DATETIME_FORMAT)
+        self.staged_at = to_datetime(staged_at)
+        self.started_at = to_datetime(started_at)
         self.state = state
         self.version = version
         self.ip_addresses = [
@@ -90,12 +87,9 @@
                  last_failure_cause=None, instance_id=None):
         self.alive = alive
         self.consecutive_failures = consecutive_failures
-        self.first_success = first_success if (first_success is None or 
isinstance(first_success, datetime)) \
-            else datetime.strptime(first_success, self.DATETIME_FORMAT)
-        self.last_failure = last_failure if (last_failure is None or 
isinstance(last_failure, datetime)) \
-            else datetime.strptime(last_failure, self.DATETIME_FORMAT)
-        self.last_success = last_success if (last_success is None or 
isinstance(last_success, datetime)) \
-            else datetime.strptime(last_success, self.DATETIME_FORMAT)
+        self.first_success = to_datetime(first_success)
+        self.last_failure = to_datetime(last_failure)
+        self.last_success = to_datetime(last_success)
         self.task_id = task_id
         self.last_failure_cause = last_failure_cause
         self.instance_id = instance_id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon/util.py 
new/marathon-0.12.0/marathon/util.py
--- old/marathon-0.11.0/marathon/util.py        2018-08-08 19:24:04.000000000 
+0200
+++ new/marathon-0.12.0/marathon/util.py        2019-11-14 02:17:23.000000000 
+0100
@@ -8,17 +8,11 @@
     import simplejson as json
 import re
 
-from ._compat import string_types
-
 
 def get_log():
     return logging.getLogger(__name__.split('.')[0])
 
 
-def is_stringy(obj):
-    return isinstance(obj, string_types)
-
-
 class MarathonJsonEncoder(json.JSONEncoder):
 
     """Custom JSON encoder for Marathon object serialization."""
@@ -30,7 +24,7 @@
         if isinstance(obj, datetime.datetime):
             return obj.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
 
-        if isinstance(obj, collections.Iterable) and not is_stringy(obj):
+        if isinstance(obj, collections.Iterable) and not isinstance(obj, str):
             try:
                 return {k: self.default(v) for k, v in obj.items()}
             except AttributeError:
@@ -50,7 +44,7 @@
         if isinstance(obj, datetime.datetime):
             return obj.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
 
-        if isinstance(obj, collections.Iterable) and not is_stringy(obj):
+        if isinstance(obj, collections.Iterable) and not isinstance(obj, str):
             try:
                 return {k: self.default(v) for k, v in obj.items() if (v or v 
in (False, 0))}
             except AttributeError:
@@ -67,3 +61,21 @@
 def to_snake_case(camel_str):
     s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', camel_str)
     return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()
+
+
+DATETIME_FORMATS = [
+    '%Y-%m-%dT%H:%M:%S.%fZ',
+    '%Y-%m-%dT%H:%M:%SZ',  # Marathon omits milliseconds when they would be 
.000
+]
+
+
+def to_datetime(timestamp):
+    if (timestamp is None or isinstance(timestamp, datetime.datetime)):
+        return timestamp
+    else:
+        for fmt in DATETIME_FORMATS:
+            try:
+                return datetime.datetime.strptime(timestamp, 
fmt).replace(tzinfo=datetime.timezone.utc)
+            except ValueError:
+                pass
+        raise ValueError(f'Unrecognized datetime format: {timestamp}')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon.egg-info/PKG-INFO 
new/marathon-0.12.0/marathon.egg-info/PKG-INFO
--- old/marathon-0.11.0/marathon.egg-info/PKG-INFO      2019-01-15 
20:14:09.000000000 +0100
+++ new/marathon-0.12.0/marathon.egg-info/PKG-INFO      2019-11-14 
02:39:46.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: marathon
-Version: 0.11.0
+Version: 0.12.0
 Summary: Marathon Client Library
 Home-page: https://github.com/thefactory/marathon-python
 Author: Mike Babineau
@@ -13,9 +13,8 @@
 Classifier: Intended Audience :: System Administrators
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/marathon.egg-info/SOURCES.txt 
new/marathon-0.12.0/marathon.egg-info/SOURCES.txt
--- old/marathon-0.11.0/marathon.egg-info/SOURCES.txt   2019-01-15 
20:14:09.000000000 +0100
+++ new/marathon-0.12.0/marathon.egg-info/SOURCES.txt   2019-11-14 
02:39:46.000000000 +0100
@@ -4,7 +4,6 @@
 setup.cfg
 setup.py
 marathon/__init__.py
-marathon/_compat.py
 marathon/client.py
 marathon/exceptions.py
 marathon/util.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/marathon-0.11.0/setup.py new/marathon-0.12.0/setup.py
--- old/marathon-0.11.0/setup.py        2019-01-15 20:10:03.000000000 +0100
+++ new/marathon-0.12.0/setup.py        2019-11-14 02:21:55.000000000 +0100
@@ -8,7 +8,7 @@
 
 setup(
     name='marathon',
-    version='0.11.0',
+    version='0.12.0',
     description='Marathon Client Library',
     long_description="""Python interface to the Mesos Marathon REST API.""",
     author='Mike Babineau',
@@ -24,10 +24,9 @@
         'Intended Audience :: System Administrators',
         'License :: OSI Approved :: MIT License',
         'Operating System :: OS Independent',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.4',
+        'Programming Language :: Python :: 3.6',
+        'Programming Language :: Python :: 3.7',
         'Programming Language :: Python',
         'Topic :: Software Development :: Libraries :: Python Modules'
     ],


Reply via email to