diff --git a/.github/workflows/ci_workflows.yml b/.github/workflows/ci_workflows.yml index fa8056b0f..4596903e1 100644 --- a/.github/workflows/ci_workflows.yml +++ b/.github/workflows/ci_workflows.yml @@ -36,34 +36,26 @@ jobs: # Standard tests # Linux builds - test on all supported PyQt5 and PySide2 versions, # and include all dependencies in some builds - - linux: py37-test-pyqt510 - - linux: py37-test-pyqt511-all - - linux: py37-test-pyqt512 - - linux: py37-test-pyqt513-all - - linux: py37-test-pyside513-all + - linux: py38-test-pyqt514-all - linux: py38-test-pyside514 - linux: py39-test-pyqt515 + - linux: py39-test-pyside515 - # Try out documentation build on Linux and macOS - - linux: py37-docs-pyqt513 + # Documentation build + - linux: py38-docs-pyqt514 coverage: false - - # Test a few configurations on MacOS X (Big Sur/Monterey on arm64 for py310) - - macos: py37-test-pyqt513 - - macos: py38-test-pyqt514 - PLAT: arm64 - - # Try out documentation build on macOS - - macos: py37-docs-pyqt513 + - macos: py39-docs-pyqt515 coverage: false + # Test a few configurations on MacOS X + - macos: py38-test-pyqt514-all + - macos: py310-test-pyqt515 + # Test some configurations on Windows - - windows: py37-test-pyqt510 - - windows: py310-test-pyqt515 + - windows: py38-test-pyqt514 - # Try out documentation build on Windows - - windows: py38-docs-pyqt513 - coverage: false + # Test against latest developer versions of some packages + - linux: py310-test-pyqt515-dev-all allowed_failures: needs: initial_checks @@ -82,26 +74,23 @@ jobs: envs: | # Some (PySide2 in particular) envs are failing with runtime errors; # PyQt6 and PySide6 support in progress - - linux: py38-test-pyside514 - - linux: py310-test-pyqt63-all - linux: py310-test-pyside63 - - linux: py310-test-pyside515-all - - linux: py310-test-pyqt513-lts - - linux: py310-test-pyqt515-lts - - # Test against latest developer versions of some packages - - linux: py310-test-pyqt515-dev-all + - linux: py310-test-pyqt63-all + - linux: py310-test-pyside64 + - linux: py310-test-pyqt64-all - - macos: py38-test-pyside514 - - macos: py310-test-pyqt515-all - - macos: py310-test-pyqt63 - macos: py310-test-pyside63 + - macos: py310-test-pyqt64 - - windows: py38-test-pyqt514-all - - windows: py39-test-pyside515-all - windows: py310-test-pyqt63 - - windows: py310-test-pyside63 + - windows: py310-test-pyside64 + + # Windows docs build + - windows: py310-docs-pyqt515 + coverage: false + # Failure in test_close_tab + - windows: py310-test-pyqt515-all publish: needs: tests diff --git a/.readthedocs.yml b/.readthedocs.yml index 63e4ab76f..10d4fd023 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -4,7 +4,7 @@ build: image: latest python: - version: 3.7 + version: 3.8 install: - method: pip path: . diff --git a/doc/installation/dependencies.rst b/doc/installation/dependencies.rst index afb0cc5de..c58c5d2a7 100644 --- a/doc/installation/dependencies.rst +++ b/doc/installation/dependencies.rst @@ -5,7 +5,7 @@ Full list of dependencies Glue has the following required dependencies: -* Python 3.6 or later +* Python 3.8 or later * `Numpy `_ 1.16 or later * `Matplotlib `_ 3.2 or later * `SciPy `_ 1.0 or later @@ -13,7 +13,7 @@ Glue has the following required dependencies: * `Astropy `_ 4.0 or higher * `setuptools `_ 30.3 or later * Either `PyQt5 `__ or - `PySide2 `__ + `PySide2 `__ 5.14 or later * `QtPy `__ 1.9 or later - this is an abstraction layer for the Python Qt packages * `IPython `_ 4.0 or later diff --git a/glue/utils/qt/python_list_model.py b/glue/utils/qt/python_list_model.py index 777249d97..faeeabc06 100644 --- a/glue/utils/qt/python_list_model.py +++ b/glue/utils/qt/python_list_model.py @@ -105,7 +105,7 @@ def pop(self, row=None): Which row to remove. Default=last Returns - -------- + ------- popped : object """ if row is None: diff --git a/glue/viewers/scatter/layer_artist.py b/glue/viewers/scatter/layer_artist.py index b4b70095d..128fc61aa 100644 --- a/glue/viewers/scatter/layer_artist.py +++ b/glue/viewers/scatter/layer_artist.py @@ -315,13 +315,13 @@ def _update_data(self): if self.state.xerr_visible and self.state.xerr_att is not None: xerr = ensure_numerical(self.layer[self.state.xerr_att].ravel()).copy() - keep &= ~np.isnan(xerr) + keep &= ~np.isnan(xerr) & (xerr >= 0.) else: xerr = None if self.state.yerr_visible and self.state.yerr_att is not None: yerr = ensure_numerical(self.layer[self.state.yerr_att].ravel()).copy() - keep &= ~np.isnan(yerr) + keep &= ~np.isnan(yerr) & (yerr >= 0.) else: yerr = None diff --git a/setup.cfg b/setup.cfg index ed762a555..3daf2d728 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,7 +24,7 @@ long_description = file: README.rst [options] zip_safe = False packages = find: -python_requires = >=3.7 +python_requires = >=3.8 setup_requires = setuptools_scm install_requires = numpy>=1.17 @@ -91,7 +91,7 @@ astronomy = recommended = scikit-image qt = - PyQt5>=5.9 + PyQt5>=5.14 test = pytest pytest-cov diff --git a/tox.ini b/tox.ini index 17fb96228..1ccf9b4cb 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py{37,38,39,310}-{codestyle,test,docs}-{pyqt59,pyqt510,pyqt511,pyqt512,pyqt513,pyside511,pyside512,pyside513,pyside514,pyside515,pyqt63,pyside63}-all-{dev,legacy} + py{38,39,310}-{codestyle,test,docs}-{pyqt514,pyqt515,pyside514,pyside515,pyqt63,pyside63}-all-{dev,legacy} requires = pip >= 18.0 setuptools >= 30.3.0 @@ -21,20 +21,14 @@ changedir = test: .tmp/{envname} docs: doc deps = - pyqt59: PyQt5==5.9.* - pyqt510: PyQt5==5.10.* - pyqt511: PyQt5==5.11.* - pyqt512: PyQt5==5.12.* - pyqt513: PyQt5==5.13.* pyqt514: PyQt5==5.14.* pyqt515: PyQt5==5.15.* pyqt63: PyQt6==6.3.* - pyside511: PySide2==5.11.* - pyside512: PySide2==5.12.* - pyside513: PySide2==5.13.* + pyqt64: PyQt6==6.4.* pyside514: PySide2==5.14.* pyside515: PySide2==5.15.* pyside63: PySide6==6.3.* + pyside64: PySide6==6.4.* dev: git+https://github.com/numpy/numpy dev: git+https://github.com/astropy/astropy lts: astropy==5.0.*