Remove references and checks for lxml
This commit is contained in:
@@ -40,7 +40,6 @@ The following libraries are dependencies of novelWriter:
|
|||||||
|
|
||||||
* [Qt5](https://www.qt.io) by Qt Company
|
* [Qt5](https://www.qt.io) by Qt Company
|
||||||
* [PyQt5](https://www.riverbankcomputing.com/software/pyqt) by Riverbank Computing
|
* [PyQt5](https://www.riverbankcomputing.com/software/pyqt) by Riverbank Computing
|
||||||
* [lxml](https://lxml.de) by Martijn Faassen
|
|
||||||
* [Enchant](https://abiword.github.io/enchant) by Dom Lachowicz
|
* [Enchant](https://abiword.github.io/enchant) by Dom Lachowicz
|
||||||
* [PyEnchant](https://pyenchant.github.io/pyenchant) by Dimitri Merejkowsky
|
* [PyEnchant](https://pyenchant.github.io/pyenchant) by Dimitri Merejkowsky
|
||||||
|
|
||||||
|
|||||||
@@ -46,13 +46,10 @@ format of the main project file. Everything else is handled with standard Python
|
|||||||
The following Python packages are needed to run novelWriter:
|
The following Python packages are needed to run novelWriter:
|
||||||
|
|
||||||
* ``PyQt5`` – needed for connecting with the Qt5 libraries.
|
* ``PyQt5`` – needed for connecting with the Qt5 libraries.
|
||||||
* ``lxml`` – needed for full XML support.
|
|
||||||
* ``PyEnchant`` – needed for spell checking (optional).
|
* ``PyEnchant`` – needed for spell checking (optional).
|
||||||
|
|
||||||
PyQt/Qt should be at least 5.10, but ideally 5.13 or higher for all features to work. For instance,
|
PyQt/Qt should be at least 5.10, but ideally 5.13 or higher for all features to work. For instance,
|
||||||
searching using regular expressions with full Unicode support requires 5.13. There is no known
|
searching using regular expressions with full Unicode support requires 5.13.
|
||||||
minimum version requirement for package ``lxml``, but the code was originally written with 4.2,
|
|
||||||
which is therefore set as the minimum. It may work on lower versions. You have to test it.
|
|
||||||
|
|
||||||
If you want spell checking, you must install the ``PyEnchant`` package. The spell check library
|
If you want spell checking, you must install the ``PyEnchant`` package. The spell check library
|
||||||
must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
|
must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
|
||||||
|
|||||||
@@ -185,12 +185,6 @@ def main(sysArgs=None):
|
|||||||
)
|
)
|
||||||
errorCode |= 0x10
|
errorCode |= 0x10
|
||||||
|
|
||||||
try:
|
|
||||||
import lxml # noqa: F401
|
|
||||||
except ImportError:
|
|
||||||
errorData.append("Python module 'lxml' is missing")
|
|
||||||
errorCode |= 0x20
|
|
||||||
|
|
||||||
if errorData:
|
if errorData:
|
||||||
errApp = QApplication([])
|
errApp = QApplication([])
|
||||||
errDlg = QErrorMessage()
|
errDlg = QErrorMessage()
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ more contributions are listed on the project's <a href="https://crowdin.com/proj
|
|||||||
<p>
|
<p>
|
||||||
<a href="https://www.qt.io">Qt5</a> by Qt Company<br>
|
<a href="https://www.qt.io">Qt5</a> by Qt Company<br>
|
||||||
<a href="https://www.riverbankcomputing.com/software/pyqt">PyQt5</a> by Riverbank Computing<br>
|
<a href="https://www.riverbankcomputing.com/software/pyqt">PyQt5</a> by Riverbank Computing<br>
|
||||||
<a href="https://lxml.de">lxml</a> by Martijn Faassen<br>
|
|
||||||
<a href="https://abiword.github.io/enchant">Enchant</a> by Dom Lachowicz<br>
|
<a href="https://abiword.github.io/enchant">Enchant</a> by Dom Lachowicz<br>
|
||||||
<a href="https://pyenchant.github.io/pyenchant">PyEnchant</a> by Dimitri Merejkowsky
|
<a href="https://pyenchant.github.io/pyenchant">PyEnchant</a> by Dimitri Merejkowsky
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -597,7 +597,7 @@ class ToOdt(Tokenizer):
|
|||||||
xElem = ET.SubElement(self._xText, _mkTag("text", pTag), attrib=tAttr)
|
xElem = ET.SubElement(self._xText, _mkTag("text", pTag), attrib=tAttr)
|
||||||
|
|
||||||
# It's important to set the initial text field to empty, otherwise
|
# It's important to set the initial text field to empty, otherwise
|
||||||
# lxml will add a line break if the first subelement is a span.
|
# xmlIndent will add a line break if the first subelement is a span.
|
||||||
xElem.text = ""
|
xElem.text = ""
|
||||||
|
|
||||||
if not theText:
|
if not theText:
|
||||||
@@ -1315,8 +1315,6 @@ class XMLParagraph:
|
|||||||
"""This is a helper class to manage the text content of a single
|
"""This is a helper class to manage the text content of a single
|
||||||
XML element using mixed content tags.
|
XML element using mixed content tags.
|
||||||
|
|
||||||
See: https://lxml.de/tutorial.html#the-element-class
|
|
||||||
|
|
||||||
Rules:
|
Rules:
|
||||||
* The root tag can only have text set, never tail.
|
* The root tag can only have text set, never tail.
|
||||||
* Any span must be under root, and the text in the span is set in
|
* Any span must be under root, and the text in the span is set in
|
||||||
|
|||||||
@@ -128,12 +128,6 @@ class NWErrorMessage(QDialog):
|
|||||||
except Exception:
|
except Exception:
|
||||||
kernelVersion = "Unknown"
|
kernelVersion = "Unknown"
|
||||||
|
|
||||||
try:
|
|
||||||
import lxml
|
|
||||||
lxmlVersion = lxml.__version__ # type: ignore
|
|
||||||
except Exception:
|
|
||||||
lxmlVersion = "Unknown"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import enchant
|
import enchant
|
||||||
enchantVersion = enchant.__version__
|
enchantVersion = enchant.__version__
|
||||||
@@ -148,7 +142,6 @@ class NWErrorMessage(QDialog):
|
|||||||
f"Host OS: {sys.platform} ({kernelVersion})\n"
|
f"Host OS: {sys.platform} ({kernelVersion})\n"
|
||||||
f"Python: {sys.version.split()[0]} ({sys.hexversion:#x})\n"
|
f"Python: {sys.version.split()[0]} ({sys.hexversion:#x})\n"
|
||||||
f"Qt: {QT_VERSION_STR}, PyQt: {PYQT_VERSION_STR}\n"
|
f"Qt: {QT_VERSION_STR}, PyQt: {PYQT_VERSION_STR}\n"
|
||||||
f"lxml: {lxmlVersion}\n"
|
|
||||||
f"enchant: {enchantVersion}\n\n"
|
f"enchant: {enchantVersion}\n\n"
|
||||||
f"{exType.__name__}:\n{str(exValue)}\n\n"
|
f"{exType.__name__}:\n{str(exValue)}\n\n"
|
||||||
f"Traceback:\n{exTrace}\n"
|
f"Traceback:\n{exTrace}\n"
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ include_package_data = True
|
|||||||
packages = find_namespace:
|
packages = find_namespace:
|
||||||
install_requires =
|
install_requires =
|
||||||
pyqt5>=5.10
|
pyqt5>=5.10
|
||||||
lxml>=4.2.0
|
|
||||||
pyenchant>=3.0.0
|
pyenchant>=3.0.0
|
||||||
|
|
||||||
[options.packages.find]
|
[options.packages.find]
|
||||||
|
|||||||
@@ -2,14 +2,14 @@ Source: novelwriter
|
|||||||
Maintainer: Veronica Berglyd Olsen <code@vkbo.net>
|
Maintainer: Veronica Berglyd Olsen <code@vkbo.net>
|
||||||
Section: text
|
Section: text
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Build-Depends: dh-python, python3-setuptools, python3-all, debhelper (>= 9), python3 (>=3.7), python3-pyqt5 (>= 5.10), python3-lxml (>= 4.0), python3-enchant (>= 2.0)
|
Build-Depends: dh-python, python3-setuptools, python3-all, debhelper (>= 9), python3 (>=3.7), python3-pyqt5 (>= 5.10), python3-enchant (>= 2.0)
|
||||||
Standards-Version: 4.5.1
|
Standards-Version: 4.5.1
|
||||||
Homepage: https://novelwriter.io
|
Homepage: https://novelwriter.io
|
||||||
X-Python3-Version: >= 3.7
|
X-Python3-Version: >= 3.7
|
||||||
|
|
||||||
Package: novelwriter
|
Package: novelwriter
|
||||||
Architecture: all
|
Architecture: all
|
||||||
Depends: ${misc:Depends}, ${python3:Depends}, python3 (>=3.7), python3-pyqt5 (>= 5.10), python3-lxml (>= 4.0), python3-enchant (>= 2.0)
|
Depends: ${misc:Depends}, ${python3:Depends}, python3 (>=3.7), python3-pyqt5 (>= 5.10), python3-enchant (>= 2.0)
|
||||||
Description: A markdown-like text editor for planning and writing novels
|
Description: A markdown-like text editor for planning and writing novels
|
||||||
novelWriter is a plain text editor designed for writing novels assembled from
|
novelWriter is a plain text editor designed for writing novels assembled from
|
||||||
many smaller text documents. It uses a minimal formatting syntax inspired by
|
many smaller text documents. It uses a minimal formatting syntax inspired by
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ if exist setup.py (
|
|||||||
)
|
)
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
:: Install the PyQt5, lxml and pyenchant dependencies
|
:: Install the PyQt5 and pyenchant dependencies
|
||||||
pip install --user pywin32 -r requirements.txt
|
pip install --user pywin32 -r requirements.txt
|
||||||
|
|
||||||
:: Create the desktop and start menu icons
|
:: Create the desktop and start menu icons
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ goto afterUninst
|
|||||||
:: Remove the desktop and start menu icons
|
:: Remove the desktop and start menu icons
|
||||||
python setup.py win-uninstall
|
python setup.py win-uninstall
|
||||||
|
|
||||||
:: Remove the PyQt5, lxml and pyenchant dependencies
|
:: Remove the PyQt5 and pyenchant dependencies
|
||||||
pip uninstall --yes -r requirements.txt
|
pip uninstall --yes -r requirements.txt
|
||||||
|
|
||||||
:afterUninst
|
:afterUninst
|
||||||
|
|||||||
@@ -154,7 +154,6 @@ def testBaseInit_Imports(caplog, monkeypatch, fncPath):
|
|||||||
monkeypatch.setattr("PyQt5.QtWidgets.QErrorMessage.__init__", lambda *a: None)
|
monkeypatch.setattr("PyQt5.QtWidgets.QErrorMessage.__init__", lambda *a: None)
|
||||||
monkeypatch.setattr("PyQt5.QtWidgets.QErrorMessage.resize", lambda *a: None)
|
monkeypatch.setattr("PyQt5.QtWidgets.QErrorMessage.resize", lambda *a: None)
|
||||||
monkeypatch.setattr("PyQt5.QtWidgets.QErrorMessage.showMessage", lambda *a: None)
|
monkeypatch.setattr("PyQt5.QtWidgets.QErrorMessage.showMessage", lambda *a: None)
|
||||||
monkeypatch.setitem(sys.modules, "lxml", None)
|
|
||||||
monkeypatch.setattr("sys.hexversion", 0x0)
|
monkeypatch.setattr("sys.hexversion", 0x0)
|
||||||
monkeypatch.setattr("novelwriter.CONFIG.verQtValue", 0x050000)
|
monkeypatch.setattr("novelwriter.CONFIG.verQtValue", 0x050000)
|
||||||
monkeypatch.setattr("novelwriter.CONFIG.verPyQtValue", 0x050000)
|
monkeypatch.setattr("novelwriter.CONFIG.verPyQtValue", 0x050000)
|
||||||
@@ -167,11 +166,9 @@ def testBaseInit_Imports(caplog, monkeypatch, fncPath):
|
|||||||
assert ex.value.code & 4 == 4 # Python version not satisfied
|
assert ex.value.code & 4 == 4 # Python version not satisfied
|
||||||
assert ex.value.code & 8 == 8 # Qt version not satisfied
|
assert ex.value.code & 8 == 8 # Qt version not satisfied
|
||||||
assert ex.value.code & 16 == 16 # PyQt version not satisfied
|
assert ex.value.code & 16 == 16 # PyQt version not satisfied
|
||||||
assert ex.value.code & 32 == 32 # lxml package missing
|
|
||||||
|
|
||||||
assert "At least Python" in caplog.messages[0]
|
assert "At least Python" in caplog.messages[0]
|
||||||
assert "At least Qt5" in caplog.messages[1]
|
assert "At least Qt5" in caplog.messages[1]
|
||||||
assert "At least PyQt5" in caplog.messages[2]
|
assert "At least PyQt5" in caplog.messages[2]
|
||||||
assert "lxml" in caplog.messages[3]
|
|
||||||
|
|
||||||
# END Test testBaseInit_Imports
|
# END Test testBaseInit_Imports
|
||||||
|
|||||||
Reference in New Issue
Block a user