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 f96dba436e..f26b5763fe 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) @@ -21,6 +23,7 @@ Version 3.8.0 - 2015-11-02 Version 3.6.0 - 2015-04-20 * Bug fixes (see mercurial logs for details) * Add support for PyPy + Version 3.4.0 - 2014-10-20 * Bug fixes (see mercurial logs for details) diff --git a/INSTALL b/INSTALL index d5cde827e7..7d49e20dcf 100644 --- a/INSTALL +++ b/INSTALL @@ -4,7 +4,7 @@ Installing trytond_stock_split 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_stock (http://www.tryton.org/) diff --git a/setup.py b/setup.py index a0b4ffdd17..15a7cc798d 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')) @@ -103,7 +101,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', @@ -112,6 +109,7 @@ setup(name=name, 'Topic :: Office/Business', ], license='GPL-3', + python_requires='>=3.4', install_requires=requires, dependency_links=dependency_links, zip_safe=False, @@ -122,8 +120,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_split_shipment.rst', - ], ) diff --git a/stock.py b/stock.py index 7484a43009..42ecfd1098 100644 --- a/stock.py +++ b/stock.py @@ -11,8 +11,7 @@ __all__ = ['Move', 'SplitMoveStart', 'SplitMove', 'SplitShipment', 'SplitShipmentStart'] -class Move: - __metaclass__ = PoolMeta +class Move(metaclass=PoolMeta): __name__ = 'stock.move' @classmethod @@ -149,18 +148,15 @@ class _ShipmentSplit(ModelView): pass -class ShipmentInReturn(_ShipmentSplit): - __metaclass__ = PoolMeta +class ShipmentInReturn(_ShipmentSplit, metaclass=PoolMeta): __name__ = 'stock.shipment.in.return' -class ShipmentOut(_ShipmentSplit): - __metaclass__ = PoolMeta +class ShipmentOut(_ShipmentSplit, metaclass=PoolMeta): __name__ = 'stock.shipment.out' -class ShipmentInternal(_ShipmentSplit): - __metaclass__ = PoolMeta +class ShipmentInternal(_ShipmentSplit, metaclass=PoolMeta): __name__ = 'stock.shipment.internal' @@ -197,9 +193,9 @@ class SplitShipment(Wizard): def default_start(self, fields): shipment = self.get_shipment() moves = self.get_moves(shipment) - moves = filter(lambda m: m.state == 'draft', moves) + move_ids = [m.id for m in moves if m.state == 'draft'] return { - 'domain_moves': map(int, moves), + 'domain_moves': move_ids, } def transition_split(self): @@ -216,7 +212,7 @@ class SplitShipment(Wizard): if Shipment.__name__ == 'stock.shipment.out': Move.draft(shipment.inventory_moves) Move.delete( - filter(lambda m: m.state == 'draft', shipment.inventory_moves)) + [m for m in shipment.inventory_moves if m.state == 'draft']) shipment, = Shipment.copy([shipment.id], default={'moves': None}) Move.write(list(self.start.moves), {'shipment': str(shipment)}) 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://}