Skip to content

Commit

Permalink
Add disallowed versions data to blacklist PySide6 6.8.0 and 6.8.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
StSav012 committed Oct 18, 2024
1 parent 3eb49eb commit b0a5574
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 12 deletions.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[build-system]
requires = ['setuptools>=45', 'setuptools_scm[toml]>=6.2']
requires = ['setuptools>=45', 'packaging>=20', 'setuptools_scm[toml]>=6.2']
build-backend = 'setuptools.build_meta'

[project]
Expand Down
4 changes: 3 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ orjson
qtawesome

# to build a package and install it
setuptools
setuptools>=45
packaging>=20
setuptools_scm[toml]>=6.2
26 changes: 16 additions & 10 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,33 @@ def required_packages() -> list[str]:
raise SystemError("Python versions prior to 3.8 are not supported")

import platform
from typing import NamedTuple, Sequence
from typing import Collection, NamedTuple, Sequence

from pkg_resources import parse_version
from packaging.version import Version

class PackageRequirement(NamedTuple):
package_name: str
min_version: str = ""
blacklisted_versions: Collection[str] = ()

def __str__(self) -> str:
if self.min_version:
return self.package_name + " >= " + self.min_version
return self.package_name + ", ".join(
[" >= " + self.min_version] + [("!= " + blv) for blv in self.blacklisted_versions]
)
return self.package_name

def is_package_importable(package_requirement: PackageRequirement) -> bool:
from importlib.metadata import version, PackageNotFoundError

try:
version(package_requirement.package_name)
actual_package_version: Version = Version(version(package_requirement.package_name))
except PackageNotFoundError:
return False
else:
if package_requirement.min_version and (
parse_version(version(package_requirement.package_name))
< parse_version(package_requirement.min_version)
):
if package_requirement.min_version and (actual_package_version < Version(package_requirement.min_version)):
return False
if actual_package_version in package_requirement.blacklisted_versions:
return False
return True

Expand Down Expand Up @@ -70,7 +72,7 @@ def required_package(package_requirement: PackageRequirement | Sequence[PackageR
if (
# Windows 10 21H2 or later required
uname.system == "Windows"
and parse_version(uname.version) < parse_version("10.0.19044")
and Version(uname.version) < Version("10.0.19044")
) or uname.machine not in ("x86_64", "AMD64"):
# Qt6 does not support the OSes
qt_list = [
Expand All @@ -79,7 +81,11 @@ def required_package(package_requirement: PackageRequirement | Sequence[PackageR
]
else:
qt_list = [
PackageRequirement(package_name="PySide6-Essentials", min_version="6.2.0"),
PackageRequirement(
package_name="PySide6-Essentials",
min_version="6.2.0",
blacklisted_versions=("6.8.0", "6.8.0.1"),
),
PackageRequirement(package_name="PyQt6", min_version="6.2.0"),
PackageRequirement(package_name="PyQt5", min_version="5.15.0"),
PackageRequirement(package_name="PySide2", min_version="5.15.0"),
Expand Down

0 comments on commit b0a5574

Please sign in to comment.