Hello community,

here is the log from the commit of package proteus for openSUSE:Factory checked 
in at 2017-07-05 23:55:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/proteus (Old)
 and      /work/SRC/openSUSE:Factory/.proteus.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "proteus"

Wed Jul  5 23:55:37 2017 rev:3 rq:505301 version:4.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/proteus/proteus.changes  2016-11-08 
18:28:07.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.proteus.new/proteus.changes     2017-07-05 
23:55:39.575718979 +0200
@@ -2 +2 @@
-Sun Nov  6 19:25:44 UTC 2016 - [email protected]
+Mon Nov 28 18:22:41 UTC 2016 - [email protected] 
@@ -4 +4 @@
-- version 3.8.5 
+- Tryton Release 4.2 
@@ -7 +7 @@
-Tue Sep  6 15:27:24 UTC 2016 - [email protected]
+Sat May 14 19:25:43 UTC 2016 - [email protected]
@@ -9,7 +9 @@
-- version 3.8.4
-
--------------------------------------------------------------------
-Fri Aug 26 11:21:06 UTC 2016 - [email protected]
-
-- Clean up of spec file, fdupes added 
-  service file set to localonly
+- version 4.0

Old:
----
  proteus-3.8.5.tar.gz

New:
----
  proteus-4.2.0.tar.gz

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

Other differences:
------------------
++++++ proteus.spec ++++++
--- /var/tmp/diff_new_pack.yWZE5q/_old  2017-07-05 23:55:40.447596162 +0200
+++ /var/tmp/diff_new_pack.yWZE5q/_new  2017-07-05 23:55:40.451595598 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package proteus
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 # Copyright (c) 2016 Dr. Axel Braun
 #
 # All modifications and additions to the file contributed by third parties
@@ -17,11 +17,15 @@
 #
 
 
-%define majorver 3.8
-Version:        %{majorver}.5
-Release:        0
-
+%define majorver 4.2
 Name:           proteus
+Version:        %{majorver}.0
+Release:        0
+Summary:        A library to access Tryton's modules like a client
+License:        GPL-3.0+
+Group:          Productivity/Office/Management
+Url:            http://www.tryton.org/
+Source0:        
http://downloads.tryton.org/%{majorver}/%{name}-%{version}.tar.gz
 # List of additional build dependencies
 BuildRequires:  fdupes
 BuildRequires:  python-devel
@@ -29,20 +33,12 @@
 BuildRequires:  python-psycopg2
 BuildRequires:  python-pydot
 BuildRequires:  python-setuptools
-
-Url:            http://www.tryton.org/
-Source0:        
http://downloads.tryton.org/%{majorver}/%{name}-%{version}.tar.gz
-Summary:        A library to access Tryton's modules like a client
-License:        GPL-3.0+
-Group:          Productivity/Office/Management
-
-BuildArch:      noarch
-
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Requires:       python-cdecimal
 Requires:       python-dateutil
 Requires:       python-simplejson
 Requires:       trytond
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+BuildArch:      noarch
 
 %description
 Proteus allows you to access Tryton's modules like a client. Useful for 
automation, data load etc.

++++++ proteus-3.8.5.tar.gz -> proteus-4.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/CHANGELOG new/proteus-4.2.0/CHANGELOG
--- old/proteus-3.8.5/CHANGELOG 2016-11-06 17:51:55.000000000 +0100
+++ new/proteus-4.2.0/CHANGELOG 2016-11-28 16:00:44.000000000 +0100
@@ -1,17 +1,10 @@
-Version 3.8.5 - 2016-11-06
+Version 4.2.0 - 2016-11-28
 * Bug fixes (see mercurial logs for details)
+* Fill default Report data
 
-Version 3.8.4 - 2016-09-03
-* Bug fixes (see mercurial logs for details)
-
-Version 3.8.3 - 2016-08-02
-* Bug fixes (see mercurial logs for details)
-
-Version 3.8.2 - 2016-07-04
-* Bug fixes (see mercurial logs for details)
-
-Version 3.8.1 - 2016-01-11
+Version 4.0.0 - 2016-05-02
 * Bug fixes (see mercurial logs for details)
+* Add Python3 support
 
 Version 3.8.0 - 2015-11-02
 * Bug fixes (see mercurial logs for details)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/INSTALL new/proteus-4.2.0/INSTALL
--- old/proteus-3.8.5/INSTALL   2016-04-27 22:50:45.000000000 +0200
+++ new/proteus-4.2.0/INSTALL   2016-11-05 19:56:58.000000000 +0100
@@ -7,7 +7,6 @@
  * Python 2.7 or later (http://www.python.org/)
  * python-dateutil (http://labix.org/python-dateutil)
  * Optional: trytond (http://www.tryton.org/)
- * Optional: simplejson (http://undefined.org/python/#simplejson)
  * Optional: cdecimal (http://www.bytereef.org/mpdecimal/index.html)
 
 Installation
@@ -25,5 +24,5 @@
 For advanced options, please refer to the easy_install and/or the distutils
 documentation:
 
-  http://peak.telecommunity.com/DevCenter/EasyInstall
+  http://setuptools.readthedocs.io/en/latest/easy_install.html
   http://docs.python.org/inst/inst.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/PKG-INFO new/proteus-4.2.0/PKG-INFO
--- old/proteus-3.8.5/PKG-INFO  2016-11-06 17:52:06.000000000 +0100
+++ new/proteus-4.2.0/PKG-INFO  2016-11-28 16:01:02.000000000 +0100
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: proteus
-Version: 3.8.5
+Version: 4.2.0
 Summary: Library to access Tryton server as a client
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: [email protected]
 License: LGPL-3
-Download-URL: http://downloads.tryton.org/3.8/
+Download-URL: http://downloads.tryton.org/4.2/
 Description: proteus
         =======
         
@@ -32,12 +32,12 @@
         Installing a module
         ~~~~~~~~~~~~~~~~~~~
         
-        Find the module, call the install button and run the install wizard.
+        Find the module, call the activate button and run the upgrade wizard.
         
             >>> Module = Model.get('ir.module')
             >>> party_module, = Module.find([('name', '=', 'party')])
-            >>> party_module.click('install')
-            >>> Wizard('ir.module.install_upgrade').execute('upgrade')
+            >>> party_module.click('activate')
+            >>> Wizard('ir.module.activate_upgrade').execute('upgrade')
         
         Creating a party
         ~~~~~~~~~~~~~~~~
@@ -68,11 +68,11 @@
         `Model` instance as value.
         
             >>> Lang = Model.get('ir.lang')
-            >>> (en,) = Lang.find([('code', '=', 'en_US')])
+            >>> en, = Lang.find([('code', '=', 'en')])
             >>> party.lang = en
             >>> party.save()
             >>> party.lang.code
-            u'en_US'
+            u'en'
         
         Creating an address for the party
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -152,6 +152,9 @@
 Classifier: License :: OSI Approved :: GNU Library or Lesser General Public 
License (LGPL)
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Office/Business
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/README new/proteus-4.2.0/README
--- old/proteus-3.8.5/README    2016-04-27 22:50:45.000000000 +0200
+++ new/proteus-4.2.0/README    2016-10-30 20:41:04.000000000 +0100
@@ -23,12 +23,12 @@
 Installing a module
 ~~~~~~~~~~~~~~~~~~~
 
-Find the module, call the install button and run the install wizard.
+Find the module, call the activate button and run the upgrade wizard.
 
     >>> Module = Model.get('ir.module')
     >>> party_module, = Module.find([('name', '=', 'party')])
-    >>> party_module.click('install')
-    >>> Wizard('ir.module.install_upgrade').execute('upgrade')
+    >>> party_module.click('activate')
+    >>> Wizard('ir.module.activate_upgrade').execute('upgrade')
 
 Creating a party
 ~~~~~~~~~~~~~~~~
@@ -59,11 +59,11 @@
 `Model` instance as value.
 
     >>> Lang = Model.get('ir.lang')
-    >>> (en,) = Lang.find([('code', '=', 'en_US')])
+    >>> en, = Lang.find([('code', '=', 'en')])
     >>> party.lang = en
     >>> party.save()
     >>> party.lang.code
-    u'en_US'
+    u'en'
 
 Creating an address for the party
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus/__init__.py 
new/proteus-4.2.0/proteus/__init__.py
--- old/proteus-3.8.5/proteus/__init__.py       2016-09-03 12:12:53.000000000 
+0200
+++ new/proteus-4.2.0/proteus/__init__.py       2016-11-28 16:00:37.000000000 
+0100
@@ -3,7 +3,7 @@
 '''
 A library to access Tryton's models like a client.
 '''
-__version__ = "3.8.5"
+__version__ = "4.2.0"
 __all__ = ['Model', 'Wizard', 'Report']
 import sys
 try:
@@ -18,7 +18,6 @@
 import datetime
 import functools
 from decimal import Decimal
-from types import NoneType
 
 import proteus.config
 
@@ -159,14 +158,14 @@
 class IntegerDescriptor(FieldDescriptor):
 
     def __set__(self, instance, value):
-        assert isinstance(value, (int, long, NoneType))
+        assert isinstance(value, (int, long, type(None)))
         super(IntegerDescriptor, self).__set__(instance, value)
 
 
 class FloatDescriptor(FieldDescriptor):
 
     def __set__(self, instance, value):
-        assert isinstance(value, (int, long, float, Decimal, NoneType))
+        assert isinstance(value, (int, long, float, Decimal, type(None)))
         if value is not None:
             value = float(value)
         super(FloatDescriptor, self).__set__(instance, value)
@@ -175,7 +174,7 @@
 class NumericDescriptor(FieldDescriptor):
 
     def __set__(self, instance, value):
-        assert isinstance(value, (NoneType, Decimal))
+        assert isinstance(value, (type(None), Decimal))
         # TODO add digits validation
         super(NumericDescriptor, self).__set__(instance, value)
 
@@ -192,7 +191,7 @@
         return value
 
     def __set__(self, instance, value):
-        assert isinstance(value, (Model, NoneType, basestring))
+        assert isinstance(value, (Model, type(None), basestring))
         if isinstance(value, basestring):
             assert value.startswith(',')
         elif isinstance(value, Model):
@@ -254,7 +253,7 @@
         return value
 
     def __set__(self, instance, value):
-        assert isinstance(value, (Model, NoneType))
+        assert isinstance(value, (Model, type(None)))
         if value:
             assert value._config == instance._config
         super(Many2OneDescriptor, self).__set__(instance, value)
@@ -668,7 +667,7 @@
     @classmethod
     def get(cls, name, config=None):
         'Get a class for the named Model'
-        if isinstance(name, unicode):
+        if (bytes == str) and isinstance(name, unicode):
             name = name.encode('utf-8')
 
         class Spam(Model):
@@ -699,14 +698,17 @@
                 repr(self._config), self.id)
     __repr__.__doc__ = object.__repr__.__doc__
 
-    def __cmp__(self, other):
-        'Compare with other'
+    def __eq__(self, other):
         if isinstance(other, Model):
-            return cmp((self.__class__.__name__, self.id),
+            return ((self.__class__.__name__, self.id) ==
                 (other.__class__.__name__, other.id))
-        if isinstance(other, (bool, NoneType)):
-            return 1
-        raise NotImplementedError
+        return NotImplemented
+
+    def __ne__(self, other):
+        return not self == other
+
+    def __hash__(self):
+        return hash(self.__class__.__name__) ^ hash(self.id)
 
     @property
     def id(self):
@@ -872,15 +874,15 @@
             if definition['type'] in ('one2many', 'many2many'):
                 if value and len(value) and isinstance(value[0], (int, long)):
                     self._values[field] = value
-                    continue
-                relation = Model.get(definition['relation'], self._config)
-                records = []
-                for vals in (value or []):
-                    record = relation()
-                    record._default_set(vals)
-                    records.append(record)
-                self._values[field] = ModelList(definition, records, self,
-                    field)
+                else:
+                    relation = Model.get(definition['relation'], self._config)
+                    records = []
+                    for vals in (value or []):
+                        record = relation()
+                        record._default_set(vals)
+                        records.append(record)
+                    self._values[field] = ModelList(definition, records, self,
+                        field)
             else:
                 self._values[field] = value
             fieldnames.append(field)
@@ -1134,9 +1136,14 @@
         self._proxy = self._config.get_proxy(name, type='report')
 
     def execute(self, models=None, data=None):
-        if data is None:
-            data = {}
         ids = [m.id for m in models] if models else data.get('ids', [])
+        if data is None:
+            data = {
+                'id': ids[0],
+                'ids': ids,
+                }
+            if models:
+                data['model'] = models[0].__class__.__name__
         return self._proxy.execute(ids, data, self._context)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus/config.py 
new/proteus-4.2.0/proteus/config.py
--- old/proteus-3.8.5/proteus/config.py 2016-11-06 17:51:42.000000000 +0100
+++ new/proteus-4.2.0/proteus/config.py 2016-10-15 20:56:32.000000000 +0200
@@ -181,7 +181,7 @@
                     result = [rpc.result(meth(i, *args, **kwargs))
                         for i in inst]
             if not rpc.readonly:
-                transaction.cursor.commit()
+                transaction.commit()
             Cache.resets(self._config.database_name)
         return result
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus/pyson.py 
new/proteus-4.2.0/proteus/pyson.py
--- old/proteus-3.8.5/proteus/pyson.py  2016-08-02 22:14:45.000000000 +0200
+++ new/proteus-4.2.0/proteus/pyson.py  2016-11-05 19:56:58.000000000 +0100
@@ -2,10 +2,7 @@
 # this repository contains the full copyright notices and license terms.
 __all__ = ['PYSONEncoder', 'PYSONDecoder', 'Eval', 'Not', 'Bool', 'And', 'Or',
     'Equal', 'Greater', 'Less', 'If', 'Get', 'In', 'Date', 'DateTime', 'Len']
-try:
-    import simplejson as json
-except ImportError:
-    import json
+import json
 import datetime
 from dateutil.relativedelta import relativedelta
 from functools import reduce, wraps
@@ -315,10 +312,10 @@
         super(Greater, self).__init__()
         for i in (statement1, statement2):
             if isinstance(i, PYSON):
-                assert i.types().issubset(set([int, long, float])), \
+                assert i.types().issubset({int, long, float, type(None)}), \
                     'statement must be an integer or a float'
             else:
-                assert isinstance(i, (int, long, float)), \
+                assert isinstance(i, (int, long, float, type(None))), \
                     'statement must be an integer or a float'
         if isinstance(equal, PYSON):
             assert equal.types() == set([bool])
@@ -346,6 +343,8 @@
     @staticmethod
     def _convert(dct):
         for i in ('s1', 's2'):
+            if dct[i] is None:
+                dct[i] = 0.0
             if not isinstance(dct[i], (int, long, float)):
                 dct = dct.copy()
                 dct[i] = float(dct[i])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus/tests/common.py 
new/proteus-4.2.0/proteus/tests/common.py
--- old/proteus-3.8.5/proteus/tests/common.py   2016-04-27 22:50:45.000000000 
+0200
+++ new/proteus-4.2.0/proteus/tests/common.py   2016-02-23 21:09:16.000000000 
+0100
@@ -9,7 +9,10 @@
 
 class ProteusTestCase(TestCase):
 
-    def setUp(self):
+    @classmethod
+    def setUpClass(cls):
         if not db_exist():
             create_db()
+
+    def setUp(self):
         self.config = config.set_trytond()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus/tests/test_config.py 
new/proteus-4.2.0/proteus/tests/test_config.py
--- old/proteus-3.8.5/proteus/tests/test_config.py      2016-04-27 
22:50:45.000000000 +0200
+++ new/proteus-4.2.0/proteus/tests/test_config.py      2016-02-23 
21:09:16.000000000 +0100
@@ -26,7 +26,7 @@
         self.assertRaises(NotImplementedError, config1.__eq__, None)
 
     def test_repr(self):
-        config = proteus.config.TrytondConfig()
+        config = proteus.config.TrytondConfig('sqlite:///:memory:')
         self.assertEqual(repr(config),
             "proteus.config.TrytondConfig("
             "'sqlite:///:memory:', 'admin', config_file=None)")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus/tests/test_model.py 
new/proteus-4.2.0/proteus/tests/test_model.py
--- old/proteus-3.8.5/proteus/tests/test_model.py       2016-04-27 
22:50:45.000000000 +0200
+++ new/proteus-4.2.0/proteus/tests/test_model.py       2016-10-20 
11:08:07.000000000 +0200
@@ -88,9 +88,9 @@
         self.assertEqual(User(name='Foo').name, 'Foo')
 
         Lang = Model.get('ir.lang')
-        en_US = Lang.find([('code', '=', 'en_US')])[0]
-        self.assertEqual(User(language=en_US).language, en_US)
-        self.assertEqual(User(language=en_US.id).language, en_US)
+        en, = Lang.find([('code', '=', 'en')])
+        self.assertEqual(User(language=en).language, en)
+        self.assertEqual(User(language=en.id).language, en)
 
         Group = Model.get('res.group')
         groups = Group.find()
@@ -143,10 +143,10 @@
         test.save()
 
         Lang = Model.get('ir.lang')
-        en_US = Lang.find([('code', '=', 'en_US')])[0]
-        test.language = en_US
+        en, = Lang.find([('code', '=', 'en')])
+        test.language = en
         test.save()
-        self.assertEqual(test.language, en_US)
+        self.assertEqual(test.language, en)
 
         test.language = None
         test.save()
@@ -233,21 +233,22 @@
         self.assertEqual(test.groups, [])
         self.assertEqual(len(Group.find([('id', '=', group_id)])), 0)
 
-    def test_cmp(self):
+    def test_eq(self):
         User = Model.get('res.user')
         test = User()
-        test.name = 'Test cmp'
-        test.login = 'test_cmp'
+        test.name = 'Test eq'
+        test.login = 'test_eq'
         test.save()
         admin1 = User.find([('login', '=', 'admin')])[0]
         admin2 = User.find([('login', '=', 'admin')])[0]
 
         self.assertEqual(admin1, admin2)
+        self.assertFalse(admin1 != admin2)
         self.assertNotEqual(admin1, test)
+        self.assertFalse(admin1 == test)
         self.assertNotEqual(admin1, None)
         self.assertNotEqual(admin1, False)
-
-        self.assertRaises(NotImplementedError, lambda: admin1 == 1)
+        self.assertNotEqual(admin1, 1)
 
     def test_default_set(self):
         User = Model.get('res.user')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus/tests/test_wizard.py 
new/proteus-4.2.0/proteus/tests/test_wizard.py
--- old/proteus-3.8.5/proteus/tests/test_wizard.py      2016-04-27 
22:50:45.000000000 +0200
+++ new/proteus-4.2.0/proteus/tests/test_wizard.py      2016-10-20 
10:44:49.000000000 +0200
@@ -18,7 +18,7 @@
         Lang = Model.get('ir.lang')
         Module = Model.get('ir.module')
         translation_export = Wizard('ir.translation.export')
-        translation_export.form.language, = Lang.find([('code', '=', 'en_US')])
+        translation_export.form.language, = Lang.find([('code', '=', 'en')])
         translation_export.form.module, = Module.find([('name', '=', 'ir')])
         translation_export.execute('export')
         self.assert_(translation_export.form.file)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus.egg-info/PKG-INFO 
new/proteus-4.2.0/proteus.egg-info/PKG-INFO
--- old/proteus-3.8.5/proteus.egg-info/PKG-INFO 2016-11-06 17:52:05.000000000 
+0100
+++ new/proteus-4.2.0/proteus.egg-info/PKG-INFO 2016-11-28 16:00:54.000000000 
+0100
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: proteus
-Version: 3.8.5
+Version: 4.2.0
 Summary: Library to access Tryton server as a client
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: [email protected]
 License: LGPL-3
-Download-URL: http://downloads.tryton.org/3.8/
+Download-URL: http://downloads.tryton.org/4.2/
 Description: proteus
         =======
         
@@ -32,12 +32,12 @@
         Installing a module
         ~~~~~~~~~~~~~~~~~~~
         
-        Find the module, call the install button and run the install wizard.
+        Find the module, call the activate button and run the upgrade wizard.
         
             >>> Module = Model.get('ir.module')
             >>> party_module, = Module.find([('name', '=', 'party')])
-            >>> party_module.click('install')
-            >>> Wizard('ir.module.install_upgrade').execute('upgrade')
+            >>> party_module.click('activate')
+            >>> Wizard('ir.module.activate_upgrade').execute('upgrade')
         
         Creating a party
         ~~~~~~~~~~~~~~~~
@@ -68,11 +68,11 @@
         `Model` instance as value.
         
             >>> Lang = Model.get('ir.lang')
-            >>> (en,) = Lang.find([('code', '=', 'en_US')])
+            >>> en, = Lang.find([('code', '=', 'en')])
             >>> party.lang = en
             >>> party.save()
             >>> party.lang.code
-            u'en_US'
+            u'en'
         
         Creating an address for the party
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -152,6 +152,9 @@
 Classifier: License :: OSI Approved :: GNU Library or Lesser General Public 
License (LGPL)
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Office/Business
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/proteus.egg-info/requires.txt 
new/proteus-4.2.0/proteus.egg-info/requires.txt
--- old/proteus-3.8.5/proteus.egg-info/requires.txt     2016-11-06 
17:52:05.000000000 +0100
+++ new/proteus-4.2.0/proteus.egg-info/requires.txt     2016-11-28 
16:00:54.000000000 +0100
@@ -3,8 +3,5 @@
 [cdecimal]
 cdecimal
 
-[simplejson]
-simplejson
-
 [trytond]
-trytond >= 3.8, < 3.9
+trytond >= 4.2, < 4.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/proteus-3.8.5/setup.py new/proteus-4.2.0/setup.py
--- old/proteus-3.8.5/setup.py  2016-04-27 22:50:45.000000000 +0200
+++ new/proteus-4.2.0/setup.py  2016-11-05 19:56:58.000000000 +0100
@@ -3,11 +3,19 @@
 # this repository contains the full copyright notices and license terms.
 from setuptools import setup, find_packages
 import os
-import proteus
+import re
+import io
 
 
 def read(fname):
-    return open(os.path.join(os.path.dirname(__file__), fname)).read()
+    return io.open(
+        os.path.join(os.path.dirname(__file__), fname),
+        'r', encoding='utf-8').read()
+
+
+def get_version():
+    init = read(os.path.join('proteus', '__init__.py'))
+    return re.search('__version__ = "([0-9.]*)"', init).group(1)
 
 
 def get_require_version(name):
@@ -20,7 +28,7 @@
     return require
 
 name = 'proteus'
-version = proteus.__version__
+version = get_version()
 major_version, minor_version, _ = version.split('.', 2)
 major_version = int(major_version)
 minor_version = int(minor_version)
@@ -58,6 +66,9 @@
         'GNU Library or Lesser General Public License (LGPL)',
         'Operating System :: OS Independent',
         'Programming Language :: Python :: 2.7',
+        'Programming Language :: Python :: 3.3',
+        'Programming Language :: Python :: 3.4',
+        'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
         'Topic :: Office/Business',
@@ -69,7 +80,6 @@
         ],
     extras_require={
         'trytond': [get_require_version('trytond')],
-        'simplejson': ['simplejson'],
         'cdecimal': ['cdecimal'],
         },
     dependency_links=dependency_links,
@@ -77,4 +87,5 @@
     test_suite='proteus.tests',
     tests_require=[get_require_version('trytond'),
         get_require_version('trytond_party')],
+    use_2to3=True,
     )


Reply via email to