forked from pydata/xarray
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.cfg
241 lines (217 loc) · 6.9 KB
/
setup.cfg
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
[metadata]
name = xarray
author = xarray Developers
author_email = [email protected]
license = Apache
description = N-D labeled arrays and datasets in Python
long_description_content_type=text/x-rst
long_description =
**xarray** (formerly **xray**) is an open source project and Python package
that makes working with labelled multi-dimensional arrays simple,
efficient, and fun!
xarray introduces labels in the form of dimensions, coordinates and
attributes on top of raw NumPy_-like arrays, which allows for a more
intuitive, more concise, and less error-prone developer experience.
The package includes a large and growing library of domain-agnostic functions
for advanced analytics and visualization with these data structures.
xarray was inspired by and borrows heavily from pandas_, the popular data
analysis package focused on labelled tabular data.
It is particularly tailored to working with netCDF_ files, which were the
source of xarray's data model, and integrates tightly with dask_ for parallel
computing.
.. _NumPy: https://www.numpy.org
.. _pandas: https://pandas.pydata.org
.. _dask: https://dask.org
.. _netCDF: https://www.unidata.ucar.edu/software/netcdf
Why xarray?
-----------
Multi-dimensional (a.k.a. N-dimensional, ND) arrays (sometimes called
"tensors") are an essential part of computational science.
They are encountered in a wide range of fields, including physics, astronomy,
geoscience, bioinformatics, engineering, finance, and deep learning.
In Python, NumPy_ provides the fundamental data structure and API for
working with raw ND arrays.
However, real-world datasets are usually more than just raw numbers;
they have labels which encode information about how the array values map
to locations in space, time, etc.
xarray doesn't just keep track of labels on arrays -- it uses them to provide a
powerful and concise interface. For example:
- Apply operations over dimensions by name: ``x.sum('time')``.
- Select values by label instead of integer location: ``x.loc['2014-01-01']`` or ``x.sel(time='2014-01-01')``.
- Mathematical operations (e.g., ``x - y``) vectorize across multiple dimensions (array broadcasting) based on dimension names, not shape.
- Flexible split-apply-combine operations with groupby: ``x.groupby('time.dayofyear').mean()``.
- Database like alignment based on coordinate labels that smoothly handles missing values: ``x, y = xr.align(x, y, join='outer')``.
- Keep track of arbitrary metadata in the form of a Python dictionary: ``x.attrs``.
Learn more
----------
- Documentation: `<http://xarray.pydata.org>`_
- Issue tracker: `<http://github.com/pydata/xarray/issues>`_
- Source code: `<http://github.com/pydata/xarray>`_
- SciPy2015 talk: `<https://www.youtube.com/watch?v=X0pAhJgySxk>`_
url = https://github.com/pydata/xarray
classifiers =
Development Status :: 5 - Production/Stable
License :: OSI Approved :: Apache Software License
Operating System :: OS Independent
Intended Audience :: Science/Research
Programming Language :: Python
Programming Language :: Python :: 3
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Topic :: Scientific/Engineering
[options]
packages = find:
zip_safe = False # https://mypy.readthedocs.io/en/latest/installed_packages.html
include_package_data = True
python_requires = >=3.7
install_requires =
numpy >= 1.15
pandas >= 0.25
setuptools >= 40.4 # For pkg_resources
setup_requires =
setuptools >= 40.4
setuptools_scm
[options.extras_require]
io =
netCDF4
h5netcdf
scipy
pydap
zarr
fsspec
cftime
rasterio
cfgrib
## Scitools packages & dependencies (e.g: cartopy, cf-units) can be hard to install
# scitools-iris
accel =
scipy
bottleneck
numbagg
parallel =
dask[complete]
viz =
matplotlib
seaborn
nc-time-axis
## Cartopy requires 3rd party libraries and only provides source distributions
## See: https://github.com/SciTools/cartopy/issues/805
# cartopy
complete =
%(io)s
%(accel)s
%(parallel)s
%(viz)s
docs =
%(complete)s
sphinx-autosummary-accessors
sphinx_rtd_theme
ipython
ipykernel
jupyter-client
nbsphinx
scanpydoc
[options.package_data]
xarray =
py.typed
tests/data/*
static/css/*
static/html/*
[tool:pytest]
python_files = test_*.py
testpaths = xarray/tests properties
# Fixed upstream in https://github.com/pydata/bottleneck/pull/199
filterwarnings =
ignore:Using a non-tuple sequence for multidimensional indexing is deprecated:FutureWarning
markers =
flaky: flaky tests
network: tests requiring a network connection
slow: slow tests
[flake8]
ignore =
E203 # whitespace before ':' - doesn't work well with black
E402 # module level import not at top of file
E501 # line too long - let black worry about that
E731 # do not assign a lambda expression, use a def
W503 # line break before binary operator
exclude=
.eggs
doc
[isort]
profile = black
skip_gitignore = true
force_to_top = true
default_section = THIRDPARTY
known_first_party = xarray
[mypy]
# Most of the numerical computing stack doesn't have type annotations yet.
[mypy-affine.*]
ignore_missing_imports = True
[mypy-bottleneck.*]
ignore_missing_imports = True
[mypy-cdms2.*]
ignore_missing_imports = True
[mypy-cf_units.*]
ignore_missing_imports = True
[mypy-cfgrib.*]
ignore_missing_imports = True
[mypy-cftime.*]
ignore_missing_imports = True
[mypy-cupy.*]
ignore_missing_imports = True
[mypy-dask.*]
ignore_missing_imports = True
[mypy-distributed.*]
ignore_missing_imports = True
[mypy-h5netcdf.*]
ignore_missing_imports = True
[mypy-h5py.*]
ignore_missing_imports = True
[mypy-iris.*]
ignore_missing_imports = True
[mypy-matplotlib.*]
ignore_missing_imports = True
[mypy-Nio.*]
ignore_missing_imports = True
[mypy-nc_time_axis.*]
ignore_missing_imports = True
[mypy-numbagg.*]
ignore_missing_imports = True
[mypy-numpy.*]
ignore_missing_imports = True
[mypy-netCDF4.*]
ignore_missing_imports = True
[mypy-netcdftime.*]
ignore_missing_imports = True
[mypy-pandas.*]
ignore_missing_imports = True
[mypy-pint.*]
ignore_missing_imports = True
[mypy-PseudoNetCDF.*]
ignore_missing_imports = True
[mypy-pydap.*]
ignore_missing_imports = True
[mypy-pytest.*]
ignore_missing_imports = True
[mypy-rasterio.*]
ignore_missing_imports = True
[mypy-scipy.*]
ignore_missing_imports = True
[mypy-seaborn.*]
ignore_missing_imports = True
[mypy-setuptools]
ignore_missing_imports = True
[mypy-sparse.*]
ignore_missing_imports = True
[mypy-toolz.*]
ignore_missing_imports = True
[mypy-zarr.*]
ignore_missing_imports = True
# version spanning code is hard to type annotate (and most of this module will
# be going away soon anyways)
[mypy-xarray.core.pycompat]
ignore_errors = True
[aliases]
test = pytest
[pytest-watch]
nobeep = True