Opened 5 years ago
Last modified 4 years ago
#4169 assigned defect
toolshed install command does not handle "*" globbing in file name.
| Reported by: | Owned by: | Greg Couch | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Tool Shed | Version: | |
| Keywords: | Cc: | Eric Pettersen | |
| 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.dev202101220301 (2021-01-22 03:01:58 UTC)
Description
Toolshed install seems to not handle "*" globbing file name. I think all other ChimeraX code handles that.
Also trying to install a wheel that is already installed should give a simple message that it is already installed, not a traceback.
Log:
UI Theme
UCSF ChimeraX version: 1.2.dev202101220301 (2021-01-22)
© 2016-2020 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
> toolshed install ~/Downloads/ChimeraX_themes*.whl
Missing or invalid "bundleNames" argument: Expected a bundle name or a wheel
file name
> toolshed install /Users/goddard/Downloads/ChimeraX_themes-0.3-py3-none-
> any.whl
Traceback (most recent call last):
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/cmd_line/tool.py", line 275, in execute
cmd.run(cmd_text)
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/commands/cli.py", line 2852, in run
result = ci.function(session, **kw_args)
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/commands/toolshed.py", line 301, in toolshed_install
ts.install_bundle(bundles, logger, **kw)
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/core/toolshed/__init__.py", line 898, in install_bundle
_install_bundle(self, bundle, logger, per_user=per_user, reinstall=reinstall,
session=session, no_deps=no_deps)
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/toolshed_utils/__init__.py", line 219, in _install_bundle
raise ToolshedInstalledError("bundle %r already installed" % bundle_name)
chimerax.core.toolshed.ToolshedInstalledError: bundle
'/Users/goddard/Downloads/ChimeraX_themes-0.3-py3-none-any.whl' already
installed
chimerax.core.toolshed.ToolshedInstalledError: bundle
'/Users/goddard/Downloads/ChimeraX_themes-0.3-py3-none-any.whl' already
installed
File
"/Users/goddard/ucsf/chimerax/ChimeraX.app/Contents/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-
packages/chimerax/toolshed_utils/__init__.py", line 219, in _install_bundle
raise ToolshedInstalledError("bundle %r already installed" % bundle_name)
See log for complete Python traceback.
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: 41 days 10:56
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: (None, 'UTF-8')
PySide2 version: 5.15.2
Qt version: 5.15.2
Installed Packages:
alabaster: 0.7.12
appdirs: 1.4.4
appnope: 0.1.2
Babel: 2.9.0
backcall: 0.2.0
biopython: 1.78
blockdiag: 2.0.1
certifi: 2020.12.5
cftime: 1.3.1
chardet: 3.0.4
ChimeraX-AddCharge: 1.0
ChimeraX-AddH: 2.1.3
ChimeraX-AlignmentAlgorithms: 2.0
ChimeraX-AlignmentHdrs: 3.2
ChimeraX-AlignmentMatrices: 2.0
ChimeraX-Alignments: 2.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.0
ChimeraX-Atomic: 1.10.5
ChimeraX-AtomicLibrary: 1.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.1
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.dev202101220301
ChimeraX-CoreFormats: 1.0
ChimeraX-coulombic: 1.0.3
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-DataFormats: 1.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-Maestro: 1.8
ChimeraX-Map: 1.0.2
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.2
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.5
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.4
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0
ChimeraX-SeqView: 2.3
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.3
ChimeraX-STL: 1.0
ChimeraX-Storm: 1.0
ChimeraX-Struts: 1.0
ChimeraX-Surface: 1.0
ChimeraX-SwapAA: 2.0
ChimeraX-SwapRes: 2.1
ChimeraX-TapeMeasure: 1.0
ChimeraX-Test: 1.0
ChimeraX-themes: 0.3
ChimeraX-Toolbar: 1.0
ChimeraX-ToolshedUtils: 1.1
ChimeraX-Tug: 1.0
ChimeraX-UI: 1.4.1
ChimeraX-uniprot: 2.1
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
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.7.0
kiwisolver: 1.3.1
lxml: 4.6.2
lz4: 3.1.0
MarkupSafe: 1.1.1
matplotlib: 3.3.2
MolecularDynamicsViewer: 1.1
msgpack: 1.0.0
netCDF4: 1.5.4
networkx: 2.5
numexpr: 2.7.2
numpy: 1.19.2
numpydoc: 1.1.0
openvr: 1.14.1501
packaging: 20.8
ParmEd: 3.2.0
parso: 0.7.1
pexpect: 4.8.0
pickleshare: 0.7.5
Pillow: 7.2.0
pip: 20.3.1
pkginfo: 1.5.0.1
prompt-toolkit: 3.0.11
psutil: 5.7.2
ptyprocess: 0.7.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.2
python-dateutil: 2.8.1
pytz: 2020.5
pyzmq: 21.0.1
qtconsole: 4.7.7
QtPy: 1.9.0
RandomWords: 0.3.0
requests: 2.24.0
scipy: 1.5.2
Send2Trash: 1.5.0
setuptools: 50.3.2
sfftk-rw: 0.6.7.dev1
shiboken2: 5.15.2
six: 1.15.0
snowballstemmer: 2.1.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.36.0
wheel-filename: 1.2.0
Change History (8)
comment:1 by , 5 years ago
| Component: | Unassigned → Tool Shed |
|---|---|
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → toolshed install command does not handle "*" globbing in file name. |
comment:2 by , 4 years ago
| Cc: | added |
|---|
comment:3 by , 4 years ago
I believe Tom has code that explicitly needs to know whether a set of files comes from a glob operation or not. He would have to explain why.
_If_ we do this, globbing code would need to be removed from the open_command bundle. Also, keep in mind the the result of a glob is not ordered, so the result needs to be sorted to keep a file series in order.
comment:4 by , 4 years ago
OpenFileName(s)Arg already has some class variables that control its behavior. If 'globbing' (default True) was a class variable that controlled whether glob expansion occurred automatically, then open_command could turn it off and not have to change anything else.
comment:5 by , 4 years ago
There are a couple of other things that should possibly move into OpenFileName(s)Arg: os.path.expanduser and os.path.expandvars
follow-up: 6 comment:6 by , 4 years ago
I am not sure if any code needs to know if a set of paths comes from a glob. But I would not change this code before the 1.3 release. Having "*" globbing work for toolshed install seems very low priority.
comment:7 by , 4 years ago
Image stacks do their own globbing, due to needing to some other substitutions first, but I don't think that matters here -- it would still work. Volume series are documented as if globbing matters, as per the below. If it doesn't actually matter, the documentation should be revised.
"When multiple maps with the same grid dimensions are opened in a single command (multiple files specified with wild cards or globbing, or a single multi-map file), this option can be used to enforce loading them as a volume series for playback with vseries or the associated slider (if true), or as independent models (if false). If the option is not used, 3D TIFF images and Chimera map files containing five or more same-sized maps are automatically interpreted as series, if possible."
follow-up: 8 comment:8 by , 4 years ago
That text you quote about the vseries option to the open command does not suggest to me that globbing is treated specially. But if the open command for "open microscopy_00*.tiff" resulted in calling the map file reader multiple times instead of one time with all the files then it would break reading volume series. I don't know how the open command batches files. This stuff is probably best left alone as there is likely to be horrible problems lurking. To delve into that because toolshed install does not allow "*" globbing seems close to insane.
The easiest way to do this would be to add code to OpenFilenameArg and OpenFilenamesArg to use glob.glob() and replace the text with the actual filename(s). And like the shell, if there is no match, leave the text alone.
Eric, Tom, can you think of any cases where we wouldn't want that? Seems like a no-brainer.