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 e45199a596..2642105528 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Remove support for Python 2.7 * Remove accounts from products Version 4.8.0 - 2018-04-23 diff --git a/INSTALL b/INSTALL index 0eb67f4652..1fb2435ea7 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_account_product 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_company (http://www.tryton.org/) * trytond_account (http://www.tryton.org/) diff --git a/account.py b/account.py index 2fad19e3c0..b94e630043 100644 --- a/account.py +++ b/account.py @@ -8,8 +8,7 @@ from trytond.transaction import Transaction __all__ = ['CreateChart', 'CreateChartProperties'] -class CreateChartProperties: - __metaclass__ = PoolMeta +class CreateChartProperties(metaclass=PoolMeta): __name__ = 'account.create_chart.properties' category_account_expense = fields.Many2One( @@ -28,8 +27,7 @@ class CreateChartProperties: depends=['company']) -class CreateChart: - __metaclass__ = PoolMeta +class CreateChart(metaclass=PoolMeta): __name__ = 'account.create_chart' def transition_create_properties(self): diff --git a/configuration.py b/configuration.py index e94119aa1a..7356793e94 100644 --- a/configuration.py +++ b/configuration.py @@ -8,8 +8,7 @@ from trytond.pyson import Eval __all__ = ['Configuration', 'ConfigurationDefaultAccount'] -class Configuration: - __metaclass__ = PoolMeta +class Configuration(metaclass=PoolMeta): __name__ = 'account.configuration' default_category_account_expense = fields.MultiValue(fields.Many2One( @@ -34,8 +33,7 @@ class Configuration: return super(Configuration, cls).multivalue_model(field) -class ConfigurationDefaultAccount: - __metaclass__ = PoolMeta +class ConfigurationDefaultAccount(metaclass=PoolMeta): __name__ = 'account.configuration.default_account' default_category_account_expense = fields.Many2One( 'account.account', "Default Account Expense", diff --git a/product.py b/product.py index dfb5dd0735..ee101a0969 100644 --- a/product.py +++ b/product.py @@ -49,8 +49,7 @@ def template_property(field_name): return prop -class Category(CompanyMultiValueMixin): - __metaclass__ = PoolMeta +class Category(CompanyMultiValueMixin, metaclass=PoolMeta): __name__ = 'product.category' accounting = fields.Boolean('Accounting', select=True, states={ @@ -305,8 +304,7 @@ class CategorySupplierTax(ModelSQL): super(CategorySupplierTax, cls).__register__(module_name) -class Template(CompanyMultiValueMixin): - __metaclass__ = PoolMeta +class Template(CompanyMultiValueMixin, metaclass=PoolMeta): __name__ = 'product.template' account_category = fields.Many2One('product.category', 'Account Category', domain=[ @@ -368,8 +366,7 @@ class Template(CompanyMultiValueMixin): return taxes -class Product: - __metaclass__ = PoolMeta +class Product(metaclass=PoolMeta): __name__ = 'product.product' account_expense_used = template_property('account_expense_used') account_revenue_used = template_property('account_revenue_used') @@ -399,8 +396,7 @@ class TemplateAccountCategory(ModelSQL): where=template.account_category != Null) -class TemplateCategoryAll: - __metaclass__ = PoolMeta +class TemplateCategoryAll(metaclass=PoolMeta): __name__ = 'product.template-product.category.all' @classmethod diff --git a/setup.py b/setup.py index f0cb179f9c..b09231eb00 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, @@ -119,5 +117,4 @@ setup(name=name, """, test_suite='tests', test_loader='trytond.test_loader:Loader', - use_2to3=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://}