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, )
