diff --git a/.drone.yml b/.drone.yml index b873d8e..82ae06b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -32,27 +32,15 @@ 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 - - IMAGE: python:3.4 - TOXENV: py34 - DATABASE: postgresql - - IMAGE: python:3.5 - TOXENV: py35 - DATABASE: sqlite - - IMAGE: python:3.5 - TOXENV: py35 - DATABASE: postgresql - IMAGE: python:3.6 TOXENV: py36 DATABASE: sqlite - IMAGE: python:3.6 TOXENV: py36 DATABASE: postgresql + - IMAGE: python:3.7 + TOXENV: py37 + DATABASE: sqlite + - IMAGE: python:3.7 + TOXENV: py37 + DATABASE: postgresql \ No newline at end of file diff --git a/INSTALL b/INSTALL index b497295..b88b7cb 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,6 @@ Installing datalife_product_cost_manage Prerequisites ------------- - * Python 2.7 or later (http://www.python.org/) * trytond (http://www.tryton.org/) Installation diff --git a/category.py b/category.py index b58ae89..eaa6560 100644 --- a/category.py +++ b/category.py @@ -6,14 +6,12 @@ from trytond.modules.cost_manage.cost_manage import CategorizedCategoryMixin __all__ = ['Category', 'CostCategory'] -class Category(CategorizedCategoryMixin): +class Category(CategorizedCategoryMixin, metaclass=PoolMeta): __name__ = 'product.category' - __metaclass__ = PoolMeta -class CostCategory: +class CostCategory(metaclass=PoolMeta): __name__ = 'cost.manage.category' - __metaclass__ = PoolMeta @classmethod def __setup__(cls): diff --git a/product.py b/product.py index b27b814..efca9b9 100644 --- a/product.py +++ b/product.py @@ -8,9 +8,8 @@ from trytond.modules.cost_manage.cost_manage import CategorizedMixin __all__ = ['Template', 'Product'] -class Template(CategorizedMixin): +class Template(CategorizedMixin, metaclass=PoolMeta): __name__ = 'product.template' - __metaclass__ = PoolMeta cost_concept_category = fields.Many2One('product.category', 'Cost Product Category', @@ -18,8 +17,7 @@ class Template(CategorizedMixin): depends=['costs_category']) -class Product: - __metaclass__ = PoolMeta +class Product(metaclass=PoolMeta): __name__ = 'product.product' # Avoid raise of UserError from MissingFunction diff --git a/setup.py b/setup.py index 8f37ed9..429b7d8 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # The COPYRIGHT file at the top level of this repository contains # the full copyright notices and license terms. @@ -6,10 +6,7 @@ from setuptools import setup import re import os import io -try: - from configparser import ConfigParser -except ImportError: - from ConfigParser import ConfigParser +from configparser import ConfigParser MODULE2PREFIX = { 'cost_manage': 'datalife' @@ -22,6 +19,7 @@ def read(fname): 'r', encoding='utf-8').read() + def get_require_version(name): if minor_version % 2: require = '%s >= %s.%s.dev0, < %s.%s' @@ -32,6 +30,7 @@ def get_require_version(name): return require + config = ConfigParser() config.readfp(open('tryton.cfg')) info = dict(config.items('tryton')) @@ -49,9 +48,12 @@ requires = [] for dep in info.get('depends', []): if not re.match(r'(ir|res)(\W|$)', dep): prefix = MODULE2PREFIX.get(dep, 'trytond') + requires.append(get_require_version('%s_%s' % (prefix, dep))) + requires.append(get_require_version('trytond')) + tests_require = [get_require_version('proteus')] series = '%s.%s' % (major_version, minor_version) if minor_version % 2: @@ -86,7 +88,7 @@ setup(name=name, ], package_data={ 'trytond.modules.product_cost_manage': (info.get('xml', []) - + ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.odt', + + ['tryton.cfg', 'view/*.xml', 'locale/*.po', '*.fodt', 'icons/*.svg', 'tests/*.rst']), }, classifiers=[ @@ -111,15 +113,16 @@ setup(name=name, 'Natural Language :: Slovenian', 'Natural Language :: Spanish', 'Operating System :: OS Independent', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Office/Business', ], license='GPL-3', + python_requires='>=3.4', install_requires=requires, dependency_links=dependency_links, zip_safe=False, @@ -130,5 +133,4 @@ setup(name=name, test_suite='tests', test_loader='trytond.test_loader:Loader', tests_require=tests_require, - use_2to3=True, ) diff --git a/tox.ini b/tox.ini index 3d844ea..718b574 100644 --- a/tox.ini +++ b/tox.ini @@ -1,18 +1,15 @@ [tox] -envlist = {py27,py34,py35,py36}-{sqlite,postgresql,mysql},pypy-{sqlite,postgresql} +envlist = {py36,py37}-{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 - mysql: MySQL-python - sqlite: sqlitebck + {py36,py37}-postgresql: psycopg2 >= 2.5 + pypy3-postgresql: psycopg2cffi >= 2.5 + {py36}-sqlite: sqlitebck setenv = sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} postgresql: TRYTOND_DATABASE_URI={env:POSTGRESQL_URI:postgresql://} - mysql: TRYTOND_DATABASE_URI={env:MYSQL_URI:mysql://} sqlite: DB_NAME={env:SQLITE_NAME::memory:} postgresql: DB_NAME={env:POSTGRESQL_NAME:test} - mysql: DB_NAME={env:MYSQL_NAME:test} -install_command = pip install --pre --process-dependency-links {opts} {packages} +install_command = pip install --pre --find-links https://trydevpi.tryton.org/ {opts} {packages} \ No newline at end of file diff --git a/tryton.cfg b/tryton.cfg index 36e1fd9..f965f97 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -1,5 +1,5 @@ [tryton] -version=4.8.0 +version=5.0 depends: ir res