From 53e0ee379ea1ab02d5fd03101db2a3e95682fa26 Mon Sep 17 00:00:00 2001 From: JackDandy Date: Sat, 8 Sep 2018 17:50:30 +0100 Subject: [PATCH] Change if old scandir binary module is installed, inform user to upgrade it. --- CHANGES.md | 2 ++ HACKS.txt | 1 + gui/slick/interfaces/default/inc_top.tmpl | 5 +++++ lib/scandir/scandir.py | 9 ++++----- sickbeard/__init__.py | 20 +++++++++++++++++++- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 932612e5..6ea69be9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,7 +8,9 @@ * Update profilehooks module 1.10.0 (0ce1e29) to 1.10.1 (fdbf19d) * Update PySocks 1.6.8 (524ceb4) to 1.6.8 (b687a34) * Update Requests library 2.15.1 (282b01a) to 2.19.1 (33b41c7) +* Update scandir module 1.6 (c3592ee) to 1.9.0 (9ab3d1f) * Add urllib3 release 1.23 (7c216f4) +* Change if old scandir binary module is installed, fallback to slow Python module and inform user to upgrade binary [develop changelog] diff --git a/HACKS.txt b/HACKS.txt index c8727b41..0dd835eb 100644 --- a/HACKS.txt +++ b/HACKS.txt @@ -10,6 +10,7 @@ Libs with customisations... /lib/hachoir_parser/guess.py /lib/hachoir_parser/misc/torrent.py /lib/lockfile/mkdirlockfile.py +/lib/scandir/scandir.py /lib/tmdb_api/tmdb_api.py /lib/tornado /lib/tvdb_api/tvdb_api.py diff --git a/gui/slick/interfaces/default/inc_top.tmpl b/gui/slick/interfaces/default/inc_top.tmpl index 5928bafa..a6695957 100644 --- a/gui/slick/interfaces/default/inc_top.tmpl +++ b/gui/slick/interfaces/default/inc_top.tmpl @@ -265,6 +265,11 @@ $sg_str('NEWEST_VERSION_STRING') #end if +#if $sg_str('MODULE_UPDATE_STRING') + +#end if ## #set $items = [] #try diff --git a/lib/scandir/scandir.py b/lib/scandir/scandir.py index 73d6fbf5..a01379ad 100644 --- a/lib/scandir/scandir.py +++ b/lib/scandir/scandir.py @@ -35,15 +35,14 @@ try: except ImportError: ctypes = None -if not getattr(_scandir, 'DirEntry', None): + +if None is not _scandir and None is not ctypes and not getattr(_scandir, 'DirEntry', None): import warnings - warnings.warn("scandir compiled _scandir C module is too old" - ", using slow generic fallback") + warnings.warn("scandir compiled _scandir C module is too old, using slow generic fallback") _scandir = None elif _scandir is None and ctypes is None: import warnings - warnings.warn("scandir can't find the compiled _scandir C module " - "or ctypes, using slow generic fallback") + warnings.warn("scandir can't find the compiled _scandir C module or ctypes, using slow generic fallback") __version__ = '1.9.0' __all__ = ['scandir', 'walk'] diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index 8f88cb35..08622f4b 100755 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -108,6 +108,7 @@ newznabProviderList = [] torrentRssProviderList = [] metadata_provider_dict = {} +MODULE_UPDATE_STRING = None NEWEST_VERSION_STRING = None VERSION_NOTIFY = False AUTO_UPDATE = False @@ -572,7 +573,7 @@ def initialize(console_logging=True): global __INITIALIZED__, showList, providerList, newznabProviderList, torrentRssProviderList, \ WEB_HOST, WEB_ROOT, ACTUAL_CACHE_DIR, CACHE_DIR, ZONEINFO_DIR, ADD_SHOWS_WO_DIR, CREATE_MISSING_SHOW_DIRS, \ RECENTSEARCH_STARTUP, NAMING_FORCE_FOLDERS, SOCKET_TIMEOUT, DEBUG, INDEXER_DEFAULT, CONFIG_FILE, \ - REMOVE_FILENAME_CHARS, IMPORT_DEFAULT_CHECKED_SHOWS, WANTEDLIST_CACHE + REMOVE_FILENAME_CHARS, IMPORT_DEFAULT_CHECKED_SHOWS, WANTEDLIST_CACHE, MODULE_UPDATE_STRING # Schedulers # global traktCheckerScheduler global recentSearchScheduler, backlogSearchScheduler, showUpdateScheduler, \ @@ -1460,6 +1461,23 @@ def initialize(console_logging=True): run_delay=datetime.timedelta(minutes=5), threadName='PLEXWATCHEDSTATE') + try: + import _scandir + except ImportError: + _scandir = None + + try: + import ctypes + except ImportError: + ctypes = None + + if None is not _scandir and None is not ctypes and not getattr(_scandir, 'DirEntry', None): + MODULE_UPDATE_STRING = \ + 'Your scandir binary module is outdated, using the slow but newer Python module.' \ + '
Upgrade the binary at a command prompt with' \ + ' # python -m pip install -U scandir' \ + '
Important: You must Shutdown SickGear before upgrading' + __INITIALIZED__ = True return True