From 5947c0564966a791709c855fa2fb01af984c86dc Mon Sep 17 00:00:00 2001 From: Marc Abonce Seguin Date: Tue, 16 Jan 2018 22:29:04 -0600 Subject: [PATCH 1/2] add CI test for python3.5 Python3.5 is still the default Python3 version in Debian Stretch (stable) and Ubuntu 16.04 LTS https://packages.debian.org/source/stretch/python3-defaults https://packages.ubuntu.com/source/xenial/python/python3-defaults --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 0dde8317..08bcfaad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ addons: language: python python: - "2.7" + - "3.5" - "3.6" before_install: - "export DISPLAY=:99.0" From 829032f306cec8f6d109bfb037a01dc50ff87442 Mon Sep 17 00:00:00 2001 From: Marc Abonce Seguin Date: Tue, 16 Jan 2018 23:05:18 -0600 Subject: [PATCH 2/2] [fix] read utf-8 files (settings, languages, currency) with python3.5 Related to discussion in #1124 The io.open import is necessary for python2 --- searx/__init__.py | 3 ++- searx/engines/__init__.py | 3 ++- searx/engines/currency_convert.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/searx/__init__.py b/searx/__init__.py index d277570b..b1010f25 100644 --- a/searx/__init__.py +++ b/searx/__init__.py @@ -19,6 +19,7 @@ import certifi import logging from os import environ from os.path import realpath, dirname, join, abspath, isfile +from io import open from ssl import OPENSSL_VERSION_INFO, OPENSSL_VERSION try: from yaml import load @@ -50,7 +51,7 @@ if not settings_path: raise Exception('settings.yml not found') # load settings -with open(settings_path, 'rb') as settings_yaml: +with open(settings_path, 'r', encoding='utf-8') as settings_yaml: settings = load(settings_yaml) ''' diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index bec8de3a..b4479157 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -19,6 +19,7 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. import sys import threading from os.path import realpath, dirname +from io import open from flask_babel import gettext from operator import itemgetter from json import loads @@ -36,7 +37,7 @@ engines = {} categories = {'general': []} -languages = loads(open(engine_dir + '/../data/engines_languages.json', 'rb').read()) +languages = loads(open(engine_dir + '/../data/engines_languages.json', 'r', encoding='utf-8').read()) engine_shortcuts = {} engine_default_args = {'paging': False, diff --git a/searx/engines/currency_convert.py b/searx/engines/currency_convert.py index 34a9af67..9c1c2f7b 100644 --- a/searx/engines/currency_convert.py +++ b/searx/engines/currency_convert.py @@ -4,6 +4,7 @@ import os import sys import unicodedata +from io import open from datetime import datetime if sys.version_info[0] == 3: @@ -94,7 +95,7 @@ def load(): global db current_dir = os.path.dirname(os.path.realpath(__file__)) - json_data = open(current_dir + "/../data/currencies.json", 'rb').read() + json_data = open(current_dir + "/../data/currencies.json", 'r', encoding='utf-8').read() db = json.loads(json_data)