Opened 4 years ago

Closed 4 years ago

#6335 closed defect (fixed)

Toolshed install of bundles broken with Qt 6

Reported by: goddard@… Owned by: Zach Pearson
Priority: normal Milestone: 1.4
Component: Window Toolkit Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.22000
ChimeraX Version: 1.4.dev202203080653 (2022-03-08 06:53:52 UTC)
Description
Tried to install the RealSense bundle in Qt6 ChimeraX.  Pressing the Install button on the Toolshed page for RealSense generated this error message.

Log:
You can double click a model's Name or ID in the model panel to edit those
fields  
UCSF ChimeraX version: 1.4.dev202203080653 (2022-03-08)  
© 2016-2022 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 7knq format mmcif fromDatabase pdb

7knq title:  
SARM1 Octamer [more info...]  
  
Chain information for 7knq #1  
---  
Chain | Description | UniProt  
A B C D E F G H | NAD(+) hydrolase SARM1 | SARM1_HUMAN  
  

> vr true

> lighting simple

started SteamVR rendering  

> preset cartoons/nucleotides cylinders/stubs

Using preset: Cartoons/Nucleotides / Cylinders/Stubs  
Changed 36888 atom styles  
Preset expands to these ChimeraX commands:

    
    
    show nucleic
    hide protein|solvent|H
    surf hide
    style (protein|nucleic|solvent) & @@draw_mode=0 stick
    cartoon
    cartoon style modeh def arrows t arrowshelix f arrowscale 2 wid 2 thick 0.4 sides 12 div 20
    cartoon style ~(nucleic|strand) x round
    cartoon style (nucleic|strand) x rect
    cartoon style protein modeh tube rad 2 sides 24 thick 0.6
    cartoon style nucleic x round width 1.6 thick 1.6
    nucleotides stubs

  
VR mode select  

> select /A:395

11 atoms, 10 bonds, 1 residue, 1 model selected  

> select up

108 atoms, 107 bonds, 15 residues, 1 model selected  

> select up

1767 atoms, 1796 bonds, 223 residues, 1 model selected  
VR mode translate selected atoms  

> show sel atoms

> hide sel cartoons

> select up

4611 atoms, 4689 bonds, 588 residues, 1 model selected  

> hide sel cartoons

> show sel atoms

VR mode select  

> select clear

> hide cartoons

> select /A

4611 atoms, 4689 bonds, 2 pseudobonds, 588 residues, 2 models selected  

> select clear

> show atoms

> select /A

4611 atoms, 4689 bonds, 2 pseudobonds, 588 residues, 2 models selected  

> select /C:700@C

1 atom, 1 residue, 1 model selected  

> select /B:347@CD2

1 atom, 1 residue, 1 model selected  

> select up

11 atoms, 11 bonds, 1 residue, 1 model selected  

> select up

134 atoms, 135 bonds, 18 residues, 1 model selected  

> select clear

> select up

Nothing selected  

> select up

Nothing selected  

> select up

Nothing selected  

> select /B:85@CA

1 atom, 1 residue, 1 model selected  

> select up

5 atoms, 4 bonds, 1 residue, 1 model selected  

> select up

85 atoms, 85 bonds, 13 residues, 1 model selected  

> select up

1723 atoms, 1746 bonds, 225 residues, 1 model selected  

> select up

1742 atoms, 1765 bonds, 228 residues, 1 model selected  

> select up

3490 atoms, 3542 bonds, 448 residues, 1 model selected  

> select up

4611 atoms, 4689 bonds, 588 residues, 1 model selected  

> realsense on

realsense is provided by the uninstalled bundle RealSense versions 1.2 – 1.8  

> vr false

> toolshed show

Downloading bundle ChimeraX_RealSense-1.8-cp39-cp39-win_amd64.whl  
Traceback (most recent call last):  
File "C:\Program Files\ChimeraX-Qt6-Mar-8-2022\bin\lib\site-
packages\chimerax\help_viewer\tool.py", line 359, in download_requested  
item.downloadProgress.connect(self.download_progress)  
AttributeError: 'QWebEngineDownloadRequest' object has no attribute
'downloadProgress'  
  
AttributeError: 'QWebEngineDownloadRequest' object has no attribute
'downloadProgress'  
  
File "C:\Program Files\ChimeraX-Qt6-Mar-8-2022\bin\lib\site-
packages\chimerax\help_viewer\tool.py", line 359, in download_requested  
item.downloadProgress.connect(self.download_progress)  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 NVIDIA 472.08
OpenGL renderer: NVIDIA GeForce RTX 3090/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Locale: en_US.cp1252
Qt version: PyQt6 6.2.3, Qt 6.2.3
Qt platform: windows

Manufacturer: HP
Model: OMEN 30L Desktop GT13-0xxx
OS: Microsoft Windows 11 Pro (Build 22000)
Memory: 68,576,903,168
MaxProcessMemory: 137,438,953,344
CPU: 20 Intel(R) Core(TM) i9-10850K CPU @ 3.60GHz
OSLanguage: en-US

Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 3.0.0
    certifi: 2021.10.8
    cftime: 1.6.0
    charset-normalizer: 2.0.12
    ChimeraX-AddCharge: 1.2.3
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2.1
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.2.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.36.2
    ChimeraX-AtomicLibrary: 6.1.1
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.1
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.0
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.6.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.2
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.1
    ChimeraX-CommandLine: 1.2.1
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.4.dev202203080653
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.6
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.7
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.5.2
    ChimeraX-ModelPanel: 1.3.2
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.8
    ChimeraX-PDB: 2.6.6
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.4.7
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.8
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.0.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.16.2
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.1.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    comtypes: 1.1.10
    cxservices: 1.1
    cycler: 0.11.0
    Cython: 0.29.26
    debugpy: 1.5.1
    decorator: 5.1.1
    docutils: 0.17.1
    entrypoints: 0.4
    filelock: 3.4.2
    fonttools: 4.29.1
    funcparserlib: 1.0.0a0
    grako: 3.16.5
    h5py: 3.6.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.26
    imagecodecs: 2021.11.20
    imagesize: 1.3.0
    ipykernel: 6.6.1
    ipython: 7.31.1
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.0.3
    jupyter-client: 7.1.0
    jupyter-core: 4.9.2
    kiwisolver: 1.3.2
    line-profiler: 3.4.0
    lxml: 4.7.1
    lz4: 3.1.10
    MarkupSafe: 2.1.0
    matplotlib: 3.5.1
    matplotlib-inline: 0.1.3
    msgpack: 1.0.3
    nest-asyncio: 1.5.4
    netCDF4: 1.5.8
    networkx: 2.6.3
    numexpr: 2.8.1
    numpy: 1.22.1
    openvr: 1.16.802
    packaging: 21.3
    ParmEd: 3.4.3
    parso: 0.8.3
    pickleshare: 0.7.5
    Pillow: 9.0.0
    pip: 21.3.1
    pkginfo: 1.8.2
    prompt-toolkit: 3.0.28
    psutil: 5.9.0
    pycollada: 0.7.2
    pydicom: 2.2.2
    Pygments: 2.11.2
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.7
    PyQt6-commercial: 6.2.3
    PyQt6-sip: 13.2.0
    PyQt6-WebEngine-commercial: 6.2.1
    python-dateutil: 2.8.2
    pytz: 2021.3
    pywin32: 303
    pyzmq: 22.3.0
    qtconsole: 5.2.2
    QtPy: 2.0.1
    RandomWords: 0.3.0
    requests: 2.27.1
    scipy: 1.7.3
    setuptools: 59.8.0
    sfftk-rw: 0.7.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.3.2
    sphinx-autodoc-typehints: 1.15.2
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-community: 1.0.0
    tables: 3.7.0
    tifffile: 2021.11.2
    tinyarray: 1.2.4
    tornado: 6.1
    traitlets: 5.1.1
    urllib3: 1.26.8
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.1
    wheel-filename: 1.3.0
    WMI: 1.5.1

Change History (5)

comment:1 by Tom Goddard, 4 years ago

Component: UnassignedWindow Toolkit
Milestone: 1.4
Owner: set to Zach Pearson
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionToolshed install of bundles broken with Qt 6

comment:2 by Zach Pearson, 4 years ago

QWebEngineDownloadItem from Qt5 has moved to QWebEngineDownloadRequest in Qt6. The signal being referenced, downloadProgress, has been split into two signals that independently report one of the two values downloadProgress reported together: receivedBytesChanged and totalBytesChanged.

Since we want backwards compatibility with Qt5 for now, we could potentially fix this in the shim. We can add the signal back to QWebEngineDownloadRequest right after we do the star import from PyQt6.QtWebEngineCore, then hack it so that receivedBytesChanged or totalBytesChanged triggers downloadProgress, but it might be simpler to do a compatibility breaking change in the help_viewer bundle. We might build the Qt6 build of ChimeraX from a Qt6-specific branch getting synchronized to develop nightly plus Qt6 specific patches, instead of applying the Qt6 patch to develop before building it.

in reply to:  3 ; comment:3 by goddard@…, 4 years ago

I'd suggest just having a minimal amount of separate Qt 5 and Qt 6 code in the help viewer.

from Qt import using_qt5, using_qt6
if using_qt5:
  # Setup Qt 5 download callback
elif using_qt6:
  # Setup Qt 6 download callback.

After we release our last Qt 5 ChimeraX with the 1.4 release it will be easy to find the "using_qt5" parts of the code and rip them out.  This is the approach I took yesterday in fixing the webcam command where Qt changed the video APIs.  I would not try to do tricky things in the Qt shim.


comment:4 by Zach Pearson, 4 years ago

I think I'll go with your suggestion; it seems both even simpler and less prone to breakage than what I was getting at. Thank you!

comment:5 by Zach Pearson, 4 years ago

Resolution: fixed
Status: assignedclosed

Should be fixed by this commit. Additionally, I modified QtWebEngineCore in the shim to promote its enums in this commit using the same pattern from QtGui. Hopefully this does not have knock-on effects.

Note: See TracTickets for help on using tickets.