diff --git a/gramps/cli/clidbman.py b/gramps/cli/clidbman.py index 8e61decfe..bccb0dfc3 100644 --- a/gramps/cli/clidbman.py +++ b/gramps/cli/clidbman.py @@ -34,12 +34,8 @@ import os import sys import time import io -if sys.version_info[0] < 3: - from urlparse import urlparse - from urllib2 import urlopen, url2pathname -else: - from urllib.parse import urlparse - from urllib.request import urlopen, url2pathname +from urllib.parse import urlparse +from urllib.request import urlopen, url2pathname import tempfile #------------------------------------------------------------------------- # @@ -142,10 +138,7 @@ class CLIDbManager(object): current DB. Returns ("Unknown", "Unknown", "Unknown") if invalid DB or other error. """ - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import dbshelve, db - else: - from bsddb import dbshelve, db + from bsddb3 import dbshelve, db from gramps.gen.db import META, PERSON_TBL from gramps.gen.db.dbconst import BDBVERSFN diff --git a/gramps/cli/test/cli_test.py b/gramps/cli/test/cli_test.py index f83f97847..20cbcea8d 100644 --- a/gramps/cli/test/cli_test.py +++ b/gramps/cli/test/cli_test.py @@ -24,7 +24,6 @@ import os import unittest import re import io -import sys import subprocess from gramps.gen.constfunc import cuni @@ -41,13 +40,6 @@ test_ged = """0 HEAD 0 TRLR """ -# see gramps.grampsapp.py -## hack to avoid mentioning 'utf8' encoding everywhere unicode or str is is used -if sys.version_info[0] < 3: - reload(sys) - sys.setdefaultencoding('utf8') -## - ddir = os.path.dirname(__file__) min1r = os.path.join(ddir, "min1r.ged") out_ged = os.path.join(ddir, "test_out.ged") @@ -129,9 +121,6 @@ class Test(unittest.TestCase): class UnicodeTest(unittest.TestCase): - @unittest.skipIf(sys.version_info[0] < 3 and sys.platform == 'win32', - "Python2 bsddb doesn't handle unicode paths") - def setUp(self): from gramps.cli.clidbman import CLIDbManager from gramps.gen.config import set as setconfig, get as getconfig diff --git a/gramps/cli/user.py b/gramps/cli/user.py index 03a60eafe..66adab695 100644 --- a/gramps/cli/user.py +++ b/gramps/cli/user.py @@ -22,13 +22,6 @@ The User class provides basic interaction with the user. """ -#------------------------------------------------------------------------ -# -# Python Modules -# -#------------------------------------------------------------------------ -import sys - #------------------------------------------------------------------------ # # Gramps Modules @@ -65,7 +58,6 @@ class User(user.User): user.User.__init__(self, callback, error) self.steps = 0; self.current_step = 0; - self._input = raw_input if sys.version_info[0] < 3 else input def yes(*args): return True @@ -143,7 +135,7 @@ class User(user.User): n = reject_label) print (text, file = self._fileout) # TODO python3 add flush=True try: - reply = self._input() + reply = input() return reply == "" or reply == accept_label except EOFError: return False diff --git a/gramps/gen/const.py b/gramps/gen/const.py index fcb5da02c..4ff788243 100644 --- a/gramps/gen/const.py +++ b/gramps/gen/const.py @@ -121,13 +121,8 @@ USER_DIRLIST = (USER_HOME, HOME_DIR, VERSION_DIR, ENV_DIR, TEMP_DIR, THUMB_DIR, # above this one, and that the plugins directory is below the root directory. # #------------------------------------------------------------------------- -# test for sys.frozen to detect a py2exe executable on Windows - -if sys.version_info[0] < 3 and hasattr(sys, "frozen"): - ROOT_DIR = os.path.abspath(os.path.dirname(unicode(sys.executable))) -else: - ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname( - conv_to_unicode(__file__)), os.pardir)) +ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname( + conv_to_unicode(__file__)), os.pardir)) sys.path.insert(0, ROOT_DIR) git_revision = get_git_revision(ROOT_DIR) diff --git a/gramps/gen/constfunc.py b/gramps/gen/constfunc.py index 856b8d36e..39fa08170 100644 --- a/gramps/gen/constfunc.py +++ b/gramps/gen/constfunc.py @@ -51,15 +51,9 @@ WINDOWS = ["Windows", "win32"] # #------------------------------------------------------------------------- -#python 2 and 3 support, use correct conversion to unicode -if sys.version_info[0] < 3: - conv_to_unicode_direct = unicode - STRTYPE = basestring - UNITYPE = unicode -else: - conv_to_unicode_direct = str - STRTYPE = str - UNITYPE = str +conv_to_unicode_direct = str +STRTYPE = str +UNITYPE = str cuni = conv_to_unicode_direct def conv_to_unicode(x, y='utf8'): return x if x is None or isinstance(x, UNITYPE) else cuni(x, y) if y else cuni(x) @@ -69,16 +63,10 @@ def uni_to_gui(x): In Py2 we need to convert strings to utf8 before passing them to Gtk functions. ''' - if sys.version_info[0] < 3 and isinstance(x, UNITYPE): - return x.encode('utf8') - else: - return x + return x # handle in database is bytes, while internally Gramps wants unicode for py3 -if sys.version_info[0] < 3: - handle2internal = lambda x: x -else: - handle2internal = lambda x: conv_to_unicode(x, 'utf-8') +handle2internal = lambda x: conv_to_unicode(x, 'utf-8') #------------------------------------------------------------------------- # @@ -184,16 +172,6 @@ def get_env_var(name, default=None): if not name or not name in os.environ: return default - if sys.version_info[0] < 3 and win(): - name = unicode(name) # make sure string argument is unicode - n = ctypes.windll.kernel32.GetEnvironmentVariableW(name, None, 0) - if n==0: - return default - # n is number of codepoints - buf = ctypes.create_unicode_buffer(n+1) - ctypes.windll.kernel32.GetEnvironmentVariableW(name, buf, n) - return buf.value - return os.environ[name] def get_curr_dir(): @@ -203,14 +181,4 @@ def get_curr_dir(): an arbitrary unicode character in a path. This function uses the native GetCurrentDirectory function to return a unicode cwd. ''' - if not (sys.version_info[0] < 3 and win()): - return os.getcwd() - - n = ctypes.windll.kernel32.GetCurrentDirectoryW(0, None) - if n == 0: - return None - buf = ctypes.create_unicode_buffer(n+1) - ctypes.windll.kernel32.GetCurrentDirectoryW(n, buf) - return buf.value - - + return os.getcwd() diff --git a/gramps/gen/datehandler/_grampslocale.py b/gramps/gen/datehandler/_grampslocale.py index 76c4d3a4e..c62e29d65 100644 --- a/gramps/gen/datehandler/_grampslocale.py +++ b/gramps/gen/datehandler/_grampslocale.py @@ -21,9 +21,6 @@ # import locale -import sys -from ..constfunc import mac, win, conv_to_unicode - from gramps.gen.const import GRAMPS_LOCALE as glocale """ @@ -36,11 +33,6 @@ strftime. Since these routines return values encoded into selected character set, we have to convert to unicode. """ -if sys.version_info[0] < 3: - to_uni = conv_to_unicode -else: - #locale returns unicode in python 3 - to_uni = lambda x, y: x codeset = glocale.encoding try: @@ -48,34 +40,34 @@ try: # here only for the upgrade tool, see _datestrings.py __main__ _deprecated_long_months = ( "", - to_uni(locale.nl_langinfo(locale.MON_1), codeset), - to_uni(locale.nl_langinfo(locale.MON_2), codeset), - to_uni(locale.nl_langinfo(locale.MON_3), codeset), - to_uni(locale.nl_langinfo(locale.MON_4), codeset), - to_uni(locale.nl_langinfo(locale.MON_5), codeset), - to_uni(locale.nl_langinfo(locale.MON_6), codeset), - to_uni(locale.nl_langinfo(locale.MON_7), codeset), - to_uni(locale.nl_langinfo(locale.MON_8), codeset), - to_uni(locale.nl_langinfo(locale.MON_9), codeset), - to_uni(locale.nl_langinfo(locale.MON_10), codeset), - to_uni(locale.nl_langinfo(locale.MON_11), codeset), - to_uni(locale.nl_langinfo(locale.MON_12), codeset), + locale.nl_langinfo(locale.MON_1), + locale.nl_langinfo(locale.MON_2), + locale.nl_langinfo(locale.MON_3), + locale.nl_langinfo(locale.MON_4), + locale.nl_langinfo(locale.MON_5), + locale.nl_langinfo(locale.MON_6), + locale.nl_langinfo(locale.MON_7), + locale.nl_langinfo(locale.MON_8), + locale.nl_langinfo(locale.MON_9), + locale.nl_langinfo(locale.MON_10), + locale.nl_langinfo(locale.MON_11), + locale.nl_langinfo(locale.MON_12), ) _deprecated_short_months = ( "", - to_uni(locale.nl_langinfo(locale.ABMON_1), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_2), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_3), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_4), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_5), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_6), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_7), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_8), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_9), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_10), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_11), codeset), - to_uni(locale.nl_langinfo(locale.ABMON_12), codeset), + locale.nl_langinfo(locale.ABMON_1), + locale.nl_langinfo(locale.ABMON_2), + locale.nl_langinfo(locale.ABMON_3), + locale.nl_langinfo(locale.ABMON_4), + locale.nl_langinfo(locale.ABMON_5), + locale.nl_langinfo(locale.ABMON_6), + locale.nl_langinfo(locale.ABMON_7), + locale.nl_langinfo(locale.ABMON_8), + locale.nl_langinfo(locale.ABMON_9), + locale.nl_langinfo(locale.ABMON_10), + locale.nl_langinfo(locale.ABMON_11), + locale.nl_langinfo(locale.ABMON_12), ) # Gramps day number: Sunday => 1, Monday => 2, etc @@ -86,24 +78,24 @@ try: # see http://docs.python.org/library/locale.html _deprecated_long_days = ( "", - to_uni(locale.nl_langinfo(locale.DAY_1), codeset), # Sunday - to_uni(locale.nl_langinfo(locale.DAY_2), codeset), # Monday - to_uni(locale.nl_langinfo(locale.DAY_3), codeset), # Tuesday - to_uni(locale.nl_langinfo(locale.DAY_4), codeset), # Wednesday - to_uni(locale.nl_langinfo(locale.DAY_5), codeset), # Thursday - to_uni(locale.nl_langinfo(locale.DAY_6), codeset), # Friday - to_uni(locale.nl_langinfo(locale.DAY_7), codeset), # Saturday + locale.nl_langinfo(locale.DAY_1), # Sunday + locale.nl_langinfo(locale.DAY_2), # Monday + locale.nl_langinfo(locale.DAY_3), # Tuesday + locale.nl_langinfo(locale.DAY_4), # Wednesday + locale.nl_langinfo(locale.DAY_5), # Thursday + locale.nl_langinfo(locale.DAY_6), # Friday + locale.nl_langinfo(locale.DAY_7), # Saturday ) _deprecated_short_days = ( "", - to_uni(locale.nl_langinfo(locale.ABDAY_1), codeset), # Sunday - to_uni(locale.nl_langinfo(locale.ABDAY_2), codeset), # Monday - to_uni(locale.nl_langinfo(locale.ABDAY_3), codeset), # Tuesday - to_uni(locale.nl_langinfo(locale.ABDAY_4), codeset), # Wednesday - to_uni(locale.nl_langinfo(locale.ABDAY_5), codeset), # Thursday - to_uni(locale.nl_langinfo(locale.ABDAY_6), codeset), # Friday - to_uni(locale.nl_langinfo(locale.ABDAY_7), codeset), # Saturday + locale.nl_langinfo(locale.ABDAY_1), # Sunday + locale.nl_langinfo(locale.ABDAY_2), # Monday + locale.nl_langinfo(locale.ABDAY_3), # Tuesday + locale.nl_langinfo(locale.ABDAY_4), # Wednesday + locale.nl_langinfo(locale.ABDAY_5), # Thursday + locale.nl_langinfo(locale.ABDAY_6), # Friday + locale.nl_langinfo(locale.ABDAY_7), # Saturday ) tformat = locale.nl_langinfo(locale.D_FMT).replace('%y','%Y') @@ -116,34 +108,34 @@ except: _deprecated_long_months = ( "", - to_uni(time.strftime('%B',(1,1,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,2,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,3,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,4,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,5,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,6,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,7,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,8,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,9,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,10,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,11,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%B',(1,12,1,1,1,1,1,1,1)), codeset), + time.strftime('%B',(1,1,1,1,1,1,1,1,1)), + time.strftime('%B',(1,2,1,1,1,1,1,1,1)), + time.strftime('%B',(1,3,1,1,1,1,1,1,1)), + time.strftime('%B',(1,4,1,1,1,1,1,1,1)), + time.strftime('%B',(1,5,1,1,1,1,1,1,1)), + time.strftime('%B',(1,6,1,1,1,1,1,1,1)), + time.strftime('%B',(1,7,1,1,1,1,1,1,1)), + time.strftime('%B',(1,8,1,1,1,1,1,1,1)), + time.strftime('%B',(1,9,1,1,1,1,1,1,1)), + time.strftime('%B',(1,10,1,1,1,1,1,1,1)), + time.strftime('%B',(1,11,1,1,1,1,1,1,1)), + time.strftime('%B',(1,12,1,1,1,1,1,1,1)), ) _deprecated_short_months = ( "", - to_uni(time.strftime('%b',(1,1,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,2,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,3,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,4,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,5,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,6,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,7,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,8,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,9,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,10,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,11,1,1,1,1,1,1,1)), codeset), - to_uni(time.strftime('%b',(1,12,1,1,1,1,1,1,1)), codeset), + time.strftime('%b',(1,1,1,1,1,1,1,1,1)), + time.strftime('%b',(1,2,1,1,1,1,1,1,1)), + time.strftime('%b',(1,3,1,1,1,1,1,1,1)), + time.strftime('%b',(1,4,1,1,1,1,1,1,1)), + time.strftime('%b',(1,5,1,1,1,1,1,1,1)), + time.strftime('%b',(1,6,1,1,1,1,1,1,1)), + time.strftime('%b',(1,7,1,1,1,1,1,1,1)), + time.strftime('%b',(1,8,1,1,1,1,1,1,1)), + time.strftime('%b',(1,9,1,1,1,1,1,1,1)), + time.strftime('%b',(1,10,1,1,1,1,1,1,1)), + time.strftime('%b',(1,11,1,1,1,1,1,1,1)), + time.strftime('%b',(1,12,1,1,1,1,1,1,1)), ) # Gramps day number: Sunday => 1, Monday => 2, etc @@ -157,24 +149,24 @@ except: # just a dummy. _deprecated_long_days = ( "", - to_uni(time.strftime('%A',(1,1,1,1,1,1,6,1,1)), codeset), # Sunday - to_uni(time.strftime('%A',(1,1,1,1,1,1,0,1,1)), codeset), # Monday - to_uni(time.strftime('%A',(1,1,1,1,1,1,1,1,1)), codeset), # Tuesday - to_uni(time.strftime('%A',(1,1,1,1,1,1,2,1,1)), codeset), # Wednesday - to_uni(time.strftime('%A',(1,1,1,1,1,1,3,1,1)), codeset), # Thursday - to_uni(time.strftime('%A',(1,1,1,1,1,1,4,1,1)), codeset), # Friday - to_uni(time.strftime('%A',(1,1,1,1,1,1,5,1,1)), codeset), # Saturday + time.strftime('%A',(1,1,1,1,1,1,6,1,1)), # Sunday + time.strftime('%A',(1,1,1,1,1,1,0,1,1)), # Monday + time.strftime('%A',(1,1,1,1,1,1,1,1,1)), # Tuesday + time.strftime('%A',(1,1,1,1,1,1,2,1,1)), # Wednesday + time.strftime('%A',(1,1,1,1,1,1,3,1,1)), # Thursday + time.strftime('%A',(1,1,1,1,1,1,4,1,1)), # Friday + time.strftime('%A',(1,1,1,1,1,1,5,1,1)), # Saturday ) _deprecated_short_days = ( "", - to_uni(time.strftime('%a',(1,1,1,1,1,1,6,1,1)), codeset), # Sunday - to_uni(time.strftime('%a',(1,1,1,1,1,1,0,1,1)), codeset), # Monday - to_uni(time.strftime('%a',(1,1,1,1,1,1,1,1,1)), codeset), # Tuesday - to_uni(time.strftime('%a',(1,1,1,1,1,1,2,1,1)), codeset), # Wednesday - to_uni(time.strftime('%a',(1,1,1,1,1,1,3,1,1)), codeset), # Thursday - to_uni(time.strftime('%a',(1,1,1,1,1,1,4,1,1)), codeset), # Friday - to_uni(time.strftime('%a',(1,1,1,1,1,1,5,1,1)), codeset), # Saturday + time.strftime('%a',(1,1,1,1,1,1,6,1,1)), # Sunday + time.strftime('%a',(1,1,1,1,1,1,0,1,1)), # Monday + time.strftime('%a',(1,1,1,1,1,1,1,1,1)), # Tuesday + time.strftime('%a',(1,1,1,1,1,1,2,1,1)), # Wednesday + time.strftime('%a',(1,1,1,1,1,1,3,1,1)), # Thursday + time.strftime('%a',(1,1,1,1,1,1,4,1,1)), # Friday + time.strftime('%a',(1,1,1,1,1,1,5,1,1)), # Saturday ) # depending on the locale, the value returned for 20th Feb 2009 could be diff --git a/gramps/gen/db/backup.py b/gramps/gen/db/backup.py index 391fca74c..9329caaff 100644 --- a/gramps/gen/db/backup.py +++ b/gramps/gen/db/backup.py @@ -53,11 +53,7 @@ db. # #------------------------------------------------------------------------- import os -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------ # diff --git a/gramps/gen/db/bsddbtxn.py b/gramps/gen/db/bsddbtxn.py index 5d15be382..3d65379fd 100644 --- a/gramps/gen/db/bsddbtxn.py +++ b/gramps/gen/db/bsddbtxn.py @@ -185,12 +185,7 @@ class BSDDBTxn(object): # test code if __name__ == "__main__": print("1") - from ..config import config - import sys - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import db, dbshelve - else: - from bsddb import db, dbshelve + from bsddb3 import db, dbshelve print("2") x = db.DBEnv() print("3") diff --git a/gramps/gen/db/cursor.py b/gramps/gen/db/cursor.py index d9761c47a..9ee917b50 100644 --- a/gramps/gen/db/cursor.py +++ b/gramps/gen/db/cursor.py @@ -24,18 +24,10 @@ # Standard python modules # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - from cPickle import dumps, loads -else: - from pickle import dumps, loads +from pickle import dumps, loads -from ..config import config try: - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import db - else: - from bsddb import db + from bsddb3 import db except: # FIXME: make this more abstract to deal with other backends class db: diff --git a/gramps/gen/db/dbconst.py b/gramps/gen/db/dbconst.py index 6f56e3edb..ba3514afb 100644 --- a/gramps/gen/db/dbconst.py +++ b/gramps/gen/db/dbconst.py @@ -23,13 +23,6 @@ Declare constants used by database modules """ -#------------------------------------------------------------------------- -# -# standard python modules -# -#------------------------------------------------------------------------- -import sys - #------------------------------------------------------------------------- # # constants @@ -67,12 +60,8 @@ DBLOCKS = 100000 # Maximum number of locks supported DBOBJECTS = 100000 # Maximum number of simultaneously locked objects DBUNDO = 1000 # Maximum size of undo buffer -from ..config import config try: - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY - else: - from bsddb.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY + from bsddb3.db import DB_CREATE, DB_AUTO_COMMIT, DB_DUP, DB_DUPSORT, DB_RDONLY DBFLAGS_O = DB_CREATE | DB_AUTO_COMMIT # Default flags for database open DBFLAGS_R = DB_RDONLY # Flags to open a database read-only DBFLAGS_D = DB_DUP | DB_DUPSORT # Default flags for duplicate keys diff --git a/gramps/gen/db/dictionary.py b/gramps/gen/db/dictionary.py index 8289c6217..4cee9677e 100644 --- a/gramps/gen/db/dictionary.py +++ b/gramps/gen/db/dictionary.py @@ -24,11 +24,7 @@ # Gramps Modules # #------------------------------------------------------------------------ -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import base64 import time import re @@ -1167,12 +1163,7 @@ class DictionaryDb(DbWriteBase, DbReadBase): # so we need the second tuple give us a reference that we can # combine with the primary_handle to get the main key. - if sys.version_info[0] < 3: - #handle should be in python 2 str - main_key = (handle, pickle.loads(data)[1][1]) - else: - #python 3 work internally with unicode - main_key = (handle.decode('utf-8'), pickle.loads(data)[1][1]) + main_key = (handle.decode('utf-8'), pickle.loads(data)[1][1]) # The trick is not to remove while inside the cursor, # but collect them all and remove after the cursor is closed @@ -1194,7 +1185,7 @@ class DictionaryDb(DbWriteBase, DbReadBase): if isinstance(key, tuple): #create a byte string key, first validity check in python 3! for val in key: - if sys.version_info[0] >= 3 and isinstance(val, bytes): + if isinstance(val, bytes): raise DbError(_('An attempt is made to save a reference key ' 'which is partly bytecode, this is not allowed.\n' 'Key is %s') % str(key)) diff --git a/gramps/gen/db/read.py b/gramps/gen/db/read.py index c886c4869..32cf3dd1e 100644 --- a/gramps/gen/db/read.py +++ b/gramps/gen/db/read.py @@ -29,22 +29,14 @@ Read classes for the Gramps databases. # libraries # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import time import random import os from sys import maxsize -from ..config import config try: - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import db - else: - from bsddb import db + from bsddb3 import db except: # FIXME: make this more abstract to deal with other backends class db: @@ -142,10 +134,7 @@ def __index_surname(surn_list): NameOriginType.PATRONYMIC, NameOriginType.MATRONYMIC]) ]) else: surn = "" - if sys.version_info[0] < 3: - return surn.encode('utf-8') - else: - return surn + return surn #------------------------------------------------------------------------- diff --git a/gramps/gen/db/test/cursor_test.py b/gramps/gen/db/test/cursor_test.py index c4ff24a4a..d7f84979d 100644 --- a/gramps/gen/db/test/cursor_test.py +++ b/gramps/gen/db/test/cursor_test.py @@ -20,16 +20,11 @@ import unittest import os -import sys import tempfile import shutil from ...constfunc import UNITYPE -from ...config import config -if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import dbshelve, db -else: - from bsddb import dbshelve, db +from bsddb3 import dbshelve, db from ..read import DbBsddbTreeCursor diff --git a/gramps/gen/db/txn.py b/gramps/gen/db/txn.py index 9df39f9f4..d3f287559 100644 --- a/gramps/gen/db/txn.py +++ b/gramps/gen/db/txn.py @@ -28,13 +28,8 @@ database. # Standard python modules # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import logging - from collections import defaultdict #------------------------------------------------------------------------- diff --git a/gramps/gen/db/undoredo.py b/gramps/gen/db/undoredo.py index 2517fd3d5..166623bf0 100644 --- a/gramps/gen/db/undoredo.py +++ b/gramps/gen/db/undoredo.py @@ -30,19 +30,11 @@ undos and redos. # #------------------------------------------------------------------------- import time, os -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle from collections import deque -from ..config import config try: - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import db - else: - from bsddb import db + from bsddb3 import db except: # FIXME: make this more abstract to deal with other backends class db: diff --git a/gramps/gen/db/upgrade.py b/gramps/gen/db/upgrade.py index e5d293b7c..53167daea 100644 --- a/gramps/gen/db/upgrade.py +++ b/gramps/gen/db/upgrade.py @@ -28,17 +28,11 @@ methods to upgrade a database from version 13 to current version # Standard python modules # #------------------------------------------------------------------------- -import sys import os import re import time import logging - -from ..config import config -if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import db -else: - from bsddb import db +from bsddb3 import db #------------------------------------------------------------------------- # diff --git a/gramps/gen/db/write.py b/gramps/gen/db/write.py index e3d377623..aa6251472 100644 --- a/gramps/gen/db/write.py +++ b/gramps/gen/db/write.py @@ -31,10 +31,7 @@ This is used since Gramps version 3.0 # #------------------------------------------------------------------------- import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import os import time import bisect @@ -43,12 +40,8 @@ from functools import wraps import logging from sys import maxsize, getfilesystemencoding, version_info -from ..config import config try: - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import dbshelve, db - else: - from bsddb import dbshelve, db + from bsddb3 import dbshelve, db except: # FIXME: make this more abstract to deal with other backends class db: @@ -277,10 +270,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): __signals__['home-person-changed'] = None # 4. Signal for change in person group name, parameters are - if sys.version_info[0] < 3: - __signals__['person-groupname-rebuild'] = (unicode, unicode) - else: - __signals__['person-groupname-rebuild'] = (str, str) + __signals__['person-groupname-rebuild'] = (str, str) def __init__(self): """Create a new GrampsDB.""" @@ -537,11 +527,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): reserved_char = r':,<>"/\|?* ' replace_char = "-__________" title = self.get_dbname() - if sys.version_info[0] < 3: - from string import maketrans - trans = maketrans(reserved_char, replace_char) - else: - trans = title.maketrans(reserved_char, replace_char) + trans = title.maketrans(reserved_char, replace_char) title = title.translate(trans) if not os.access(dirname, os.W_OK): @@ -736,7 +722,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): # Check for pickle upgrade versionpath = os.path.join(self.path, cuni(PCKVERSFN)) - if sys.version_info[0] >= 3 and not os.path.isfile(versionpath) and \ + if not os.path.isfile(versionpath) and \ not self.readonly and not self.update_pickle_version: _LOG.debug("Make backup in case there is a pickle upgrade") self.__make_zip_backup(name) @@ -860,18 +846,12 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): versionpath = os.path.join(name, BDBVERSFN) with open(versionpath, "w") as version_file: version = str(db.version()) - if sys.version_info[0] < 3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') version_file.write(version) _LOG.debug("Updated bsddb version file to %s" % str(db.version())) if self.update_python_version: versionpath = os.path.join(name, "pythonversion.txt") version = str(version_info[0]) - if sys.version_info[0] < 3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') _LOG.debug("Updated python version file to %s" % version) with open(versionpath, "w") as version_file: version_file.write(version) @@ -887,9 +867,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): versionpath = os.path.join(name, cuni(PCKVERSFN)) with open(versionpath, "w") as version_file: version = "Yes" - if sys.version_info[0] <3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') version_file.write(version) _LOG.debug("Updated pickle version file to %s" % str(version)) @@ -905,9 +882,6 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): versionpath = os.path.join(name, cuni(SCHVERSFN)) with open(versionpath, "w") as version_file: version = str(_DBVERSION) - if sys.version_info[0] <3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') version_file.write(version) _LOG.debug("Updated schema version file to %s" % str(version)) else: @@ -1243,12 +1217,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): # so we need the second tuple give us a reference that we can # combine with the primary_handle to get the main key. - if sys.version_info[0] < 3: - #handle should be in python 2 str - main_key = (handle, pickle.loads(data)[1][1]) - else: - #python 3 work internally with unicode - main_key = (handle.decode('utf-8'), pickle.loads(data)[1][1]) + main_key = (handle.decode('utf-8'), pickle.loads(data)[1][1]) # The trick is not to remove while inside the cursor, # but collect them all and remove after the cursor is closed @@ -1327,16 +1296,12 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): """ if isinstance(key, tuple): #create a byte string key, first validity check in python 3! - if sys.version_info[0] >= 3: - for val in key: - if isinstance(val, bytes): - raise DbError(_('An attempt is made to save a reference key ' - 'which is partly bytecode, this is not allowed.\n' - 'Key is %s') % str(key)) - if sys.version_info[0] >= 3: - key= str(key) - else: - key = str(tuple(k.encode('utf-8') for k in key)) + for val in key: + if isinstance(val, bytes): + raise DbError(_('An attempt is made to save a reference key ' + 'which is partly bytecode, this is not allowed.\n' + 'Key is %s') % str(key)) + key = str(key) if isinstance(key, UNITYPE): key = key.encode('utf-8') if not self.readonly: @@ -1353,10 +1318,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): """ if isinstance(key, tuple): #create a string key - if sys.version_info[0] >= 3: - key= str(key) - else: - key = str(tuple(k.encode('utf-8') for k in key)) + key = str(key) if isinstance(key, UNITYPE): key = key.encode('utf-8') if self.readonly or not key: @@ -1892,18 +1854,11 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): """ name = find_surname_name(person.handle, person.get_primary_name().serialize()) - if sys.version_info[0] < 3: - if isinstance(name, unicode): - uname = name - name = str(name) - else: - uname = unicode(name, 'utf-8') + if isinstance(name, str): + uname = name + name = name.encode('utf-8') else: - if isinstance(name, str): - uname = name - name = name.encode('utf-8') - else: - uname = str(name) + uname = str(name) try: cursor = self.surnames.cursor(txn=self.txn) cursor_position = cursor.set(name) @@ -2454,18 +2409,12 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): versionpath = os.path.join(name, BDBVERSFN) version = str(db.version()) - if sys.version_info[0] < 3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') _LOG.debug("Write bsddb version %s" % version) with open(versionpath, "w") as version_file: version_file.write(version) versionpath = os.path.join(name, "pythonversion.txt") version = str(version_info[0]) - if sys.version_info[0] < 3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') _LOG.debug("Write python version file to %s" % version) with open(versionpath, "w") as version_file: version_file.write(version) @@ -2474,18 +2423,12 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): _LOG.debug("Write pickle version file to %s" % "Yes") with open(versionpath, "w") as version_file: version = "Yes" - if sys.version_info[0] <3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') version_file.write(version) versionpath = os.path.join(name, cuni(SCHVERSFN)) _LOG.debug("Write schema version file to %s" % str(_DBVERSION)) with open(versionpath, "w") as version_file: version = str(_DBVERSION) - if sys.version_info[0] <3: - if isinstance(version, UNITYPE): - version = version.encode('utf-8') version_file.write(version) self.metadata.close() diff --git a/gramps/gen/git_revision.py b/gramps/gen/git_revision.py index b9cc2648a..a8a4414c0 100644 --- a/gramps/gen/git_revision.py +++ b/gramps/gen/git_revision.py @@ -19,16 +19,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -import sys import subprocess -if sys.version_info[0] < 3: - cuni = unicode -else: - def to_utf8(s): - return s.decode("utf-8", errors = 'replace') - cuni = to_utf8 - def get_git_revision(path=""): stdout = "" command = "git log -1 --format=%h" @@ -43,7 +35,7 @@ def get_git_revision(path=""): # subprocess worked if stdout and len(stdout) > 0: # has output try: - stdout = cuni(stdout) # get a proper string + stdout = stdout.decode("utf-8", errors = 'replace') except UnicodeDecodeError: pass return "-" + stdout if stdout else "" diff --git a/gramps/gen/lib/mediaobj.py b/gramps/gen/lib/mediaobj.py index bba597afb..9fdd3304a 100644 --- a/gramps/gen/lib/mediaobj.py +++ b/gramps/gen/lib/mediaobj.py @@ -31,11 +31,7 @@ Media object for Gramps. # #------------------------------------------------------------------------- import os -import sys -if sys.version_info[0] < 3: - from urlparse import urlparse -else: - from urllib.parse import urlparse +from urllib.parse import urlparse import logging LOG = logging.getLogger(".citation") diff --git a/gramps/gen/lib/url.py b/gramps/gen/lib/url.py index 0c7b4114c..9dee07a4d 100644 --- a/gramps/gen/lib/url.py +++ b/gramps/gen/lib/url.py @@ -29,11 +29,7 @@ Url class for Gramps. # #------------------------------------------------------------------------- from warnings import warn -import sys -if sys.version_info[0] < 3: - from urlparse import urlparse -else: - from urllib.parse import urlparse +from urllib.parse import urlparse #------------------------------------------------------------------------- # diff --git a/gramps/gen/mime/_winmime.py b/gramps/gen/mime/_winmime.py index acde7d10d..34d87aae9 100644 --- a/gramps/gen/mime/_winmime.py +++ b/gramps/gen/mime/_winmime.py @@ -28,12 +28,7 @@ Mime utility functions for the MS Windows platform # #------------------------------------------------------------------------- import os -import sys - -if sys.version_info[0] < 3: - from _winreg import * -else: - from winreg import * +from winreg import * #------------------------------------------------------------------------- # diff --git a/gramps/gen/plug/_gramplet.py b/gramps/gen/plug/_gramplet.py index 8ded5d66d..c040bae7d 100644 --- a/gramps/gen/plug/_gramplet.py +++ b/gramps/gen/plug/_gramplet.py @@ -24,9 +24,7 @@ # Python modules # #------------------------------------------------------------------------- -import sys import types - import logging LOG = logging.getLogger(".Gramplets") @@ -324,11 +322,7 @@ class Gramplet(object): LOG.debug("gramplet updater: %s : One time, done!" % self.gui.title) return False # FIXME: find out why Data Entry has this error, or just ignore it - from ..config import config - if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - import bsddb3 as bsddb - else: - import bsddb + import bsddb3 as bsddb try: retval = next(self._generator) if not retval: diff --git a/gramps/gen/plug/_manager.py b/gramps/gen/plug/_manager.py index 776a83589..1f1def15c 100644 --- a/gramps/gen/plug/_manager.py +++ b/gramps/gen/plug/_manager.py @@ -257,7 +257,7 @@ class BasePluginManager(object): except ValueError as err: # Python3 on Windows work with unicode in sys.path # but they are mbcs encode for checking validity - if (sys.version_info[0] >= 3) and win(): + if win(): # we don't want to load Gramps core plugin like this # only 3rd party plugins if "gramps" in pdata.fpath: @@ -275,20 +275,8 @@ class BasePluginManager(object): LOG.warning("Plugin error (from '%s'): %s" % (pdata.mod_name, err)) except ImportError as err: - # Python2 on Windows not work with unicode in sys.path - # but module can be loaded from current directory - if (sys.version_info[0] < 3) and win(): - try: - oldwd = os.getcwd() - os.chdir(pdata.fpath) - module = __import__(pdata.mod_name) - os.chdir(oldwd) - except ImportError as err: - LOG.warning("Plugin error (from '%s'): %s" - % (pdata.mod_name, err)) - else: - LOG.warning("Plugin error (from '%s'): %s" - % (pdata.mod_name, err)) + LOG.warning("Plugin error (from '%s'): %s" + % (pdata.mod_name, err)) sys.path.pop(0) else: print("WARNING: module cannot be loaded") diff --git a/gramps/gen/plug/_pluginreg.py b/gramps/gen/plug/_pluginreg.py index aa00a9b7a..881550212 100644 --- a/gramps/gen/plug/_pluginreg.py +++ b/gramps/gen/plug/_pluginreg.py @@ -841,8 +841,7 @@ class PluginData(object): def _set_gramplet_title(self, gramplet_title): if not self._ptype == GRAMPLET: raise ValueError('gramplet_title may only be set for GRAMPLET plugins') - if not (sys.version_info[0] < 3 and isinstance(gramplet_title, unicode) - or isinstance(gramplet_title, str)): + if not isinstance(gramplet_title, str): raise ValueError('gramplet_title is type %s, string or unicode required' % type(gramplet_title)) self._gramplet_title = gramplet_title @@ -1098,10 +1097,7 @@ class PluginRegister(object): continue lenpd = len(self.__plugindata) full_filename = os.path.join(dir, filename) - if sys.version_info[0] < 3: - fd = open(full_filename, "r") - else: - fd = io.open(full_filename, "r", encoding='utf-8') + fd = io.open(full_filename, "r", encoding='utf-8') stream = fd.read() fd.close() if os.path.exists(os.path.join(os.path.dirname(full_filename), diff --git a/gramps/gen/plug/docgen/graphdoc.py b/gramps/gen/plug/docgen/graphdoc.py index 87452dd5a..5e93896a6 100644 --- a/gramps/gen/plug/docgen/graphdoc.py +++ b/gramps/gen/plug/docgen/graphdoc.py @@ -30,11 +30,7 @@ # #------------------------------------------------------------------------ import os -import sys -if sys.version_info[0] < 3: - from StringIO import StringIO -else: - from io import BytesIO +from io import BytesIO import tempfile from subprocess import Popen, PIPE import sys @@ -381,10 +377,7 @@ class GVDocBase(BaseDoc, GVDoc): BaseDoc.__init__(self, None, paper_style) self._filename = None - if sys.version_info[0] < 3: - self._dot = StringIO() - else: - self._dot = BytesIO() + self._dot = BytesIO() self._paper = paper_style get_option_by_name = options.menu.get_option_by_name @@ -610,10 +603,7 @@ class GVDotDoc(GVDocBase): if self._filename[-3:] != ".gv": self._filename += ".gv" - if sys.version_info[0] < 3: - dotfile = open(self._filename, "w") - else: - dotfile = open(self._filename, "wb") + dotfile = open(self._filename, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() @@ -648,10 +638,7 @@ class GVPsDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() @@ -704,10 +691,7 @@ class GVSvgDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() # Generate the SVG file. @@ -741,10 +725,7 @@ class GVSvgzDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() # Generate the SVGZ file. @@ -778,10 +759,7 @@ class GVPngDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() # Generate the PNG file. @@ -815,10 +793,7 @@ class GVJpegDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() # Generate the JPEG file. @@ -852,10 +827,7 @@ class GVGifDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() # Generate the GIF file. @@ -892,10 +864,7 @@ class GVPdfGvDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() fname = self._filename @@ -929,10 +898,7 @@ class GVPdfGsDoc(GVDocBase): # Create a temporary dot file (handle, tmp_dot) = tempfile.mkstemp(".gv" ) - if sys.version_info[0] < 3: - dotfile = os.fdopen(handle, "w") - else: - dotfile = os.fdopen(handle, "wb") + dotfile = os.fdopen(handle, "wb") dotfile.write(self._dot.getvalue()) dotfile.close() diff --git a/gramps/gen/plug/utils.py b/gramps/gen/plug/utils.py index 410a1e3e0..9caadfada 100644 --- a/gramps/gen/plug/utils.py +++ b/gramps/gen/plug/utils.py @@ -30,10 +30,7 @@ General utility functions useful for the generic plugin system import sys import os import datetime -if sys.version_info[0] < 3: - from StringIO import StringIO -else: - from io import StringIO, BytesIO +from io import StringIO, BytesIO #------------------------------------------------------------------------- # @@ -178,10 +175,7 @@ class Zipfile(object): def available_updates(): whattypes = config.get('behavior.check-for-update-types') - if sys.version_info[0] < 3: - from urllib2 import urlopen - else: - from urllib.request import urlopen + from urllib.request import urlopen LOG.debug("Checking for updated addons...") langs = glocale.get_language_list() langs.append("en") @@ -265,10 +259,7 @@ def load_addon_file(path, callback=None): """ Load an addon from a particular path (from URL or file system). """ - if sys.version_info[0] < 3: - from urllib2 import urlopen - else: - from urllib.request import urlopen + from urllib.request import urlopen import tarfile import io if (path.startswith("http://") or @@ -289,10 +280,7 @@ def load_addon_file(path, callback=None): return False try: content = fp.read() - if sys.version_info[0] < 3: - buffer = StringIO(content) - else: - buffer = BytesIO(content) + buffer = BytesIO(content) except: if callback: callback(_("Error in reading '%s'") % path) diff --git a/gramps/gen/proxy/filter.py b/gramps/gen/proxy/filter.py index dc08b38c8..5006d892d 100644 --- a/gramps/gen/proxy/filter.py +++ b/gramps/gen/proxy/filter.py @@ -25,17 +25,6 @@ Proxy class for the Gramps databases. Apply filter """ -#------------------------------------------------------------------------- -# -# Python libraries -# -#------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - from itertools import imap as map -else: - pass #python 3 has map behaving as imap - #------------------------------------------------------------------------- # # GRAMPS libraries diff --git a/gramps/gen/proxy/living.py b/gramps/gen/proxy/living.py index f04c5f88b..70e9e5e3d 100644 --- a/gramps/gen/proxy/living.py +++ b/gramps/gen/proxy/living.py @@ -22,17 +22,6 @@ Proxy class for the Gramps databases. Filter out all living people. """ -#------------------------------------------------------------------------- -# -# Python libraries -# -#------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - from itertools import ifilter as filter -else: - pass #python 3 has filter - #------------------------------------------------------------------------- # # GRAMPS libraries diff --git a/gramps/gen/proxy/proxybase.py b/gramps/gen/proxy/proxybase.py index c00ddb022..299462517 100644 --- a/gramps/gen/proxy/proxybase.py +++ b/gramps/gen/proxy/proxybase.py @@ -28,11 +28,6 @@ Proxy class for the Gramps databases. Filter out all data marked private. # Python modules # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - from itertools import ifilter as filter -else: - pass #python 3 has filter import types #------------------------------------------------------------------------- diff --git a/gramps/gen/recentfiles.py b/gramps/gen/recentfiles.py index 36d476916..274a07183 100644 --- a/gramps/gen/recentfiles.py +++ b/gramps/gen/recentfiles.py @@ -29,9 +29,8 @@ import os import time import io -import sys import logging -from xml.parsers.expat import ParserCreate +from xml.parsers.expat import ParserCreate try: import fcntl @@ -184,9 +183,7 @@ class RecentFiles(object): """ Saves the current Gramps RecentFiles collection to the associated file. """ - with (open(os.path.expanduser(GRAMPS_FILENAME), 'w') - if sys.version_info[0] < 3 else - open(os.path.expanduser(GRAMPS_FILENAME), 'w', encoding='utf8'))\ + with open(os.path.expanduser(GRAMPS_FILENAME), 'w', encoding='utf8') \ as xml_file: if use_lock: fcntl.lockf(xml_file,fcntl.LOCK_EX) @@ -224,9 +221,7 @@ class RecentParser(object): return # it's the first time gramps has ever been run try: - # Python3's expat wants bytes, Python2's wants a string. - fmode = "r" if sys.version_info[0] < 3 else "rb" - with open(fname, fmode) as xml_file: + with open(fname, "rb") as xml_file: if use_lock: fcntl.lockf(xml_file,fcntl.LOCK_SH) diff --git a/gramps/gen/soundex.py b/gramps/gen/soundex.py index f7b298e2d..0221795c7 100644 --- a/gramps/gen/soundex.py +++ b/gramps/gen/soundex.py @@ -27,10 +27,7 @@ Provide soundex calculation # Standard python modules # #------------------------------------------------------------------------- -import sys import unicodedata -if sys.version_info[0] < 3: - import string #------------------------------------------------------------------------- # @@ -38,12 +35,8 @@ if sys.version_info[0] < 3: # #------------------------------------------------------------------------- IGNORE = "HW~!@#$%^&*()_+=-`[]\|;:'/?.,<>\" \t\f\v" -if sys.version_info[0] < 3: - TABLE = string.maketrans('ABCDEFGIJKLMNOPQRSTUVXYZ', - '012301202245501262301202') -else: - TABLE = bytes.maketrans(b'ABCDEFGIJKLMNOPQRSTUVXYZ', - b'012301202245501262301202') +TABLE = bytes.maketrans(b'ABCDEFGIJKLMNOPQRSTUVXYZ', + b'012301202245501262301202') from .constfunc import conv_to_unicode_direct @@ -59,14 +52,9 @@ def soundex(strval): conv_to_unicode_direct(strval.upper().strip())).encode('ASCII', 'ignore') if not strval: return "Z000" - if sys.version_info[0] < 3: - strval = strval.encode('iso-8859-1') # Really? - str2 = strval[0] - strval = strval.translate(TABLE, IGNORE) - else: - strval = strval.decode('ASCII', 'ignore') - str2 = strval[0] - strval = strval.translate(TABLE) + strval = strval.decode('ASCII', 'ignore') + str2 = strval[0] + strval = strval.translate(TABLE) if not strval: return "Z000" prev = strval[0] diff --git a/gramps/gen/utils/configmanager.py b/gramps/gen/utils/configmanager.py index 5b1161594..972f41377 100644 --- a/gramps/gen/utils/configmanager.py +++ b/gramps/gen/utils/configmanager.py @@ -32,10 +32,7 @@ This package implements access to Gramps configuration. import os import sys import time -if sys.version_info[0] < 3: - import ConfigParser as configparser -else: - import configparser +import configparser import errno import copy import logging @@ -259,10 +256,7 @@ class ConfigManager(object): if filename and os.path.exists(filename): parser = configparser.RawConfigParser() try: # see bugs 5356, 5490, 5591, 5651, 5718, etc. - if sys.version_info[0] >= 3 : - parser.read(filename, encoding='utf8') - else: - parser.readfp(io.open(filename, encoding="utf-8")) + parser.read(filename, encoding='utf8') except Exception as err: msg1 = _("WARNING: could not parse file %s because %s, recreating it:\n") logging.warn(msg1 % (filename, str(err))) @@ -275,12 +269,11 @@ class ConfigManager(object): self.data[name] = {} for opt in parser.options(sec): raw_value = parser.get(sec, opt).strip() - if sys.version_info[0] >= 3: - if raw_value[:2] == "u'": - raw_value = raw_value[1:] - elif raw_value.startswith('['): - raw_value = raw_value.replace(", u'", ", '") - raw_value = raw_value.replace("[u'", "['") + if raw_value[:2] == "u'": + raw_value = raw_value[1:] + elif raw_value.startswith('['): + raw_value = raw_value.replace(", u'", ", '") + raw_value = raw_value.replace("[u'", "['") setting = opt.lower() if oldstyle: ####################### Upgrade from oldstyle < 3.2 diff --git a/gramps/gen/utils/grampslocale.py b/gramps/gen/utils/grampslocale.py index fb59f685c..76582c158 100644 --- a/gramps/gen/utils/grampslocale.py +++ b/gramps/gen/utils/grampslocale.py @@ -847,9 +847,7 @@ class GrampsLocale(object): #ICU can digest strings and unicode return self.collator.getCollationKey(string).getByteArray() else: - if sys.version_info[0] < 3 and isinstance(string, unicode): - string = string.encode("utf-8", "replace") - if sys.version_info[0] >= 3 and isinstance(string, bytes): + if isinstance(string, bytes): string = string.decode("utf-8", "replace") try: key = locale.strxfrm(string) @@ -936,13 +934,7 @@ class GrampsLocale(object): # Translations Classes # #------------------------------------------------------------------------- -if sys.version_info < (3,0): - _LexemeBaseStr = unicode - _isstring = lambda s: isinstance(s, basestring) -else: - _LexemeBaseStr = str - _isstring = lambda s: isinstance(s, str) -class Lexeme(_LexemeBaseStr): +class Lexeme(str): r""" Created with :meth:`~GrampsTranslations.lexgettext` @@ -1039,12 +1031,12 @@ class Lexeme(_LexemeBaseStr): """ def __new__(cls, iterable, *args, **kwargs): - if _isstring(iterable): - newobj = _LexemeBaseStr.__new__(cls, iterable, *args, **kwargs) + if isinstance(iterable, str): + newobj = str.__new__(cls, iterable, *args, **kwargs) else: od = collections.OrderedDict(iterable) l = list(od.values()) or [""] - newobj = _LexemeBaseStr.__new__(cls, l[0], *args, **kwargs) + newobj = str.__new__(cls, l[0], *args, **kwargs) newobj._forms = od return newobj @@ -1085,10 +1077,7 @@ class GrampsTranslations(gettext.GNUTranslations): # and that's not what we want. if len(msgid.strip()) == 0: return msgid - if sys.version_info[0] < 3: - return gettext.GNUTranslations.ugettext(self, msgid) - else: - return gettext.GNUTranslations.gettext(self, msgid) + return gettext.GNUTranslations.gettext(self, msgid) def ngettext(self, singular, plural, num): """ @@ -1106,12 +1095,7 @@ class GrampsTranslations(gettext.GNUTranslations): :returns: Translation or the original. :rtype: unicode """ - if sys.version_info[0] < 3: - return gettext.GNUTranslations.ungettext(self, singular, - plural, num) - else: - return gettext.GNUTranslations.ngettext(self, singular, - plural, num) + return gettext.GNUTranslations.ngettext(self, singular, plural, num) def sgettext(self, msgid, sep='|'): """ diff --git a/gramps/gen/utils/lds.py b/gramps/gen/utils/lds.py index bf77d05c3..6239b0f68 100644 --- a/gramps/gen/utils/lds.py +++ b/gramps/gen/utils/lds.py @@ -24,7 +24,6 @@ Parses the lds.xml file to build the temple/code maps from ..const import DATA_DIR import os -import sys import logging from xml.parsers.expat import ParserCreate @@ -51,10 +50,7 @@ class LdsTemples(object): lds_filename = os.path.join(DATA_DIR, "lds.xml") try: - if sys.version_info[0] < 3: - xml_file = open(os.path.expanduser(lds_filename)) - else: - xml_file = open(os.path.expanduser(lds_filename), 'rb') + xml_file = open(os.path.expanduser(lds_filename), 'rb') parser = ParserCreate() parser.StartElementHandler = self.__start_element parser.EndElementHandler = self.__end_element diff --git a/gramps/gen/utils/maclocale.py b/gramps/gen/utils/maclocale.py index 201007a9a..21b860d4f 100644 --- a/gramps/gen/utils/maclocale.py +++ b/gramps/gen/utils/maclocale.py @@ -75,7 +75,7 @@ locale, leaving $LANGUAGE unset (which is the same as setting it to # #------------------------------------------------------------------------ -import sys, os, subprocess, locale +import os, subprocess, locale import logging LOG = logging.getLogger(".gramps.gen.utils.grampslocale.mac") LOG.propagate = True @@ -100,8 +100,7 @@ def mac_setup_localization(glocale): if not answer: LOG.debug("No prefs found for %s:%s", domain, key) return None - if not sys.version_info[0] < 3: - answer = answer.decode("utf-8") + answer = answer.decode("utf-8") LOG.debug("Found %s for defaults %s:%s", answer.strip(), domain, key) return answer except OSError as err: diff --git a/gramps/gui/aboutdialog.py b/gramps/gui/aboutdialog.py index 12417055c..264983cc1 100644 --- a/gramps/gui/aboutdialog.py +++ b/gramps/gui/aboutdialog.py @@ -28,6 +28,7 @@ import os import sys import io +import bsddb3 as bsddb ##import logging ##_LOG = logging.getLogger(".GrampsAboutDialog") @@ -58,12 +59,6 @@ from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext from gramps.gen.constfunc import get_env_var from .display import display_url -from gramps.gen.config import config - -if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - import bsddb3 as bsddb -else: - import bsddb #------------------------------------------------------------------------- # diff --git a/gramps/gui/clipboard.py b/gramps/gui/clipboard.py index 62c7c05a0..9c2851c0b 100644 --- a/gramps/gui/clipboard.py +++ b/gramps/gui/clipboard.py @@ -24,11 +24,7 @@ # standard python modules # #------------------------------------------------------------------------ -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import os from xml.sax.saxutils import escape from time import strftime as strftime @@ -229,15 +225,12 @@ class ClipWrapper(object): } return pickle.dumps(data) else: - if sys.version_info[0] < 3: - return str(self._obj) + if isinstance(self._obj, bytes): + return self._obj else: - if isinstance(self._obj, bytes): - return self._obj - else: - ## don't know if this happens in Gramps, theoretically possible - asuni = str(self._obj) - return asuni.encode('utf-8') + ## don't know if this happens in Gramps, theoretically possible + asuni = str(self._obj) + return asuni.encode('utf-8') def is_valid(self): return True diff --git a/gramps/gui/dbman.py b/gramps/gui/dbman.py index 015aa4f14..5ca1a2e2c 100644 --- a/gramps/gui/dbman.py +++ b/gramps/gui/dbman.py @@ -31,15 +31,11 @@ creating, and deleting of databases. # #------------------------------------------------------------------------- import os -import sys import time import copy import shutil import subprocess -if sys.version_info[0] < 3: - from urlparse import urlparse -else: - from urllib.parse import urlparse +from urllib.parse import urlparse #------------------------------------------------------------------------- # @@ -852,7 +848,7 @@ def find_revisions(name): get_next = False if os.path.isfile(name): for line in proc.stdout: - if sys.version_info[0] >= 3 and not isinstance(line, UNITYPE): + if not isinstance(line, UNITYPE): # we assume utf-8 ... line = line.decode('utf-8') match = rev.match(line) diff --git a/gramps/gui/displaystate.py b/gramps/gui/displaystate.py index f37b5e38c..819fd73b1 100644 --- a/gramps/gui/displaystate.py +++ b/gramps/gui/displaystate.py @@ -27,11 +27,7 @@ # #------------------------------------------------------------------------- import os -import sys -if sys.version_info[0] < 3: - from StringIO import StringIO -else: - from io import StringIO +from io import StringIO from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext diff --git a/gramps/gui/editors/displaytabs/backrefmodel.py b/gramps/gui/editors/displaytabs/backrefmodel.py index 38be8dbc3..d0b24f72e 100644 --- a/gramps/gui/editors/displaytabs/backrefmodel.py +++ b/gramps/gui/editors/displaytabs/backrefmodel.py @@ -19,8 +19,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -import sys - #------------------------------------------------------------------------- # # GTK libraries @@ -57,10 +55,7 @@ class BackRefModel(Gtk.ListStore): self.sref_list = sref_list self.count = 0 self.loading = False - if sys.version_info[0] < 3: - self.idle = GLib.idle_add(self.load_model().next) - else: - self.idle = GLib.idle_add(self.load_model().__next__) + self.idle = GLib.idle_add(self.load_model().__next__) def destroy(self): if self.loading: diff --git a/gramps/gui/editors/displaytabs/embeddedlist.py b/gramps/gui/editors/displaytabs/embeddedlist.py index 8916fba35..79188e7bc 100644 --- a/gramps/gui/editors/displaytabs/embeddedlist.py +++ b/gramps/gui/editors/displaytabs/embeddedlist.py @@ -26,11 +26,7 @@ #------------------------------------------------------------------------- from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/editors/displaytabs/gallerytab.py b/gramps/gui/editors/displaytabs/gallerytab.py index c1f51c47f..a4f050c65 100644 --- a/gramps/gui/editors/displaytabs/gallerytab.py +++ b/gramps/gui/editors/displaytabs/gallerytab.py @@ -25,17 +25,9 @@ # #------------------------------------------------------------------------- import os -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle -if sys.version_info[0] < 3: - from urlparse import urlparse - from urllib import url2pathname -else: - from urllib.parse import urlparse - from urllib.request import url2pathname +import pickle +from urllib.parse import urlparse +from urllib.request import url2pathname #------------------------------------------------------------------------- # diff --git a/gramps/gui/editors/displaytabs/groupembeddedlist.py b/gramps/gui/editors/displaytabs/groupembeddedlist.py index 18a4f91a5..c17a46b75 100644 --- a/gramps/gui/editors/displaytabs/groupembeddedlist.py +++ b/gramps/gui/editors/displaytabs/groupembeddedlist.py @@ -24,11 +24,7 @@ # python # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/editors/editchildref.py b/gramps/gui/editors/editchildref.py index 2e8e8d11e..12fbfd1fa 100644 --- a/gramps/gui/editors/editchildref.py +++ b/gramps/gui/editors/editchildref.py @@ -32,11 +32,7 @@ mechanism for the user to edit address information. #------------------------------------------------------------------------- from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/editors/editfamily.py b/gramps/gui/editors/editfamily.py index ce000997e..61071debc 100644 --- a/gramps/gui/editors/editfamily.py +++ b/gramps/gui/editors/editfamily.py @@ -26,17 +26,8 @@ # python modules # #------------------------------------------------------------------------- -from gramps.gen.config import config -import sys -if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3 import db as bsddb_db -else: - from bsddb import db as bsddb_db -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +from bsddb3 import db as bsddb_db +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/editors/editperson.py b/gramps/gui/editors/editperson.py index 285cbbc2c..384f0dd3c 100644 --- a/gramps/gui/editors/editperson.py +++ b/gramps/gui/editors/editperson.py @@ -34,11 +34,7 @@ to edit information about a particular Person. from copy import copy from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.sgettext -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/editors/editpersonref.py b/gramps/gui/editors/editpersonref.py index 308522804..0cf47c3f9 100644 --- a/gramps/gui/editors/editpersonref.py +++ b/gramps/gui/editors/editpersonref.py @@ -33,11 +33,7 @@ mechanism for the user to edit address information. from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/editors/objectentries.py b/gramps/gui/editors/objectentries.py index 23435ce82..1f882aadb 100644 --- a/gramps/gui/editors/objectentries.py +++ b/gramps/gui/editors/objectentries.py @@ -25,11 +25,7 @@ #------------------------------------------------------------------------- from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import logging _LOG = logging.getLogger(".objectentries") diff --git a/gramps/gui/logger/_errorreportassistant.py b/gramps/gui/logger/_errorreportassistant.py index b1d94455a..aa1b0d9ab 100644 --- a/gramps/gui/logger/_errorreportassistant.py +++ b/gramps/gui/logger/_errorreportassistant.py @@ -30,12 +30,7 @@ from gi.repository import GdkPixbuf from gi.repository import GObject import cairo import sys, os - -from gramps.gen.config import config -if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - import bsddb3 as bsddb -else: - import bsddb +import bsddb3 as bsddb #------------------------------------------------------------------------- # diff --git a/gramps/gui/managedwindow.py b/gramps/gui/managedwindow.py index 5ae5b3184..16ee33a67 100644 --- a/gramps/gui/managedwindow.py +++ b/gramps/gui/managedwindow.py @@ -30,11 +30,7 @@ the create/deletion of dialog windows. # #------------------------------------------------------------------------- import os -import sys -if sys.version_info[0] < 3: - from StringIO import StringIO -else: - from io import StringIO +from io import StringIO #------------------------------------------------------------------------- # diff --git a/gramps/gui/plug/_windows.py b/gramps/gui/plug/_windows.py index 70c753f24..36e13d112 100644 --- a/gramps/gui/plug/_windows.py +++ b/gramps/gui/plug/_windows.py @@ -28,7 +28,6 @@ #------------------------------------------------------------------------- import traceback import os -import sys #------------------------------------------------------------------------- # @@ -302,10 +301,7 @@ class PluginStatus(ManagedWindow): """ Reloads the addons from the wiki into the list. """ - if sys.version_info[0] < 3: - from urllib2 import urlopen - else: - from urllib.request import urlopen + from urllib.request import urlopen from ..utils import ProgressMeter URL = "%s%s" % (URL_WIKISTRING, WIKI_EXTRAPLUGINS_RAWDATA) try: diff --git a/gramps/gui/plug/quick/_quickreports.py b/gramps/gui/plug/quick/_quickreports.py index cfba03200..1a0ee7dfa 100644 --- a/gramps/gui/plug/quick/_quickreports.py +++ b/gramps/gui/plug/quick/_quickreports.py @@ -31,11 +31,7 @@ This module provides the functions to build the quick report context menu's #------------------------------------------------------------------------ from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext -import sys -if sys.version_info[0] < 3: - from StringIO import StringIO -else: - from io import StringIO +from io import StringIO #------------------------------------------------------------------------ # diff --git a/gramps/gui/plug/quick/_quicktable.py b/gramps/gui/plug/quick/_quicktable.py index e3e07d3c1..a15114af2 100644 --- a/gramps/gui/plug/quick/_quicktable.py +++ b/gramps/gui/plug/quick/_quicktable.py @@ -29,11 +29,7 @@ Provide a simplified table creation interface # Standard python modules # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/thumbnails.py b/gramps/gui/thumbnails.py index 840e077ec..7755873da 100644 --- a/gramps/gui/thumbnails.py +++ b/gramps/gui/thumbnails.py @@ -28,7 +28,6 @@ Handles generation and access to thumbnails used in GRAMPS. # #------------------------------------------------------------------------- import os -import sys import logging try: from hashlib import md5 @@ -144,9 +143,8 @@ def __build_thumb_path(path, rectangle=None, size=SIZE_NORMAL): extra = "" if rectangle is not None: extra = "?" + str(rectangle) - prehash = path+extra - if sys.version_info[0] >= 3: - prehash =prehash.encode('utf-8') + prehash = path + extra + prehash = prehash.encode('utf-8') md5_hash = md5(prehash) if size == SIZE_LARGE: base_dir = THUMB_LARGE diff --git a/gramps/gui/tipofday.py b/gramps/gui/tipofday.py index cbad860ad..e83106509 100644 --- a/gramps/gui/tipofday.py +++ b/gramps/gui/tipofday.py @@ -32,7 +32,6 @@ from random import Random from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext import os -import sys #------------------------------------------------------------------------- # @@ -139,10 +138,7 @@ class TipParser(object): self.mylist = [] self.skip = False - if sys.version_info[0] < 3: - xml_file = open(TIP_DATA) - else: - xml_file = open(TIP_DATA, 'rb') + xml_file = open(TIP_DATA, 'rb') self.tlist = [] parser = ParserCreate() parser.StartElementHandler = self.startElement diff --git a/gramps/gui/utilscairo.py b/gramps/gui/utilscairo.py index d1c830700..dc9640ee5 100644 --- a/gramps/gui/utilscairo.py +++ b/gramps/gui/utilscairo.py @@ -34,11 +34,7 @@ import cairo #import math #import colorsys -#import sys -#if sys.version_info[0] < 3: -# import cPickle as pickle -#else: -# import pickle +#import pickle #------------------------------------------------------------------------- # diff --git a/gramps/gui/viewmanager.py b/gramps/gui/viewmanager.py index 3febeb4b6..7210b5482 100644 --- a/gramps/gui/viewmanager.py +++ b/gramps/gui/viewmanager.py @@ -35,13 +35,9 @@ Manages the main window and the pluggable views #------------------------------------------------------------------------- from collections import defaultdict import os -import sys import time import datetime -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO +from io import StringIO import posixpath #------------------------------------------------------------------------- diff --git a/gramps/gui/views/bookmarks.py b/gramps/gui/views/bookmarks.py index 51c311f6b..10c83d6e9 100644 --- a/gramps/gui/views/bookmarks.py +++ b/gramps/gui/views/bookmarks.py @@ -26,11 +26,7 @@ # Standard python modules # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO +from io import StringIO #------------------------------------------------------------------------- # diff --git a/gramps/gui/views/listview.py b/gramps/gui/views/listview.py index 1cae0700c..24828eb27 100644 --- a/gramps/gui/views/listview.py +++ b/gramps/gui/views/listview.py @@ -29,11 +29,7 @@ Provide the base classes for GRAMPS' DataView classes # python modules # #---------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import time import logging diff --git a/gramps/gui/views/pageview.py b/gramps/gui/views/pageview.py index fcb4736b5..771cf1294 100644 --- a/gramps/gui/views/pageview.py +++ b/gramps/gui/views/pageview.py @@ -27,7 +27,6 @@ Provide the base class for GRAMPS' DataView classes # python modules # #---------------------------------------------------------------- -import sys import logging _LOG = logging.getLogger('.pageview') @@ -223,10 +222,7 @@ class PageView(DbGUIElement): creates it. The copy is handled through the drag and drop system. """ - if sys.version_info[0] < 3: - import cPickle as pickle - else: - import pickle + import pickle from ..clipboard import ClipboardWindow, obj2target handled = False for handle in handles: diff --git a/gramps/gui/views/treemodels/flatbasemodel.py b/gramps/gui/views/treemodels/flatbasemodel.py index a58b57a4d..e12d8dda9 100644 --- a/gramps/gui/views/treemodels/flatbasemodel.py +++ b/gramps/gui/views/treemodels/flatbasemodel.py @@ -53,7 +53,6 @@ It keeps a FlatNodeMap, and obtains data from database as needed #------------------------------------------------------------------------- import logging import bisect -import sys import time _LOG = logging.getLogger(".gui.basetreemodel") @@ -575,11 +574,8 @@ class FlatBaseModel(GObject.GObject, Gtk.TreeModel): # use cursor as a context manager with self.gen_cursor() as cursor: #loop over database and store the sort field, and the handle - if sys.version_info[0] >= 3: - srt_keys=[(self.sort_func(data), key.decode('utf8')) - for key, data in cursor] - else: - srt_keys=[(self.sort_func(data), key) for key, data in cursor] + srt_keys=[(self.sort_func(data), key.decode('utf8')) + for key, data in cursor] srt_keys.sort() return srt_keys @@ -647,8 +643,7 @@ class FlatBaseModel(GObject.GObject, Gtk.TreeModel): Add a row. This is called after object with handle is created. Row is only added if search/filter data is such that it must be shown """ - if sys.version_info[0] >= 3: - assert isinstance(handle, str) + assert isinstance(handle, str) if self.node_map.get_path_from_handle(handle) is not None: return # row is already displayed data = self.map(handle) @@ -668,8 +663,7 @@ class FlatBaseModel(GObject.GObject, Gtk.TreeModel): """ Delete a row, called after the object with handle is deleted """ - if sys.version_info[0] >= 3: - assert isinstance(handle, str) + assert isinstance(handle, str) if self.node_map.get_path_from_handle(handle) is None: return # row is not currently displayed self.clear_cache(handle) diff --git a/gramps/gui/views/treemodels/treebasemodel.py b/gramps/gui/views/treemodels/treebasemodel.py index 1a3706c43..8ac131f81 100644 --- a/gramps/gui/views/treemodels/treebasemodel.py +++ b/gramps/gui/views/treemodels/treebasemodel.py @@ -33,7 +33,6 @@ This module provides the model that is used for all hierarchical treeviews. # #------------------------------------------------------------------------- import time -import sys import logging _LOG = logging.getLogger(".gui.treebasemodel") @@ -784,8 +783,7 @@ class TreeBaseModel(GObject.GObject, Gtk.TreeModel): """ Add a row to the model. """ - if sys.version_info[0] >= 3: - assert isinstance(handle, str) + assert isinstance(handle, str) if self._get_node(handle) is not None: return # row already exists cput = time.clock() @@ -808,8 +806,7 @@ class TreeBaseModel(GObject.GObject, Gtk.TreeModel): """ Delete a row from the model. """ - if sys.version_info[0] >= 3: - assert isinstance(handle, str) + assert isinstance(handle, str) cput = time.clock() node = self._get_node(handle) if node is None: @@ -840,8 +837,7 @@ class TreeBaseModel(GObject.GObject, Gtk.TreeModel): """ Update a row in the model. """ - if sys.version_info[0] >= 3: - assert isinstance(handle, str) + assert isinstance(handle, str) if self._get_node(handle) is None: return # row not currently displayed diff --git a/gramps/gui/widgets/fanchart.py b/gramps/gui/widgets/fanchart.py index d6c2a5abf..6b87ed2b4 100644 --- a/gramps/gui/widgets/fanchart.py +++ b/gramps/gui/widgets/fanchart.py @@ -43,10 +43,7 @@ import cairo import math import colorsys import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle from cgi import escape #------------------------------------------------------------------------- diff --git a/gramps/gui/widgets/fanchartdesc.py b/gramps/gui/widgets/fanchartdesc.py index bf923654c..57d6aa86b 100644 --- a/gramps/gui/widgets/fanchartdesc.py +++ b/gramps/gui/widgets/fanchartdesc.py @@ -41,11 +41,7 @@ from gi.repository import PangoCairo import cairo import math import colorsys -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle from cgi import escape #------------------------------------------------------------------------- diff --git a/gramps/gui/widgets/grampletbar.py b/gramps/gui/widgets/grampletbar.py index ed57f7d3a..ae51dd520 100644 --- a/gramps/gui/widgets/grampletbar.py +++ b/gramps/gui/widgets/grampletbar.py @@ -41,11 +41,7 @@ from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext import time import os -import sys -if sys.version_info[0] < 3: - import ConfigParser as configparser -else: - import configparser +import configparser import io #------------------------------------------------------------------------- diff --git a/gramps/gui/widgets/grampletpane.py b/gramps/gui/widgets/grampletpane.py index cb2bcb894..6a0b3db73 100644 --- a/gramps/gui/widgets/grampletpane.py +++ b/gramps/gui/widgets/grampletpane.py @@ -35,11 +35,7 @@ from gi.repository import Pango import time import os import io -import sys -if sys.version_info[0] < 3: - import ConfigParser as configparser -else: - import configparser +import configparser import logging diff --git a/gramps/gui/widgets/monitoredwidgets.py b/gramps/gui/widgets/monitoredwidgets.py index c7cfb2b4a..43823af5b 100644 --- a/gramps/gui/widgets/monitoredwidgets.py +++ b/gramps/gui/widgets/monitoredwidgets.py @@ -32,7 +32,6 @@ __all__ = ["MonitoredCheckbox", "MonitoredEntry", #------------------------------------------------------------------------- import logging _LOG = logging.getLogger(".widgets.monitoredwidgets") -import sys #------------------------------------------------------------------------- # @@ -139,11 +138,7 @@ class MonitoredEntry(object): self.obj.connect(signal, callback, *data) def _on_change(self, obj): - if sys.version_info[0] < 3: - self.set_val(cuni(obj.get_text(), 'utf-8')) - else: - #all is unicode - self.set_val(obj.get_text()) + self.set_val(obj.get_text()) if self.changed: self.changed(obj) diff --git a/gramps/gui/widgets/shortlistcomboentry.py b/gramps/gui/widgets/shortlistcomboentry.py index 9b6b9f28e..26141ff7d 100644 --- a/gramps/gui/widgets/shortlistcomboentry.py +++ b/gramps/gui/widgets/shortlistcomboentry.py @@ -27,7 +27,6 @@ __all__ = ["ShortlistComboEntry"] # Python modules # #------------------------------------------------------------------------- -import sys import logging _LOG = logging.getLogger(".widgets.shortlistcomboentry") @@ -52,20 +51,11 @@ from .validatedcomboentry import ValidatedComboEntry # #------------------------------------------------------------------------- -if sys.version_info[0] < 3: - _GTYPE = { - str: GObject.TYPE_STRING, - unicode: GObject.TYPE_STRING, - int: GObject.TYPE_INT, - long: GObject.TYPE_INT64, - float: GObject.TYPE_FLOAT, - } -else: - _GTYPE = { - str: GObject.TYPE_STRING, - int: GObject.TYPE_INT64, - float: GObject.TYPE_FLOAT, - } +_GTYPE = { + str: GObject.TYPE_STRING, + int: GObject.TYPE_INT64, + float: GObject.TYPE_FLOAT, + } (COLUMN_ITEM, COLUMN_IS_SEP,) = list(range(2)) diff --git a/gramps/gui/widgets/validatedmaskedentry.py b/gramps/gui/widgets/validatedmaskedentry.py index c695503a3..044bf7332 100644 --- a/gramps/gui/widgets/validatedmaskedentry.py +++ b/gramps/gui/widgets/validatedmaskedentry.py @@ -139,12 +139,8 @@ class FadeOut(GObject.GObject): ##_LOG.debug('_start_merging: Starting') generator = self._merge_colors(self._start_color, Gdk.color_parse(self.ERROR_COLOR)) - if sys.version_info[0] < 3: - func = generator.next - else: - func = generator.__next__ self._background_timeout_id = ( - GLib.timeout_add(FadeOut.MERGE_COLORS_DELAY, func)) + GLib.timeout_add(FadeOut.MERGE_COLORS_DELAY, generator.__next__)) self._countdown_timeout_id = -1 def start(self, color): @@ -204,20 +200,12 @@ INPUT_FORMATS = { # ? - Ascii letter, optional # C - Alpha, optional -if sys.version_info[0] < 3: - INPUT_CHAR_MAP = { - INPUT_ASCII_LETTER: lambda text: text in string.ascii_letters, - INPUT_ALPHA: unicode.isalpha, - INPUT_ALPHANUMERIC: unicode.isalnum, - INPUT_DIGIT: unicode.isdigit, - } -else: - INPUT_CHAR_MAP = { - INPUT_ASCII_LETTER: lambda text: text in string.ascii_letters, - INPUT_ALPHA: str.isalpha, - INPUT_ALPHANUMERIC: str.isalnum, - INPUT_DIGIT: str.isdigit, - } +INPUT_CHAR_MAP = { + INPUT_ASCII_LETTER: lambda text: text in string.ascii_letters, + INPUT_ALPHA: str.isalpha, + INPUT_ALPHANUMERIC: str.isalnum, + INPUT_DIGIT: str.isdigit, + } (COL_TEXT, COL_OBJECT) = list(range(2)) diff --git a/gramps/plugins/docgen/odfdoc.py b/gramps/plugins/docgen/odfdoc.py index d8fe807c1..0d8c7c6c4 100644 --- a/gramps/plugins/docgen/odfdoc.py +++ b/gramps/plugins/docgen/odfdoc.py @@ -68,11 +68,7 @@ except ImportError: from md5 import md5 import zipfile import time -import sys -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO +from io import StringIO from math import pi, cos, sin, degrees, radians from xml.sax.saxutils import escape @@ -1018,8 +1014,7 @@ class ODFDoc(BaseDoc, TextDoc, DrawDoc): not_extension, extension = os.path.splitext(file_name) file_name_hash = file_name - if sys.version_info[0] >= 3: - file_name_hash = file_name_hash.encode('utf-8') + file_name_hash = file_name_hash.encode('utf-8') odf_name = md5(file_name_hash).hexdigest() + extension media_list_item = (file_name, odf_name) @@ -1186,8 +1181,6 @@ class ODFDoc(BaseDoc, TextDoc, DrawDoc): """ Add a zip file to an archive """ - if sys.version_info[0] < 3: - name = name.encode('utf-8') zipinfo = zipfile.ZipInfo(name) zipinfo.date_time = t zipinfo.compress_type = zipfile.ZIP_DEFLATED diff --git a/gramps/plugins/docgen/svgdrawdoc.py b/gramps/plugins/docgen/svgdrawdoc.py index 34f33c409..7d58eefbc 100644 --- a/gramps/plugins/docgen/svgdrawdoc.py +++ b/gramps/plugins/docgen/svgdrawdoc.py @@ -30,11 +30,7 @@ SVG document generator. # python modules # #------------------------------------------------------------------------- -import sys -if sys.version_info[0] < 3: - from StringIO import StringIO -else: - from io import StringIO +from io import StringIO #------------------------------------------------------------------------- # diff --git a/gramps/plugins/export/exportcsv.py b/gramps/plugins/export/exportcsv.py index 2236029b7..6fd7255b9 100644 --- a/gramps/plugins/export/exportcsv.py +++ b/gramps/plugins/export/exportcsv.py @@ -31,14 +31,10 @@ # #------------------------------------------------------------------------- import os -import sys from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.sgettext import csv -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO +from io import StringIO import codecs #------------------------------------------------------------------------ @@ -155,15 +151,8 @@ class UnicodeWriter(object): self.encoder = codecs.getencoder(encoding) def writerow(self, row): - if sys.version_info[0] < 3: - self.writer.writerow([s.encode('utf-8') for s in row]) - # Fetch UTF-8 output from the queue ... - data = self.queue.getvalue() - data = data.decode('utf-8') - else: - self.writer.writerow(row) - data = self.queue.getvalue() - #in python3, StringIO self.queue returns unicode! + self.writer.writerow(row) + data = self.queue.getvalue() #data now contains the csv data in unicode # ... and reencode it into the target encoding data, length = self.encoder(data) diff --git a/gramps/plugins/export/exportpkg.py b/gramps/plugins/export/exportpkg.py index 004450198..75b5a2381 100644 --- a/gramps/plugins/export/exportpkg.py +++ b/gramps/plugins/export/exportpkg.py @@ -32,12 +32,8 @@ import time import shutil import os -import sys import tarfile -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO, BytesIO +from io import StringIO, BytesIO from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext @@ -213,10 +209,7 @@ class PackageWriter(object): # select_clicked() # Write XML now - if sys.version_info[0] < 3: - g = StringIO() - else: - g = BytesIO() + g = BytesIO() gfile = XmlWriter(self.db, self.user, 2) gfile.write_handle(g) tarinfo = tarfile.TarInfo('data.gramps') diff --git a/gramps/plugins/gramplet/eval.py b/gramps/plugins/gramplet/eval.py index dcf240389..a7f0cd48f 100644 --- a/gramps/plugins/gramplet/eval.py +++ b/gramps/plugins/gramplet/eval.py @@ -29,10 +29,7 @@ Provide a python evaluation window # #------------------------------------------------------------------------ import sys -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO +from io import StringIO from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext import traceback diff --git a/gramps/plugins/gramplet/leak.py b/gramps/plugins/gramplet/leak.py index e704c6d25..58ae93bd5 100644 --- a/gramps/plugins/gramplet/leak.py +++ b/gramps/plugins/gramplet/leak.py @@ -29,14 +29,9 @@ Show uncollected objects in a window. # standard python modules # #------------------------------------------------------------------------ -import sys from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext -from gramps.gen.config import config -if config.get('preferences.use-bsddb3') or sys.version_info[0] >= 3: - from bsddb3.db import DBError -else: - from bsddb.db import DBError +from bsddb3.db import DBError #------------------------------------------------------------------------ # diff --git a/gramps/plugins/importer/importgedcom.py b/gramps/plugins/importer/importgedcom.py index 327445595..044ce9291 100644 --- a/gramps/plugins/importer/importgedcom.py +++ b/gramps/plugins/importer/importgedcom.py @@ -21,13 +21,6 @@ "Import from GEDCOM" -#------------------------------------------------------------------------ -# -# python modules -# -#------------------------------------------------------------------------ -import sys - #------------------------------------------------------------------------ # # Set up logging @@ -53,11 +46,8 @@ from gramps.plugins.lib import libgedcom # a quick turnround, without having to restart Gramps. module = __import__("gramps.plugins.lib.libgedcom", fromlist=["gramps.plugins.lib"]) # why o why ?? as above! -if sys.version_info[0] < 3: - reload (module) -else: - import imp - imp.reload(module) +import imp +imp.reload(module) from gramps.gen.config import config from gramps.gen.constfunc import STRTYPE @@ -108,10 +98,7 @@ def importData(database, filename, user): assert(isinstance(code_set, STRTYPE)) try: - if sys.version_info[0] < 3: - ifile = open(filename, "rU") - else: - ifile = open(filename, "rb") + ifile = open(filename, "rb") stage_one = libgedcom.GedcomStageOne(ifile) stage_one.parse() diff --git a/gramps/plugins/importer/importgeneweb.py b/gramps/plugins/importer/importgeneweb.py index 0fe72987e..62ec46c26 100644 --- a/gramps/plugins/importer/importgeneweb.py +++ b/gramps/plugins/importer/importgeneweb.py @@ -29,7 +29,6 @@ #------------------------------------------------------------------------- import re import time -import sys #------------------------------------------------------------------------ # @@ -54,14 +53,7 @@ from gramps.gen.lib import (Attribute, AttributeType, ChildRef, Citation, Place, Source) from gramps.gen.db import DbTxn from gramps.gen.constfunc import STRTYPE, cuni, conv_to_unicode -if sys.version_info[0] < 3: - from htmlentitydefs import name2codepoint -else: - from html.entities import name2codepoint -if sys.version_info[0] < 3: - unich = lambda x: unichr(x) -else: - unich = lambda x: chr(x) +from html.entities import name2codepoint _date_parse = re.compile('([kmes~?<>]+)?([0-9/]+)([J|H|F])?(\.\.)?([0-9/]+)?([J|H|F])?') _text_parse = re.compile('0\((.*)\)') @@ -906,9 +898,9 @@ class GeneWebParser(object): for match in charref_re.finditer(s): try: if match.group(2): # HEX - nchar = unich(int(match.group(3),16)) + nchar = chr(int(match.group(3),16)) else: # Decimal - nchar = unich(int(match.group(3))) + nchar = chr(int(match.group(3))) s = s.replace(match.group(0), nchar) except UnicodeDecodeError: pass @@ -918,7 +910,7 @@ class GeneWebParser(object): for match in entref_re.finditer(s): try: if match.group(2) in name2codepoint: - nchar = unich(name2codepoint[match.group(2)]) + nchar = chr(name2codepoint[match.group(2)]) s = s.replace(match.group(0), nchar) except UnicodeDecodeError: pass diff --git a/gramps/plugins/importer/importxml.py b/gramps/plugins/importer/importxml.py index b5e9f0de6..4f1a51574 100644 --- a/gramps/plugins/importer/importxml.py +++ b/gramps/plugins/importer/importxml.py @@ -380,21 +380,18 @@ class LineParser(object): try: if use_gzip: - if sys.version_info[0] == 2: - ofile = gzip.open(filename, "rb") - else: - import io - # Bug 6255. TextIOWrapper is required for python3 to - # present file contents as text, otherwise they - # are read as binary. However due to a missing - # method (read1) in early python3 versions this - # try block will fail. - # Gramps will still import XML files using python - # versions < 3.3.0 but the file progress meter - # will not work properly, going immediately to - # 100%. - # It should work correctly from version 3.3. - ofile = io.TextIOWrapper(gzip.open(filename, "rb")) + import io + # Bug 6255. TextIOWrapper is required for python3 to + # present file contents as text, otherwise they + # are read as binary. However due to a missing + # method (read1) in early python3 versions this + # try block will fail. + # Gramps will still import XML files using python + # versions < 3.3.0 but the file progress meter + # will not work properly, going immediately to + # 100%. + # It should work correctly from version 3.3. + ofile = io.TextIOWrapper(gzip.open(filename, "rb")) else: ofile = open(filename, "r") @@ -465,10 +462,7 @@ class ImportOpenFileContextManager: if use_gzip: xml_file = gzip.open(filename, "rb") else: - if sys.version_info[0] < 3: - xml_file = open(filename, "r") - else: - xml_file = open(filename, "rb") + xml_file = open(filename, "rb") except IOError as msg: self.user.notify_error(_("%s could not be opened") % filename, str(msg)) xml_file = None diff --git a/gramps/plugins/lib/libgedcom.py b/gramps/plugins/lib/libgedcom.py index 48db9c536..74cf3dedf 100644 --- a/gramps/plugins/lib/libgedcom.py +++ b/gramps/plugins/lib/libgedcom.py @@ -88,21 +88,14 @@ all lines until the next level 2 token is found (in this case, skipping the # #------------------------------------------------------------------------- import os -import sys import re import time import codecs from xml.parsers.expat import ParserCreate from collections import defaultdict import string -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO -if sys.version_info[0] < 3: - from urlparse import urlparse -else: - from urllib.parse import urlparse +from io import StringIO +from urllib.parse import urlparse #------------------------------------------------------------------------ # @@ -143,11 +136,6 @@ from gramps.gen.constfunc import cuni, conv_to_unicode, STRTYPE, UNITYPE, win from gramps.plugins.lib.libplaceimport import PlaceImport from gramps.gen.display.place import displayer as place_displayer -# string.whitespace in some configuration is changed if it is imported -# after setting locale (adding '0xa0') -if win() and sys.version_info[0] < 3: - string.whitespace = ' \t\n\r\v\f' - #------------------------------------------------------------------------- # # constants @@ -1123,18 +1111,11 @@ class GedcomInfoDB(object): self.standard = GedcomDescription("GEDCOM 5.5 standard") self.standard.set_dest("GEDCOM 5.5") - if sys.version_info[0] < 3: - try: - filepath = os.path.join(DATA_DIR, "gedcom.xml") - ged_file = open(filepath.encode('iso8859-1'), "r") - except: - return - else: - try: - filepath = os.path.join(DATA_DIR, "gedcom.xml") - ged_file = open(filepath, "rb") - except: - return + try: + filepath = os.path.join(DATA_DIR, "gedcom.xml") + ged_file = open(filepath, "rb") + except: + return parser = GedInfoParser(self) parser.parse(ged_file) @@ -1240,13 +1221,8 @@ class BaseReader(object): self.ifile.seek(0) def readline(self): - if sys.version_info[0] < 3: - line = unicode(self.ifile.readline(), - encoding=self.enc, - errors='replace') - else: - line = self.ifile.readline() - line = line.decode(self.enc, errors='replace') + line = self.ifile.readline() + line = line.decode(self.enc, errors='replace') return line.translate(STRIP_DICT) class UTF8Reader(BaseReader): @@ -1263,12 +1239,7 @@ class UTF8Reader(BaseReader): def readline(self): line = self.ifile.readline() - if sys.version_info[0] < 3: - line = unicode(line, - encoding=self.enc, - errors='replace') - else: - line = line.decode(self.enc, errors='replace') + line = line.decode(self.enc, errors='replace') return line.translate(STRIP_DICT) class UTF16Reader(BaseReader): @@ -1539,10 +1510,7 @@ class AnselReader(BaseReader): head = '\ufffd' # "Replacement Char" s = s[1:] buff.write(head.encode("utf-8")) - if sys.version_info[0] < 3: - ans = unicode(buff.getvalue(), "utf-8") - else: - ans = buff.getvalue().decode("utf-8") + ans = buff.getvalue().decode("utf-8") buff.close() return ans diff --git a/gramps/plugins/lib/libholiday.py b/gramps/plugins/lib/libholiday.py index c8073f0e7..609faab2c 100644 --- a/gramps/plugins/lib/libholiday.py +++ b/gramps/plugins/lib/libholiday.py @@ -27,7 +27,6 @@ from xml.parsers import expat import datetime import math import os -import sys #------------------------------------------------------------------------ # @@ -325,10 +324,7 @@ class _Xml2Obj: parser.StartElementHandler = self.start_element parser.EndElementHandler = self.end_element # Parse the XML File - if sys.version_info[0] < 3: - parser.Parse(open(filename, 'r').read(), 1) - else: - parser.Parse(open(filename, 'rb').read(), 1) + parser.Parse(open(filename, 'rb').read(), 1) return self.root #------------------------------------------------------------------------ diff --git a/gramps/plugins/tool/check.py b/gramps/plugins/tool/check.py index 1f070bf61..fe79add3c 100644 --- a/gramps/plugins/tool/check.py +++ b/gramps/plugins/tool/check.py @@ -30,11 +30,7 @@ # #------------------------------------------------------------------------- import os -import sys -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO +from io import StringIO import time from collections import defaultdict diff --git a/gramps/plugins/tool/phpgedviewconnector.py b/gramps/plugins/tool/phpgedviewconnector.py index 6cc741fc0..9e2bdea71 100644 --- a/gramps/plugins/tool/phpgedviewconnector.py +++ b/gramps/plugins/tool/phpgedviewconnector.py @@ -20,16 +20,9 @@ "Download a GEDCOM file from a phpGedView server" -import sys -if sys.version_info[0] < 3: - import httplib as hcl -else: - import http.client as hcl -if sys.version_info[0] < 3: - from urllib2 import URLError, urlopen, Request -else: - from urllib.request import Request, urlopen - from urllib.error import URLError +import http.client as hcl +from urllib.request import Request, urlopen +from urllib.error import URLError from gi.repository import Gtk import os from tempfile import mkstemp diff --git a/gramps/plugins/tool/verify.py b/gramps/plugins/tool/verify.py index ad078f75e..c38c44a09 100644 --- a/gramps/plugins/tool/verify.py +++ b/gramps/plugins/tool/verify.py @@ -33,11 +33,7 @@ This is the research tool, not the low-level data ingerity check. #------------------------------------------------------------------------ import os -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle try: from hashlib import md5 except ImportError: @@ -548,7 +544,7 @@ class VerifyResults(ManagedWindow): pass def load_ignored(self, db_filename): - if sys.version_info[0] >= 3 and isinstance(db_filename, UNITYPE): + if isinstance(db_filename, UNITYPE): db_filename = db_filename.encode('utf-8') md5sum = md5(db_filename) ## a new Gramps major version means recreating the .vfm file. diff --git a/gramps/plugins/view/htmlrenderer.py b/gramps/plugins/view/htmlrenderer.py index eba98ab2a..e239a803f 100644 --- a/gramps/plugins/view/htmlrenderer.py +++ b/gramps/plugins/view/htmlrenderer.py @@ -31,11 +31,7 @@ Can use the Webkit or Gecko ( Mozilla ) library # #------------------------------------------------------------------------- import os -import sys -if sys.version_info[0] < 3: - from urlparse import urlunsplit -else: - from urllib.parse import urlunsplit +from urllib.parse import urlunsplit #------------------------------------------------------------------------- # diff --git a/gramps/plugins/view/mediaview.py b/gramps/plugins/view/mediaview.py index bf703c82f..1960de8e7 100644 --- a/gramps/plugins/view/mediaview.py +++ b/gramps/plugins/view/mediaview.py @@ -32,17 +32,10 @@ Media View. from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext import os -import sys -if sys.version_info[0] < 3: - from urlparse import urlparse - from urllib2 import url2pathname -else: - from urllib.parse import urlparse - from urllib.request import url2pathname -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +from urllib.parse import urlparse +from urllib.request import url2pathname +import pickle + #------------------------------------------------------------------------- # # GTK/Gnome modules diff --git a/gramps/plugins/view/pedigreeview.py b/gramps/plugins/view/pedigreeview.py index 9286be499..a092c1a2c 100644 --- a/gramps/plugins/view/pedigreeview.py +++ b/gramps/plugins/view/pedigreeview.py @@ -29,12 +29,8 @@ #------------------------------------------------------------------------- from cgi import escape import math -import sys import os -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/plugins/view/relview.py b/gramps/plugins/view/relview.py index a614ed1cd..7ba2cf89d 100644 --- a/gramps/plugins/view/relview.py +++ b/gramps/plugins/view/relview.py @@ -31,12 +31,7 @@ from gramps.gen.const import GRAMPS_LOCALE as glocale _ = glocale.translation.sgettext ngettext = glocale.translation.ngettext # else "nearby" comments are ignored import cgi - -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle #------------------------------------------------------------------------- # diff --git a/gramps/plugins/webreport/narrativeweb.py b/gramps/plugins/webreport/narrativeweb.py index df2df7b01..943482f30 100644 --- a/gramps/plugins/webreport/narrativeweb.py +++ b/gramps/plugins/webreport/narrativeweb.py @@ -80,10 +80,7 @@ import shutil import codecs import tarfile import tempfile -if sys.version_info[0] < 3: - from cStringIO import StringIO -else: - from io import StringIO, BytesIO, TextIOWrapper +from io import StringIO, BytesIO, TextIOWrapper from textwrap import TextWrapper from unicodedata import normalize from collections import defaultdict @@ -7867,14 +7864,9 @@ class NavWebReport(Report): else: self.cur_fname = fname + ext if self.archive: - if sys.version_info[0] < 3: - string_io = StringIO() - of = codecs.EncodedFile(string_io, 'utf-8', self.encoding, - 'xmlcharrefreplace') - else: - string_io = BytesIO() - of = TextIOWrapper(string_io, encoding=self.encoding, - errors='xmlcharrefreplace') + string_io = BytesIO() + of = TextIOWrapper(string_io, encoding=self.encoding, + errors='xmlcharrefreplace') else: string_io = None if subdir: @@ -7882,22 +7874,8 @@ class NavWebReport(Report): if not os.path.isdir(subdir): os.makedirs(subdir) fname = os.path.join(self.html_dir, self.cur_fname) - if sys.version_info[0] < 3: - # In python 2.x, the data written by of.write() is genarally of - # type 'str' (i.e. 8-bit strings), except for cases where (at - # least) one of the objects being converted by a '%' operator is - # unicode (e.g. the "Generated by" line or the _META3 line), in - # which case the data being written is of type 'unicode' (See - # http://docs.python.org/2/library/stdtypes.html#string- - # formatting). The data written to the file is encoded according - # to self.encoding - of = codecs.EncodedFile(open(fname, 'w'), 'utf-8', - self.encoding, 'xmlcharrefreplace') - else: - # In python 3, the data that is written by of.write() is always - # of type 'str' (i.e. unicode text). - of = open(fname, 'w', encoding=self.encoding, - errors='xmlcharrefreplace') + of = open(fname, 'w', encoding=self.encoding, + errors='xmlcharrefreplace') return (of, string_io) def close_file(self, of, string_io): @@ -7906,8 +7884,7 @@ class NavWebReport(Report): """ if self.archive: - if sys.version_info[0] >= 3: - of.flush() + of.flush() tarinfo = tarfile.TarInfo(self.cur_fname) tarinfo.size = len(string_io.getvalue()) tarinfo.mtime = time.time() diff --git a/gramps/plugins/webreport/webcal.py b/gramps/plugins/webreport/webcal.py index e21fcab2c..43944f8e1 100644 --- a/gramps/plugins/webreport/webcal.py +++ b/gramps/plugins/webreport/webcal.py @@ -373,22 +373,8 @@ class WebCalReport(Report): if not os.path.isdir(destdir): os.makedirs(destdir) - if sys.version_info[0] < 3: - # In python 2.x, the data written by of.write() is genarally of - # type 'str' (i.e. 8-bit strings), except for cases where (at - # least) one of the objects being converted by a '%' operator is - # unicode (e.g. the "Generated by" line or the _META3 line), in - # which case the data being written is of type 'unicode' (See - # http://docs.python.org/2/library/stdtypes.html#string- - # formatting). The data written to the file is encoded according - # to self.encoding - of = codecs.EncodedFile(open(fname, 'w'), 'utf-8', - self.encoding, 'xmlcharrefreplace') - else: - # In python 3, the data that is written by of.write() is always - # of type 'str' (i.e. unicode text). - of = open(fname, 'w', encoding=self.encoding, - errors='xmlcharrefreplace') + of = open(fname, 'w', encoding=self.encoding, + errors='xmlcharrefreplace') return of def close_file(self, of): @@ -1740,10 +1726,7 @@ def get_day_list(event_date, holiday_list, bday_anniv_list): # sort them based on number of years # holidays will always be on top of event list - if sys.version_info[0] < 3: - day_list.sort() - else: - day_list= sorted(day_list, key=lambda x: (isinstance(x[0], str), x[0])) + day_list= sorted(day_list, key=lambda x: (isinstance(x[0], str), x[0])) # return to its caller calendar_build() return day_list diff --git a/gramps/webapp/connection.py b/gramps/webapp/connection.py index f4edbfee8..bf2074b80 100644 --- a/gramps/webapp/connection.py +++ b/gramps/webapp/connection.py @@ -17,15 +17,9 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -import sys -if sys.version_info[0] < 3: - from urllib2 import (urlopen, Request, HTTPCookieProcessor, - build_opener, install_opener) - from urllib import urlencode -else: - from urllib.request import (Request, urlopen, HTTPCookieProcessor, - build_opener, install_opener) - from urllib.parse import urlencode +from urllib.request import (Request, urlopen, HTTPCookieProcessor, + build_opener, install_opener) +from urllib.parse import urlencode class Connection(object): """ diff --git a/gramps/webapp/grampsdb/models.py b/gramps/webapp/grampsdb/models.py index c302ee99a..71c00f24d 100644 --- a/gramps/webapp/grampsdb/models.py +++ b/gramps/webapp/grampsdb/models.py @@ -34,11 +34,7 @@ from gramps.gen.utils.id import create_id, create_uid from gramps.webapp.grampsdb.profile import Profile from gramps.gen.constfunc import cuni -import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import base64 #--------------------------------------------------------------------------- diff --git a/gramps/webapp/grampsdb/view/png.py b/gramps/webapp/grampsdb/view/png.py index 9cdc3f6be..b09e8c691 100644 --- a/gramps/webapp/grampsdb/view/png.py +++ b/gramps/webapp/grampsdb/view/png.py @@ -1897,12 +1897,8 @@ class Reader: arraycode = 'BH'[self.bitdepth>8] # Like :meth:`group` but producing an array.array object for # each row. - if sys.version_info[0] < 3: - pixels = itertools.imap(lambda *row: array(arraycode, row), - *[iter(self.deinterlace(raw))]*self.width*self.planes) - else: - pixels = map(lambda *row: array(arraycode, row), - *[iter(self.deinterlace(raw))]*self.width*self.planes) + pixels = map(lambda *row: array(arraycode, row), + *[iter(self.deinterlace(raw))]*self.width*self.planes) else: pixels = self.iterboxed(self.iterstraight(raw)) meta = dict() diff --git a/gramps/webapp/grampsdb/views.py b/gramps/webapp/grampsdb/views.py index 5bb06bce6..bfc5b943e 100644 --- a/gramps/webapp/grampsdb/views.py +++ b/gramps/webapp/grampsdb/views.py @@ -29,12 +29,8 @@ Each object can be operated on with the following actions: """ import os -import sys import time -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import base64 #------------------------------------------------------------------------ diff --git a/gramps/webapp/libdjango.py b/gramps/webapp/libdjango.py index 9d79853ed..7d28b8935 100644 --- a/gramps/webapp/libdjango.py +++ b/gramps/webapp/libdjango.py @@ -26,10 +26,7 @@ #------------------------------------------------------------------------ import time import sys -if sys.version_info[0] < 3: - import cPickle as pickle -else: - import pickle +import pickle import base64 import collections diff --git a/gramps/webapp/reports.py b/gramps/webapp/reports.py index fbf535163..c0c7f480e 100644 --- a/gramps/webapp/reports.py +++ b/gramps/webapp/reports.py @@ -28,7 +28,6 @@ from gramps.gen.plug import BasePluginManager from gramps.cli.user import User as GUser # gramps user import os -import sys # Example for running a report: # ------------------------------ @@ -93,12 +92,8 @@ def import_file(db, filename, user): return False def download(url, filename=None): - if sys.version_info[0] < 3: - from urllib2 import urlopen, Request - from urlparse import urlsplit - else: - from urllib.request import Request, urlopen - from urllib.parse import urlsplit + from urllib.request import Request, urlopen + from urllib.parse import urlsplit import shutil def getFilename(url,openUrl): if 'Content-Disposition' in openUrl.info(): diff --git a/gramps/webapp/utils.py b/gramps/webapp/utils.py index 1972fca79..c3cd4f5e2 100644 --- a/gramps/webapp/utils.py +++ b/gramps/webapp/utils.py @@ -27,10 +27,7 @@ import sys import re import datetime -if sys.version_info[0] < 3: - from HTMLParser import HTMLParser -else: - from html.parser import HTMLParser +from html.parser import HTMLParser #------------------------------------------------------------------------ #