6060import sys
6161import warnings
6262
63- from packaging .version import parse
64-
6563# Version of QtPy
6664__version__ = "2.5.0.dev0"
6765
@@ -185,6 +183,20 @@ def __init__(self, *, missing_package=None, **superclass_kwargs):
185183PYSIDE_VERSION = None
186184QT_VERSION = None
187185
186+
187+ def _parse_int (value ):
188+ """Convert a value into an integer"""
189+ try :
190+ return int (value )
191+ except ValueError :
192+ return 0
193+
194+
195+ def _parse_version (version ):
196+ """Parse a version string into a tuple of ints"""
197+ return tuple (_parse_int (x ) for x in version .split ("." ))
198+
199+
188200# Unless `FORCE_QT_API` is set, use previously imported Qt Python bindings
189201if not os .environ .get ("FORCE_QT_API" ):
190202 if "PyQt5" in sys .modules :
@@ -208,16 +220,20 @@ def __init__(self, *, missing_package=None, **superclass_kwargs):
208220 QT5 = PYQT5 = True
209221
210222 if sys .platform == "darwin" :
211- macos_version = parse (platform .mac_ver ()[0 ])
212- qt_ver = parse (QT_VERSION )
213- if macos_version < parse ("10.10" ) and qt_ver >= parse ("5.9" ):
223+ macos_version = _parse_version (platform .mac_ver ()[0 ])
224+ qt_ver = _parse_version (QT_VERSION )
225+ if macos_version < _parse_version (
226+ "10.10"
227+ ) and qt_ver >= _parse_version ("5.9" ):
214228 raise PythonQtError (
215229 "Qt 5.9 or higher only works in "
216230 "macOS 10.10 or higher. Your "
217231 "program will fail in this "
218232 "system." ,
219233 )
220- elif macos_version < parse ("10.11" ) and qt_ver >= parse ("5.11" ):
234+ elif macos_version < _parse_version (
235+ "10.11"
236+ ) and qt_ver >= _parse_version ("5.11" ):
221237 raise PythonQtError (
222238 "Qt 5.11 or higher only works in "
223239 "macOS 10.11 or higher. Your "
@@ -241,9 +257,11 @@ def __init__(self, *, missing_package=None, **superclass_kwargs):
241257 QT5 = PYSIDE2 = True
242258
243259 if sys .platform == "darwin" :
244- macos_version = parse (platform .mac_ver ()[0 ])
245- qt_ver = parse (QT_VERSION )
246- if macos_version < parse ("10.11" ) and qt_ver >= parse ("5.11" ):
260+ macos_version = _parse_version (platform .mac_ver ()[0 ])
261+ qt_ver = _parse_version (QT_VERSION )
262+ if macos_version < _parse_version (
263+ "10.11"
264+ ) and qt_ver >= _parse_version ("5.11" ):
247265 raise PythonQtError (
248266 "Qt 5.11 or higher only works in "
249267 "macOS 10.11 or higher. Your "
@@ -327,18 +345,28 @@ def _warn_old_minor_version(name, old_version, min_version):
327345
328346# Warn if using an End of Life or unsupported Qt API/binding minor version
329347if QT_VERSION :
330- if QT5 and (parse (QT_VERSION ) < parse (QT5_VERSION_MIN )):
348+ if QT5 and (_parse_version (QT_VERSION ) < _parse_version (QT5_VERSION_MIN )):
331349 _warn_old_minor_version ("Qt5" , QT_VERSION , QT5_VERSION_MIN )
332- elif QT6 and (parse (QT_VERSION ) < parse (QT6_VERSION_MIN )):
350+ elif QT6 and (
351+ _parse_version (QT_VERSION ) < _parse_version (QT6_VERSION_MIN )
352+ ):
333353 _warn_old_minor_version ("Qt6" , QT_VERSION , QT6_VERSION_MIN )
334354
335355if PYQT_VERSION :
336- if PYQT5 and (parse (PYQT_VERSION ) < parse (PYQT5_VERSION_MIN )):
356+ if PYQT5 and (
357+ _parse_version (PYQT_VERSION ) < _parse_version (PYQT5_VERSION_MIN )
358+ ):
337359 _warn_old_minor_version ("PyQt5" , PYQT_VERSION , PYQT5_VERSION_MIN )
338- elif PYQT6 and (parse (PYQT_VERSION ) < parse (PYQT6_VERSION_MIN )):
360+ elif PYQT6 and (
361+ _parse_version (PYQT_VERSION ) < _parse_version (PYQT6_VERSION_MIN )
362+ ):
339363 _warn_old_minor_version ("PyQt6" , PYQT_VERSION , PYQT6_VERSION_MIN )
340364elif PYSIDE_VERSION :
341- if PYSIDE2 and (parse (PYSIDE_VERSION ) < parse (PYSIDE2_VERSION_MIN )):
365+ if PYSIDE2 and (
366+ _parse_version (PYSIDE_VERSION ) < _parse_version (PYSIDE2_VERSION_MIN )
367+ ):
342368 _warn_old_minor_version ("PySide2" , PYSIDE_VERSION , PYSIDE2_VERSION_MIN )
343- elif PYSIDE6 and (parse (PYSIDE_VERSION ) < parse (PYSIDE6_VERSION_MIN )):
369+ elif PYSIDE6 and (
370+ _parse_version (PYSIDE_VERSION ) < _parse_version (PYSIDE6_VERSION_MIN )
371+ ):
344372 _warn_old_minor_version ("PySide6" , PYSIDE_VERSION , PYSIDE6_VERSION_MIN )
0 commit comments