Skip to content

DEP: dropping glue integration #5403

@neutrinoceros

Description

@neutrinoceros

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, DataCollection

which 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 GlueApplication

This 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backwards incompatibleThis change will change behaviordependenciesPull requests that update a dependency file

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions