diff --git a/.cruft.json b/.cruft.json index 60b03d3dc..c2475d6e2 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "https://github.com/sunpy/package-template", - "commit": "2d254ec79b0b2d9dfb8d7d08ebd83fa6da234b46", + "commit": "bea8060eef60df35f7df61d9db1d56b838bda01a", "checkout": null, "context": { "cookiecutter": { @@ -17,7 +17,7 @@ "changelog_url": "https://docs.sunpy.org/projects/ndcube/en/stable/whatsnew/changelog.html", "issue_tracker_url": "https://github.com/sunpy/ndcube/issues", "license": "BSD 2-Clause", - "minimum_python_version": "3.10", + "minimum_python_version": "3.11", "use_compiled_extensions": "n", "enable_dynamic_dev_versions": "y", "include_example_code": "n", @@ -32,7 +32,7 @@ ".github/workflows/sub_package_update.yml" ], "_template": "https://github.com/sunpy/package-template", - "_commit": "2d254ec79b0b2d9dfb8d7d08ebd83fa6da234b46" + "_commit": "bea8060eef60df35f7df61d9db1d56b838bda01a" } }, "directory": null diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9efeef115..98a8641f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,10 +35,10 @@ jobs: sdist_verify: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-python@v6 with: - python-version: '3.12' + python-version: '3.13' - run: python -m pip install -U --user build - run: python -m build . --sdist - run: python -m pip install -U --user twine @@ -53,9 +53,10 @@ jobs: toxdeps: tox-pypi-filter posargs: -n auto envs: | - - windows: py311 + - linux: py314 + - windows: py312 - macos: py312 - - linux: py310-oldestdeps + - linux: py311-oldestdeps secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} @@ -63,7 +64,7 @@ jobs: needs: [core] uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@v2 with: - default_python: '3.12' + default_python: '3.13' submodules: false pytest: false toxdeps: tox-pypi-filter @@ -87,12 +88,12 @@ jobs: ) uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@v1 with: - default_python: '3.12' + default_python: '3.13' submodules: false coverage: codecov toxdeps: tox-pypi-filter envs: | - - linux: py311-devdeps + - linux: py314-devdeps secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} @@ -108,7 +109,7 @@ jobs: needs: [test, docs] uses: OpenAstronomy/github-actions-workflows/.github/workflows/publish_pure_python.yml@v2 with: - python-version: '3.12' + python-version: '3.13' test_extras: 'all,tests' test_command: 'pytest -p no:warnings --doctest-rst --pyargs ndcube' submodules: false diff --git a/.github/workflows/sub_package_update.yml b/.github/workflows/sub_package_update.yml index e9625b145..11373d62a 100644 --- a/.github/workflows/sub_package_update.yml +++ b/.github/workflows/sub_package_update.yml @@ -22,9 +22,9 @@ jobs: strategy: fail-fast: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: "3.11" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9ceaf0dba..2e32acd20 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ repos: # This should be before any formatting hooks like isort - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.13.3" + rev: "v0.13.2" hooks: - id: ruff args: ["--fix"] diff --git a/.ruff.toml b/.ruff.toml index e38d68441..158837084 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -34,8 +34,6 @@ select = [ extend-ignore = [ # pycodestyle (E, W) "E501", # ignore line length will use a formatter instead - # pyupgrade (UP) - "UP038", # Use | in isinstance - not compatible with models and is slower # numpy "NPY002", # TODO: migrate from np.random.rand to np.random.Generator # pytest (PT) diff --git a/changelog/889.breaking.rst b/changelog/889.breaking.rst new file mode 100644 index 000000000..3e5dd68d1 --- /dev/null +++ b/changelog/889.breaking.rst @@ -0,0 +1,5 @@ +Increased minimum version of Python to 3.11. +Increased minimum version of NumPy to 1.26.0. +Increased minimum version of SciPy to 1.12.0. +Increased minimum version of astropy to 6.0.0. +Increased minimum version of gwcs to 0.20.0. diff --git a/docs/installation.rst b/docs/installation.rst index 370e6f1af..9a6c6ab11 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -4,8 +4,6 @@ Installing ``ndcube`` ********************* -`ndcube` requires Python >=3.9, ``astropy``>=5.0, ``numpy``>=1.21 and ``gwcs``>=0.18. - Installing the release version ------------------------------ diff --git a/pyproject.toml b/pyproject.toml index 0fb95c798..5a0cd995f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,23 +9,30 @@ build-backend = "setuptools.build_meta" [project] name = "ndcube" description = "A package for multi-dimensional contiguous and non-contiguous coordinate aware arrays." -requires-python = ">=3.10" +requires-python = ">=3.11" readme = { file = "README.rst", content-type = "text/x-rst" } license = { file = "licenses/LICENSE.rst" } authors = [ { name = "The SunPy Community", email = "sunpy@googlegroups.com" }, ] dependencies = [ - "astropy>=5.0.6,!=5.1.0", - "gwcs>=0.18", - "numpy>=1.23.0", - "scipy>=1.8.0", + "astropy>=6.0.0", + "gwcs>=0.20.0", + "numpy>=1.26.0", + "scipy>=1.12.0", ] dynamic = ["version"] [project.optional-dependencies] +# These are truly optional deps or deps only used for testing where we +# want oldestdeps to test them +tests-optional = [ + "dask>=2023.10.0", + "specutils>=1.12.0", + "sunpy>=6.1.0", +] tests = [ - "dask", + "ndcube[all,tests-optional]", "pytest-astropy", "pytest-cov", "pytest-doctestplus", @@ -33,28 +40,23 @@ tests = [ "pytest-xdist", "pytest", "pytest-memray; sys_platform != 'win32'", - "scipy", - "specutils", - "sunpy>=5.0.0", ] docs = [ + "ndcube[all,tests-optional]", "sphinx", "sphinx-automodapi", "sunpy-sphinx-theme", "packaging", - "matplotlib", - "mpl-animators>=1.0", "sphinx-changelog>=1.1.0", "sphinx-gallery", "sphinxext-opengraph", - "sunpy>=5.0.0", ] plotting = [ - "matplotlib>=3.5.0", + "matplotlib>=3.8.0", "mpl_animators>=1.0", ] reproject = [ - "reproject>=0.7.1", + "reproject>=0.13", # first version with 3.12 support ] all = [ "ndcube[plotting,reproject]", diff --git a/tox.ini b/tox.ini index e7e613ffe..12c8e1603 100644 --- a/tox.ini +++ b/tox.ini @@ -3,9 +3,9 @@ min_version = 4.0 requires = tox-pypi-filter>=0.14 envlist = - py{310,311,312} - py312-devdeps - py310-oldestdeps + py{311,312,313,314} + py314-devdeps + py311-oldestdeps codestyle build_docs @@ -66,7 +66,7 @@ extras = reproject tests commands_pre = - oldestdeps: minimum_dependencies ndcube --filename requirements-min.txt + oldestdeps: minimum_dependencies ndcube --extras plotting reproject tests-optional --filename requirements-min.txt oldestdeps: pip install -r requirements-min.txt oldestdeps: python -c "import astropy.time; astropy.time.update_leap_seconds()" pip freeze --all --no-input