Setup LSP and clear all lint

This commit is contained in:
Christopher T. Johnson
2024-03-11 17:06:25 -04:00
parent 4ef4fc7d07
commit 7f01c8d040
8 changed files with 55 additions and 100 deletions

View File

@@ -1,3 +1,4 @@
from .utils import query_error
from .books import Book from .books import Book
from .person import PersonDialog from .person import PersonDialog
from .read import ReadDialog from .read import ReadDialog

View File

@@ -1,12 +1,11 @@
import json
import os
import xml.dom.minidom import xml.dom.minidom
from typing import Dict, List, cast from typing import Dict, List, cast
from PyQt6.QtCore import QCoreApplication from PyQt6.QtCore import QCoreApplication
from PyQt6.QtSql import QSqlQuery from PyQt6.QtSql import QSqlQuery
from main import query_error from lib import query_error
class Book: class Book:
@@ -130,7 +129,6 @@ class Book:
query.bindValue(":content", section) query.bindValue(":content", section)
if not query.exec(): if not query.exec():
query_error(query) query_error(query)
section_id = query.lastInsertId()
return book_id return book_id
def parse_section(self, src: str, href: str) -> None: def parse_section(self, src: str, href: str) -> None:

View File

@@ -2,7 +2,7 @@ import json
import os import os
import secrets import secrets
import smtplib import smtplib
from datetime import datetime, timedelta from datetime import datetime
from email import policy from email import policy
from email.message import EmailMessage from email.message import EmailMessage
from html.parser import HTMLParser from html.parser import HTMLParser
@@ -10,13 +10,12 @@ from io import StringIO
from typing import Any, List from typing import Any, List
import css_inline import css_inline
from PyQt6.QtCore import QResource, QSize, Qt, QUrl, pyqtSlot from lib import query_error
from PyQt6.QtCore import QResource, Qt, QUrl, pyqtSlot
from PyQt6.QtGui import QStandardItem, QStandardItemModel from PyQt6.QtGui import QStandardItem, QStandardItemModel
from PyQt6.QtMultimedia import QMediaDevices, QSoundEffect from PyQt6.QtMultimedia import QMediaDevices, QSoundEffect
from PyQt6.QtSql import QSqlQuery, QSqlQueryModel from PyQt6.QtSql import QSqlQuery, QSqlQueryModel
from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QStyledItemDelegate from PyQt6.QtWidgets import QDialog, QDialogButtonBox
from main import query_error
from ui.PersonDialog import Ui_PersonDialog from ui.PersonDialog import Ui_PersonDialog
@@ -51,7 +50,7 @@ class blockHandler(HTMLParser):
return return
def handle_starttag(self, tag: str, attrs: Any) -> None: def handle_starttag(self, tag: str, attrs: Any) -> None:
if not tag in self.tags: if tag not in self.tags:
return return
self.active += 1 self.active += 1
if tag in self.space: if tag in self.space:
@@ -60,7 +59,7 @@ class blockHandler(HTMLParser):
return return
def handle_endtag(self, tag: str) -> None: def handle_endtag(self, tag: str) -> None:
if not tag in self.tags: if tag not in self.tags:
return return
self.active -= 1 self.active -= 1
self.text += f"</{tag}>" self.text += f"</{tag}>"
@@ -457,7 +456,6 @@ class PersonDialog(QDialog, Ui_PersonDialog):
query.bindValue(":session_id", session_id) query.bindValue(":session_id", session_id)
if not query.exec(): if not query.exec():
query_error(query) query_error(query)
first = True
if not query.next(): if not query.next():
return "" return ""
html += "<h3>" + self.tr("Notes") + "</h3>\n" html += "<h3>" + self.tr("Notes") + "</h3>\n"

View File

@@ -1,42 +1,18 @@
import json import json
import re
from typing import Any, Dict, List, Optional, cast from typing import Any, Dict, List, Optional, cast
import requests import requests
from PyQt6.QtCore import ( from lib import query_error
QFile, from PyQt6.QtCore import QPoint, QResource, Qt, QTimer, pyqtSignal, pyqtSlot
QIODeviceBase, from PyQt6.QtGui import (QBrush, QColor, QKeyEvent, QPainter, QPainterPath,
QPoint, QPaintEvent, QTextCharFormat, QTextCursor)
QRect, from PyQt6.QtSql import QSqlQuery
QResource, from PyQt6.QtWidgets import QDialog, QTextEdit, QWidget
Qt, from ui.ReadDialog import Ui_ReadDialog
QTimer,
QUrl,
pyqtSignal,
pyqtSlot,
)
from PyQt6.QtGui import (
QBrush,
QColor,
QKeyEvent,
QMouseEvent,
QPainter,
QPainterPath,
QPaintEvent,
QTextBlockFormat,
QTextCharFormat,
QTextCursor,
QTextDocument,
QTextListFormat,
)
from PyQt6.QtSql import QSqlDatabase, QSqlQuery, QSqlQueryModel
from PyQt6.QtWidgets import QDialog, QPushButton, QTextEdit, QWidget
from lib.preferences import Preferences from lib.preferences import Preferences
from lib.session import SessionDialog from lib.session import SessionDialog
from lib.sounds import SoundOff from lib.sounds import SoundOff
from main import query_error
from ui.ReadDialog import Ui_ReadDialog
class ReadDialog(QDialog, Ui_ReadDialog): class ReadDialog(QDialog, Ui_ReadDialog):
@@ -630,7 +606,6 @@ class ReadDialog(QDialog, Ui_ReadDialog):
def scrollTo(self, position: int) -> None: def scrollTo(self, position: int) -> None:
cursor = self.paraEdit.textCursor() cursor = self.paraEdit.textCursor()
cursor.setPosition(position) cursor.setPosition(position)
rect = self.paraEdit.cursorRect(cursor)
return return
def savePosition(self) -> None: def savePosition(self) -> None:

View File

@@ -1,20 +1,12 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from typing import Optional, cast from typing import cast
from PyQt6.QtCore import QModelIndex, Qt, QTime, QTimer, pyqtSignal, pyqtSlot from lib import query_error
from PyQt6.QtGui import ( from PyQt6.QtCore import QModelIndex, Qt, QTimer, pyqtSlot
QBrush, from PyQt6.QtGui import (QStandardItem, QStandardItemModel, QTextBlockFormat,
QPalette, QTextCursor, QTextDocument)
QStandardItem,
QStandardItemModel,
QTextBlockFormat,
QTextCursor,
QTextDocument,
)
from PyQt6.QtSql import QSqlQuery from PyQt6.QtSql import QSqlQuery
from PyQt6.QtWidgets import QCheckBox, QDialog, QListView, QMessageBox from PyQt6.QtWidgets import QDialog, QMessageBox
from main import query_error
from ui.SessionDialog import Ui_SessionDialog from ui.SessionDialog import Ui_SessionDialog

21
lib/utils.py Normal file
View File

@@ -0,0 +1,21 @@
"""Utility Functions."""
from typing import NoReturn
from PyQt6.QtCore import QCoreApplication
from PyQt6.QtSql import QSqlQuery
translate = QCoreApplication.translate
def query_error(query: QSqlQuery) -> NoReturn:
"""Standarized query error reporter."""
print(
translate("MainWindow", "SQL Error:\n")
+ "{}\n{}\n{}:{}".format(
query.executedQuery(),
query.boundValues(),
query.lastError().type(),
query.lastError().text(),
)
)
raise Exception(translate("MainWindow", "SQL Error"))

49
main.py
View File

@@ -9,56 +9,22 @@
import os import os
import re import re
import sys import sys
from datetime import datetime, timedelta
from typing import Optional from typing import Optional
from PyQt6.QtCore import ( from PyQt6.QtCore import (QCoreApplication, QEvent, QModelIndex, QResource,
QCoreApplication, pyqtSignal, pyqtSlot)
QEvent,
QModelIndex,
QResource,
Qt,
QTimer,
pyqtSignal,
pyqtSlot,
)
from PyQt6.QtGui import (
QAction,
QFont,
QTextCharFormat,
QTextCursor,
QTextDocument,
QTextListFormat,
)
from PyQt6.QtSql import QSqlDatabase, QSqlQuery, QSqlQueryModel from PyQt6.QtSql import QSqlDatabase, QSqlQuery, QSqlQueryModel
from PyQt6.QtWidgets import ( from PyQt6.QtWidgets import QApplication, QFileDialog, QMainWindow
QApplication,
QFileDialog,
QMainWindow,
QMessageBox,
QPushButton,
)
from lib import *
from lib.preferences import Preferences from lib.preferences import Preferences
from lib import PersonDialog, Book, SessionDialog, ReadDialog, query_error
from ui.MainWindow import Ui_MainWindow from ui.MainWindow import Ui_MainWindow
translate = QCoreApplication.translate translate = QCoreApplication.translate
def query_error(query: QSqlQuery) -> None:
print(
translate("MainWindow", "SQL Error:\n")
+ "{}\n{}\n{}:{}".format(
query.executedQuery(),
query.boundValues(),
query.lastError().type(),
query.lastError().text(),
)
)
raise Exception(translate("MainWindow", "SQL Error"))
class MainWindow(QMainWindow, Ui_MainWindow): class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self) -> None: def __init__(self) -> None:
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
@@ -97,7 +63,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
@pyqtSlot(QModelIndex) @pyqtSlot(QModelIndex)
def selectedPerson(self, index: QModelIndex) -> None: def selectedPerson(self, index: QModelIndex) -> None:
person_id = index.siblingAtColumn(0).data()
self.actionEditPerson.setEnabled(True) self.actionEditPerson.setEnabled(True)
book_id = index.siblingAtColumn(3).data() book_id = index.siblingAtColumn(3).data()
if not book_id or book_id < 0: if not book_id or book_id < 0:
@@ -324,7 +289,7 @@ def main() -> int:
) )
schema_update(db) schema_update(db)
Preferences() Preferences()
window: QMainWindow = MainWindow() window = MainWindow() # noqa: F841
return app.exec() return app.exec()

5
setup.cfg Normal file
View File

@@ -0,0 +1,5 @@
[pydocstyle]
ignore = D100,D101,D102,D103,D107
[flake8]
ignore = E501,W503