1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263
|
[build-system]
requires = [
"setuptools>=62.1",
"setuptools_scm[toml]>=8.0.1",
"wheel",
"extension-helpers>=1.3.0,<2",
# Comments on numpy build requirement range:
#
# 1. >=2.0.x is the numpy requirement for wheel builds for distribution
# on PyPI - building against 2.x yields wheels that are also
# ABI-compatible with numpy 1.x at runtime.
# 2. Note that building against numpy 1.x works fine too - users and
# redistributors can do this by installing the numpy version they like
# and disabling build isolation.
# 3. The <2.3 upper bound is for matching the numpy deprecation policy,
# it should not be loosened.
"numpy>=2.0.0rc1,<2.3",
]
build-backend = "setuptools.build_meta"
[project]
name = "sunpy"
description = "SunPy core package: Python for Solar Physics"
requires-python = ">=3.11"
readme = { file = "README.rst", content-type = "text/x-rst" }
license = { file = "LICENSE.rst" }
authors = [
{ name = "The SunPy Community", email = "sunpy@googlegroups.com" },
]
dependencies = [
"astropy>=6.1.0",
"numpy>=1.25.0",
"packaging>=23.2",
"parfive[ftp]>=2.1.0",
"pyerfa>=2.0.1.1",
"requests>=2.32.0",
"fsspec>=2023.6.0",
]
dynamic = ["version"]
keywords = ["solar physics", "solar", "science", "sun", "wcs", "coordinates"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: BSD License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Physics",
]
[project.optional-dependencies]
# The list of available extras is also in the installation docs, if you add or remove one please edit it there as well.
asdf = [
"asdf-astropy>=0.5.0",
"asdf>=3.0.0",
]
dask = ["dask[array]>=2023.6.0"]
image = [
"scipy>=1.11.0",
]
jpeg2000 = [
"glymur>=0.13.0",
# While a direct dependency of glymur, we import it to save JPEG2000 files.
# and we had issues with specific versions lxml.
"lxml>=4.9.1,!=5.0.0",
]
map = [
"contourpy>=1.1.0",
"matplotlib>=3.8.0",
"mpl-animators>=1.2.0",
"reproject>=0.12.0",
"scipy>=1.11.0",
]
opencv = ["opencv-python>=4.8.0.74"]
net = [
"beautifulsoup4>=4.13.0",
"drms>=0.7.1",
"python-dateutil>=2.9.0",
"tqdm>=4.66.0",
"zeep>=4.3.0",
]
scikit-image = ["scikit-image>=0.21.0"]
spice = ["spiceypy>=6.0.0"]
timeseries = [
"cdflib>=1.3.2",
"h5netcdf>=1.2.0",
# While a not direct dependency
# We need to raise this to ensure the goes netcdf files open.
"h5py>=3.9.0",
"matplotlib>=3.8.0",
"pandas>=2.1.0",
]
visualization = [
"matplotlib>=3.8.0",
"mpl-animators>=1.2.0",
]
core = ["sunpy[image,map,net,timeseries,visualization]"]
all = ["sunpy[core,asdf,jpeg2000,opencv,spice,scikit-image]"]
# Because of some real *fun* dependancy constraints between aiobotocore, s3fs
# and boto3 this is the best way to get s3fs and boto3 (needed for cdflib)
# installed simultaneously. We only use this extra for tests, but it is
# provided separate for users who want to opt-in to s3 support. It should not be
# included in [all] or conda deps.
s3 = [
"fsspec[s3]>=2023.6.0",
"aiobotocore[boto3]>=2.6.0", # cdflib has it's own special s3 handling which requires boto3
]
tests-
"hvpy>=1.1.0",
"jplephem>=2.19",
"pytest-astropy>=0.11.0",
"pytest-mpl>=0.17.0",
"pytest>=7.4.0",
]
asdf-tests = [
"sunpy[asdf]",
# We can only install this plugin when we have the asdf extra installed
"pytest-asdf-plugin>=0.1.1",
]
tests = [
"sunpy[all,s3,tests-only,asdf-tests]",
]
docs = [
"sunpy[all]",
"sphinx>=7.1.0",
"sphinx-automodapi>=0.16.0",
"packaging>=23.2",
"hvpy>=1.1.0",
"ruamel.yaml>=0.18.0",
"sphinx-changelog>=1.5.0",
"sphinx-copybutton>=0.5.0",
"sphinx-design>=0.5.0",
"sphinx-gallery>=0.14.0",
"sphinxext-opengraph>=0.9.0",
"sunpy-sphinx-theme>=2.0.3",
"sphinxcontrib-bibtex",
]
docs-gallery = [
"sunpy[docs]",
"astroquery>=0.4.6",
"jplephem>=2.19",
"pillow",
]
dev = ["sunpy[docs,tests]"]
[project.urls]
Homepage = "https://sunpy.org"
"Source Code" = "https://github.com/sunpy/sunpy"
Download = "https://pypi.org/project/sunpy"
Documentation = "https://docs.sunpy.org"
Changelog = "https://docs.sunpy.org/en/stable/whatsnew/changelog.html"
"Issue Tracker" = "https://github.com/sunpy/sunpy/issues"
[tool.setuptools]
zip-safe = false
include-package-data = true
platforms = ["any"]
provides = ["sunpy"]
license-files = ["LICENSE.rst"]
[tool.setuptools.packages.find]
include = ["sunpy*"]
exclude = ["sunpy._dev*"]
[tool.setuptools.exclude-package-data]
"*" = ["*.c", "*.h"]
[tool.setuptools_scm]
version_file = "sunpy/_version.py"
[project.entry-points."asdf.resource_mappings"]
sunpy = "sunpy.io.special.asdf.entry_points:get_resource_mappings"
[project.entry-points."asdf.extensions"]
sunpy = "sunpy.io.special.asdf.entry_points:get_extensions"
[tool.distutils.bdist_wheel]
py-limited-api = "cp311"
[tool.extension-helpers]
use_extension_helpers = "true"
[tool.gilesbot]
[ tool.gilesbot.milestones ]
enabled = true
missing_message_long = "This pull request does not have a milestone assigned to it. Only maintainers can change this, so you don't need to worry about it. :smile:"
[tool.gilesbot.circleci_artifacts]
enabled = true
[tool.gilesbot.circleci_artifacts.figure_report]
url = ".tmp/py312-figure/figure_test_images/fig_comparison.html"
message = "Click details to see the figure test comparisons, for py312-figure."
report_on_fail = true
[tool.gilesbot.circleci_artifacts.figure_report_devdeps]
url = ".tmp/py312-figure-devdeps/figure_test_images/fig_comparison.html"
message = "Click details to see the figure test comparisons for py312-figure-devdeps."
report_on_fail = true
[tool.gilesbot.pull_requests]
enabled = true
[tool.gilesbot.towncrier_changelog]
enabled = true
verify_pr_number = true
changelog_skip_label = "No Changelog Entry Needed"
help_url = "https://github.com/sunpy/sunpy/blob/main/changelog/README.rst"
changelog_missing_long = "There isn't a changelog file in this pull request. Please add a changelog file to the `changelog/` directory following the instructions in the changelog [README](https://github.com/sunpy/sunpy/blob/main/changelog/README.rst)."
type_incorrect_long = "The changelog file you added is not one of the allowed types. Please use one of the types described in the changelog [README](https://github.com/sunpy/sunpy/blob/main/changelog/README.rst)"
number_incorrect_long = "The number in the changelog file you added does not match the number of this pull request. Please rename the file."
# TODO: This should be in towncrier.toml but Giles currently only works looks in
# pyproject.toml we should move this back when it's fixed.
[tool.towncrier]
package = "sunpy"
filename = "CHANGELOG.rst"
directory = "changelog/"
issue_format = "`#{issue} <https://github.com/sunpy/sunpy/pull/{issue}>`__"
title_format = "{version} ({project_date})"
[[tool.towncrier.type]]
directory = "breaking"
name = "Breaking Changes"
showcontent = true
[[tool.towncrier.type]]
directory = "deprecation"
name = "Deprecations"
showcontent = true
[[tool.towncrier.type]]
directory = "removal"
name = "Removals"
showcontent = true
[[tool.towncrier.type]]
directory = "feature"
name = "New Features"
showcontent = true
[[tool.towncrier.type]]
directory = "bugfix"
name = "Bug Fixes"
showcontent = true
[[tool.towncrier.type]]
directory = "doc"
name = "Documentation"
showcontent = true
[[tool.towncrier.type]]
directory = "trivial"
name = "Internal Changes"
showcontent = true
|