Name: python-trame-rca Version: 2.7.0 Release: 2%{?dist} Summary: Remote Controlled Area image streaming for trame License: Apache-2.0 URL: https://github.com/Kitware/trame-rca Source: %{pypi_source trame_rca} BuildArch: noarch BuildRequires: python3-devel BuildRequires: python3-trame-client BuildRequires: python3-trame-common BuildRequires: python3-wslink BuildRequires: python3-numpy BuildRequires: python3-packaging BuildRequires: python3-pillow %global _description %{expand: trame-rca (Remote Controlled Area) streams rendered images and frames from a Python server to a browser-side viewport over WebSocket. trame-slicer uses it to push 2D/3D slice views and DICOM renderings to the web client without copying full meshes over the wire.} %description %_description %package -n python3-trame-rca Summary: %{summary} Requires: python3-trame-client Requires: python3-trame-common Requires: python3-wslink Requires: python3-numpy Requires: python3-packaging Requires: python3-pillow %description -n python3-trame-rca %_description %prep %autosetup -p1 -n trame_rca-%{version} %generate_buildrequires %pyproject_buildrequires %build %pyproject_wheel %install %pyproject_install %pyproject_save_files trame trame_rca # The trame namespace dirs (trame/, trame/ui/, trame/modules/, trame/widgets/) are # shared by several trame distributions, and every wheel ships its own copy of the # pkgutil marker __init__.py. The .py files are byte-identical so rpm tolerates the # duplicates -- but their .pyc embeds the SOURCE MTIME, which differs per build, so # the bytecode collides at install time: # file .../trame/ui/__pycache__/__init__.cpython-314.pyc conflicts between # attempted installs of python3-trame-... and python3-trame-client-... # Since Python 3.3 these work as PEP 420 implicit namespace packages with no marker # at all, so drop it everywhere. Verified: with all four removed, trame.ui becomes a # _NamespacePath and trame.ui.vuetify3 / trame.widgets.vuetify3 / trame.modules.www # still resolve across packages. The grep guard makes sure a real __init__.py with # actual code is never deleted. for _d in "" /ui /modules /widgets; do _f=%{buildroot}%{python3_sitelib}/trame$_d/__init__.py [ -f "$_f" ] || continue grep -qx '__path__ = __import__("pkgutil").extend_path(__path__, __name__)' "$_f" \ || { echo "ERROR: trame$_d/__init__.py is not a namespace marker" >&2; exit 1; } rm -f "$_f" %{buildroot}%{python3_sitelib}/trame$_d/__pycache__/__init__.*.pyc done # Drop the removed paths from the generated file list (it comes from the wheel RECORD). sed -i -E '\#/trame(/(ui|modules|widgets))?/__init__\.py$#d; \#/trame(/(ui|modules|widgets))?/__pycache__/__init__\..*\.pyc$#d' %{pyproject_files} %check %_pyproject_check_import_allow_no_modules -t %files -n python3-trame-rca -f %{pyproject_files} %license LICENSE %doc README.rst %changelog * Fri Aug 22 2026 Morgan Hough - 2.7.0-2 - Drop the pkgutil namespace markers for trame/{,ui,modules,widgets} and rely on PEP 420 implicit namespace packages. Every trame wheel ships its own identical copy; rpm tolerates the duplicate .py (byte-identical) but the .pyc embeds the source mtime, which differs per build, so installing two trame packages together failed with __pycache__/__init__.cpython-314.pyc file conflicts. * Sat Jul 18 2026 Morgan Hough - 2.7.0-1 - Update to 2.7.0 * Sat Jun 27 2026 Morgan Hough - 2.4.3-2 - Rebuild against Python 3.15 (rawhide). Release bump so the py3.15 build supersedes the lingering same-NVR py3.14 RPM in the COPR repo. * Thu May 28 2026 Morgan Hough - 2.4.3-1 - Initial package for the trame-slicer dependency chain.