Opened 5 years ago

Closed 4 years ago

#4000 closed defect (fixed)

SEQCROW uses deprecated PyQt5 imports

Reported by: goddard@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: Third Party Version:
Keywords: Cc: tony.schaefer@…
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-10.15.7-x86_64-i386-64bit
ChimeraX Version: 1.2.dev202011130655 (2020-11-13 06:55:07 UTC)
Description
Trying to make SEQCROW 0.20 work with PySide2 by adding PyQt5 synonym modules.  But SEQCROW imports Qt classes from the wrong place such as QIcon from PyQt5.Qt instead of from the PyQt5.QtGui which is the Qt documented location, and QStyle from PyQt5.Qt instead of PyQt5.QtWidgets which is the documented location.


Log:
UCSF ChimeraX version: 1.2.dev202011130655 (2020-11-13)  
© 2016-2020 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> ui tool show "Add to Personal Library"

Traceback (most recent call last):  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/toolshed/info.py", line 522, in start_tool  
ti = api._api_caller.start_tool(api, session, self, tool_info)  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/toolshed/__init__.py", line 1309, in start_tool  
return cls._get_func(api, "start_tool")(session, bi, ti)  
File "/Users/goddard/Library/Application Support/ChimeraX/1.2/site-
packages/SEQCROW/__init__.py", line 158, in start_tool  
from .tools import LibAdd  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/lib/python3.8/site-
packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in
_import  
return original_import(name, *args, **kwargs)  
File "/Users/goddard/Library/Application Support/ChimeraX/1.2/site-
packages/SEQCROW/tools/__init__.py", line 2, in <module>  
from .normal_modes import NormalModes  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/lib/python3.8/site-
packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 146, in
_import  
return original_import(name, *args, **kwargs)  
File "/Users/goddard/Library/Application Support/ChimeraX/1.2/site-
packages/SEQCROW/tools/normal_modes.py", line 28, in <module>  
from PyQt5.Qt import QIcon, QStyle  
ImportError: cannot import name 'QIcon' from 'PySide2.Qt' (unknown location)  
  
During handling of the above exception, another exception occurred:  
  
Traceback (most recent call last):  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/ui/gui.py", line 1526, in <lambda>  
run(ses, "ui tool show %s" % StringArg.unparse(tool_name)))  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/commands/run.py", line 36, in run  
results = command.run(text, log=log, return_json=return_json)  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/commands/cli.py", line 2835, in run  
result = ci.function(session, **kw_args)  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/ui/cmd.py", line 187, in ui_tool_show  
bi.start_tool(session, name)  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/toolshed/info.py", line 527, in start_tool  
raise ToolshedError(  
chimerax.core.toolshed.ToolshedError: start_tool() failed for tool Add to
Personal Library in bundle SEQCROW:  
cannot import name 'QIcon' from 'PySide2.Qt' (unknown location)  
  
chimerax.core.toolshed.ToolshedError: start_tool() failed for tool Add to
Personal Library in bundle SEQCROW:  
cannot import name 'QIcon' from 'PySide2.Qt' (unknown location)  
  
File "/Users/goddard/ucsf/chimerax-
pyside/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/toolshed/info.py", line 527, in start_tool  
raise ToolshedError(  
  
See log for complete Python traceback.  
  

> ui tool show Shell

> ui tool show Shell




OpenGL version: 4.1 ATI-3.10.18
OpenGL renderer: AMD Radeon Pro Vega 20 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro15,3
      Processor Name: 8-Core Intel Core i9
      Processor Speed: 2.4 GHz
      Number of Processors: 1
      Total Number of Cores: 8
      L2 Cache (per Core): 256 KB
      L3 Cache: 16 MB
      Hyper-Threading Technology: Enabled
      Memory: 32 GB
      Boot ROM Version: 1037.147.4.0.0 (iBridge: 17.16.16610.0.0,0)

Software:

    System Software Overview:

      System Version: macOS 10.15.7 (19H2)
      Kernel Version: Darwin 19.6.0
      Time since boot: 18 days 5:50

Graphics/Displays:

    Intel UHD Graphics 630:

      Chipset Model: Intel UHD Graphics 630
      Type: GPU
      Bus: Built-In
      VRAM (Dynamic, Max): 1536 MB
      Vendor: Intel
      Device ID: 0x3e9b
      Revision ID: 0x0002
      Automatic Graphics Switching: Supported
      gMux Version: 5.0.0
      Metal: Supported, feature set macOS GPUFamily2 v1

    Radeon Pro Vega 20:

      Chipset Model: Radeon Pro Vega 20
      Type: GPU
      Bus: PCIe
      PCIe Lane Width: x8
      VRAM (Total): 4 GB
      Vendor: AMD (0x1002)
      Device ID: 0x69af
      Revision ID: 0x00c0
      ROM Revision: 113-D2060I-087
      VBIOS Version: 113-D20601MA0T-016
      Option ROM Version: 113-D20601MA0T-016
      EFI Driver Version: 01.01.087
      Automatic Graphics Switching: Supported
      gMux Version: 5.0.0
      Metal: Supported, feature set macOS GPUFamily2 v1
      Displays:
        Color LCD:
          Display Type: Built-In Retina LCD
          Resolution: 2880 x 1800 Retina
          Framebuffer Depth: 24-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: No
          Connection Type: Internal

Locale: ('en_US', 'UTF-8')
PyQt version: 5.15.1
Compiled Qt version: 5.15.1
Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    appnope: 0.1.0
    Babel: 2.9.0
    backcall: 0.2.0
    biopython: 1.78
    blockdiag: 2.0.1
    certifi: 2020.11.8
    cftime: 1.2.1
    chardet: 3.0.4
    ChimeraX-AddH: 2.1.3
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.1
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.9.3
    ChimeraX-AtomicLibrary: 1.1
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.0
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.2
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.0
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.1
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.1
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-CommandLine: 1.1.3
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.2.dev202011130655
    ChimeraX-CoreFormats: 1.0
    ChimeraX-coulombic: 1.0.1
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-DataFormats: 1.0.1
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1
    ChimeraX-DistUI: 1.0
    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.0
    ChimeraX-Hbonds: 2.1
    ChimeraX-Help: 1.0
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.0
    ChimeraX-ImageFormats: 1.1
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0
    ChimeraX-Label: 1.0
    ChimeraX-ListInfo: 1.1
    ChimeraX-Log: 1.1.1
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Map: 1.0.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.0
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 1.1
    ChimeraX-MDcrds: 2.1
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.0
    ChimeraX-mmCIF: 2.2
    ChimeraX-MMTF: 2.0
    ChimeraX-Modeller: 1.0
    ChimeraX-ModelPanel: 1.0
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.0
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0
    ChimeraX-OpenCommand: 1.3.1
    ChimeraX-PDB: 2.2
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.0.1
    ChimeraX-PubChem: 2.0.1
    ChimeraX-Read-Pbonds: 1.0
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.2.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SeqView: 2.2.1
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.0
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.0.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.2.2
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-Struts: 1.0
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.0
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Tempy: 0.6.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.0
    ChimeraX-ToolshedUtils: 1.0
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.3.1
    ChimeraX-uniprot: 2.0
    ChimeraX-ViewDockX: 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.3
    comtypes: 1.1.7
    cxservices: 1.0
    cycler: 0.10.0
    Cython: 0.29.21
    decorator: 4.4.2
    distlib: 0.3.1
    docutils: 0.16
    filelock: 3.0.12
    funcparserlib: 0.3.6
    grako: 3.16.5
    h5py: 2.10.0
    html2text: 2020.1.16
    idna: 2.10
    ihm: 0.17
    imagecodecs: 2020.5.30
    imagecodecs-lite: 2020.1.31
    imagesize: 1.2.0
    ipykernel: 5.3.4
    ipython: 7.18.1
    ipython-genutils: 0.2.0
    jedi: 0.17.2
    Jinja2: 2.11.2
    jupyter-client: 6.1.7
    jupyter-core: 4.6.3
    kiwisolver: 1.3.1
    line-profiler: 2.1.2
    lxml: 4.5.2
    lz4: 3.1.0
    MarkupSafe: 1.1.1
    matplotlib: 3.3.2
    MolecularDynamicsViewer: 1.1
    msgpack: 1.0.0
    netCDF4: 1.5.4
    netifaces: 0.10.9
    networkx: 2.5
    numexpr: 2.7.1
    numpy: 1.19.2
    numpydoc: 1.1.0
    openvr: 1.14.1501
    packaging: 20.4
    parso: 0.7.1
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 7.2.0
    pip: 20.2.3
    pkginfo: 1.5.0.1
    prompt-toolkit: 3.0.8
    psutil: 5.7.2
    ptyprocess: 0.6.0
    pycollada: 0.7.1
    pydicom: 2.0.0
    Pygments: 2.7.1
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 2.4.7
    PySide2: 5.15.1
    python-dateutil: 2.8.1
    pytz: 2020.4
    pyzmq: 19.0.2
    qtconsole: 4.7.7
    QtPy: 1.9.0
    RandomWords: 0.3.0
    requests: 2.24.0
    scipy: 1.5.2
    Send2Trash: 1.5.0
    SEQCROW: 0.20
    setuptools: 50.3.0
    sfftk-rw: 0.6.7.dev1
    shiboken2: 5.15.1
    six: 1.15.0
    snowballstemmer: 2.0.0
    sortedcontainers: 2.2.2
    Sphinx: 3.2.1
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 2.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 1.0.3
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.4
    suds-jurko: 0.6
    tables: 3.6.1
    tifffile: 2020.9.3
    tinyarray: 1.2.3
    tornado: 6.1
    traitlets: 5.0.5
    urllib3: 1.25.11
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.35.1

Change History (3)

comment:1 by Tom Goddard, 5 years ago

Cc: tony.schaefer@… added
Component: UnassignedThird Party
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionSEQCROW uses deprecated PyQt5 imports

Another deprecated PyQt5 import SECROW does is from PyQt5.Qt import QClipboard. Modern Qt uses from PyQt5.QtGui import QClipboard QIcon and from PyQt5.QtWidgets import QStyle. I believe in ancient times, maybe Qt 4, these things resided in the Qt submodule. PySIde2 does not allow using them through those former locations.

After adding PySide2.Qt entries for QIcon, QStyle, QClipboard I was able to show all the SEQCROW and Aaron Tools gui panels with PySide2. I tried a few simple things but most of the GUI functionality was not tested because I don't know how to use it.

I was doing this test to see if I could maintain compatibility in ChimeraX 1.2 / PySide2 with the current PyQt5 SECROW 0.20.

in reply to:  2 ; comment:2 by Tony Schaefer, 5 years ago

Thanks for the heads up. I've moved the imports; they'll be in the right place in the next SEQCROW update. I punched `from PyQt5.Qt import *` into the shell, and it looks like PyQt5 lets you import basically everything from PyQt5.Qt.
________________________________
From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu>
Sent: Tuesday, December 1, 2020 12:59 AM
Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; goddard@sonic.net <goddard@sonic.net>; Anthony James Schaefer <tony.schaefer@uga.edu>
Subject: Re: [ChimeraX] #4000: SEQCROW uses deprecated PyQt5 imports (was: ChimeraX bug report submission)

[EXTERNAL SENDER - PROCEED CAUTIOUSLY]


#4000: SEQCROW uses deprecated PyQt5 imports
----------------------------------+-------------------------
          Reporter:  goddard@…    |      Owner:  Tom Goddard
              Type:  defect       |     Status:  assigned
          Priority:  normal       |  Milestone:
         Component:  Third Party  |    Version:
        Resolution:               |   Keywords:
        Blocked By:               |   Blocking:
Notify when closed:               |   Platform:  all
           Project:  ChimeraX     |
----------------------------------+-------------------------
Changes (by Tom Goddard):

 * status:  new => assigned
 * cc: tony.schaefer@… (added)
 * component:  Unassigned => Third Party
 * project:   => ChimeraX
 * platform:   => all
 * owner:  (none) => Tom Goddard


Comment:

 Another deprecated PyQt5 import SECROW does is from PyQt5.Qt import
 QClipboard.  Modern Qt uses from PyQt5.QtGui import QClipboard,, QIcon and
 from PyQt5.QtWidgets import QStyle.  I believe in ancient times, maybe Qt
 4, these things resided in the Qt submodule.  PySIde2 does not allow using
 them through those former locations.

 After adding PySide2.Qt entries for QIcon, QStyle, QClipboard I was able
 to show all the SEQCROW and Aaron Tools gui panels with PySide2.  I tried
 a few simple things but most of the GUI functionality was not tested
 because I don't know how to use it.

 I was doing this test to see if I could maintain compatibility in ChimeraX
 1.2 / PySide2 with the current PyQt5 SECROW 0.20.

--
Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4000#comment:1>
ChimeraX <http://www.rbvi.ucsf.edu/chimerax/>
ChimeraX Issue Tracker

comment:3 by Tom Goddard, 4 years ago

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.