From dd7259f6a74a45aa2a9858f9100730940d6659b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 26 Jun 2018 19:11:53 +0200 Subject: [PATCH] Remove support for Python 2.7 issue7497 review53261002 --- .drone.yml | 6 ------ CHANGELOG | 2 ++ INSTALL | 2 +- configuration.py | 6 ++---- party.py | 3 +-- sale.py | 3 +-- setup.py | 20 +++++++------------- tests/scenario_sale_invoice_grouping.rst | 16 ++++++++-------- tox.ini | 6 +++--- 9 files changed, 25 insertions(+), 39 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 47d4792d34..de280358fc 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) diff --git a/INSTALL b/INSTALL index 43116dd1d2..408a2bd171 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_sale_invoice_grouping Prerequisites ------------- - * Python 2.7 or later (http://www.python.org/) + * Python 3.4 or later (http://www.python.org/) * trytond (http://www.tryton.org/) * trytond_party (http://www.tryton.org/) * trytond_account_invoice (http://www.tryton.org/) diff --git a/configuration.py b/configuration.py index db859dd5ea..7bdc689f38 100644 --- a/configuration.py +++ b/configuration.py @@ -19,8 +19,7 @@ def get_sale_invoice_grouping_methods(cls): return Party.fields_get([field_name])[field_name]['selection'] -class Configuration: - __metaclass__ = PoolMeta +class Configuration(metaclass=PoolMeta): __name__ = 'sale.configuration' sale_invoice_grouping_method = fields.MultiValue( @@ -42,8 +41,7 @@ class Configuration: return Party.fields_get([field_name])[field_name]['selection'] -class ConfigurationSaleMethod(): - __metaclass__ = PoolMeta +class ConfigurationSaleMethod(metaclass=PoolMeta): __name__ = 'sale.configuration.sale_method' sale_invoice_grouping_method = sale_invoice_grouping_method diff --git a/party.py b/party.py index aeee9f3e1e..d8fe4a2e57 100644 --- a/party.py +++ b/party.py @@ -8,8 +8,7 @@ from trytond.tools.multivalue import migrate_property __all__ = ['Party', 'PartySaleInvoiceGroupingMethod'] -class Party: - __metaclass__ = PoolMeta +class Party(metaclass=PoolMeta): __name__ = 'party.party' sale_invoice_grouping_method = fields.MultiValue(fields.Selection([ diff --git a/sale.py b/sale.py index 971bacdddc..2440c23b65 100644 --- a/sale.py +++ b/sale.py @@ -7,8 +7,7 @@ from trytond.transaction import Transaction __all__ = ['Sale'] -class Sale: - __metaclass__ = PoolMeta +class Sale(metaclass=PoolMeta): __name__ = 'sale.sale' @property diff --git a/setup.py b/setup.py index 7d29e40681..18856980d2 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')) @@ -100,7 +98,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', @@ -110,6 +107,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, @@ -120,8 +118,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_sale_invoice_grouping.rst', - ], ) diff --git a/tests/scenario_sale_invoice_grouping.rst b/tests/scenario_sale_invoice_grouping.rst index 86129d8db1..094c947129 100644 --- a/tests/scenario_sale_invoice_grouping.rst +++ b/tests/scenario_sale_invoice_grouping.rst @@ -117,7 +117,7 @@ Sale some products:: >>> sale.click('confirm') >>> sale.click('process') >>> sale.state - u'processing' + 'processing' Make another sale:: @@ -126,7 +126,7 @@ Make another sale:: >>> sale.click('confirm') >>> sale.click('process') >>> sale.state - u'processing' + 'processing' Check the invoices:: @@ -137,10 +137,10 @@ Check the invoices:: 2 >>> invoice = invoices[0] >>> invoice.type - u'out' + 'out' >>> invoice.click('post') >>> invoice.state - u'posted' + 'posted' Now we'll use the same scenario with the grouped customer:: @@ -156,7 +156,7 @@ Now we'll use the same scenario with the grouped customer:: >>> sale.click('confirm') >>> sale.click('process') >>> sale.state - u'processing' + 'processing' Make another sale:: @@ -171,7 +171,7 @@ Make another sale:: >>> sale.click('confirm') >>> sale.click('process') >>> sale.state - u'processing' + 'processing' Check the invoices:: @@ -191,7 +191,7 @@ Check the invoices:: 2.0 >>> invoice.click('post') >>> invoice.state - u'posted' + 'posted' Create a manual invoice:: @@ -214,7 +214,7 @@ Check that a new sale won't be grouped with the manual invoice:: >>> sale.click('confirm') >>> sale.click('process') >>> sale.state - u'processing' + 'processing' Check the invoices:: 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://}