From e145fbfbcb111453fc3c7f5514bd936541782ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 26 Jun 2018 19:11:56 +0200 Subject: [PATCH] Remove support for Python 2.7 issue7497 review53261002 --- .drone.yml | 6 ------ CHANGELOG | 1 + INSTALL | 2 +- product.py | 6 ++---- setup.py | 18 +++++++----------- stock.py | 21 +++++++-------------- tests/scenario_stock_lot_shipment_out.rst | 6 +++--- tox.ini | 6 +++--- 8 files changed, 24 insertions(+), 42 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 9b9e8f6f05..be1b966e9b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Remove support for Python 2.7 * Check no move when modify product of lot Version 4.8.0 - 2018-04-23 diff --git a/INSTALL b/INSTALL index 12c5c5dee1..8bdf35e593 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_stock_lot 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/product.py b/product.py index 90b11c146d..a5ce32ea99 100644 --- a/product.py +++ b/product.py @@ -7,8 +7,7 @@ from trytond.pool import PoolMeta __all__ = ['Template', 'Product', 'TemplateLotType'] -class Template: - __metaclass__ = PoolMeta +class Template(metaclass=PoolMeta): __name__ = 'product.template' # TODO to replace with a Multiple Selection @@ -21,8 +20,7 @@ class Template: depends=['type']) -class Product: - __metaclass__ = PoolMeta +class Product(metaclass=PoolMeta): __name__ = 'product.product' def lot_is_required(self, from_, to): diff --git a/setup.py b/setup.py index 583c55a1c0..ff28f3c733 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,6 +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_lot_shipment_out.rst'], ) diff --git a/stock.py b/stock.py index 105d14c06b..4dec1fea61 100644 --- a/stock.py +++ b/stock.py @@ -120,8 +120,7 @@ class LotType(ModelSQL, ModelView): code = fields.Char('Code', required=True) -class Move: - __metaclass__ = PoolMeta +class Move(metaclass=PoolMeta): __name__ = 'stock.move' lot = fields.Many2One('stock.lot', 'Lot', domain=[ @@ -155,8 +154,7 @@ class Move: move.check_lot() -class ShipmentIn: - __metaclass__ = PoolMeta +class ShipmentIn(metaclass=PoolMeta): __name__ = 'stock.shipment.in' @classmethod @@ -167,8 +165,7 @@ class ShipmentIn: return move -class ShipmentOut: - __metaclass__ = PoolMeta +class ShipmentOut(metaclass=PoolMeta): __name__ = 'stock.shipment.out' @classmethod @@ -211,8 +208,7 @@ class ShipmentOut: Move.write(*to_write) -class ShipmentOutReturn: - __metaclass__ = PoolMeta +class ShipmentOutReturn(metaclass=PoolMeta): __name__ = 'stock.shipment.out.return' @classmethod @@ -224,8 +220,7 @@ class ShipmentOutReturn: return move -class Period: - __metaclass__ = PoolMeta +class Period(metaclass=PoolMeta): __name__ = 'stock.period' lot_caches = fields.One2Many('stock.period.cache.lot', 'period', 'Lot Caches', readonly=True) @@ -261,8 +256,7 @@ class PeriodCacheLot(ModelSQL, ModelView): internal_quantity = fields.Float('Internal Quantity', readonly=True) -class Inventory: - __metaclass__ = PoolMeta +class Inventory(metaclass=PoolMeta): __name__ = 'stock.inventory' @classmethod @@ -270,8 +264,7 @@ class Inventory: return super(Inventory, cls).grouping() + ('lot', ) -class InventoryLine: - __metaclass__ = PoolMeta +class InventoryLine(metaclass=PoolMeta): __name__ = 'stock.inventory.line' lot = fields.Many2One('stock.lot', 'Lot', domain=[ diff --git a/tests/scenario_stock_lot_shipment_out.rst b/tests/scenario_stock_lot_shipment_out.rst index ed9ae803f2..c0d87b6a6d 100644 --- a/tests/scenario_stock_lot_shipment_out.rst +++ b/tests/scenario_stock_lot_shipment_out.rst @@ -99,7 +99,7 @@ Assign the shipment with 2 lines of 7 products:: ... move.quantity = 7 >>> shipment_out.click('assign_force') >>> shipment_out.state - u'assigned' + 'assigned' Set 2 lots:: @@ -114,7 +114,7 @@ Pack the shipment:: >>> shipment_out.click('pack') >>> shipment_out.state - u'packed' + 'packed' >>> len(shipment_out.outgoing_moves) 3 >>> sorted([m.quantity for m in shipment_out.outgoing_moves]) @@ -124,4 +124,4 @@ Pack the shipment:: ... quantity = lot_quantities.setdefault(move.lot.number, 0) ... lot_quantities[move.lot.number] += move.quantity >>> sorted(lot_quantities.items()) - [(u'00001', 7.0), (u'00002', 7.0)] + [('00001', 7.0), ('00002', 7.0)] 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://}