diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index abc8b6d..8590afd 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -134,7 +134,7 @@ jobs: # and requires that you have put your twine API key in your # github secrets (see readme for details) needs: [test] - if: ${{ github.repository == 'napari/qwidgets' && contains(github.ref, 'tags') }} + if: ${{ github.repository == 'napari/superqt' && contains(github.ref, 'tags') }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5881be8..fa990ab 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,8 +9,8 @@ To get started fork this repository, and clone your fork: ```bash # clone your fork -git clone https://github.com//qwidgets -cd qwidgets +git clone https://github.com//superqt +cd superqt # install pre-commit hooks pre-commit install @@ -32,7 +32,7 @@ All widgets must be well-tested, and should work on: - macOS, Windows, & Linux Until [qtpy](https://github.com/spyder-ide/qtpy) supports PyQt6/PySide6, imports -should use (and modify if necessary) `qwidgets.qtcompat`. +should use (and modify if necessary) `superqt.qtcompat`. ## Style Guide diff --git a/LICENSE b/LICENSE index 80382a5..725393b 100644 --- a/LICENSE +++ b/LICENSE @@ -12,7 +12,7 @@ modification, are permitted provided that the following conditions are met: this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -* Neither the name of qwidgets nor the names of its +* Neither the name of superqt nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/README.md b/README.md index 1c83cc1..4524258 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# ![tiny](https://user-images.githubusercontent.com/1609449/120636353-8c3f3800-c43b-11eb-8732-a14dec578897.png) extra-qt! +# ![tiny](https://user-images.githubusercontent.com/1609449/120636353-8c3f3800-c43b-11eb-8732-a14dec578897.png) superqt! -[![License](https://img.shields.io/pypi/l/qwidgets.svg?color=green)](https://github.com/napari/qwidgets/raw/master/LICENSE) -[![PyPI](https://img.shields.io/pypi/v/qwidgets.svg?color=green)](https://pypi.org/project/qwidgets) +[![License](https://img.shields.io/pypi/l/superqt.svg?color=green)](https://github.com/napari/superqt/raw/master/LICENSE) +[![PyPI](https://img.shields.io/pypi/v/superqt.svg?color=green)](https://pypi.org/project/superqt) [![Python -Version](https://img.shields.io/pypi/pyversions/qwidgets.svg?color=green)](https://python.org) -[![Test](https://github.com/napari/qwidgets/actions/workflows/test_and_deploy.yml/badge.svg)](https://github.com/napari/qwidgets/actions/workflows/test_and_deploy.yml) -[![codecov](https://codecov.io/gh/napari/qwidgets/branch/master/graph/badge.svg)](https://codecov.io/gh/napari/qwidgets) +Version](https://img.shields.io/pypi/pyversions/superqt.svg?color=green)](https://python.org) +[![Test](https://github.com/napari/superqt/actions/workflows/test_and_deploy.yml/badge.svg)](https://github.com/napari/superqt/actions/workflows/test_and_deploy.yml) +[![codecov](https://codecov.io/gh/napari/superqt/branch/master/graph/badge.svg)](https://codecov.io/gh/napari/superqt) ### "missing" widgets and components for PyQt/PySide @@ -20,7 +20,6 @@ Components are tested on: - PyQt5 (5.11 and above) & PyQt6 - PySide2 (5.11 and above) & PySide6 - ## Widgets Widgets include: @@ -29,16 +28,16 @@ Widgets include: - [Range Slider](docs/sliders.md#range-slider) (multi-handle slider) -range sliders +range sliders - [Labeled Sliders](docs/sliders.md#labeled-sliders) (sliders with linked spinboxes) - -range sliders -range sliders - +range sliders + +range sliders + - Unbound Integer SpinBox (backed by python `int`) ## Contributing diff --git a/codecov.yml b/codecov.yml index b61ff45..822e86a 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,6 +1,6 @@ ignore: - - qwidgets/_version.py - - qwidgets/qtcompat/* + - superqt/_version.py + - superqt/qtcompat/* - '*_tests*' coverage: status: diff --git a/docs/sliders.md b/docs/sliders.md index a2cab84..1cdb067 100644 --- a/docs/sliders.md +++ b/docs/sliders.md @@ -15,7 +15,7 @@ ## Range Slider ```python -from qwidgets import QRangeSlider +from superqt import QRangeSlider # as usual: # you must create a QApplication before create a widget. @@ -172,7 +172,7 @@ This package also includes two "labeled" slider variants. One for `QRangeSlider` ![labeled_range](images/labeled_range.png) ```python -from qwidgets import QLabeledRangeSlider +from superqt import QLabeledRangeSlider ``` This has the same API as `QRangeSlider` with the following additional options: @@ -217,7 +217,7 @@ If you find that you need to fine tune the position of the handle labels: ![labeled_range](images/labeled_qslider.png) ```python -from qwidgets import QLabeledSlider +from superqt import QLabeledSlider ``` (no additional options at this point) @@ -227,12 +227,12 @@ from qwidgets import QLabeledSlider If you encounter any problems, please [file an issue] along with a detailed description. -[file an issue]: https://github.com/napari/qwidgets/issues +[file an issue]: https://github.com/napari/superqt/issues ## Float Slider just like QSlider, but supports float values ```python -from qwidgets import QDoubleSlider +from superqt import QDoubleSlider ``` diff --git a/examples/basic.py b/examples/basic.py index 2178e9f..13b40d6 100644 --- a/examples/basic.py +++ b/examples/basic.py @@ -1,6 +1,6 @@ -from qwidgets import QRangeSlider -from qwidgets.qtcompat.QtCore import Qt -from qwidgets.qtcompat.QtWidgets import QApplication +from superqt import QRangeSlider +from superqt.qtcompat.QtCore import Qt +from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/examples/basic_float.py b/examples/basic_float.py index 979df20..18c506d 100644 --- a/examples/basic_float.py +++ b/examples/basic_float.py @@ -1,6 +1,6 @@ -from qwidgets import QDoubleSlider -from qwidgets.qtcompat.QtCore import Qt -from qwidgets.qtcompat.QtWidgets import QApplication +from superqt import QDoubleSlider +from superqt.qtcompat.QtCore import Qt +from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/examples/demo_widget.py b/examples/demo_widget.py index a6c63a0..fbd8335 100644 --- a/examples/demo_widget.py +++ b/examples/demo_widget.py @@ -1,6 +1,6 @@ -from qwidgets import QRangeSlider -from qwidgets.qtcompat import QtCore -from qwidgets.qtcompat import QtWidgets as QtW +from superqt import QRangeSlider +from superqt.qtcompat import QtCore +from superqt.qtcompat import QtWidgets as QtW QSS = """ QSlider { diff --git a/examples/float.py b/examples/float.py index 03475f3..5f9f888 100644 --- a/examples/float.py +++ b/examples/float.py @@ -1,6 +1,6 @@ -from qwidgets import QDoubleRangeSlider, QDoubleSlider, QRangeSlider -from qwidgets.qtcompat.QtCore import Qt -from qwidgets.qtcompat.QtWidgets import QApplication, QVBoxLayout, QWidget +from superqt import QDoubleRangeSlider, QDoubleSlider, QRangeSlider +from superqt.qtcompat.QtCore import Qt +from superqt.qtcompat.QtWidgets import QApplication, QVBoxLayout, QWidget app = QApplication([]) diff --git a/examples/generic.py b/examples/generic.py index bb296e2..656bd2e 100644 --- a/examples/generic.py +++ b/examples/generic.py @@ -1,6 +1,6 @@ -from qwidgets import QDoubleSlider -from qwidgets.qtcompat.QtCore import Qt -from qwidgets.qtcompat.QtWidgets import QApplication +from superqt import QDoubleSlider +from superqt.qtcompat.QtCore import Qt +from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/examples/labeled.py b/examples/labeled.py index bdeb9a1..aed02f1 100644 --- a/examples/labeled.py +++ b/examples/labeled.py @@ -1,11 +1,11 @@ -from qwidgets import ( +from superqt import ( QLabeledDoubleRangeSlider, QLabeledDoubleSlider, QLabeledRangeSlider, QLabeledSlider, ) -from qwidgets.qtcompat.QtCore import Qt -from qwidgets.qtcompat.QtWidgets import QApplication, QHBoxLayout, QVBoxLayout, QWidget +from superqt.qtcompat.QtCore import Qt +from superqt.qtcompat.QtWidgets import QApplication, QHBoxLayout, QVBoxLayout, QWidget app = QApplication([]) diff --git a/examples/multihandle.py b/examples/multihandle.py index b51176c..53b464b 100644 --- a/examples/multihandle.py +++ b/examples/multihandle.py @@ -1,5 +1,5 @@ -from qwidgets import QRangeSlider -from qwidgets.qtcompat.QtWidgets import QApplication +from superqt import QRangeSlider +from superqt.qtcompat.QtWidgets import QApplication app = QApplication([]) diff --git a/setup.cfg b/setup.cfg index 817d7ed..4fd32bc 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,9 +1,9 @@ [metadata] -name = qwidgets +name = superqt description = Missing widgets for PyQt/PySide long_description = file: README.md long_description_content_type = text/markdown -url = https://github.com/napari/qwidgets +url = https://github.com/napari/superqt author = Talley Lambert author_email = talley.lambert@gmail.com license = BSD-3-Clause @@ -27,9 +27,9 @@ classifiers = Topic :: Software Development :: Widget Sets keywords = qt, range slider, widget project_urls = - Source = https://github.com/napari/qwidgets - Tracker = https://github.com/napari/qwidgets/issues - Changelog = https://github.com/napari/qwidgets/blob/master/CHANGELOG.md + Source = https://github.com/napari/superqt + Tracker = https://github.com/napari/superqt/issues + Changelog = https://github.com/napari/superqt/blob/master/CHANGELOG.md [options] packages = find: diff --git a/setup.py b/setup.py index c45171e..5ef4521 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup setup( - use_scm_version={"write_to": "qwidgets/_version.py"}, + use_scm_version={"write_to": "superqt/_version.py"}, setup_requires=["setuptools_scm"], ) diff --git a/qwidgets/__init__.py b/superqt/__init__.py similarity index 90% rename from qwidgets/__init__.py rename to superqt/__init__.py index 18f5655..1913b7a 100644 --- a/qwidgets/__init__.py +++ b/superqt/__init__.py @@ -1,4 +1,4 @@ -"""qwidgets is a collection of QtWidgets for python.""" +"""superqt is a collection of QtWidgets for python.""" try: from ._version import version as __version__ except ImportError: diff --git a/qwidgets/qtcompat/QtCore.py b/superqt/qtcompat/QtCore.py similarity index 100% rename from qwidgets/qtcompat/QtCore.py rename to superqt/qtcompat/QtCore.py diff --git a/qwidgets/qtcompat/QtGui.py b/superqt/qtcompat/QtGui.py similarity index 100% rename from qwidgets/qtcompat/QtGui.py rename to superqt/qtcompat/QtGui.py diff --git a/qwidgets/qtcompat/QtWidgets.py b/superqt/qtcompat/QtWidgets.py similarity index 100% rename from qwidgets/qtcompat/QtWidgets.py rename to superqt/qtcompat/QtWidgets.py diff --git a/qwidgets/qtcompat/__init__.py b/superqt/qtcompat/__init__.py similarity index 98% rename from qwidgets/qtcompat/__init__.py rename to superqt/qtcompat/__init__.py index 97e3088..9269372 100644 --- a/qwidgets/qtcompat/__init__.py +++ b/superqt/qtcompat/__init__.py @@ -146,7 +146,7 @@ if API in PYSIDE6_API: if API is None: raise PythonQtError( "No Qt bindings could be found.\nYou must install one of the following packages " - "to use qwidgets: PyQt5, PyQt6, PySide2, or PySide6" + "to use superqt: PyQt5, PyQt6, PySide2, or PySide6" ) # If a correct API name is passed to QT_API and it could not be found, diff --git a/qwidgets/sliders/__init__.py b/superqt/sliders/__init__.py similarity index 100% rename from qwidgets/sliders/__init__.py rename to superqt/sliders/__init__.py diff --git a/qwidgets/sliders/_generic_range_slider.py b/superqt/sliders/_generic_range_slider.py similarity index 100% rename from qwidgets/sliders/_generic_range_slider.py rename to superqt/sliders/_generic_range_slider.py diff --git a/qwidgets/sliders/_generic_slider.py b/superqt/sliders/_generic_slider.py similarity index 100% rename from qwidgets/sliders/_generic_slider.py rename to superqt/sliders/_generic_slider.py diff --git a/qwidgets/sliders/_labeled.py b/superqt/sliders/_labeled.py similarity index 100% rename from qwidgets/sliders/_labeled.py rename to superqt/sliders/_labeled.py diff --git a/qwidgets/sliders/_range_style.py b/superqt/sliders/_range_style.py similarity index 100% rename from qwidgets/sliders/_range_style.py rename to superqt/sliders/_range_style.py diff --git a/qwidgets/sliders/_sliders.py b/superqt/sliders/_sliders.py similarity index 100% rename from qwidgets/sliders/_sliders.py rename to superqt/sliders/_sliders.py diff --git a/qwidgets/sliders/_tests/__init__.py b/superqt/sliders/_tests/__init__.py similarity index 100% rename from qwidgets/sliders/_tests/__init__.py rename to superqt/sliders/_tests/__init__.py diff --git a/qwidgets/sliders/_tests/_testutil.py b/superqt/sliders/_tests/_testutil.py similarity index 90% rename from qwidgets/sliders/_tests/_testutil.py rename to superqt/sliders/_tests/_testutil.py index 5b6e555..9a41ab7 100644 --- a/qwidgets/sliders/_tests/_testutil.py +++ b/superqt/sliders/_tests/_testutil.py @@ -4,9 +4,9 @@ from platform import system import pytest -from qwidgets.qtcompat import QT_VERSION -from qwidgets.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from qwidgets.qtcompat.QtGui import QMouseEvent, QWheelEvent +from superqt.qtcompat import QT_VERSION +from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt +from superqt.qtcompat.QtGui import QMouseEvent, QWheelEvent QT_VERSION = LooseVersion(QT_VERSION) diff --git a/qwidgets/sliders/_tests/test_float.py b/superqt/sliders/_tests/test_float.py similarity index 97% rename from qwidgets/sliders/_tests/test_float.py rename to superqt/sliders/_tests/test_float.py index 27a9c53..e2f0a10 100644 --- a/qwidgets/sliders/_tests/test_float.py +++ b/superqt/sliders/_tests/test_float.py @@ -2,13 +2,13 @@ import os import pytest -from qwidgets import ( +from superqt import ( QDoubleRangeSlider, QDoubleSlider, QLabeledDoubleRangeSlider, QLabeledDoubleSlider, ) -from qwidgets.qtcompat import API_NAME +from superqt.qtcompat import API_NAME range_types = {QDoubleRangeSlider, QLabeledDoubleRangeSlider} diff --git a/qwidgets/sliders/_tests/test_generic_slider.py b/superqt/sliders/_tests/test_generic_slider.py similarity index 95% rename from qwidgets/sliders/_tests/test_generic_slider.py rename to superqt/sliders/_tests/test_generic_slider.py index b6a53bd..1784c5a 100644 --- a/qwidgets/sliders/_tests/test_generic_slider.py +++ b/superqt/sliders/_tests/test_generic_slider.py @@ -2,10 +2,10 @@ import math import pytest -from qwidgets.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from qwidgets.qtcompat.QtGui import QHoverEvent -from qwidgets.qtcompat.QtWidgets import QStyle, QStyleOptionSlider -from qwidgets.sliders._generic_slider import _GenericSlider +from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt +from superqt.qtcompat.QtGui import QHoverEvent +from superqt.qtcompat.QtWidgets import QStyle, QStyleOptionSlider +from superqt.sliders._generic_slider import _GenericSlider from ._testutil import _linspace, _mouse_event, _wheel_event, skip_on_linux_qt6 diff --git a/qwidgets/sliders/_tests/test_range_slider.py b/superqt/sliders/_tests/test_range_slider.py similarity index 95% rename from qwidgets/sliders/_tests/test_range_slider.py rename to superqt/sliders/_tests/test_range_slider.py index a671214..a7d33d3 100644 --- a/qwidgets/sliders/_tests/test_range_slider.py +++ b/superqt/sliders/_tests/test_range_slider.py @@ -2,10 +2,10 @@ import math import pytest -from qwidgets import QDoubleRangeSlider, QRangeSlider -from qwidgets.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from qwidgets.qtcompat.QtGui import QHoverEvent -from qwidgets.qtcompat.QtWidgets import QStyle, QStyleOptionSlider +from superqt import QDoubleRangeSlider, QRangeSlider +from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt +from superqt.qtcompat.QtGui import QHoverEvent +from superqt.qtcompat.QtWidgets import QStyle, QStyleOptionSlider from ._testutil import _linspace, _mouse_event, _wheel_event, skip_on_linux_qt6 diff --git a/qwidgets/sliders/_tests/test_single_value_sliders.py b/superqt/sliders/_tests/test_single_value_sliders.py similarity index 95% rename from qwidgets/sliders/_tests/test_single_value_sliders.py rename to superqt/sliders/_tests/test_single_value_sliders.py index a0044da..6032f9b 100644 --- a/qwidgets/sliders/_tests/test_single_value_sliders.py +++ b/superqt/sliders/_tests/test_single_value_sliders.py @@ -4,11 +4,11 @@ from distutils.version import LooseVersion import pytest -from qwidgets import QDoubleSlider, QLabeledDoubleSlider, QLabeledSlider -from qwidgets.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt -from qwidgets.qtcompat.QtGui import QHoverEvent -from qwidgets.qtcompat.QtWidgets import QSlider, QStyle, QStyleOptionSlider -from qwidgets.sliders._generic_slider import _GenericSlider +from superqt import QDoubleSlider, QLabeledDoubleSlider, QLabeledSlider +from superqt.qtcompat.QtCore import QEvent, QPoint, QPointF, Qt +from superqt.qtcompat.QtGui import QHoverEvent +from superqt.qtcompat.QtWidgets import QSlider, QStyle, QStyleOptionSlider +from superqt.sliders._generic_slider import _GenericSlider from ._testutil import ( QT_VERSION, diff --git a/qwidgets/sliders/_tests/test_slider.py b/superqt/sliders/_tests/test_slider.py similarity index 95% rename from qwidgets/sliders/_tests/test_slider.py rename to superqt/sliders/_tests/test_slider.py index a15ef6e..f81e78c 100644 --- a/qwidgets/sliders/_tests/test_slider.py +++ b/superqt/sliders/_tests/test_slider.py @@ -2,10 +2,10 @@ import platform import pytest -from qwidgets import QRangeSlider -from qwidgets.qtcompat import API_NAME -from qwidgets.qtcompat.QtCore import Qt -from qwidgets.sliders._generic_range_slider import SC_BAR, SC_HANDLE, SC_NONE +from superqt import QRangeSlider +from superqt.qtcompat import API_NAME +from superqt.qtcompat.QtCore import Qt +from superqt.sliders._generic_range_slider import SC_BAR, SC_HANDLE, SC_NONE NOT_LINUX = platform.system() != "Linux" NOT_PYSIDE2 = API_NAME != "PySide2" diff --git a/qwidgets/spinbox/__init__.py b/superqt/spinbox/__init__.py similarity index 100% rename from qwidgets/spinbox/__init__.py rename to superqt/spinbox/__init__.py diff --git a/qwidgets/spinbox/_intspin.py b/superqt/spinbox/_intspin.py similarity index 100% rename from qwidgets/spinbox/_intspin.py rename to superqt/spinbox/_intspin.py diff --git a/qwidgets/spinbox/_tests/test_large_int_spinbox.py b/superqt/spinbox/_tests/test_large_int_spinbox.py similarity index 95% rename from qwidgets/spinbox/_tests/test_large_int_spinbox.py rename to superqt/spinbox/_tests/test_large_int_spinbox.py index 7a1a53a..14d63f8 100644 --- a/qwidgets/spinbox/_tests/test_large_int_spinbox.py +++ b/superqt/spinbox/_tests/test_large_int_spinbox.py @@ -1,5 +1,5 @@ -from qwidgets.qtcompat.QtCore import Qt -from qwidgets.spinbox import QLargeIntSpinBox +from superqt.qtcompat.QtCore import Qt +from superqt.spinbox import QLargeIntSpinBox def test_large_spinbox(qtbot): diff --git a/tox.ini b/tox.ini index 40e95a8..42dde97 100644 --- a/tox.ini +++ b/tox.ini @@ -10,8 +10,8 @@ exclude_lines = except ImportError* raise NotImplementedError() omit = - qwidgets/_version.py - qwidgets/qtcompat/* + superqt/_version.py + superqt/qtcompat/* *_tests* [gh-actions] @@ -56,4 +56,4 @@ extras = pyside6: pyside6 commands_pre = pyqt6,pyside6: pip install -U pytest-qt@git+https://github.com/pytest-dev/pytest-qt.git -commands = pytest --color=yes --cov=qwidgets --cov-report=xml {posargs} +commands = pytest --color=yes --cov=superqt --cov-report=xml {posargs}