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 2ecad11b4b..0f406a5da1 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 4c9d4146a9..4516249650 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_stock_supply_production 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_product (http://www.tryton.org/) * trytond_stock (http://www.tryton.org/) diff --git a/__init__.py b/__init__.py index 6c9da10c05..e356141069 100644 --- a/__init__.py +++ b/__init__.py @@ -2,20 +2,20 @@ # this repository contains the full copyright notices and license terms. from trytond.pool import Pool -from stock import * -from production import * -from product import * +from . import stock +from . import production +from . import product def register(): Pool.register( - OrderPoint, - LocationLeadTime, - Configuration, - ConfigurationSupplyPeriod, - Production, - Product, + stock.OrderPoint, + stock.LocationLeadTime, + production.Configuration, + production.ConfigurationSupplyPeriod, + production.Production, + product.Product, module='stock_supply_production', type_='model') Pool.register( - StockSupply, + stock.StockSupply, module='stock_supply_production', type_='wizard') diff --git a/product.py b/product.py index ee82a9a33d..9264e1888f 100644 --- a/product.py +++ b/product.py @@ -7,8 +7,7 @@ from trytond.pool import Pool, PoolMeta __all__ = ['Product'] -class Product: - __metaclass__ = PoolMeta +class Product(metaclass=PoolMeta): __name__ = 'product.product' def get_supply_period(self): diff --git a/production.py b/production.py index b20e93238f..6613c2a1fb 100644 --- a/production.py +++ b/production.py @@ -12,8 +12,7 @@ __all__ = ['Configuration', 'ConfigurationSupplyPeriod', 'Production'] supply_period = fields.TimeDelta("Supply Period") -class Configuration: - __metaclass__ = PoolMeta +class Configuration(metaclass=PoolMeta): __name__ = 'production.configuration' supply_period = fields.MultiValue(supply_period) @@ -24,8 +23,7 @@ class ConfigurationSupplyPeriod(ModelSQL, ValueMixin): supply_period = supply_period -class Production: - __metaclass__ = PoolMeta +class Production(metaclass=PoolMeta): __name__ = 'production' @classmethod @@ -208,7 +206,7 @@ class Production: [location_id], with_childs=True, grouping_filter=(product_ids,)) - for key, qty in pbl.iteritems(): + for key, qty in pbl.items(): _, product_id = key current_qties[product_id] += qty diff --git a/setup.py b/setup.py index 0e47c4b63e..71e00bedaa 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', @@ -111,6 +108,7 @@ setup(name=name, 'Topic :: Office/Business', ], license='GPL-3', + python_requires='>=3.4', install_requires=requires, dependency_links=dependency_links, zip_safe=False, @@ -121,8 +119,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_stock_supply_production.rst', - ], ) diff --git a/stock.py b/stock.py index 0d73a8fb2f..4721978873 100644 --- a/stock.py +++ b/stock.py @@ -9,8 +9,7 @@ from trytond.wizard import StateAction __all__ = ['OrderPoint', 'LocationLeadTime', 'StockSupply'] -class OrderPoint: - __metaclass__ = PoolMeta +class OrderPoint(metaclass=PoolMeta): __name__ = 'stock.order_point' @classmethod @@ -51,8 +50,7 @@ class OrderPoint: return location -class LocationLeadTime: - __metaclass__ = PoolMeta +class LocationLeadTime(metaclass=PoolMeta): __name__ = 'stock.location.lead_time' @classmethod @@ -66,8 +64,7 @@ class LocationLeadTime: return extra -class StockSupply: - __metaclass__ = PoolMeta +class StockSupply(metaclass=PoolMeta): __name__ = 'stock.supply' production = StateAction('stock_supply_production.act_production_request') diff --git a/tests/scenario_stock_supply_production.rst b/tests/scenario_stock_supply_production.rst index 61e39515cb..2a31ead3db 100644 --- a/tests/scenario_stock_supply_production.rst +++ b/tests/scenario_stock_supply_production.rst @@ -59,7 +59,7 @@ Create a need for product:: >>> move.to_location = lost_loc >>> move.click('do') >>> move.state - u'done' + 'done' The is no production request:: @@ -76,7 +76,7 @@ There is now a production request:: >>> production, = Production.find([]) >>> production.state - u'request' + 'request' >>> production.product == product True >>> production.quantity @@ -118,7 +118,7 @@ There is now a production request:: >>> production, = Production.find([]) >>> production.state - u'request' + 'request' >>> production.product == product True >>> production.quantity 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://}