semvec/pypi-packages huggingface dataset:
pyqt-ext 2025.11.12
Collection of PyQt widgets/tools
Requires Python: >=3.10
Keywords: PyQt, PySide, pyqtgraph

# pyqt-ext
Collection of PyQt/PySide widgets/tools.

![GitHub Tag](https://img.shields.io/github/v/tag/marcel-goldschen-ohm/pyqt-ext?cacheSeconds=1)
![test](https://github.com/marcel-goldschen-ohm/pyqt-ext/actions/workflows/test.yml/badge.svg)
![GitHub Release](https://img.shields.io/github/v/release/marcel-goldschen-ohm/pyqt-ext?include_prereleases&cacheSeconds=1)
![publish](https://github.com/marcel-goldschen-ohm/pyqt-ext/actions/workflows/publish.yml/badge.svg)

The goal of this repo is to provide useful extensions to PyQt all in one place. There are several other PyQt extensions out there, but to my knowledge all of these are very limited in scope. Given this goal, **I encourage everyone to contribute your own extensions to this repo!**

In addition to being useful out-of-the-box, you may find these tools to be helpful templates for rolling your own custom widgets.

- [Install](#install)
- [Documentation](#documentation)

## Install
Requires a PyQt package. Should work with PySide6, PyQt6, or PyQt5. *Note: pyqtgraph is incompatible with PySide6=6.9.1*
```shell
pip install "PySide6 >=6.2.2,!=6.9.1"
```
Install latest release version:
```shell
pip install pyqt-ext
```
Or install latest development version:
```shell
pip install pyqt-ext@git+https://github.com/marcel-goldschen-ohm/pyqt-ext
```

## Documentation
:construction:

- `tree/`
    - **[Abstract tree model/view interface](docs/AbstractTree.md)** [[code](src/pyqt_ext/tree/)] [[example](examples/CustomTreeExample.py)]: Because who wants to go through the pain of deciphering Qt's convoluted tree model/view design which is infuriating each and every time you work with it. Includes drag-n-drop moving within a tree. See [example](examples/CustomTreeExample.py) for a custom tree using this interface.
    - **[(Key, Value) tree model/view](docs/KeyValueTree.md)** [[code](src/pyqt_ext/tree/)] [[example](examples/KeyValueTreeExample.py)]: Tree model/view for (key, value) pairs in a dict or list (keys are list indices). Can be nested to any level. Uses the abstract tree interface above.
- `utils/`
    - **Color** [[code](src/pyqt_ext/utils/Color.py)]: QColor conversions.
- `widgets/`
    - **Collapsible section** [[code](src/pyqt_ext/widgets/CollapsibleSection.py)] [[example](examples/CollapsibleSectionExample.py)]: Widget with header that can be toggled to expand/collapse a layout.
    - **Color selection button** [[code](src/pyqt_ext/widgets/ColorButton.py)] [[example](examples/ColorButtonExample.py)]: Tool button that displays selected color and opens color selection dialog on click.
    - **Multi-value spinbox** [[code](src/pyqt_ext/widgets/MultiValueSpinBox.py)] [[example](examples/MultiValueSpinBoxExample.py)]: Spin box allowing multiple selected values and value ranges. Works with string values too.
    - **Table widget with copy/paste** [[code](src/pyqt_ext/widgets/TableWidgetWithCopyPaste.py)]: QTableWidget with copy/paste to/from clipboard.

## Dev notes
For PDM lockfile:
```
pdm lock --strategy cross_platform
```
dinosaur 1.3.5
Differentiable Dynamics for Global Atmospheric Modeling 🦖
Requires Python: >=3.10

# Dinosaur: Differentiable Dynamics for Global Atmospheric Modeling 🦖

Authors: Jamie A. Smith, Dmitrii Kochkov, Peter Norgaard, Janni Yuval, Stephan Hoyer

Dinosaur is an old-fashioned (some might say prehistoric) dynamical core for global atmospheric modeling, re-written in [JAX](https://github.com/jax-ml/jax) to meet the needs of modern AI weather/climate models:

- *Dynamics*: Dinosaur uses spectral methods to solve the shallow water equations and the primitive equations (moist and dry) on sigma coordinates.
- *Auto-diff*: Dinosaur supports both forward- and backward-mode automatic differentiation in JAX. This enables "online training" of hybrid AI/physics models.
- *Acceleration*: Dinosaur is designed to run efficiently on modern accelerator
hardware (GPU/TPU), including parallelization across multiple devices.

For more details, see our paper [Neural General Circulation Models for Weather and Climate](https://www.nature.com/articles/s41586-024-07744-y).

## Usage instructions

Dinosaur is an experimental research project that we are still working on
documenting.

We currently have three notebooks illustrating how to use Dinosaur:

- [Baroclinic instability](https://nbviewer.org/github/neuralgcm/dinosaur/blob/main/notebooks/baroclinic_instability.ipynb)
- [Held-Suarez forcing](https://nbviewer.org/github/neuralgcm/dinosaur/blob/main/notebooks/held_suarez.ipynb)
- [Weather forecast on ERA5](https://nbviewer.org/github/neuralgcm/dinosaur/blob/main/notebooks/weather_forecast_on_era5.ipynb)

We recommend running them using [Google Colab](https://colab.research.google.com/) with a GPU runtime.
You can also install Dinosaur locally: `pip install dinosaur`

## See also

If you like Dinosaur, you might also like
[SpeedyWeather.jl](https://github.com/SpeedyWeather/SpeedyWeather.jl), which
solves similar equations in Julia.

## Contributing

See [`CONTRIBUTING.md`](CONTRIBUTING.md) for details. We are open to user
contributions, but please reach out (either on GitHub or by email) to coordinate
before starting significant work.

## License

Apache 2.0; see [`LICENSE`](LICENSE) for details.