From 0d8cdd01c8a4bcd123bd24ff59243ece97b22fdf Mon Sep 17 00:00:00 2001 From: Jonathan Levy Date: Tue, 1 Mar 2016 21:48:31 +0100 Subject: [PATCH] Add Python3 support issue3211 review24851003 --- .drone.yml | 4 ++-- CHANGELOG | 2 ++ forecast.py | 9 +++++---- setup.py | 16 +++++++++++++--- tox.ini | 4 ++-- 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9d7c769d8c..c4fd423e94 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,9 +1,9 @@ -image: python2.7 +image: python:all env: - POSTGRESQL_URI=postgresql://postgres@127.0.0.1:5432/ - MYSQL_URI=mysql://root@127.0.0.1:3306/ script: - pip install tox - - tox -e "py27-{sqlite,postgresql}" + - tox -e "{py27,py33,py34,py35}-{sqlite,postgresql}" --skip-missing-interpreters services: - postgres diff --git a/CHANGELOG b/CHANGELOG index dce57bb3fe..95efba6fc3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Add Python3 support + Version 3.8.0 - 2015-11-02 * Bug fixes (see mercurial logs for details) diff --git a/forecast.py b/forecast.py index 3a89ef3b74..e33412bf16 100644 --- a/forecast.py +++ b/forecast.py @@ -1,5 +1,6 @@ # 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 __future__ import division import datetime from dateutil.relativedelta import relativedelta import itertools @@ -435,8 +436,8 @@ class ForecastLine(ModelSQL, ModelView): delta = to_date - from_date delta = delta.days + 1 - nb_packet = int((self.quantity - self.quantity_executed) - / self.minimal_quantity) + nb_packet = ((self.quantity - self.quantity_executed) + // self.minimal_quantity) distribution = self.distribute(delta, nb_packet) unit_price = None if self.forecast.destination.type == 'customer': @@ -484,7 +485,7 @@ class ForecastLine(ModelSQL, ModelView): elif delta // qty > 1: i = 0 while i < qty: - a[i * delta // qty + (delta // qty / 2)] += 1 + a[i * delta // qty + (delta // qty // 2)] += 1 i += 1 qty = 0 else: @@ -493,7 +494,7 @@ class ForecastLine(ModelSQL, ModelView): qty = delta - qty i = 0 while i < qty: - a[delta - ((i * delta // qty) + (delta // qty / 2)) - 1 + a[delta - ((i * delta // qty) + (delta // qty // 2)) - 1 ] -= 1 i += 1 qty = 0 diff --git a/setup.py b/setup.py index d27bce118b..b5db4511d6 100644 --- a/setup.py +++ b/setup.py @@ -5,11 +5,17 @@ from setuptools import setup import re import os -import ConfigParser +import io +try: + from configparser import ConfigParser +except ImportError: + from ConfigParser import ConfigParser def read(fname): - return open(os.path.join(os.path.dirname(__file__), fname)).read() + return io.open( + os.path.join(os.path.dirname(__file__), fname), + 'r', encoding='utf-8').read() def get_require_version(name): @@ -21,7 +27,7 @@ def get_require_version(name): major_version, minor_version + 1) return require -config = ConfigParser.ConfigParser() +config = ConfigParser() config.readfp(open('tryton.cfg')) info = dict(config.items('tryton')) for key in ('depends', 'extras_depend', 'xml'): @@ -89,6 +95,9 @@ setup(name=name, '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 :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Office/Business', @@ -102,4 +111,5 @@ setup(name=name, """, test_suite='tests', test_loader='trytond.test_loader:Loader', + use_2to3=True, ) diff --git a/tox.ini b/tox.ini index e9d2876444..e2a064851d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,10 @@ [tox] -envlist = py27-{sqlite,postgresql,mysql},pypy-{sqlite,postgresql} +envlist = {py27,py33,py34,py35}-{sqlite,postgresql,mysql},pypy-{sqlite,postgresql} [testenv] commands = {envpython} setup.py test deps = - py27-postgresql: psycopg2 >= 2.0 + {py27,py33,py34,py35}-postgresql: psycopg2 >= 2.0 pypy-postgresql: psycopg2cffi >= 2.5 mysql: MySQL-python setenv =