From bdf49da27f7ff73a2b9b1b935352edcc0993c8de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 26 Jun 2018 19:11:46 +0200 Subject: [PATCH] Remove support for Python 2.7 issue7497 review53261002 --- .drone.yml | 6 ------ CHANGELOG | 2 ++ INSTALL | 2 +- account.py | 3 +-- commission.py | 6 +++--- invoice.py | 8 +++----- party.py | 6 ++---- product.py | 7 ++----- sale.py | 8 +++----- setup.py | 18 +++++++----------- tests/scenario_commission.rst | 4 ++-- tests/test_commission.py | 1 - tox.ini | 6 +++--- 13 files changed, 29 insertions(+), 48 deletions(-) diff --git a/.drone.yml b/.drone.yml index e0bc2f7026..5da6083eb7 100644 --- a/.drone.yml +++ b/.drone.yml @@ -25,12 +25,6 @@ services: matrix: include: - - IMAGE: python:2.7 - TOXENV: py27 - DATABASE: sqlite - - IMAGE: python:2.7 - TOXENV: py27 - DATABASE: postgresql - IMAGE: python:3.4 TOXENV: py34 DATABASE: sqlite diff --git a/CHANGELOG b/CHANGELOG index 79fd4a34a6..551891df09 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Remove support for Python 2.7 + Version 4.8.0 - 2018-04-23 * Bug fixes (see mercurial logs for details) * Check pending commission to erase party diff --git a/INSTALL b/INSTALL index 5276ad2b3f..edfbed895f 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_commission Prerequisites ------------- - * Python 2.7 or later (http://www.python.org/) + * Python 3.4 or later (http://www.python.org/) * simpleeval (https://github.com/danthedeckie/simpleeval) * trytond (http://www.tryton.org/) * trytond_account_invoice (http://www.tryton.org/) diff --git a/account.py b/account.py index c3ed9f5059..4857d100f5 100644 --- a/account.py +++ b/account.py @@ -5,8 +5,7 @@ from trytond.pool import PoolMeta __all__ = ['Journal'] -class Journal: - __metaclass__ = PoolMeta +class Journal(metaclass=PoolMeta): __name__ = 'account.journal' @classmethod diff --git a/commission.py b/commission.py index 120c66f3b1..102fda76b9 100644 --- a/commission.py +++ b/commission.py @@ -1,6 +1,6 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. -from __future__ import unicode_literals + from decimal import Decimal from itertools import groupby @@ -93,7 +93,7 @@ class Agent(ModelSQL, ModelView): amounts.update(dict(cursor.fetchall())) digits = cls.pending_amount.digits exp = Decimal(str(10.0 ** -digits[1])) - for agent_id, amount in amounts.iteritems(): + for agent_id, amount in amounts.items(): if amount: # SQLite uses float for SUM if not isinstance(amount, Decimal): @@ -199,7 +199,7 @@ class PlanLines(sequence_ordered(), ModelSQL, ModelView, MatchMixin): try: if not isinstance(self.get_amount(**context), Decimal): raise ValueError - except ValueError, exception: + except ValueError as exception: self.raise_user_error('invalid_formula', { 'formula': self.formula, 'line': self.rec_name, diff --git a/invoice.py b/invoice.py index aec9f31124..bb41d97dba 100644 --- a/invoice.py +++ b/invoice.py @@ -1,6 +1,6 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. -from __future__ import unicode_literals + from decimal import Decimal from trytond.pool import PoolMeta, Pool @@ -12,8 +12,7 @@ from trytond.tools import grouped_slice __all__ = ['Invoice', 'InvoiceLine'] -class Invoice: - __metaclass__ = PoolMeta +class Invoice(metaclass=PoolMeta): __name__ = 'account.invoice' agent = fields.Many2One('commission.agent', 'Commission Agent', domain=[ @@ -105,8 +104,7 @@ class Invoice: return credit -class InvoiceLine: - __metaclass__ = PoolMeta +class InvoiceLine(metaclass=PoolMeta): __name__ = 'account.invoice.line' principal = fields.Many2One('commission.agent', 'Commission Principal', domain=[ diff --git a/party.py b/party.py index 35c415342b..15117f6f83 100644 --- a/party.py +++ b/party.py @@ -5,8 +5,7 @@ from trytond.pool import PoolMeta, Pool __all__ = ['PartyReplace', 'PartyErase'] -class PartyReplace: - __metaclass__ = PoolMeta +class PartyReplace(metaclass=PoolMeta): __name__ = 'party.replace' @classmethod @@ -16,8 +15,7 @@ class PartyReplace: ] -class PartyErase: - __metaclass__ = PoolMeta +class PartyErase(metaclass=PoolMeta): __name__ = 'party.erase' @classmethod diff --git a/product.py b/product.py index b5241d8006..335a4ed0c1 100644 --- a/product.py +++ b/product.py @@ -1,6 +1,5 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. -from __future__ import unicode_literals from trytond.pool import PoolMeta from trytond.model import ModelSQL, fields @@ -9,8 +8,7 @@ from trytond.model import ModelSQL, fields __all__ = ['Template', 'Template_Agent', 'Product'] -class Template: - __metaclass__ = PoolMeta +class Template(metaclass=PoolMeta): __name__ = 'product.template' principals = fields.Many2Many('product.template-commission.agent', 'template', 'agent', 'Commission Principals', @@ -36,8 +34,7 @@ class Template_Agent(ModelSQL): ]) -class Product: - __metaclass__ = PoolMeta +class Product(metaclass=PoolMeta): __name__ = 'product.product' @property diff --git a/sale.py b/sale.py index b3a5609308..64b1d3ffa9 100644 --- a/sale.py +++ b/sale.py @@ -1,6 +1,6 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. -from __future__ import unicode_literals + from trytond.pool import PoolMeta from trytond.model import fields @@ -10,8 +10,7 @@ from trytond.pyson import Eval __all__ = ['Sale', 'SaleLine'] -class Sale: - __metaclass__ = PoolMeta +class Sale(metaclass=PoolMeta): __name__ = 'sale.sale' agent = fields.Many2One('commission.agent', 'Commission Agent', domain=[ @@ -31,8 +30,7 @@ class Sale: return invoice -class SaleLine: - __metaclass__ = PoolMeta +class SaleLine(metaclass=PoolMeta): __name__ = 'sale.line' principal = fields.Many2One('commission.agent', 'Commission Principal', domain=[ diff --git a/setup.py b/setup.py index 7d809b787d..57a785f858 100644 --- a/setup.py +++ b/setup.py @@ -1,15 +1,12 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. -from setuptools import setup -import re -import os import io -try: - from configparser import ConfigParser -except ImportError: - from ConfigParser import ConfigParser +import os +import re +from configparser import ConfigParser +from setuptools import setup def read(fname): @@ -27,6 +24,7 @@ def get_require_version(name): major_version, minor_version + 1) return require + config = ConfigParser() config.readfp(open('tryton.cfg')) info = dict(config.items('tryton')) @@ -101,7 +99,6 @@ setup(name=name, 'Natural Language :: Slovenian', 'Natural Language :: Spanish', 'Operating System :: OS Independent', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', @@ -111,6 +108,7 @@ setup(name=name, 'Topic :: Office/Business :: Financial :: Accounting', ], license='GPL-3', + python_requires='>=3.4', install_requires=requires, dependency_links=dependency_links, zip_safe=False, @@ -121,6 +119,4 @@ setup(name=name, test_suite='tests', test_loader='trytond.test_loader:Loader', tests_require=tests_require, - use_2to3=True, - convert_2to3_doctests=['tests/scenario_commission.rst'], ) diff --git a/tests/scenario_commission.rst b/tests/scenario_commission.rst index 0860943f1d..0aa0020120 100644 --- a/tests/scenario_commission.rst +++ b/tests/scenario_commission.rst @@ -139,7 +139,7 @@ Post invoice:: >>> [c.amount for c in line.commissions] [Decimal('10.0000'), Decimal('10.0000')] >>> [c.invoice_state for c in line.commissions] - [u'', u''] + ['', ''] Pending amount for agent:: @@ -181,7 +181,7 @@ Create commission invoices:: >>> Commission = Model.get('commission') >>> commissions = Commission.find([]) >>> [c.invoice_state for c in commissions] - [u'invoiced', u'invoiced'] + ['invoiced', 'invoiced'] Credit invoice:: diff --git a/tests/test_commission.py b/tests/test_commission.py index ef218f6995..460354a237 100644 --- a/tests/test_commission.py +++ b/tests/test_commission.py @@ -1,6 +1,5 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. -from __future__ import unicode_literals import unittest import doctest diff --git a/tox.ini b/tox.ini index 2082ab4f4d..adbcbf8431 100644 --- a/tox.ini +++ b/tox.ini @@ -1,11 +1,11 @@ [tox] -envlist = {py27,py34,py35,py36}-{sqlite,postgresql},pypy-{sqlite,postgresql} +envlist = {py34,py35,py36}-{sqlite,postgresql},pypy3-{sqlite,postgresql} [testenv] commands = {envpython} setup.py test deps = - {py27,py34,py35,py36}-postgresql: psycopg2 >= 2.5 - pypy-postgresql: psycopg2cffi >= 2.5 + {py34,py35,py36}-postgresql: psycopg2 >= 2.5 + pypy3-postgresql: psycopg2cffi >= 2.5 sqlite: sqlitebck setenv = sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}