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 94d01a64ec..585fc68878 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ +* Remove support for Python 2.7 + Version 4.8.0 - 2018-04-23 * Bug fixes (see mercurial logs for details) Version 4.6.0 - 2017-10-30 -* Initial release \ No newline at end of file +* Initial release diff --git a/INSTALL b/INSTALL index 65ebcacd42..76b27a7db9 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_account_statement_coda 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_statement (http://www.tryton.org/) * febelfin-coda (http://pypi.python.org/pypi/febelfin-coda/') diff --git a/account.py b/account.py index 095f3b4cd5..1fd6a2f77c 100644 --- a/account.py +++ b/account.py @@ -7,8 +7,7 @@ from coda import CODA from trytond.pool import PoolMeta, Pool -class StatementImportStart: - __metaclass__ = PoolMeta +class StatementImportStart(metaclass=PoolMeta): __name__ = 'account.statement.import.start' @classmethod @@ -17,8 +16,7 @@ class StatementImportStart: cls.file_format.selection.append(('coda', "CODA")) -class StatementImport: - __metaclass__ = PoolMeta +class StatementImport(metaclass=PoolMeta): __name__ = 'account.statement.import' @classmethod @@ -35,7 +33,7 @@ class StatementImport: def parse_coda(self, encoding='windows-1252'): file_ = self.start.file_ - if not isinstance(file_, unicode): + if not isinstance(file_, str): file_ = file_.decode(encoding) file_ = StringIO(file_) coda = CODA(file_) diff --git a/setup.py b/setup.py index 926a9a879b..2e2d5be205 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', @@ -109,6 +106,7 @@ setup(name=name, 'Topic :: Office/Business', ], license='GPL-3', + python_requires='>=3.4', install_requires=requires, dependency_links=dependency_links, zip_safe=False, @@ -119,8 +117,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_account_statement_coda.rst', - ], ) diff --git a/tests/scenario_account_statement_coda.rst b/tests/scenario_account_statement_coda.rst index 0a469b8223..dd98d357bb 100644 --- a/tests/scenario_account_statement_coda.rst +++ b/tests/scenario_account_statement_coda.rst @@ -84,7 +84,8 @@ Create Statement Journal:: Import CODA file:: >>> statement_import = Wizard('account.statement.import') - >>> coda = file_open('account_statement_coda/tests/CODA.txt', mode='rb').read() + >>> with file_open('account_statement_coda/tests/CODA.txt', mode='rb') as fp: + ... coda = fp.read() >>> statement_import.form.file_ = coda >>> statement_import.form.file_format = 'coda' >>> statement_import.execute('import_') @@ -94,7 +95,7 @@ Check Statement:: >>> Statement = Model.get('account.statement') >>> statement, = Statement.find([]) >>> statement.name - u'001' + '001' >>> statement.date datetime.date(2017, 8, 1) >>> statement.start_balance @@ -109,12 +110,12 @@ Check Statement:: 1 >>> origin, = statement.origins >>> origin.number - u'0001' + '0001' >>> origin.date datetime.date(2017, 7, 19) >>> origin.amount Decimal('100') >>> origin.description - u'COMMUNICATION' + 'COMMUNICATION' >>> origin.informations['coda_bank_reference'] - u'REF BANK ' + 'REF BANK ' 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://}