--- a/eric7/WebBrowser/QtHelp/HelpDocsInstaller.py Thu Jun 16 18:28:59 2022 +0200 +++ b/eric7/WebBrowser/QtHelp/HelpDocsInstaller.py Fri Jun 17 16:36:14 2022 +0200 @@ -8,11 +8,10 @@ documentation database. """ -import os +import datetime +import pathlib -from PyQt6.QtCore import ( - pyqtSignal, QThread, Qt, QMutex, QDateTime, QDir, QLibraryInfo, QFileInfo -) +from PyQt6.QtCore import pyqtSignal, QThread, QMutex, QLibraryInfo from PyQt6.QtHelp import QHelpEngineCore from eric7config import getConfig @@ -125,70 +124,65 @@ info = engine.customValue(versionKey, "") lst = info.split('|') - dt = QDateTime() + dt = None if len(lst) and lst[0]: - dt = QDateTime.fromString(lst[0], Qt.DateFormat.ISODate) + dt = datetime.datetime.fromisoformat(lst[0]) qchFile = "" if len(lst) == 2: qchFile = lst[1] if version == 5: - docsPath = QLibraryInfo.path( - QLibraryInfo.LibraryPath.DocumentationPath) + docsPath = pathlib.Path(QLibraryInfo.path( + QLibraryInfo.LibraryPath.DocumentationPath)) if ( - not os.path.isdir(docsPath) or - len(QDir(docsPath).entryList(["*.qch"])) == 0 + not docsPath.is_dir() or + len(docsPath.glob("*.qch")) == 0 ): - docsPathList = QDir.fromNativeSeparators(docsPath).split("/") - docsPath = os.sep.join( - docsPathList[:-3] + - ["Docs", "Qt-{0}.{1}".format(*qVersionTuple())]) - docsPath = QDir(docsPath) + docsPath = ( + docsPath.parents[2] / "Docs" / + "Qt-{0}.{1}".format(*qVersionTuple()) + ) else: # unsupported Qt version return False - files = docsPath.entryList(["*.qch"]) + files = docsPath.glob("*.qch") if not files: - engine.setCustomValue( - versionKey, - QDateTime().toString(Qt.DateFormat.ISODate) + '|') + engine.setCustomValue(versionKey, '|') return False for f in files: - if f.startswith(name + "."): - fi = QFileInfo(docsPath.absolutePath() + QDir.separator() + f) - namespace = QHelpEngineCore.namespaceName( - fi.absoluteFilePath()) + if f.stem == name: + namespace = QHelpEngineCore.namespaceName(str(f.resolve())) if not namespace: continue if ( - dt.isValid() and + dt is not None and namespace in engine.registeredDocumentations() and - (fi.lastModified().toString(Qt.DateFormat.ISODate) == - dt.toString(Qt.DateFormat.ISODate)) and - qchFile == fi.absoluteFilePath() + (datetime.datetime.fromtimestamp(f.stat().st_mtime) == + dt) and + qchFile == str(f.resolve()) ): return False if namespace in engine.registeredDocumentations(): engine.unregisterDocumentation(namespace) - if not engine.registerDocumentation(fi.absoluteFilePath()): + if not engine.registerDocumentation(str(f.resolve())): self.errorMessage.emit( self.tr( """<p>The file <b>{0}</b> could not be""" """ registered. <br/>Reason: {1}</p>""") - .format(fi.absoluteFilePath, engine.error()) + .format(f, engine.error()) ) return False engine.setCustomValue( versionKey, - fi.lastModified().toString(Qt.DateFormat.ISODate) + '|' + - fi.absoluteFilePath()) + datetime.datetime.fromtimestamp(f.stat().st_mtime) + .isoformat() + '|' + str(f.resolve())) return True return False @@ -206,55 +200,52 @@ info = engine.customValue(versionKey, "") lst = info.split('|') - dt = QDateTime() + dt = None if len(lst) and lst[0]: - dt = QDateTime.fromString(lst[0], Qt.DateFormat.ISODate) + dt = datetime.datetime.fromisoformat(lst[0]) qchFile = "" if len(lst) == 2: qchFile = lst[1] - docsPath = QDir(getConfig("ericDocDir") + QDir.separator() + "Help") + docsPath = pathlib.Path(getConfig("ericDocDir")) / "Help" - files = docsPath.entryList(["*.qch"]) + files = docsPath.glob("*.qch") if not files: - engine.setCustomValue( - versionKey, QDateTime().toString(Qt.DateFormat.ISODate) + '|') + engine.setCustomValue(versionKey, '|') return False for f in files: - if f == "source.qch": - fi = QFileInfo(docsPath.absolutePath() + QDir.separator() + f) - namespace = QHelpEngineCore.namespaceName( - fi.absoluteFilePath()) + if f.name == "source.qch": + namespace = QHelpEngineCore.namespaceName(str(f.resolve())) if not namespace: continue if ( - dt.isValid() and + dt is not None and namespace in engine.registeredDocumentations() and - (fi.lastModified().toString(Qt.DateFormat.ISODate) == - dt.toString(Qt.DateFormat.ISODate)) and - qchFile == fi.absoluteFilePath() + (datetime.datetime.fromtimestamp(f.stat().st_mtime) == + dt) and + qchFile == str(f.resolve()) ): return False if namespace in engine.registeredDocumentations(): engine.unregisterDocumentation(namespace) - if not engine.registerDocumentation(fi.absoluteFilePath()): + if not engine.registerDocumentation(str(f.resolve())): self.errorMessage.emit( self.tr( """<p>The file <b>{0}</b> could not be""" """ registered. <br/>Reason: {1}</p>""") - .format(fi.absoluteFilePath, engine.error()) + .format(f, engine.error()) ) return False engine.setCustomValue( versionKey, - fi.lastModified().toString(Qt.DateFormat.ISODate) + '|' + - fi.absoluteFilePath()) + datetime.datetime.fromtimestamp(f.stat().st_mtime) + .isoformat() + '|' + str(f.resolve())) return True return False