-
Notifications
You must be signed in to change notification settings - Fork 309
Description
Context: glueviz is a meta package with a huge dependency tree
glueviz's entire dep tree
❯ uv tree --package glueviz
Resolved 236 packages in 5ms
glueviz v1.4.0
├── glue-core[all] v1.24.1
│ ├── astropy v7.2.0
│ │ ├── astropy-iers-data v0.2025.11.10.0.38.31
│ │ ├── numpy v2.4.2
│ │ ├── packaging v26.0
│ │ ├── pyerfa v2.0.1.5
│ │ │ └── numpy v2.4.2
│ │ └── pyyaml v6.0.3
│ ├── dill v0.4.0
│ ├── echo v0.11.1
│ │ └── numpy v2.4.2
│ ├── fast-histogram v0.14
│ │ └── numpy v2.4.2
│ ├── h5py v3.15.1
│ │ └── numpy v2.4.2
│ ├── ipython v9.7.0
│ │ ├── decorator v5.2.1
│ │ ├── ipython-pygments-lexers v1.1.1
│ │ │ └── pygments v2.19.2
│ │ ├── jedi v0.19.2
│ │ │ └── parso v0.8.5
│ │ ├── matplotlib-inline v0.2.1
│ │ │ └── traitlets v5.14.3
│ │ ├── pexpect v4.9.0
│ │ │ └── ptyprocess v0.7.0
│ │ ├── prompt-toolkit v3.0.52
│ │ │ └── wcwidth v0.2.14
│ │ ├── pygments v2.19.2
│ │ ├── stack-data v0.6.3
│ │ │ ├── asttokens v3.0.1
│ │ │ ├── executing v2.2.1
│ │ │ └── pure-eval v0.2.3
│ │ └── traitlets v5.14.3
│ ├── matplotlib v3.10.8
│ │ ├── contourpy v1.3.3
│ │ │ └── numpy v2.4.2
│ │ ├── cycler v0.12.1
│ │ ├── fonttools v4.60.1
│ │ ├── kiwisolver v1.4.9
│ │ ├── numpy v2.4.2
│ │ ├── packaging v26.0
│ │ ├── pillow v12.1.1
│ │ ├── pyparsing v3.2.5
│ │ └── python-dateutil v2.9.0.post0
│ │ └── six v1.17.0
│ ├── mpl-scatter-density v0.8
│ │ ├── fast-histogram v0.14 (*)
│ │ ├── matplotlib v3.10.8 (*)
│ │ └── numpy v2.4.2
│ ├── numpy v2.4.2
│ ├── openpyxl v3.1.5
│ │ └── et-xmlfile v2.0.0
│ ├── pandas v2.3.3
│ │ ├── numpy v2.4.2
│ │ ├── python-dateutil v2.9.0.post0 (*)
│ │ ├── pytz v2025.2
│ │ └── tzdata v2025.2
│ ├── scipy v1.16.3
│ │ └── numpy v2.4.2
│ ├── shapely v2.1.2
│ │ └── numpy v2.4.2
│ ├── xlrd v2.0.2
│ ├── astrodendro v0.3.1 (extra: all)
│ │ ├── astropy v7.2.0 (*)
│ │ ├── h5py v3.15.1 (*)
│ │ ├── matplotlib v3.10.8 (*)
│ │ └── numpy v2.4.2
│ ├── pillow v12.1.1 (extra: all)
│ ├── pyavm v0.9.8 (extra: all)
│ ├── scikit-image v0.25.2 (extra: all)
│ │ ├── imageio v2.37.2
│ │ │ ├── numpy v2.4.2
│ │ │ └── pillow v12.1.1
│ │ ├── lazy-loader v0.4
│ │ │ └── packaging v26.0
│ │ ├── networkx v3.5
│ │ ├── numpy v2.4.2
│ │ ├── packaging v26.0
│ │ ├── pillow v12.1.1
│ │ ├── scipy v1.16.3 (*)
│ │ └── tifffile v2025.10.16
│ │ └── numpy v2.4.2
│ ├── scipy v1.16.3 (extra: all) (*)
│ └── spectral-cube v0.6.7 (extra: all)
│ ├── astropy v7.2.0 (*)
│ ├── casa-formats-io v0.3.0
│ │ ├── astropy v7.2.0 (*)
│ │ ├── dask[array] v2025.11.0
│ │ │ ├── click v8.3.1
│ │ │ ├── cloudpickle v3.1.2
│ │ │ ├── fsspec v2025.10.0
│ │ │ ├── packaging v26.0
│ │ │ ├── partd v1.4.2
│ │ │ │ ├── locket v1.0.0
│ │ │ │ └── toolz v1.1.0
│ │ │ ├── pyyaml v6.0.3
│ │ │ ├── toolz v1.1.0
│ │ │ └── numpy v2.4.2 (extra: array)
│ │ └── numpy v2.4.2
│ ├── dask[array] v2025.11.0 (*)
│ ├── joblib v1.5.2
│ ├── numpy v2.4.2
│ ├── packaging v26.0
│ ├── radio-beam v0.3.9
│ │ ├── astropy v7.2.0 (*)
│ │ ├── numpy v2.4.2
│ │ └── scipy v1.16.3 (*)
│ ├── setuptools v80.9.0
│ └── tqdm v4.67.1
├── glue-qt v0.3.3
│ ├── astropy v7.2.0 (*)
│ ├── echo v0.11.1 (*)
│ ├── glue-core v1.24.1 (*)
│ ├── ipykernel v7.1.0
│ │ ├── appnope v0.1.4
│ │ ├── comm v0.2.3
│ │ ├── debugpy v1.8.17
│ │ ├── ipython v9.7.0 (*)
│ │ ├── jupyter-client v8.6.3
│ │ │ ├── jupyter-core v5.9.1
│ │ │ │ ├── platformdirs v4.5.0
│ │ │ │ └── traitlets v5.14.3
│ │ │ ├── python-dateutil v2.9.0.post0 (*)
│ │ │ ├── pyzmq v27.1.0
│ │ │ ├── tornado v6.5.2
│ │ │ └── traitlets v5.14.3
│ │ ├── jupyter-core v5.9.1 (*)
│ │ ├── matplotlib-inline v0.2.1 (*)
│ │ ├── nest-asyncio v1.6.0
│ │ ├── packaging v26.0
│ │ ├── psutil v7.1.3
│ │ ├── pyzmq v27.1.0
│ │ ├── tornado v6.5.2
│ │ └── traitlets v5.14.3
│ ├── ipython v9.7.0 (*)
│ ├── matplotlib v3.10.8 (*)
│ ├── numpy v2.4.2
│ ├── pvextractor v0.4
│ │ ├── astropy v7.2.0 (*)
│ │ ├── matplotlib v3.10.8 (*)
│ │ ├── numpy v2.4.2
│ │ ├── qtpy v2.4.3
│ │ │ └── packaging v26.0
│ │ ├── scipy v1.16.3 (*)
│ │ └── spectral-cube v0.6.7 (*)
│ ├── qtconsole v5.7.0
│ │ ├── ipykernel v7.1.0 (*)
│ │ ├── ipython-pygments-lexers v1.1.1 (*)
│ │ ├── jupyter-client v8.6.3 (*)
│ │ ├── jupyter-core v5.9.1 (*)
│ │ ├── packaging v26.0
│ │ ├── pygments v2.19.2
│ │ ├── qtpy v2.4.3 (*)
│ │ └── traitlets v5.14.3
│ ├── qtpy v2.4.3 (*)
│ ├── scipy v1.16.3 (*)
│ └── setuptools v80.9.0
└── glue-vispy-viewers v1.3.0
├── echo v0.11.1 (*)
├── glfw v2.10.0
├── glue-core v1.24.1 (*)
├── imageio v2.37.2 (*)
├── matplotlib v3.10.8 (*)
├── numpy v2.4.2
├── pyopengl v3.1.10
├── scipy v1.16.3 (*)
└── vispy v0.15.2
├── freetype-py v2.5.1
├── hsluv v5.0.4
├── kiwisolver v1.4.9
├── numpy v2.4.2
└── packaging v26.0
(*) Package tree already displayed
I wanted to reduce our dependency on it to the actual minimal set of requirement that actually interplay with yt, so I went searching for places in yt that actually import it. I found two different import statements (both repeated in multiple places)
from glue.core import Data, DataCollectionwhich clearly requires glue-core, and nothing else.
And a much more complicated one GlueApplication
if ytcfg.get("yt", "internals", "within_testing"):
from glue.core.application_base import Application as GlueApplication
else:
try:
from glue.app.qt.application import GlueApplication
except ImportError:
from glue.qt.glue_application import GlueApplicationThis is extremely broken: the only path that doesn't raise an ImportError is the "test-only" one, which suggests that the actual code is not functional and silently untested.
There's another place with a plain from glue.app.qt.application import GlueApplication which is simply broken under current versions of glueviz, but again, this is never caught in tests because it isn't tested.
I never heard anyone complaining about this clearly usuable part of yt, which seems like a good indicator that it's not just untested: it's also not used/relied on, so I would propose we simply drop it instead of spending any effort trying to salvage something nobody needs.