h5netcdf 1.8.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v6.0.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-docstring-first
8
+ - id: check-toml
9
+ - id: check-yaml
10
+ - id: debug-statements
11
+ - id: mixed-line-ending
12
+ - repo: https://github.com/astral-sh/ruff-pre-commit
13
+ rev: 'v0.14.1'
14
+ hooks:
15
+ - id: ruff
16
+ args: [ "--fix" ]
17
+ - repo: https://github.com/psf/black
18
+ rev: 25.9.0
19
+ hooks:
20
+ - id: black
21
+ - repo: https://github.com/adamchainz/blacken-docs
22
+ rev: "1.20.0"
23
+ hooks:
24
+ - id: blacken-docs
25
+ additional_dependencies:
26
+ - black==23.9.1
27
+
28
+ ci:
29
+ autoupdate_commit_msg: 'MNT: update pre-commit hooks'
@@ -0,0 +1,6 @@
1
+ The h5netcdf developers:
2
+
3
+ * Stephan Hoyer <shoyer@gmail.com> (main h5netcdf author)
4
+ * Kai Mühlbauer <kmuehlbauer@wradlib.org> (current maintainer)
5
+ * Developers that have contributed to the h5netcdf repository:
6
+ <https://github.com/h5netcdf/h5netcdf/graphs/contributors>
@@ -0,0 +1,369 @@
1
+ Change Log
2
+ ----------
3
+
4
+ Version 1.8.1 (January 23rd, 2026):
5
+
6
+ - Add numpy to default dependencies, update install section to highlight backend installation, update error message on missing backend (:issue:`310`, :pull:`311`) by `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
7
+
8
+ Version 1.8.0 (January 16st, 2026):
9
+
10
+ - Fix ros3 test (:issue:`295`, :pull:`296`).
11
+ By `Ezequiel Cimadevilla Alvarez <https://github.com/zequihg50>`_
12
+ - Update pre-commit.
13
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
14
+ - Fix h5py3 hdf5 1.10 CI run (:pull:`303`).
15
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
16
+ - Support pyfive as an alternative backend ({pull}`273`).
17
+ By `Bryan Lawrence <https://github.com/bnlawrence>`_, `David Hassell
18
+ <https://github.com/davidhassell>`_, `Valeriu Predoi
19
+ <https://github.com/valeriupredoi>`_, `Kai Mühlbauer <https://github.com/kmuehlbauer>`_ and `Stephan Hoyer <https://github.com/shoyer>`_
20
+ - Add support for ``filters()`` for ``Variables`` to match netCDF4 python API.
21
+ By `Mark Harfouche <https://github.com/hmaarrfk>`_.
22
+
23
+ Version 1.7.3 (October 21st, 2025):
24
+
25
+ - Fix indexing with empty arrays and lists (:pull:`297`).
26
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
27
+
28
+ Version 1.7.2 (October 17th, 2025):
29
+
30
+ - Fix regression where format was requested from group instance instead of _root. Simplify logic to check and raise ``CompatibilityError``. (:issue:`293`, :pull:`294`).
31
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
32
+
33
+
34
+ Version 1.7.1 (October 16th, 2025):
35
+
36
+ - Fix regression where attributes with list of strings were written with h5py low-level API instead of high-level API (:issue:`291`, :pull:`292`).
37
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
38
+
39
+ Version 1.7.0 (October 15th, 2025):
40
+
41
+ - Fix unintentional changes in test suite (:pull:`277`).
42
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
43
+ - Create ENUM with low level API to keep order-by-value, add h5dump based tests (:pull:`285`).
44
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_ and `David Huard <https://github.com/huard>`_
45
+ - Fix interoperability issues between netcdf4/h5netcdf, namely resizing variables using partial slices,
46
+ creating string attributes with NULLTERM, proper attachment of _Netcdf4Coordinates and _Netcdf4Dimid as well as special string type fillvalues (:pull:`286`).
47
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_ and `David Huard <https://github.com/huard>`_
48
+ - Add the `format` argument to `h5netcdf.File` and support for the `NETCDF4_CLASSIC` format (:issue:`280`, :pull:`283`).
49
+ By `David Huard <https://github.com/huard>`_
50
+ - Do not return padded arrays for slices larger than variable shape (:issue:`287`, :pull:`288`).
51
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
52
+
53
+ Version 1.6.4 (August 5th, 2025):
54
+
55
+ - Cleanup: pyupgrade --py39-plus (:pull:`272`).
56
+ By `Kurt Schwehr <https://github.com/schwehr>`_
57
+ - Add better error messages when operating on a closed file (:issue:`274`, :pull:`275`).
58
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
59
+
60
+ Version 1.6.3 (June 30th, 2025):
61
+
62
+ - fix invalid string format specifier, match raises/warns with messages in test suite,
63
+ remove tests for h5py < 3.7, fix sphinx issue and pr roles in CHANGELOG.rst (:issue:`269`, :pull:`270`).
64
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
65
+
66
+ Version 1.6.2 (June 26th, 2025):
67
+
68
+ - Codespell fixes (:pull:`261`).
69
+ By `Kurt Schwehr <https://github.com/schwehr>`_
70
+ - Fix hsds/h5pyd test fixture spinup issues (:pull:`265`).
71
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
72
+ - Fix and add circular referrer tests for Python 3.14 and update CI matrix (:pull:`264`).
73
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
74
+ - Avoid opening h5pyd file to check if there is a preexisting file,
75
+ instead remap mode "a" -> "r+", resort to "w" if file doesn't exist (:issue:`262`, :pull:`266`).
76
+ By `Jonas Grönberg <https://github.com/JonasGronberg>`_ and `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
77
+ - Reduce CI time by installing available scientific-python-nightly-wheels and using pip cache (:pull:`267`).
78
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
79
+
80
+ Version 1.6.1 (March 7th, 2025):
81
+
82
+ - Let Variable.chunks return None for scalar variables, independent of what the underlying
83
+ h5ds object returns (:pull:`259`).
84
+ By `Rickard Holmberg <https://github.com/rho-novatron>`_
85
+
86
+ Version 1.6.0 (March 7th, 2025):
87
+
88
+ - Allow specifying `h5netcdf.File(driver="h5pyd")` to force the use of h5pyd (:issue:`255`, :pull:`256`).
89
+ By `Rickard Holmberg <https://github.com/rho-novatron>`_
90
+ - Add pytest-mypy-plugins for xarray nightly test (:pull:`257`).
91
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
92
+
93
+ Version 1.5.0 (January 26th, 2025):
94
+
95
+ - Update CI to new versions (Python 3.13, 3.14 alpha), remove numpy 1 from h5pyd runs (:pull:`250`).
96
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
97
+ - Update CI and reinstate h5pyd/hsds test runs (:pull:`247`).
98
+ By `John Readey <https://github.com/jreadey>`_
99
+ - Allow ``zlib`` to be used as an alias for ``gzip`` for enhanced compatibility with h5netcdf's API and xarray.
100
+ By `Mark Harfouche <https://github.com/hmaarrfk>`_
101
+
102
+ Version 1.4.1 (November 13th, 2024):
103
+
104
+ - Add CI run for hdf5 1.10.6, fix complex tests, fix enum/user type tests (:pull:`244`).
105
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
106
+
107
+
108
+ Version 1.4.0 (October 7th, 2024):
109
+
110
+ - Add UserType class, add EnumType (:pull:`229`).
111
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
112
+ - Refactor fillvalue and dtype handling for user types, enhance sanity checks and tests (:pull:`230`).
113
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
114
+ - Add VLType and CompoundType, commit complex compound type to file. Align with nc-complex (:pull:`227`).
115
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
116
+ - Update h5pyd testing.
117
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
118
+ - CI and lint maintenance (:pull:`235`).
119
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
120
+ - Support wrapping an h5py ``File`` object. Closing the h5netcdf file object
121
+ does not close the h5py file (:pull:`238`).
122
+ By `Thomas Kluyver <https://github.com/takluyver>`_
123
+ - CI and lint maintenance (format README.rst, use more f-strings, change Python 3.9 to 3.10 in CI) (:pull:`239`).
124
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_
125
+
126
+ Version 1.3.0 (November 7th, 2023):
127
+
128
+ - Add ros3 support by checking `driver`-kwarg.
129
+ By `Ezequiel Cimadevilla Alvarez <https://github.com/zequihg50>`_
130
+ - Code and CI maintenance.
131
+ By `Mark Harfouche <https://github.com/hmaarrfk>`_ and
132
+ `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
133
+
134
+ Version 1.2.0 (June 2nd, 2023):
135
+
136
+ - Remove h5py2 compatibility code, remove h5py2 CI runs, mention NEP29 as
137
+ upstream dependency support strategy.
138
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_ and
139
+ `Mark Harfouche <https://github.com/hmaarrfk>`_.
140
+ - Update to pyproject.toml-only build process, adapt CI, use `ruff` for linting, add .pre-commit-config.yaml.
141
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
142
+ - Maintenance CI (use setup-micromamba), fix hsds, fix tests, fix license.
143
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
144
+ - Raise early with h5py-error.
145
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
146
+ - Add simple test to ensure that the shape is stored in the coordinates.
147
+ By `Mark Harfouche <https://github.com/hmaarrfk>`_.
148
+
149
+ Version 1.1.0 (November 23rd, 2022):
150
+
151
+ - Rework adding _FillValue-attribute, add tests.
152
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
153
+ - Add special add_phony method for creating phony dimensions, add test.
154
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
155
+ - Rewrite _unlabeled_dimension_mix (labeled/unlabeled), add tests.
156
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
157
+ - Add default netcdf fillvalues, pad only if necessary, adapt tests.
158
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
159
+ - Fix regression in padding algorithm, add test.
160
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
161
+ - Set ``track_order=True`` by default in created files if h5py 3.7.0 or
162
+ greater is detected to help compatibility with netCDF4-c programs.
163
+ By `Mark Harfouche <https://github.com/hmaarrfk>`_.
164
+
165
+ Version 1.0.2 (August 2nd, 2022):
166
+
167
+ - Adapt boolean indexing as h5py 3.7.0 started supporting it.
168
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
169
+ - Fix several tests to work with new h5py 3.7.0.
170
+ By `Mark Harfouche <https://github.com/hmaarrfk>`_ and `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
171
+
172
+ Version 1.0.1 (June 27th, 2022):
173
+
174
+ - Fix failing tests when using netCDF4 4.9.0.
175
+ Reported and patch submitted by `Bas Couwenberg <https://github.com/sebastic>`_.
176
+
177
+ Version 1.0.0 (March 31st, 2022):
178
+
179
+ - Add HSDS pytest-fixture, make tests work with h5ypd.
180
+ By `Aleksandar Jelenak <https://github.com/ajelenak>`_.
181
+ - Remove `_NCProperties` from existing file if writing invalid netcdf features.
182
+ Warn users if `.nc` file extension is used writing invalid netcdf features.
183
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
184
+ - Remove deprecated code (eg. remove deprecated code (eg. handling mode,
185
+ chunking_heuristics, decode_vlen_strings), adapt LICENSE/AUTHOR.txt,
186
+ prepare repository for release 1.0.
187
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
188
+
189
+ Version 0.15.0 (March 18th, 2022):
190
+
191
+ - Add documentation to ``h5netcdf``, merging current available documentation
192
+ available as ``.rst``-files, in the repo-wiki and new API-docs into one document
193
+ using ``sphinx-doc`` and ``sphinx-book-theme``.
194
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
195
+
196
+ Version 0.14.1 (March 2nd, 2022):
197
+
198
+ - Directly return non-string ``Empty``-type attributes as empty numpy-ndarray.
199
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
200
+
201
+ Version 0.14.0 (February 25, 2022):
202
+
203
+ - Add ``chunking_heuristic`` keyword and custom heuristic ``chunking_heuristic="h5netcdf"``
204
+ with better handling of unlimited dimensions.
205
+ By `Dion Häfner <https://github.com/dionhaefner>`_.
206
+ - Return group name instead of full group path for legacy API.
207
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
208
+ - Add ``endian`` keyword argument ``legacyapi.Dataset.createVariable``.
209
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
210
+ - Resize Dimensions when writing to variables (legacy API only), return padded arrays.
211
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
212
+ - Allow 1D boolean indexers in legacy API.
213
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
214
+ - Revert order tracking by default to avoid a bug in ``h5py`` (Closes Issue
215
+ #136). By `Mark Harfouche <https://github.com/hmaarrfk>`_.
216
+ - Implement Dimension-class.
217
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
218
+ - Return items from 0-dim and one-element 1-dim array attributes. Return multi-element
219
+ attributes as lists. Return string attributes as Python strings decoded from their respective
220
+ encoding (`utf-8`, `ascii`).
221
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
222
+
223
+ Version 0.13.0 (January 12, 2022):
224
+
225
+ - Assign dimensions at creation time, instead of at sync/flush (file-close).
226
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
227
+ - Create/attach dimension scales on the fly, instead of at sync/flush (file-close).
228
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
229
+ - Ensure order tracking is true for newly created netcdf4 files as required
230
+ by the netcdf4 standard. This enables files created by h5netcdf to be
231
+ appended to by netCDF4 library users (Closes Issue #128).
232
+ By `Mark Harfouche <https://github.com/hmaarrfk>`_.
233
+
234
+ Version 0.12.0 (December 20, 2021):
235
+
236
+ - Added ``FutureWarning`` to use ``mode='r'`` as default when opening files.
237
+ By `Ryan Grout <https://github.com/groutr>`_.
238
+ - Moved handling of ``_nc4_non_coord_`` to ``h5netcdf.BaseVariable``.
239
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
240
+ - Write ``_NCProperties`` when overwriting existing files.
241
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
242
+ - Create/Attach dimension scales on append (``mode="r+"``)
243
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
244
+ - Create/Attach/Detach dimension scales only if necessary.
245
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
246
+ - Switch warning into error when using invalid netCDF features.
247
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
248
+ - Avoid circular references to objects referencing h5py objects.
249
+ By `Tom Augspurger <https://github.com/TomAugspurger>`_.
250
+
251
+ Version 0.11.0 (April 20, 2021):
252
+
253
+ - Included ``h5pyd.Dataset`` objects as netCDF variables.
254
+ By `Aleksandar Jelenak <https://github.com/ajelenak>`_.
255
+ - Added automatic PyPI upload on creation of github release.
256
+ - Moved Changelog to CHANGELOG.rst.
257
+ - Updated ``decode_vlen_strings`` ``FutureWarning``.
258
+ - Support for ``h5py.Empty`` strings.
259
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
260
+
261
+ Version 0.10.0 (February 11, 2021):
262
+
263
+ - Replaced ``decode_strings`` with ``decode_vlen_strings``.
264
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
265
+
266
+ Version 0.9.0 (February 7, 2021):
267
+
268
+ - Special thanks to `Kai Mühlbauer <https://github.com/kmuehlbauer>`_ for
269
+ stepping up as a co-maintainer!
270
+ - Support for ``decode_strings``, to restore old behavior with h5py 3.
271
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
272
+
273
+ Version 0.8.1 (July 17, 2020):
274
+
275
+ - Fix h5py deprecation warning in test suite.
276
+
277
+ Version 0.8.0 (February 4, 2020):
278
+
279
+ - Support for reading Datasets with missing dimension scales.
280
+ By `Kai Mühlbauer <https://github.com/kmuehlbauer>`_.
281
+ - Fixed a bug where ``Datatype`` objects were treated as ``Datasets``.
282
+ - Fixed several issues with upstream deprecations.
283
+
284
+ Version 0.7.4 (June 1, 2019):
285
+
286
+ - Fixed a flakey test on Python 2.7 and 3.4.
287
+
288
+ Version 0.7.3 (May 20, 2019):
289
+
290
+ - Fixed another bug that could result in reusing dimension IDs, when modifying
291
+ existing files.
292
+
293
+ Version 0.7.1 (Mar 16, 2019):
294
+
295
+ - Fixed a bug where h5netcdf could write invalid netCDF files with reused
296
+ dimension IDs when dimensions are written in multiple groups.
297
+ netCDF-C 4.6.2 will crash when reading these files, but you can still read
298
+ these files with older versions of the netcdf library (or h5netcdf).
299
+ - Updated to use version 2 of ``_NCProperties`` attribute.
300
+
301
+ Version 0.7 (Feb 26, 2019):
302
+
303
+ - Support for reading and writing file-like objects (requires h5py 2.9 or
304
+ newer).
305
+ By `Scott Henderson <https://github.com/scottyhq>`_.
306
+
307
+ Version 0.6.2 (Aug 19, 2018):
308
+
309
+ - Fixed a bug that prevented creating variables with the same name as
310
+ previously created dimensions in reopened files.
311
+
312
+ Version 0.6.1 (Jun 8, 2018):
313
+
314
+ - Compression with arbitrary filters no longer triggers warnings about invalid
315
+ netCDF files, because this is now
316
+ `supported by netCDF <https://github.com/Unidata/netcdf-c/pull/399>`__.
317
+
318
+ Version 0.6 (Jun 7, 2018):
319
+
320
+ - Support for reading and writing data to remote HDF5 files via the HDF5 REST
321
+ API using the ``h5pyd`` package. Any file "path" starting with either
322
+ ``http://``, ``https://``, or ``hdf5://`` will automatically trigger the use
323
+ of this package.
324
+ By `Aleksandar Jelenak <https://github.com/ajelenak>`_.
325
+
326
+ Version 0.5.1 (Apr 11, 2018):
327
+
328
+ - Bug fix for files with an unlimited dimension with no associated variables.
329
+ By `Aleksandar Jelenak <https://github.com/ajelenak>`_.
330
+
331
+ Version 0.5 (Oct 17, 2017):
332
+
333
+ - Support for creating unlimited dimensions.
334
+ By `Lion Krischer <https://github.com/krischer>`_.
335
+
336
+ Version 0.4.3 (Oct 10, 2017):
337
+
338
+ - Fix test suite failure with recent versions of netCDF4-Python.
339
+
340
+ Version 0.4.2 (Sep 12, 2017):
341
+
342
+ - Raise ``AttributeError`` rather than ``KeyError`` when attributes are not
343
+ found using the legacy API. This fixes an issue that prevented writing to
344
+ h5netcdf with dask.
345
+
346
+ Version 0.4.1 (Sep 6, 2017):
347
+
348
+ - Include tests in source distribution on pypi.
349
+
350
+ Version 0.4 (Aug 30, 2017):
351
+
352
+ - Add ``invalid_netcdf`` argument. Warnings are now issued by default when
353
+ writing an invalid NetCDF file. See the "Invalid netCDF files" section of the
354
+ README for full details.
355
+
356
+ Version 0.3.1 (Sep 2, 2016):
357
+
358
+ - Fix garbage collection issue.
359
+ - Add missing ``.flush()`` method for groups.
360
+ - Allow creating dimensions of size 0.
361
+
362
+ Version 0.3.0 (Aug 7, 2016):
363
+
364
+ - Datasets are now loaded lazily. This should increase performance when opening
365
+ files with a large number of groups and/or variables.
366
+ - Support for writing arrays of variable length unicode strings with
367
+ ``dtype=str`` via the legacy API.
368
+ - h5netcdf now writes the ``_NCProperties`` attribute for identifying netCDF4
369
+ files.
h5netcdf-1.8.1/LICENSE ADDED
@@ -0,0 +1,27 @@
1
+ Copyright (c) 2015, h5netcdf developers
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice, this
8
+ list of conditions and the following disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ 3. Neither the name of the copyright holder nor the names of its contributors
15
+ may be used to endorse or promote products derived from this software
16
+ without specific prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.