From bcf7d300f7e8ca729f4453fc716c35d0eb0145ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 26 Jun 2018 19:11:41 +0200 Subject: [PATCH] Remove support for Python 2.7 issue7497 review53261002 --- .drone.yml | 6 ------ CHANGELOG | 2 ++ INSTALL | 2 +- __init__.py | 2 +- account.py | 23 +++++++---------------- setup.py | 20 +++++++------------- tests/scenario_fec.rst | 3 ++- tox.ini | 6 +++--- 8 files changed, 23 insertions(+), 41 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 8cf0b1fc68..0196b28b42 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) * Set CompAux in starting balance of FEC diff --git a/INSTALL b/INSTALL index bc1c135bcb..c90889123e 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_account_fr 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_account (http://www.tryton.org/) diff --git a/__init__.py b/__init__.py index c248ae9b65..2487cfd49c 100644 --- a/__init__.py +++ b/__init__.py @@ -2,7 +2,7 @@ # this repository contains the full copyright notices and license terms. from trytond.pool import Pool -from account import * +from .account import * def register(): diff --git a/account.py b/account.py index 4e9298e6d4..635fbd1faa 100644 --- a/account.py +++ b/account.py @@ -18,8 +18,7 @@ __all__ = ['TaxTemplate', 'TaxRuleTemplate', 'AccountFrFEC', 'AccountFrFECStart', 'AccountFrFECResult'] -class TaxTemplate: - __metaclass__ = PoolMeta +class TaxTemplate(metaclass=PoolMeta): __name__ = 'account.tax.template' @classmethod @@ -55,8 +54,7 @@ class TaxTemplate: super(TaxTemplate, cls).__register__(module_name) -class TaxRuleTemplate: - __metaclass__ = PoolMeta +class TaxRuleTemplate(metaclass=PoolMeta): __name__ = 'account.tax.rule.template' @classmethod @@ -96,10 +94,7 @@ class AccountFrFEC(Wizard): ]) def transition_generate(self): - if sys.version_info < (3,): - fec = BytesIO() - else: - fec = StringIO() + fec = StringIO() writer = self.get_writer(fec) writer.writerow(self.get_header()) format_date = self.get_format_date() @@ -108,17 +103,13 @@ class AccountFrFEC(Wizard): def replace_delimiter(c): delimiter = writer.dialect.delimiter return (c or '').replace(delimiter, ' ') - if sys.version_info < (3,): - def convert(c): - return replace_delimiter(c).encode('utf-8') - else: - convert = replace_delimiter + convert = replace_delimiter for row in self.get_start_balance(): - writer.writerow(map(convert, row)) + writer.writerow(list(map(convert, row))) for line in self.get_lines(): row = self.get_row(line, format_date, format_number) - writer.writerow(map(convert, row)) + writer.writerow(list(map(convert, row))) value = fec.getvalue() if not isinstance(value, bytes): value = value.encode('utf-8') @@ -206,7 +197,7 @@ class AccountFrFEC(Wizard): ('end_date', '<', self.start.fiscalyear.start_date), ('company', '=', company.id), ]) - fiscalyear_ids = map(int, fiscalyears) + fiscalyear_ids = list(map(int, fiscalyears)) query = (account .join(line, condition=line.account == account.id) diff --git a/setup.py b/setup.py index 3a2dea18e9..33d5aa4d5b 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')) @@ -102,7 +100,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', @@ -112,6 +109,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, @@ -122,8 +120,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_fec.rst', - ], ) diff --git a/tests/scenario_fec.rst b/tests/scenario_fec.rst index c3043c48dc..587d5ff8dd 100644 --- a/tests/scenario_fec.rst +++ b/tests/scenario_fec.rst @@ -111,5 +111,6 @@ Generate FEC:: >>> FEC.execute('generate') >>> FEC.form.filename >>> file = os.path.join(os.path.dirname(__file__), 'FEC.csv') - >>> FEC.form.file.decode('utf-8') == io.open(file, mode='rb').read().decode('utf-8') + >>> with io.open(file, mode='rb') as fp: + ... FEC.form.file.decode('utf-8') == fp.read().decode('utf-8') True 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://}