@@ -9,8 +9,8 @@ Asking for help
9
9
---------------
10
10
11
11
If you have a question about how to use Zarr, please post your question on
12
- StackOverflow using the `"zarr" tag <https://stackoverflow.com/questions/tagged/zarr >`_
13
- . If you don't get a response within a day or two, feel free to raise a `GitHub issue
12
+ StackOverflow using the `"zarr" tag <https://stackoverflow.com/questions/tagged/zarr >`_.
13
+ If you don't get a response within a day or two, feel free to raise a `GitHub issue
14
14
<https://github.com/zarr-developers/zarr/issues/new> `_ including a link to your StackOverflow
15
15
question. We will try to respond to questions as quickly as possible, but please bear
16
16
in mind that there may be periods where we have limited time to answer questions
@@ -111,7 +111,7 @@ It's best to create a new, separate branch for each piece of work you want to do
111
111
git fetch upstream
112
112
git checkout -b shiny-new-feature upsteam/master
113
113
114
- This changes your working directory to the shiny-new-feature branch. Keep any changes in
114
+ This changes your working directory to the ' shiny-new-feature' branch. Keep any changes in
115
115
this branch specific to one bug or feature so it is clear what the branch brings to
116
116
Zarr.
117
117
@@ -192,7 +192,7 @@ Documentation
192
192
193
193
Docstrings for user-facing classes and functions should follow the `numpydoc
194
194
<https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt> `_ standard,
195
- including sections for Parameters and Examples. All examples should run as doctests
195
+ including sections for Parameters and Examples. All examples should run and pass as doctests
196
196
under Python 3.6 only.
197
197
198
198
Zarr uses Sphinx for documentation, hosted on readthedocs.org. Documentation is
@@ -218,10 +218,9 @@ contributors.
218
218
Merging pull requests
219
219
~~~~~~~~~~~~~~~~~~~~~
220
220
221
- If at all possible, pull requests submitted by an external contributor should be
222
- reviewed and approved by all core developers before being merged. Pull requests
223
- submitted by a core developer should be reviewed and approved by all other core
224
- developers before being merged.
221
+ Pull requests submitted by an external contributor should be reviewed and approved by at least
222
+ one core developers before being merged. Ideally, pull requests submitted by a core developer
223
+ should be reviewed and approved by at least one other core developers before being merged.
225
224
226
225
Pull requests should not be merged until all CI checks have passed (Travis, AppVeyor,
227
226
Coveralls) against code that has had the latest master merged in.
@@ -232,33 +231,45 @@ Compatibility and versioning policies
232
231
Because Zarr is a data storage library, there are two types of compatibility to
233
232
consider: API compatibility and data format compatibility.
234
233
235
- Here we consider all functions, classes and methods that do not begin with an
236
- underscore as part of the Zarr public API. Any change to the public API that does **not **
237
- break existing third party code importing Zarr, or cause third party code to behave in
238
- a different way, is a **backwards-compatible API change **. For example, adding a new
239
- function, class or method is usually a backwards-compatible change. However, removing a
240
- function, class or method; removing an argument to a function or method; adding a
241
- required argument to a function or method; or changing the behaviour of a function or
242
- method, are examples of **backwards-incompatible API changes **.
234
+ API compatibility
235
+ """""""""""""""""
236
+
237
+ All functions, classes and methods that are included in the API
238
+ documentation (files under ``docs/api/*.rst ``) are considered as part of the Zarr **public API **,
239
+ except if they have been documented as an experimental feature, in which case they are part of
240
+ the **experimental API **.
241
+
242
+ Any change to the public API that does **not ** break existing third party
243
+ code importing Zarr, or cause third party code to behave in a different way, is a
244
+ **backwards-compatible API change **. For example, adding a new function, class or method is usually
245
+ a backwards-compatible change. However, removing a function, class or method; removing an argument
246
+ to a function or method; adding a required argument to a function or method; or changing the
247
+ behaviour of a function or method, are examples of **backwards-incompatible API changes **.
243
248
244
249
If a release contains no changes to the public API (e.g., contains only bug fixes or
245
250
other maintenance work), then the micro version number should be incremented (e.g.,
246
- 2.2.0 -> 2.2.1). If a release contains API changes, but all API changes are
251
+ 2.2.0 -> 2.2.1). If a release contains public API changes, but all changes are
247
252
backwards-compatible, then the minor version number should be incremented
248
- (e.g., 2.2.1 -> 2.3.0). If a release contains any backwards-incompatible API changes,
253
+ (e.g., 2.2.1 -> 2.3.0). If a release contains any backwards-incompatible public API changes,
249
254
the major version number should be incremented (e.g., 2.3.0 -> 3.0.0).
250
255
251
- Exceptions can be made for any function, class or method which has been documented as
252
- an experimental feature, i.e., backwards-incompatible changes can be included in a
253
- minor release, although this should be avoided wherever possible.
256
+ Backwards-incompatible changes to the experimental API can be included in a minor release,
257
+ although this should be minimised if possible. I.e., it would be preferable to save up
258
+ backwards-incompatible changes to the experimental API to be included in a major release, and to
259
+ stabilise those features at the same time (i.e., move from experimental to public API), rather than
260
+ frequently tinkering with the experimental API in minor releases.
261
+
262
+ Data format compatibility
263
+ """""""""""""""""""""""""
254
264
255
265
The data format used by Zarr is defined by a specification document, which should be
256
266
platform-independent and contain sufficient detail to construct an interoperable
257
267
software library to read and/or write Zarr data using any programming language. The
258
268
latest version of the specification document is available from the :ref: `spec ` page.
269
+
259
270
Here, **data format compatibility ** means that all software libraries that implement a
260
271
particular version of the Zarr storage specification are interoperable, in the sense
261
- that data written by any one library could be read by all others. It is obviously
272
+ that data written by any one library can be read by all others. It is obviously
262
273
desirable to maintain data format compatibility wherever possible. However, if a change
263
274
is needed to the storage specification, and that change would break data format
264
275
compatibility in any way, then the storage specification version number should be
@@ -275,7 +286,9 @@ implements storage spec version 3, then the next library release should have ver
275
286
number 3.0.0. Note however that the major version number of the Zarr library may not
276
287
always correspond to the spec version number. For example, Zarr versions 2.x, 3.x, and
277
288
4.x might all implement the same version of the storage spec and thus maintain data
278
- format compatibility, although they will not maintain API compatibility.
289
+ format compatibility, although they will not maintain API compatibility. The version number
290
+ of the storage specification that is currently implemented is stored under the
291
+ ``zarr.meta.ZARR_FORMAT `` variable.
279
292
280
293
Note that the Zarr test suite includes a data fixture and tests to try and ensure that
281
294
data format compatibility is not accidentally broken. See the
0 commit comments