From 5ddaa3f4d97ac5a2817bc7abad650b358b616342 Mon Sep 17 00:00:00 2001 From: John Zhou Date: Mon, 24 Nov 2025 08:39:24 -0600 Subject: [PATCH 1/3] Initial Setup of Package --- .github/dependabot.yml | 25 +++ .github/workflows/ci.yaml | 117 +++++++++++++++ .github/workflows/pre-commit-update.yml | 15 ++ .github/workflows/publish.yml | 22 +++ .github/workflows/release.yml | 48 ++++++ .github/workflows/reusable_tests.yaml | 66 ++++++++ README.md | 6 +- pyproject.toml | 21 ++- setup.py | 20 +++ src/system_pyside6/__init__.py | 142 ++++++++++++++++++ system_pyside6.pth | 1 + testbed/.gitignore | 62 ++++++++ testbed/CHANGELOG | 5 + testbed/LICENSE | 1 + testbed/README.rst | 12 ++ testbed/pyproject.toml | 28 ++++ .../src/testbed/__init__.py | 0 testbed/src/testbed/__main__.py | 0 tests/test_system_pyside6.py | 49 ++++++ tests/testbed.py | 36 +++++ tox.ini | 12 ++ 21 files changed, 673 insertions(+), 15 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/pre-commit-update.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/reusable_tests.yaml create mode 100644 setup.py create mode 100644 src/system_pyside6/__init__.py create mode 100644 system_pyside6.pth create mode 100644 testbed/.gitignore create mode 100644 testbed/CHANGELOG create mode 100644 testbed/LICENSE create mode 100644 testbed/README.rst create mode 100644 testbed/pyproject.toml rename system_pyside6.py => testbed/src/testbed/__init__.py (100%) create mode 100644 testbed/src/testbed/__main__.py create mode 100644 tests/test_system_pyside6.py create mode 100644 tests/testbed.py create mode 100644 tox.ini diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..2e3d38a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,25 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + # Check for updates on Sunday, 8PM UTC + interval: "weekly" + day: "sunday" + time: "20:00" + + - package-ecosystem: "pip" + directory: "/" + schedule: + # Check for updates on Sunday, 8PM UTC + interval: "weekly" + day: "sunday" + time: "20:00" + + - package-ecosystem: "pip" + directory: "/testbed" + schedule: + # Check for updates on Sunday, 8PM UTC + interval: "weekly" + day: "sunday" + time: "20:00" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..cd9470a --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,117 @@ +name: CI + +on: + pull_request: + push: + branches: + main + workflow_call: + +concurrency: + group: ${{ github.workflow}}-${{ github.ref }} + cancel-in-progress: true + +jobs: + pre-commit: + name: Pre-commit checks + uses: beeware/.github/.github/workflows/pre-commit-run.yml@main + with: + pre-commit-source: "--group pre-commit" + + package: + name: Build Package + needs: [ pre-commit ] + runs-on: "ubuntu-latest" + permissions: + id-token: write + attestations: write + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Build and inspect package + uses: hynek/build-and-inspect-python-package@v2.14.0 + with: + attest-build-provenance-github: 'true' + + test: + name: Test (${{ matrix.distro }}) + needs: package + + strategy: + fail-fast: false + matrix: + include: + - distro: ubuntu:25.04 + install_cmd: | + apt update + apt-get install -y \ + git \ + python3-pip \ + python3-venv \ + tox \ + python3-pyside6.qtwidgets \ + kde-style-breeze \ + python3-torch \ + build-essential + + - distro: fedora:42 + install_cmd: | + dnf install -y \ + git \ + python3 \ + python3-pip \ + python3-wheel \ + python3-pyside6 \ + tox \ + plasma-breeze-qt6 \ + python3-torch \ + python3-devel \ + gcc \ + make \ + pkgconf-pkg-config + + # Technically an update after install + # is needed to not brick the system; + # however, this is a container, so do + # whatever we want to save time. + # dnf upgrade -y + + - distro: archlinux:base + install_cmd: | + pacman -Sy --noconfirm \ + git \ + python \ + python-virtualenv \ + python-pip \ + python-tox \ + breeze \ + pyside6 \ + python-pytorch \ + base-devel + + # Without this, we get an error on ICUi18n: + # https://www.reddit.com/r/archlinux/comments/1oz6paq/ + pacman -Syu --noconfirm + + - distro: opensuse/tumbleweed + install_cmd: | + zypper refresh + zypper --non-interactive install \ + git \ + python3 \ + python3-virtualenv \ + python3-pip \ + python3-tox \ + breeze \ + python3-pytorch \ + python3-pyside6 \ + patterns-devel-base-devel_basis \ + python3-devel + + uses: ./.github/workflows/reusable_tests.yaml + with: + distro: ${{ matrix.distro }} + install_cmd: ${{ matrix.install_cmd }} diff --git a/.github/workflows/pre-commit-update.yml b/.github/workflows/pre-commit-update.yml new file mode 100644 index 0000000..aba3b84 --- /dev/null +++ b/.github/workflows/pre-commit-update.yml @@ -0,0 +1,15 @@ +name: Update pre-commit + +on: + schedule: + - cron: "0 20 * * SUN" # Sunday @ 2000 UTC + workflow_dispatch: + +jobs: + pre-commit-update: + name: Update pre-commit + uses: beeware/.github/.github/workflows/pre-commit-update.yml@main + secrets: inherit + with: + pre-commit-source: "--group pre-commit" + create-changenote: false diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..1733a2b --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,22 @@ +name: Upload Python Package + +on: + release: + types: published + +jobs: + deploy: + runs-on: ubuntu-latest + permissions: + # This permission is required for trusted publishing. + id-token: write + steps: + - uses: dsaltares/fetch-gh-release-asset@1.1.2 + with: + version: tags/${{ github.event.release.tag_name }} + file: ${{ github.event.repository.name }}.* + regex: true + target: dist/ + + - name: Publish release to production PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..6f75635 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,48 @@ +name: Create Release + +on: + push: + tags: + - 'v*' + +jobs: + ci: + name: CI + uses: ./.github/workflows/ci.yml + + release: + name: Create Release + needs: ci + runs-on: ubuntu-latest + permissions: + contents: write + # This permission is required for trusted publishing. + id-token: write + steps: + - name: Set build variables + run: | + echo "VERSION=${GITHUB_REF_NAME#v}" | tee -a $GITHUB_ENV + + - name: Set up Python + uses: actions/setup-python@v6.0.0 + with: + python-version: "3.x" + + - name: Get packages + uses: actions/download-artifact@v6.0.0 + with: + pattern: Packages + path: dist + + - name: Create release + uses: ncipollo/release-action@v1.20.0 + with: + name: ${{ env.VERSION }} + draft: true + artifacts: dist/* + artifactErrorsFailBuild: true + + - name: Publish release to Test PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ diff --git a/.github/workflows/reusable_tests.yaml b/.github/workflows/reusable_tests.yaml new file mode 100644 index 0000000..60e9ab9 --- /dev/null +++ b/.github/workflows/reusable_tests.yaml @@ -0,0 +1,66 @@ +name: Common Workflow + +on: + workflow_call: + inputs: + distro: + required: true + type: string + install_cmd: + required: true + type: string + +jobs: + venv-test: + runs-on: ubuntu-latest + container: + image: ${{ inputs.distro }} + env: + QT_STYLE_OVERRIDE: breeze + + steps: + - name: Dependencies + run: | + ${{ inputs.install_cmd }} + + - name: actions/checkout issue 363 workaround + run: | + git config --global --add safe.directory $PWD + + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Run tests + run: | + tox -e py + + briefcase-testbed: + runs-on: ubuntu-latest + container: + image: ${{ inputs.distro }} + env: + QT_STYLE_OVERRIDE: breeze + + steps: + - name: Dependencies + run: | + ${{ inputs.install_cmd }} + + - name: actions/checkout issue 363 workaround + run: | + git config --global --add safe.directory $PWD + + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Install Development Briefcase in venv + run: | + python3 -m venv venv + . venv/bin/activate + python3 -m pip install git+https://github.com/beeware/briefcase.git + + - name: Run testbed + run: | + . venv/bin/activate + cd testbed + briefcase run --test diff --git a/README.md b/README.md index cb9a939..9c03666 100644 --- a/README.md +++ b/README.md @@ -19,15 +19,15 @@ This package provides a customization of the Python import system that allows sy To use `system-pyside6`, install the system packages for PySide6: -* **Ubuntu / Debian** - `sudo apt-get install python3-pyside6.qtwidgets` (Only available from Ubuntu 25.10+ / Debian 14+) +* **Ubuntu / Debian** - `sudo apt-get install python3-pyside6.qtwidgets` (and other modules you may need, such as ``python3-pyside6.qtcore``; Only available from Ubuntu 24.10+ / Debian 13+) -* **Fedora** - `sudo dnf install python3-pyside6` +* **Fedora** - `sudo dnf install python3-pyside6` and `sudo dnf upgrade --refresh` - **NOTE** that the second step is needed because installing PySide6 upgrades hundreds of packages, **some of them which have incorrect dependencies which MAY BRICK YOUR SYSTEM!** * **Arch/ Manjaro** - `sudo pacman -Syu pyside6` * **OpenSUSE Tumbleweed** - `sudo zypper install python3-pyside6` -Then, create a virtual environment, and install `system-pyside` into that environment. You should then be able to write a Python app using PySide6 without adding `PySide6` as a dependency of your app. +Then, create a virtual environment, and install `system-pyside6` into that environment. You should then be able to write a Python app using PySide6 without adding `PySide6` as a dependency of your app. ## Community diff --git a/pyproject.toml b/pyproject.toml index 2e80341..6cfb98c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ dependencies = [ ] [dependency-groups] -# Extras used by developers *of* briefcase are pinned to specific versions to +# Extras used by developers *of* system-pyside6 are pinned to specific versions to # ensure environment consistency. pre-commit = [ "pre-commit == 4.4.0", @@ -56,18 +56,14 @@ setuptools-scm = [ "setuptools_scm == 9.2.2", ] -towncrier = [ - "towncrier==25.8.0", -] - -tox-uv = [ - "tox-uv == 1.29.0", +tox = [ + "tox == 4.32.0", ] dev = [ {include-group = "pre-commit"}, {include-group = "setuptools-scm"}, - {include-group = "tox-uv"}, + {include-group = "tox"}, ] test = [ @@ -75,11 +71,11 @@ test = [ ] [project.urls] -Homepage = "https://beeware.org/system-pytest6" +Homepage = "https://beeware.org/system-pyside6" Funding = "https://beeware.org/contributing/membership/" -Documentation = "https://system-pytest6.readthedocs.io/en/latest/" -Tracker = "https://github.com/beeware/system-pytest6/issues" -Source = "https://github.com/beeware/system-pytest6" +Documentation = "https://system-pyside6.readthedocs.io/en/latest/" +Tracker = "https://github.com/beeware/system-pyside6/issues" +Source = "https://github.com/beeware/system-pyside6" [tool.pytest.ini_options] testpaths = ["tests"] @@ -117,6 +113,7 @@ ignore = [ [tool.setuptools_scm] # To enable SCM versioning, we need an empty tool configuration for setuptools_scm + [tool.codespell] skip = '.git,*.pdf,*.svg' # the way to make case-sensitive skips of words etc diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..fdcd2d4 --- /dev/null +++ b/setup.py @@ -0,0 +1,20 @@ +from pathlib import Path + +from setuptools import setup +from setuptools.command.build_py import build_py + +import os + +class add_pyside6(build_py): + def run(self): + super().run() + self.copy_file( + os.path.abspath(os.path.dirname(__file__)) + "/system_pyside6.pth", + str(Path(self.build_lib) / "system_pyside6.pth"), + preserve_mode=0, + ) + + +setup( + cmdclass={"build_py": add_pyside6}, +) diff --git a/src/system_pyside6/__init__.py b/src/system_pyside6/__init__.py new file mode 100644 index 0000000..8c56985 --- /dev/null +++ b/src/system_pyside6/__init__.py @@ -0,0 +1,142 @@ +import ast +import importlib.machinery +import subprocess +import sys +from importlib.metadata import Distribution, DistributionFinder +from pathlib import Path + + +def get_distro(): + try: + with open("/etc/os-release") as f: + for line in f: + if line.startswith("ID="): + return line.strip().split("=")[1].strip('"').lower() + except FileNotFoundError: + return None + + +def get_system_site(): + return ast.literal_eval( + subprocess.run( + [ + "env", + "-i", + "python3", + "-c", + "import site; print(site.getsitepackages())", + ], + capture_output=True, + text=True, + check=True, + ).stdout.strip() + ) + + +DISTRO = get_distro() +VERS = f"{sys.version_info.major}.{sys.version_info.minor}" + +# Below, locations are hardcoded for common distros' layout, and those +# directories for package and distribution info are searched instead of +# the entire system site packages as defined above. + +if DISTRO == "fedora": + PACKAGE_DIR = [f"/usr/lib/python{VERS}/site-packages/"] + DIST_INFO_DIR = [f"/usr/lib64/python{VERS}/site-packages/"] +elif DISTRO == "ubuntu": + PACKAGE_DIR = ["/usr/lib/python3/dist-packages/"] + DIST_INFO_DIR = ["/usr/lib/python3/dist-packages/"] +elif DISTRO.startswith("opensuse"): + PACKAGE_DIR = [f"/usr/lib64/python{VERS}/site-packages/"] + DIST_INFO_DIR = [f"/usr/lib64/python{VERS}/site-packages/"] +else: + PACKAGE_DIR = DIST_INFO_DIR = get_system_site() + + +def locate_package(package_name): + paths = [] + for directory in PACKAGE_DIR: + path = Path(directory) / package_name + if path.exists() and path.is_dir(): + paths.append(path) + return paths + + +def find_dist_info_dir(pkgname): + for directory in DIST_INFO_DIR: + if not Path(directory).exists(): + continue + for entry in Path(directory).iterdir(): + if entry.is_dir() and ( + ( + entry.name.startswith(pkgname + "-") + and ( + entry.name.endswith(".dist-info") + or entry.name.endswith(".egg-info") + ) + ) + or ( + entry.name == f"{pkgname}.dist-info" + or entry.name == f"{pkgname}.egg-info" + ) + ): + return entry + + return None + + +class IsolatedDistribution(Distribution): + def __init__(self, pkgname): + self.pkgname = pkgname + self._dist_info = find_dist_info_dir(pkgname) + + if not self._dist_info: + raise ImportError(f"No dist-info found for {pkgname}") + + def read_text(self, filename): + file = self._dist_info / filename + if file.exists(): + return file.read_text(encoding="utf-8") + return None + + def locate_file(self, path): + return self._dist_info.parent / path + + +class IsolatedPackageFinder(DistributionFinder): + def __init__(self, package_dirs): + self.package_dirs = package_dirs + + def find_spec(self, fullname, path=None, target=None): + for pkg, pkg_paths in self.package_dirs.items(): + if fullname == pkg or fullname.startswith(pkg + "."): + for path in pkg_paths: + spec = importlib.machinery.PathFinder.find_spec( + fullname, [str(path.parent)] + ) + if spec is not None: + return spec + return None + + def find_distributions(self, context=None): + if context is None: + context = DistributionFinder.Context() + + if not context.name: + return + + # System packages on Fedora etc. uses PySide6 as the distribution. + # instead of like PySide6-Essentials used on PyPI. + if context.name in self.package_dirs: + yield IsolatedDistribution(context.name) + + +sys.meta_path.insert( + 0, + IsolatedPackageFinder( + { + "PySide6": locate_package("PySide6"), + "shiboken6": locate_package("shiboken6"), + } + ), +) diff --git a/system_pyside6.pth b/system_pyside6.pth new file mode 100644 index 0000000..b890fd4 --- /dev/null +++ b/system_pyside6.pth @@ -0,0 +1 @@ +import system_pyside6 diff --git a/testbed/.gitignore b/testbed/.gitignore new file mode 100644 index 0000000..f6c30e2 --- /dev/null +++ b/testbed/.gitignore @@ -0,0 +1,62 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# OSX useful to ignore +*.DS_Store +.AppleDouble +.LSOverride + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.dist-info/ +*.egg-info/ +.installed.cfg +*.egg + +# IntelliJ Idea family of suites +.idea +*.iml +## File-based project format: +*.ipr +*.iws +## mpeltonen/sbt-idea plugin +.idea_modules/ + +# Briefcase log files +logs/ diff --git a/testbed/CHANGELOG b/testbed/CHANGELOG new file mode 100644 index 0000000..a6d1d36 --- /dev/null +++ b/testbed/CHANGELOG @@ -0,0 +1,5 @@ +# System PySide6 Testbed Release Notes + +## 0.0.1 (22 Nov 2025) + +* Initial release diff --git a/testbed/LICENSE b/testbed/LICENSE new file mode 100644 index 0000000..89c67e4 --- /dev/null +++ b/testbed/LICENSE @@ -0,0 +1 @@ +See the root directory of system-pyside6 for copyright information. diff --git a/testbed/README.rst b/testbed/README.rst new file mode 100644 index 0000000..98194ec --- /dev/null +++ b/testbed/README.rst @@ -0,0 +1,12 @@ +System PySide6 Testbed +====================== + +**This cross-platform app was generated by** `Briefcase`_ **- part of** +`The BeeWare Project`_. **If you want to see more tools like Briefcase, please +consider** `becoming a financial member of BeeWare`_. + +Internal testbed for beeware/system-pyside6 + +.. _`Briefcase`: https://briefcase.readthedocs.io/ +.. _`The BeeWare Project`: https://beeware.org/ +.. _`becoming a financial member of BeeWare`: https://beeware.org/contributing/membership diff --git a/testbed/pyproject.toml b/testbed/pyproject.toml new file mode 100644 index 0000000..b2abfef --- /dev/null +++ b/testbed/pyproject.toml @@ -0,0 +1,28 @@ +# This project was generated with 0.3.25 using template: https://github.com/beeware/briefcase-template @ v0.3.25 +[tool.briefcase] +project_name = "System PySide6 Testbed" +bundle = "com.beeware.system-pyside6.testbed" +version = "0.0.1" +url = "https://beeware.org" +license.file = "LICENSE" +author = "John" +author_email = "johnzhou721@gmail.com" + +[tool.briefcase.app.testbed] +formal_name = "System PySide6 Testbed" +description = "Internal testbed for beeware/system-pyside6" +long_description = """More details about the app should go here. +""" +sources = [ + "src/testbed", +] +test_sources = [ + "../tests", +] +test_requires = [ + "pytest", +] +[tool.briefcase.app.testbed.linux] +requires = [ + "..", +] diff --git a/system_pyside6.py b/testbed/src/testbed/__init__.py similarity index 100% rename from system_pyside6.py rename to testbed/src/testbed/__init__.py diff --git a/testbed/src/testbed/__main__.py b/testbed/src/testbed/__main__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_system_pyside6.py b/tests/test_system_pyside6.py new file mode 100644 index 0000000..aafebe6 --- /dev/null +++ b/tests/test_system_pyside6.py @@ -0,0 +1,49 @@ +import importlib.metadata +import os + +import pytest + + +def test_qapplication_override(): + os.environ["QT_QPA_PLATFORM"] = "offscreen" + + from PySide6.QtWidgets import QApplication + + qt_style = os.environ.get("QT_STYLE_OVERRIDE", None) + app = QApplication([]) + + if qt_style: + style_name = app.style().objectName() + assert style_name.lower() == qt_style.lower() + + app.quit() + + +def test_pyside6_location(): + import PySide6 + + assert PySide6.__file__.startswith("/usr/lib") + + +def test_metadata_version(): + import PySide6 + import shiboken6 + + pyside6_version = importlib.metadata.version("PySide6") + shiboken6_version = importlib.metadata.version("shiboken6") + assert pyside6_version == PySide6.__version__ + assert shiboken6_version == shiboken6.__version__ + + +def test_metadata_summary(): + pyside6_dist = importlib.metadata.distribution("PySide6") + shiboken6_dist = importlib.metadata.distribution("shiboken6") + assert isinstance(pyside6_dist.metadata["Summary"], str) + assert isinstance(shiboken6_dist.metadata["Summary"], str) + + +def test_nonexposal(): + with pytest.raises(ImportError): + import torch # noqa: F401 + with pytest.raises(importlib.metadata.PackageNotFoundError): + importlib.metadata.version("torch") diff --git a/tests/testbed.py b/tests/testbed.py new file mode 100644 index 0000000..e1324c6 --- /dev/null +++ b/tests/testbed.py @@ -0,0 +1,36 @@ +import os +import sys +import tempfile +from pathlib import Path + +import pytest + + +def run_tests(): + project_path = Path(__file__).parent.parent + os.chdir(project_path) + + # Determine any args to pass to pytest. If there aren't any, + # default to running the whole test suite. + args = sys.argv[1:] + if len(args) == 0: + args = ["tests"] + + returncode = pytest.main( + [ + # Turn up verbosity + "-vv", + # Disable color + "--color=no", + # Overwrite the cache directory to somewhere writable + "-o", + f"cache_dir={tempfile.gettempdir()}/.pytest_cache", + ] + + args + ) + + print(f">>>>>>>>>> EXIT {returncode} <<<<<<<<<<") + + +if __name__ == "__main__": + run_tests() diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..56f8265 --- /dev/null +++ b/tox.ini @@ -0,0 +1,12 @@ +[tox] +envlist = pre-commit,py +skip_missing_interpreters = true + +[testenv:pre-commit] +dependency_groups = pre-commit +commands = pre-commit run --all-files --show-diff-on-failure --color=always + +[testenv:py] +dependency_groups = test +commands = + python -m pytest tests {posargs:-vv --color yes} From cb7470a9262de7f5c3433613bf33b1549408f6cc Mon Sep 17 00:00:00 2001 From: John Zhou Date: Mon, 24 Nov 2025 08:45:06 -0600 Subject: [PATCH 2/3] Fix pre-commit --- .gitignore | 4 ++-- pyproject.toml | 12 ++++-------- setup.py | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index b7faf40..09be0ef 100644 --- a/.gitignore +++ b/.gitignore @@ -182,9 +182,9 @@ cython_debug/ .abstra/ # Visual Studio Code -# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore -# and can be added to the global gitignore or merged into this file. However, if you prefer, +# and can be added to the global gitignore or merged into this file. However, if you prefer, # you could uncomment the following to ignore the entire vscode folder # .vscode/ diff --git a/pyproject.toml b/pyproject.toml index 6cfb98c..24592c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -95,14 +95,10 @@ extend-select = [ "ASYNC", # flake8-async "C4", # flake8-comprehensions "I", # isort - "RUF", # ruff-specific rules - "PT", # flake8-pytest-style - "FURB", # refurb - "ISC", # flake8-implicit-str-concat - "PGH", # pygrep-hooks - "T20", # flake8-print - "PIE", # flake8-pie - "SIM", # flake8-simplify + # The SIM rules are *very* opinionated, and don't necessarily make for better code. + # They may be worth occasionally turning on just to see if something could actually + # use improvement. + # "SIM", # flake8-simplify ] ignore = [ diff --git a/setup.py b/setup.py index fdcd2d4..de83478 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,9 @@ +import os from pathlib import Path from setuptools import setup from setuptools.command.build_py import build_py -import os class add_pyside6(build_py): def run(self): From e457067f5797b2132cc15abac7639fa6347a77f0 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 24 Nov 2025 08:54:04 -0600 Subject: [PATCH 3/3] Assign Copyright to rkm --- testbed/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testbed/pyproject.toml b/testbed/pyproject.toml index b2abfef..ff4b1ad 100644 --- a/testbed/pyproject.toml +++ b/testbed/pyproject.toml @@ -5,8 +5,8 @@ bundle = "com.beeware.system-pyside6.testbed" version = "0.0.1" url = "https://beeware.org" license.file = "LICENSE" -author = "John" -author_email = "johnzhou721@gmail.com" +author = "Russell Keith-Magee" +author_email = "russell@keith-magee.com" [tool.briefcase.app.testbed] formal_name = "System PySide6 Testbed"