[netcdf4-python] 01/07: Imported Upstream version 1.1.9

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Thu Jul 30 23:30:11 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository netcdf4-python.

commit 8cc7cc83924745ad31f2eed95ff75bad25bf3741
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Fri Jul 31 01:08:23 2015 +0200

    Imported Upstream version 1.1.9
---
 .travis.yml                          |     1 +
 Changelog                            |    23 +
 MANIFEST.in                          |     4 +
 README.gh-pages                      |    20 +-
 README.md                            |    16 +-
 README.wheels.md                     |   100 +
 create_docs.sh                       |     7 +-
 docs/api-objects.txt                 |   285 -
 docs/class-tree.html                 |   151 -
 docs/crarr.png                       |   Bin 340 -> 0 bytes
 docs/epydoc.css                      |   322 -
 docs/epydoc.js                       |   293 -
 docs/help.html                       |   272 -
 docs/identifier-index.html           |   698 --
 docs/index.html                      |  1732 ----
 docs/module-tree.html                |   109 -
 docs/netCDF4-module.html             |  1660 ---
 docs/netCDF4.CompoundType-class.html |   357 -
 docs/netCDF4.Dataset-class.html      |  1705 ----
 docs/netCDF4.Dimension-class.html    |   394 -
 docs/netCDF4.Group-class.html        |   387 -
 docs/netCDF4.MFDataset-class.html    |   528 -
 docs/netCDF4.MFTime-class.html       |   307 -
 docs/netCDF4.VLType-class.html       |   344 -
 docs/netCDF4.Variable-class.html     |  1464 ---
 docs/netCDF4/index.html              |  5584 ++++++++++
 docs/redirect.html                   |    38 -
 man/nc3tonc4.1                       |    18 +-
 man/nc4tonc3.1                       |     6 +-
 netCDF4/__init__.py                  |     8 +-
 netCDF4/_netCDF4.c                   | 18150 +++++++++++++++++----------------
 netCDF4/_netCDF4.pyx                 |  2593 ++---
 netcdftime/_datetime.c               |   482 +-
 netcdftime/_datetime.pyx             |     7 +
 netcdftime/netcdftime.py             |    29 +-
 setup.py                             |    23 +-
 test/run_all.py                      |     5 +
 test/tst_netcdftime.py               |    31 +-
 test/tst_scaled.py                   |    45 +
 test/tst_slicing.py                  |    12 +
 40 files changed, 17003 insertions(+), 21207 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index ec158e9..f0fad89 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,7 @@ language: python
 env:
     global:
         - DEPENDS="numpy cython"
+        - NO_NET=1
 python:
   - "2.7"
   - "3.3"
diff --git a/Changelog b/Changelog
index 3595e0a..7952b63 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,26 @@
+ version 1.1.9 (tag v1.1.9rel)
+ =============================
+ * fix for issue #391 (data is already byte-swapped to native
+   endian format by the HDF4 library).
+ * fix for issue #415 (copy.deepcopy does not work on
+   netcdftime datetime object).
+ * fix for issue #420 - len(v) where v is a scalar variable returned
+   unexpected IndexError, now returns "TypeError: len() on unsized object"
+   (same as numpy does for len() on a scalar array).
+ * translate docstrings from epydoc markup to markdown, so
+   pdoc can be used (epydoc is dead).
+ * add small offset in conversion to Julian date for numerical
+   stability (more accurate round trip calculations). This offset is removed
+   in back conversion only from microseconds. Pull request #433.
+ * add detection of unsigned integers to handling of automatic
+   packing (set_auto_scale and set_auto_maskandscale) when writing.
+   Pull request #435.
+ * use USE_SETUPCFG env var to over-ride use of setup.cfg. If USE_SETUPCFG
+   evaluates to false, setup.cfg will not be used and all configuration 
+   variables can be set from environment variables.  Useful when using 'pip
+   install' and nc-config is broken (issue #438).  
+ * fix for integer overflow in date2index (issue #444).
+
  version 1.1.8 (tag v1.1.8rel)
  =============================
  * v[...] now returns a numpy scalar array (not just a scalar) when
diff --git a/MANIFEST.in b/MANIFEST.in
index 0c02bd1..5db83eb 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -18,3 +18,7 @@ include netcdftime/__init__.py
 include netcdftime/_datetime.pyx
 include netcdftime/netcdftime.py
 include netcdftime/_datetime.c
+include netCDF4/__init__.py
+include netCDF4/_netCDF4.pyx
+include netCDF4/utils.py
+include netCDF4/_netCDF4.c
diff --git a/README.gh-pages b/README.gh-pages
index e24650e..c9cef40 100644
--- a/README.gh-pages
+++ b/README.gh-pages
@@ -1,11 +1,15 @@
 To update web docs at http://github.unidata.io/netcdf4-python:
 
-(in netcdf4-python github clone directory, after docs directory has been updated)
+First install fork of pdoc from https://github.com/jswhit/pdoc (requires mako, 
+markdown and pygments).
 
-tar up contents of docs dir (cd docs; tar -cvf ../../html.tar *; cd ..)
-git checkout gh-pages
-tar -xvf ../html.tar
-git add *html
-git commit 
-git push origin gh-pages
-git checkout master
+Then in netcdf4-python github clone directory (after building and 
+installing github master),
+
+* generate docs (sh create_docs.sh)
+* copy docs/netCDF4/index.html up one level (cp docs/netCDF4/index.html ..)
+* git checkout gh-pages
+* cp ../index.html .
+* git commit index.html
+* git push origin gh-pages
+* git checkout master
diff --git a/README.md b/README.md
index a3ecee8..3b94b1b 100644
--- a/README.md
+++ b/README.md
@@ -7,17 +7,17 @@
 ## News
 For the latest updates, see the [Changelog](https://github.com/Unidata/netcdf4-python/blob/master/Changelog).
 
-5/14/2015: Version 1.1.8 released. Unix-like paths can now be used in `createVariable` and `createGroup`.
-
-    v = nc.createVariable('/path/to/var1',('xdim','ydim'),float)
-
+5/14/2015: Version [1.1.8](https://pypi.python.org/pypi/netCDF4/1.1.8) released. Unix-like paths can now be used in `createVariable` and `createGroup`.
+```python
+    v = nc.createVariable('/path/to/var1', ('xdim', 'ydim'), float)
+```
 will create a variable named 'var1', while also creating the groups
 'path' and 'path/to' if they do not already exist.
 
 Similarly, 
-
+```python
     g = nc.createGroup('/path/to') 
-
+```
 now acts like `mkdir -p` in unix, creating groups 'path' and '/path/to',
 if they don't already exist. Users who relied on `nc.createGroup(groupname)`
 failing when the group already exists will have to modify their code, since 
@@ -25,7 +25,7 @@ failing when the group already exists will have to modify their code, since
 `Dataset.__getitem__` was also added.  `nc['/path/to']`
 now returns a group instance, and `nc['/path/to/var1']` now returns a variable instance.
 
-3/19/2015: Version 1.1.7 released.  Global Interpreter Lock (GIL) now released when extension
+3/19/2015: Version [1.1.7](https://pypi.python.org/pypi/netCDF4/1.1.7) released.  Global Interpreter Lock (GIL) now released when extension
 module calls C library for read operations.  This speeds up concurrent reads when using threads.
 Users who wish to use netcdf4-python inside threads should read http://www.hdfgroup.org/hdf5-quest.html#gconc 
 regarding thread-safety in the HDF5 C library.  Fixes to `setup.py` now ensure that `pip install netCDF4`
@@ -33,7 +33,7 @@ with `export USE_NCCONFIG=0` will use environment variables to find paths to lib
 instead of relying exclusively on the nc-config utility.
 
 ## Quick Start
-* Clone GitHub repository (`git clone https://github.com/Unidata/netcdf4-python.git`), or get source tarball (or Windows binary installers) from [PyPI](https://pypi.python.org/pypi/netCDF4) (`pip install netCDF4`).
+* Clone GitHub repository (`git clone https://github.com/Unidata/netcdf4-python.git`), or get source tarball from [PyPI](https://pypi.python.org/pypi/netCDF4). Links to Windows and OS X precompiled binary packages are also available on [PyPI](https://pypi.python.org/pypi/netCDF4).
 
 * Make sure [numpy](http://www.numpy.org/) (required) and [Cython](http://cython.org/) (recommended) are
   installed and you have [Python](https://www.python.org) 2.5 or newer.
diff --git a/README.wheels.md b/README.wheels.md
new file mode 100644
index 0000000..d3a7fdd
--- /dev/null
+++ b/README.wheels.md
@@ -0,0 +1,100 @@
+# Building and uploading wheels
+
+## For OSX
+
+We automate OSX wheel building using a custom github repository that builds on
+the travis-ci OSX machines.
+
+The travis-ci interface for the builds is :
+https://travis-ci.org/MacPython/netcdf4-python-wheels
+
+The driving github repository is :
+https://github.com/MacPython/netcdf4-python-wheels
+
+### How it works
+
+The wheel-building repository:
+
+* does a fresh build of the required C / C++ libraries;
+* builds a netcdf4-python wheel, linking against these fresh builds;
+* processes the wheel using [delocate](https://pypi.python.org/pypi/delocate).
+  `delocate` copies the required dynamic libraries into the wheel and relinks
+  the extension modules against the copied libraries;
+* uploads the built wheel to http://wheels.scipy.org (a Rackspace container
+  kindly donated by Rackspace to scikit-learn).
+
+The resulting wheel is therefore self-contained and does not need any external
+dynamic libraries apart from those provided as standard by OSX.
+
+### Triggering a build
+
+You will need write permision to the github repository to trigger new builds
+on the travis-ci interface.  Contact us on the mailing list if you need this.
+
+You can trigger a build by:
+
+* making a commit to the `netcdf4-python-wheels` repository (e.g. with `git
+  commit --allow-empty`); or
+* clicking on the circular arrow icon towards the top right of the travis-ci
+  page, to rerun the previous build.
+
+In general, it is better to trigger a build with a commit, because this makes
+a new set of build products and logs, keeping the old ones for reference.
+Keeping the old build logs helps us keep track of previous problems and
+successful builds.
+
+### Which netcdf4-python commit does the repository build?
+
+By default, the `netcd4-python-wheels` repository is usually set up to build
+the latest git tag.  To check whether this is so have a look around line 5 of
+`.travis.yml` in the `netcdf4-python-wheels` repository.  You should see
+something like:
+
+```
+- BUILD_COMMIT='latest-tag'
+```
+
+If this is commented out, then the repository is set up to build the current
+commit in the `netcdf4-python` submodule of the repository.  If it is set to
+another value then it will be specifying a commit to build.
+
+You can therefore build any arbitrary commit by specificying the commit hash
+or branch name or tag name in this line of the `.travis.yml` file.
+
+### Uploading the built wheels to pypi
+
+Be careful, http://wheels.scipy.org points to a container on a distributed
+content delivery network.  It can take up to 15 minutes for the new wheel file
+to get updated into the container at http://wheels.scipy.org.
+
+When the wheels are updated, you can of course just download them to your
+machine manually, and then upload them manually to pypi, or by using
+[twine][twine].  You can also use a script for doing this, housed at :
+https://github.com/MacPython/terryfy/blob/master/wheel-uploader
+
+You'll need [twine][twine] and [beautiful soup 4][bs4].
+
+You will typically have a directory on your machine where you store wheels,
+called a `wheelhouse`.   The typical call for `wheel-uploader` would then
+be something like:
+
+```
+wheel-uploader -v -w ~/wheelhouse netCDF4 1.1.8
+```
+
+where:
+
+* `-v` means give verbose messages;
+* `-w ~/wheelhouse` means download the wheels from https://wheels.scipy.org to
+  the directory `~/wheelhouse`;
+* `netCDF4` is the root name of the wheel(s) to download / upload;
+* `1.1.8` is the version to download / upload.
+
+So, in this case, `wheel-uploader` will download all wheels starting with
+`netCDF4-1.1.8-` from http://wheels.scipy.org to `~/wheelhouse`, then upload
+them to pypi.
+
+Of course, you will need permissions to upload to pypi, for this to work.
+
+[twine]: https://pypi.python.org/pypi/twine
+[bs4]: https://pypi.python.org/pypi/beautifulsoup4
diff --git a/create_docs.sh b/create_docs.sh
index e2ae30d..45d94e1 100644
--- a/create_docs.sh
+++ b/create_docs.sh
@@ -1,2 +1,5 @@
-# svn propset svn:mime-type text/html docs/*html
-epydoc -v --no-frames --no-private --introspect-only --name netcdf4-python -o docs netCDF4._netCDF4
+# Uses pdoc (https://github.com/BurntSushi/pdoc)
+# to create html docs from docstrings in Cython source.
+# Use hacked version at https://github.com/jswhit/pdoc
+# which extracts cython method docstrings and function signatures.
+pdoc --html --html-no-source --overwrite --html-dir 'docs' netCDF4
diff --git a/docs/api-objects.txt b/docs/api-objects.txt
deleted file mode 100644
index be91bd3..0000000
--- a/docs/api-objects.txt
+++ /dev/null
@@ -1,285 +0,0 @@
-netCDF4._netCDF4	netCDF4._netCDF4-module.html
-netCDF4._netCDF4._set_default_format	netCDF4._netCDF4-module.html#_set_default_format
-netCDF4._netCDF4.hr_units	netCDF4._netCDF4-module.html#hr_units
-netCDF4._netCDF4.default_encoding	netCDF4._netCDF4-module.html#default_encoding
-netCDF4._netCDF4.num2date	netCDF4._netCDF4-module.html#num2date
-netCDF4._netCDF4.is_native_big	netCDF4._netCDF4-module.html#is_native_big
-netCDF4._netCDF4.microsec_units	netCDF4._netCDF4-module.html#microsec_units
-netCDF4._netCDF4._private_atts	netCDF4._netCDF4-module.html#_private_atts
-netCDF4._netCDF4.day_units	netCDF4._netCDF4-module.html#day_units
-netCDF4._netCDF4.MINYEAR	netCDF4._netCDF4-module.html#MINYEAR
-netCDF4._netCDF4._gethdf5libversion	netCDF4._netCDF4-module.html#_gethdf5libversion
-netCDF4._netCDF4.__has_nc_inq_format_extended__	netCDF4._netCDF4-module.html#__has_nc_inq_format_extended__
-netCDF4._netCDF4.__package__	netCDF4._netCDF4-module.html#__package__
-netCDF4._netCDF4.stringtochar	netCDF4._netCDF4-module.html#stringtochar
-netCDF4._netCDF4.chartostring	netCDF4._netCDF4-module.html#chartostring
-netCDF4._netCDF4.getlibversion	netCDF4._netCDF4-module.html#getlibversion
-netCDF4._netCDF4.__netcdf4libversion__	netCDF4._netCDF4-module.html#__netcdf4libversion__
-netCDF4._netCDF4.sec_units	netCDF4._netCDF4-module.html#sec_units
-netCDF4._netCDF4.__has_nc_inq_path__	netCDF4._netCDF4-module.html#__has_nc_inq_path__
-netCDF4._netCDF4.date2num	netCDF4._netCDF4-module.html#date2num
-netCDF4._netCDF4.millisec_units	netCDF4._netCDF4-module.html#millisec_units
-netCDF4._netCDF4.stringtoarr	netCDF4._netCDF4-module.html#stringtoarr
-netCDF4._netCDF4._value	netCDF4._netCDF4-module.html#_value
-netCDF4._netCDF4._nptonctype	netCDF4._netCDF4-module.html#_nptonctype
-netCDF4._netCDF4.date2index	netCDF4._netCDF4-module.html#date2index
-netCDF4._netCDF4.gregorian	netCDF4._netCDF4-module.html#gregorian
-netCDF4._netCDF4.is_native_little	netCDF4._netCDF4-module.html#is_native_little
-netCDF4._netCDF4.python3	netCDF4._netCDF4-module.html#python3
-netCDF4._netCDF4._dateparse	netCDF4._netCDF4-module.html#_dateparse
-netCDF4._netCDF4._supportedtypes	netCDF4._netCDF4-module.html#_supportedtypes
-netCDF4._netCDF4.NC_DISKLESS	netCDF4._netCDF4-module.html#NC_DISKLESS
-netCDF4._netCDF4._key	netCDF4._netCDF4-module.html#_key
-netCDF4._netCDF4.default_fillvals	netCDF4._netCDF4-module.html#default_fillvals
-netCDF4._netCDF4._nctonptype	netCDF4._netCDF4-module.html#_nctonptype
-netCDF4._netCDF4.__has_rename_grp__	netCDF4._netCDF4-module.html#__has_rename_grp__
-netCDF4._netCDF4._npversion	netCDF4._netCDF4-module.html#_npversion
-netCDF4._netCDF4.__hdf5libversion__	netCDF4._netCDF4-module.html#__hdf5libversion__
-netCDF4._netCDF4.min_units	netCDF4._netCDF4-module.html#min_units
-netCDF4._netCDF4.unicode_error	netCDF4._netCDF4-module.html#unicode_error
-netCDF4._netCDF4.CompoundType	netCDF4._netCDF4.CompoundType-class.html
-netCDF4._netCDF4.CompoundType.__new__	netCDF4._netCDF4.CompoundType-class.html#__new__
-netCDF4._netCDF4.CompoundType.dtype	netCDF4._netCDF4.CompoundType-class.html#dtype
-netCDF4._netCDF4.CompoundType._nc_type	netCDF4._netCDF4.CompoundType-class.html#_nc_type
-netCDF4._netCDF4.CompoundType.__repr__	netCDF4._netCDF4.CompoundType-class.html#__repr__
-netCDF4._netCDF4.CompoundType.__init__	netCDF4._netCDF4.CompoundType-class.html#__init__
-netCDF4._netCDF4.CompoundType.__unicode__	netCDF4._netCDF4.CompoundType-class.html#__unicode__
-netCDF4._netCDF4.CompoundType.name	netCDF4._netCDF4.CompoundType-class.html#name
-netCDF4._netCDF4.Dataset	netCDF4._netCDF4.Dataset-class.html
-netCDF4._netCDF4.Dataset._enddef	netCDF4._netCDF4.Dataset-class.html#_enddef
-netCDF4._netCDF4.Dataset.variables	netCDF4._netCDF4.Dataset-class.html#variables
-netCDF4._netCDF4.Dataset.__getattribute__	netCDF4._netCDF4.Dataset-class.html#__getattribute__
-netCDF4._netCDF4.Dataset.sync	netCDF4._netCDF4.Dataset-class.html#sync
-netCDF4._netCDF4.Dataset.createCompoundType	netCDF4._netCDF4.Dataset-class.html#createCompoundType
-netCDF4._netCDF4.Dataset.set_auto_maskandscale	netCDF4._netCDF4.Dataset-class.html#set_auto_maskandscale
-netCDF4._netCDF4.Dataset.close	netCDF4._netCDF4.Dataset-class.html#close
-netCDF4._netCDF4.Dataset._isopen	netCDF4._netCDF4.Dataset-class.html#_isopen
-netCDF4._netCDF4.Dataset.getncattr	netCDF4._netCDF4.Dataset-class.html#getncattr
-netCDF4._netCDF4.Dataset.__init__	netCDF4._netCDF4.Dataset-class.html#__init__
-netCDF4._netCDF4.Dataset.__setattr__	netCDF4._netCDF4.Dataset-class.html#__setattr__
-netCDF4._netCDF4.Dataset.__new__	netCDF4._netCDF4.Dataset-class.html#__new__
-netCDF4._netCDF4.Dataset.set_fill_on	netCDF4._netCDF4.Dataset-class.html#set_fill_on
-netCDF4._netCDF4.Dataset.filepath	netCDF4._netCDF4.Dataset-class.html#filepath
-netCDF4._netCDF4.Dataset.createVariable	netCDF4._netCDF4.Dataset-class.html#createVariable
-netCDF4._netCDF4.Dataset.__enter__	netCDF4._netCDF4.Dataset-class.html#__enter__
-netCDF4._netCDF4.Dataset.disk_format	netCDF4._netCDF4.Dataset-class.html#disk_format
-netCDF4._netCDF4.Dataset.__getattr__	netCDF4._netCDF4.Dataset-class.html#__getattr__
-netCDF4._netCDF4.Dataset.set_auto_mask	netCDF4._netCDF4.Dataset-class.html#set_auto_mask
-netCDF4._netCDF4.Dataset.__unicode__	netCDF4._netCDF4.Dataset-class.html#__unicode__
-netCDF4._netCDF4.Dataset._redef	netCDF4._netCDF4.Dataset-class.html#_redef
-netCDF4._netCDF4.Dataset.setncatts	netCDF4._netCDF4.Dataset-class.html#setncatts
-netCDF4._netCDF4.Dataset.setncattr	netCDF4._netCDF4.Dataset-class.html#setncattr
-netCDF4._netCDF4.Dataset.cmptypes	netCDF4._netCDF4.Dataset-class.html#cmptypes
-netCDF4._netCDF4.Dataset.set_fill_off	netCDF4._netCDF4.Dataset-class.html#set_fill_off
-netCDF4._netCDF4.Dataset.renameGroup	netCDF4._netCDF4.Dataset-class.html#renameGroup
-netCDF4._netCDF4.Dataset.vltypes	netCDF4._netCDF4.Dataset-class.html#vltypes
-netCDF4._netCDF4.Dataset.ncattrs	netCDF4._netCDF4.Dataset-class.html#ncattrs
-netCDF4._netCDF4.Dataset.__exit__	netCDF4._netCDF4.Dataset-class.html#__exit__
-netCDF4._netCDF4.Dataset.renameAttribute	netCDF4._netCDF4.Dataset-class.html#renameAttribute
-netCDF4._netCDF4.Dataset.parent	netCDF4._netCDF4.Dataset-class.html#parent
-netCDF4._netCDF4.Dataset.createVLType	netCDF4._netCDF4.Dataset-class.html#createVLType
-netCDF4._netCDF4.Dataset.keepweakref	netCDF4._netCDF4.Dataset-class.html#keepweakref
-netCDF4._netCDF4.Dataset.renameDimension	netCDF4._netCDF4.Dataset-class.html#renameDimension
-netCDF4._netCDF4.Dataset.groups	netCDF4._netCDF4.Dataset-class.html#groups
-netCDF4._netCDF4.Dataset.path	netCDF4._netCDF4.Dataset-class.html#path
-netCDF4._netCDF4.Dataset.delncattr	netCDF4._netCDF4.Dataset-class.html#delncattr
-netCDF4._netCDF4.Dataset.dimensions	netCDF4._netCDF4.Dataset-class.html#dimensions
-netCDF4._netCDF4.Dataset.set_auto_scale	netCDF4._netCDF4.Dataset-class.html#set_auto_scale
-netCDF4._netCDF4.Dataset.file_format	netCDF4._netCDF4.Dataset-class.html#file_format
-netCDF4._netCDF4.Dataset.renameVariable	netCDF4._netCDF4.Dataset-class.html#renameVariable
-netCDF4._netCDF4.Dataset._grpid	netCDF4._netCDF4.Dataset-class.html#_grpid
-netCDF4._netCDF4.Dataset.__delattr__	netCDF4._netCDF4.Dataset-class.html#__delattr__
-netCDF4._netCDF4.Dataset.__getitem__	netCDF4._netCDF4.Dataset-class.html#__getitem__
-netCDF4._netCDF4.Dataset.data_model	netCDF4._netCDF4.Dataset-class.html#data_model
-netCDF4._netCDF4.Dataset.__repr__	netCDF4._netCDF4.Dataset-class.html#__repr__
-netCDF4._netCDF4.Dataset.createGroup	netCDF4._netCDF4.Dataset-class.html#createGroup
-netCDF4._netCDF4.Dataset.createDimension	netCDF4._netCDF4.Dataset-class.html#createDimension
-netCDF4._netCDF4.Dataset.__orthogonal_indexing__	netCDF4._netCDF4.Dataset-class.html#__orthogonal_indexing__
-netCDF4._netCDF4.Dimension	netCDF4._netCDF4.Dimension-class.html
-netCDF4._netCDF4.Dimension.isunlimited	netCDF4._netCDF4.Dimension-class.html#isunlimited
-netCDF4._netCDF4.Dimension.__init__	netCDF4._netCDF4.Dimension-class.html#__init__
-netCDF4._netCDF4.Dimension.group	netCDF4._netCDF4.Dimension-class.html#group
-netCDF4._netCDF4.Dimension.__new__	netCDF4._netCDF4.Dimension-class.html#__new__
-netCDF4._netCDF4.Dimension.__len__	netCDF4._netCDF4.Dimension-class.html#__len__
-netCDF4._netCDF4.Dimension._dimid	netCDF4._netCDF4.Dimension-class.html#_dimid
-netCDF4._netCDF4.Dimension.__unicode__	netCDF4._netCDF4.Dimension-class.html#__unicode__
-netCDF4._netCDF4.Dimension._grp	netCDF4._netCDF4.Dimension-class.html#_grp
-netCDF4._netCDF4.Dimension.name	netCDF4._netCDF4.Dimension-class.html#name
-netCDF4._netCDF4.Dimension._data_model	netCDF4._netCDF4.Dimension-class.html#_data_model
-netCDF4._netCDF4.Dimension._grpid	netCDF4._netCDF4.Dimension-class.html#_grpid
-netCDF4._netCDF4.Dimension._name	netCDF4._netCDF4.Dimension-class.html#_name
-netCDF4._netCDF4.Dimension.__repr__	netCDF4._netCDF4.Dimension-class.html#__repr__
-netCDF4._netCDF4.Dimension._getname	netCDF4._netCDF4.Dimension-class.html#_getname
-netCDF4._netCDF4.Group	netCDF4._netCDF4.Group-class.html
-netCDF4._netCDF4.Dataset._enddef	netCDF4._netCDF4.Dataset-class.html#_enddef
-netCDF4._netCDF4.Dataset.renameVariable	netCDF4._netCDF4.Dataset-class.html#renameVariable
-netCDF4._netCDF4.Dataset.variables	netCDF4._netCDF4.Dataset-class.html#variables
-netCDF4._netCDF4.Dataset.__getattribute__	netCDF4._netCDF4.Dataset-class.html#__getattribute__
-netCDF4._netCDF4.Dataset.sync	netCDF4._netCDF4.Dataset-class.html#sync
-netCDF4._netCDF4.Dataset.createCompoundType	netCDF4._netCDF4.Dataset-class.html#createCompoundType
-netCDF4._netCDF4.Dataset.set_auto_maskandscale	netCDF4._netCDF4.Dataset-class.html#set_auto_maskandscale
-netCDF4._netCDF4.Group.close	netCDF4._netCDF4.Group-class.html#close
-netCDF4._netCDF4.Dataset._isopen	netCDF4._netCDF4.Dataset-class.html#_isopen
-netCDF4._netCDF4.Group.__init__	netCDF4._netCDF4.Group-class.html#__init__
-netCDF4._netCDF4.Dataset.__setattr__	netCDF4._netCDF4.Dataset-class.html#__setattr__
-netCDF4._netCDF4.Group.__new__	netCDF4._netCDF4.Group-class.html#__new__
-netCDF4._netCDF4.Dataset.filepath	netCDF4._netCDF4.Dataset-class.html#filepath
-netCDF4._netCDF4.Dataset.createVariable	netCDF4._netCDF4.Dataset-class.html#createVariable
-netCDF4._netCDF4.Dataset.__enter__	netCDF4._netCDF4.Dataset-class.html#__enter__
-netCDF4._netCDF4.Dataset.disk_format	netCDF4._netCDF4.Dataset-class.html#disk_format
-netCDF4._netCDF4.Dataset.file_format	netCDF4._netCDF4.Dataset-class.html#file_format
-netCDF4._netCDF4.Dataset.__getattr__	netCDF4._netCDF4.Dataset-class.html#__getattr__
-netCDF4._netCDF4.Dataset.set_auto_mask	netCDF4._netCDF4.Dataset-class.html#set_auto_mask
-netCDF4._netCDF4.Dataset._redef	netCDF4._netCDF4.Dataset-class.html#_redef
-netCDF4._netCDF4.Dataset.setncatts	netCDF4._netCDF4.Dataset-class.html#setncatts
-netCDF4._netCDF4.Dataset.setncattr	netCDF4._netCDF4.Dataset-class.html#setncattr
-netCDF4._netCDF4.Dataset.set_fill_off	netCDF4._netCDF4.Dataset-class.html#set_fill_off
-netCDF4._netCDF4.Dataset.renameGroup	netCDF4._netCDF4.Dataset-class.html#renameGroup
-netCDF4._netCDF4.Dataset.vltypes	netCDF4._netCDF4.Dataset-class.html#vltypes
-netCDF4._netCDF4.Dataset.ncattrs	netCDF4._netCDF4.Dataset-class.html#ncattrs
-netCDF4._netCDF4.Dataset.__exit__	netCDF4._netCDF4.Dataset-class.html#__exit__
-netCDF4._netCDF4.Dataset.renameAttribute	netCDF4._netCDF4.Dataset-class.html#renameAttribute
-netCDF4._netCDF4.Dataset.parent	netCDF4._netCDF4.Dataset-class.html#parent
-netCDF4._netCDF4.Dataset.__getitem__	netCDF4._netCDF4.Dataset-class.html#__getitem__
-netCDF4._netCDF4.Dataset.delncattr	netCDF4._netCDF4.Dataset-class.html#delncattr
-netCDF4._netCDF4.Dataset.keepweakref	netCDF4._netCDF4.Dataset-class.html#keepweakref
-netCDF4._netCDF4.Dataset.getncattr	netCDF4._netCDF4.Dataset-class.html#getncattr
-netCDF4._netCDF4.Dataset.groups	netCDF4._netCDF4.Dataset-class.html#groups
-netCDF4._netCDF4.Dataset.path	netCDF4._netCDF4.Dataset-class.html#path
-netCDF4._netCDF4.Dataset.__unicode__	netCDF4._netCDF4.Dataset-class.html#__unicode__
-netCDF4._netCDF4.Dataset.dimensions	netCDF4._netCDF4.Dataset-class.html#dimensions
-netCDF4._netCDF4.Group.name	netCDF4._netCDF4.Group-class.html#name
-netCDF4._netCDF4.Dataset.cmptypes	netCDF4._netCDF4.Dataset-class.html#cmptypes
-netCDF4._netCDF4.Dataset.set_auto_scale	netCDF4._netCDF4.Dataset-class.html#set_auto_scale
-netCDF4._netCDF4.Dataset.renameDimension	netCDF4._netCDF4.Dataset-class.html#renameDimension
-netCDF4._netCDF4.Dataset._grpid	netCDF4._netCDF4.Dataset-class.html#_grpid
-netCDF4._netCDF4.Dataset.__delattr__	netCDF4._netCDF4.Dataset-class.html#__delattr__
-netCDF4._netCDF4.Dataset.set_fill_on	netCDF4._netCDF4.Dataset-class.html#set_fill_on
-netCDF4._netCDF4.Dataset.data_model	netCDF4._netCDF4.Dataset-class.html#data_model
-netCDF4._netCDF4.Dataset.__repr__	netCDF4._netCDF4.Dataset-class.html#__repr__
-netCDF4._netCDF4.Dataset.createVLType	netCDF4._netCDF4.Dataset-class.html#createVLType
-netCDF4._netCDF4.Dataset.createGroup	netCDF4._netCDF4.Dataset-class.html#createGroup
-netCDF4._netCDF4.Dataset.createDimension	netCDF4._netCDF4.Dataset-class.html#createDimension
-netCDF4._netCDF4.Group._getname	netCDF4._netCDF4.Group-class.html#_getname
-netCDF4._netCDF4.Dataset.__orthogonal_indexing__	netCDF4._netCDF4.Dataset-class.html#__orthogonal_indexing__
-netCDF4._netCDF4.MFDataset	netCDF4._netCDF4.MFDataset-class.html
-netCDF4._netCDF4.Dataset._enddef	netCDF4._netCDF4.Dataset-class.html#_enddef
-netCDF4._netCDF4.Dataset.renameVariable	netCDF4._netCDF4.Dataset-class.html#renameVariable
-netCDF4._netCDF4.Dataset.variables	netCDF4._netCDF4.Dataset-class.html#variables
-netCDF4._netCDF4.MFDataset.__getattribute__	netCDF4._netCDF4.MFDataset-class.html#__getattribute__
-netCDF4._netCDF4.Dataset.sync	netCDF4._netCDF4.Dataset-class.html#sync
-netCDF4._netCDF4.Dataset.createCompoundType	netCDF4._netCDF4.Dataset-class.html#createCompoundType
-netCDF4._netCDF4.Dataset.set_auto_maskandscale	netCDF4._netCDF4.Dataset-class.html#set_auto_maskandscale
-netCDF4._netCDF4.MFDataset.close	netCDF4._netCDF4.MFDataset-class.html#close
-netCDF4._netCDF4.Dataset._isopen	netCDF4._netCDF4.Dataset-class.html#_isopen
-netCDF4._netCDF4.MFDataset.__init__	netCDF4._netCDF4.MFDataset-class.html#__init__
-netCDF4._netCDF4.MFDataset.__setattr__	netCDF4._netCDF4.MFDataset-class.html#__setattr__
-netCDF4._netCDF4.Dataset.__new__	netCDF4._netCDF4.Dataset-class.html#__new__
-netCDF4._netCDF4.Dataset.filepath	netCDF4._netCDF4.Dataset-class.html#filepath
-netCDF4._netCDF4.Dataset.createVariable	netCDF4._netCDF4.Dataset-class.html#createVariable
-netCDF4._netCDF4.Dataset.__enter__	netCDF4._netCDF4.Dataset-class.html#__enter__
-netCDF4._netCDF4.Dataset.disk_format	netCDF4._netCDF4.Dataset-class.html#disk_format
-netCDF4._netCDF4.Dataset.file_format	netCDF4._netCDF4.Dataset-class.html#file_format
-netCDF4._netCDF4.Dataset.__getattr__	netCDF4._netCDF4.Dataset-class.html#__getattr__
-netCDF4._netCDF4.Dataset.set_auto_mask	netCDF4._netCDF4.Dataset-class.html#set_auto_mask
-netCDF4._netCDF4.Dataset._redef	netCDF4._netCDF4.Dataset-class.html#_redef
-netCDF4._netCDF4.Dataset.setncatts	netCDF4._netCDF4.Dataset-class.html#setncatts
-netCDF4._netCDF4.Dataset.setncattr	netCDF4._netCDF4.Dataset-class.html#setncattr
-netCDF4._netCDF4.Dataset.set_fill_off	netCDF4._netCDF4.Dataset-class.html#set_fill_off
-netCDF4._netCDF4.Dataset.renameGroup	netCDF4._netCDF4.Dataset-class.html#renameGroup
-netCDF4._netCDF4.Dataset.vltypes	netCDF4._netCDF4.Dataset-class.html#vltypes
-netCDF4._netCDF4.MFDataset.ncattrs	netCDF4._netCDF4.MFDataset-class.html#ncattrs
-netCDF4._netCDF4.Dataset.__exit__	netCDF4._netCDF4.Dataset-class.html#__exit__
-netCDF4._netCDF4.Dataset.renameAttribute	netCDF4._netCDF4.Dataset-class.html#renameAttribute
-netCDF4._netCDF4.Dataset.parent	netCDF4._netCDF4.Dataset-class.html#parent
-netCDF4._netCDF4.Dataset.__getitem__	netCDF4._netCDF4.Dataset-class.html#__getitem__
-netCDF4._netCDF4.Dataset.delncattr	netCDF4._netCDF4.Dataset-class.html#delncattr
-netCDF4._netCDF4.Dataset.keepweakref	netCDF4._netCDF4.Dataset-class.html#keepweakref
-netCDF4._netCDF4.Dataset.getncattr	netCDF4._netCDF4.Dataset-class.html#getncattr
-netCDF4._netCDF4.Dataset.groups	netCDF4._netCDF4.Dataset-class.html#groups
-netCDF4._netCDF4.Dataset.path	netCDF4._netCDF4.Dataset-class.html#path
-netCDF4._netCDF4.Dataset.__unicode__	netCDF4._netCDF4.Dataset-class.html#__unicode__
-netCDF4._netCDF4.Dataset.dimensions	netCDF4._netCDF4.Dataset-class.html#dimensions
-netCDF4._netCDF4.Dataset.cmptypes	netCDF4._netCDF4.Dataset-class.html#cmptypes
-netCDF4._netCDF4.Dataset.set_auto_scale	netCDF4._netCDF4.Dataset-class.html#set_auto_scale
-netCDF4._netCDF4.Dataset.renameDimension	netCDF4._netCDF4.Dataset-class.html#renameDimension
-netCDF4._netCDF4.Dataset._grpid	netCDF4._netCDF4.Dataset-class.html#_grpid
-netCDF4._netCDF4.MFDataset.__qualname__	netCDF4._netCDF4.MFDataset-class.html#__qualname__
-netCDF4._netCDF4.Dataset.__delattr__	netCDF4._netCDF4.Dataset-class.html#__delattr__
-netCDF4._netCDF4.Dataset.set_fill_on	netCDF4._netCDF4.Dataset-class.html#set_fill_on
-netCDF4._netCDF4.Dataset.data_model	netCDF4._netCDF4.Dataset-class.html#data_model
-netCDF4._netCDF4.MFDataset.__repr__	netCDF4._netCDF4.MFDataset-class.html#__repr__
-netCDF4._netCDF4.Dataset.createVLType	netCDF4._netCDF4.Dataset-class.html#createVLType
-netCDF4._netCDF4.Dataset.createGroup	netCDF4._netCDF4.Dataset-class.html#createGroup
-netCDF4._netCDF4.Dataset.createDimension	netCDF4._netCDF4.Dataset-class.html#createDimension
-netCDF4._netCDF4.Dataset.__orthogonal_indexing__	netCDF4._netCDF4.Dataset-class.html#__orthogonal_indexing__
-netCDF4._netCDF4.MFTime	netCDF4._netCDF4.MFTime-class.html
-netCDF4._netCDF4.MFTime.__init__	netCDF4._netCDF4.MFTime-class.html#__init__
-netCDF4._netCDF4.MFTime.__getitem__	netCDF4._netCDF4.MFTime-class.html#__getitem__
-netCDF4._netCDF4.MFTime.__qualname__	netCDF4._netCDF4.MFTime-class.html#__qualname__
-netCDF4._netCDF4.VLType	netCDF4._netCDF4.VLType-class.html
-netCDF4._netCDF4.VLType.__new__	netCDF4._netCDF4.VLType-class.html#__new__
-netCDF4._netCDF4.VLType.dtype	netCDF4._netCDF4.VLType-class.html#dtype
-netCDF4._netCDF4.VLType._nc_type	netCDF4._netCDF4.VLType-class.html#_nc_type
-netCDF4._netCDF4.VLType.__repr__	netCDF4._netCDF4.VLType-class.html#__repr__
-netCDF4._netCDF4.VLType.__init__	netCDF4._netCDF4.VLType-class.html#__init__
-netCDF4._netCDF4.VLType.__unicode__	netCDF4._netCDF4.VLType-class.html#__unicode__
-netCDF4._netCDF4.VLType.name	netCDF4._netCDF4.VLType-class.html#name
-netCDF4._netCDF4.Variable	netCDF4._netCDF4.Variable-class.html
-netCDF4._netCDF4.Variable.ndim	netCDF4._netCDF4.Variable-class.html#ndim
-netCDF4._netCDF4.Variable.dtype	netCDF4._netCDF4.Variable-class.html#dtype
-netCDF4._netCDF4.Variable.__getattribute__	netCDF4._netCDF4.Variable-class.html#__getattribute__
-netCDF4._netCDF4.Variable._grpid	netCDF4._netCDF4.Variable-class.html#_grpid
-netCDF4._netCDF4.Variable.shape	netCDF4._netCDF4.Variable-class.html#shape
-netCDF4._netCDF4.Variable.set_auto_maskandscale	netCDF4._netCDF4.Variable-class.html#set_auto_maskandscale
-netCDF4._netCDF4.Variable.filters	netCDF4._netCDF4.Variable-class.html#filters
-netCDF4._netCDF4.Variable._toma	netCDF4._netCDF4.Variable-class.html#_toma
-netCDF4._netCDF4.Variable.getValue	netCDF4._netCDF4.Variable-class.html#getValue
-netCDF4._netCDF4.Variable.__init__	netCDF4._netCDF4.Variable-class.html#__init__
-netCDF4._netCDF4.Variable.size	netCDF4._netCDF4.Variable-class.html#size
-netCDF4._netCDF4.Variable.assignValue	netCDF4._netCDF4.Variable-class.html#assignValue
-netCDF4._netCDF4.Variable.__setattr__	netCDF4._netCDF4.Variable-class.html#__setattr__
-netCDF4._netCDF4.Variable.scale	netCDF4._netCDF4.Variable-class.html#scale
-netCDF4._netCDF4.Variable.group	netCDF4._netCDF4.Variable-class.html#group
-netCDF4._netCDF4.Variable.__new__	netCDF4._netCDF4.Variable-class.html#__new__
-netCDF4._netCDF4.Variable._iscompound	netCDF4._netCDF4.Variable-class.html#_iscompound
-netCDF4._netCDF4.Variable.__array__	netCDF4._netCDF4.Variable-class.html#__array__
-netCDF4._netCDF4.Variable.__getattr__	netCDF4._netCDF4.Variable-class.html#__getattr__
-netCDF4._netCDF4.Variable.name	netCDF4._netCDF4.Variable-class.html#name
-netCDF4._netCDF4.Variable.set_auto_mask	netCDF4._netCDF4.Variable-class.html#set_auto_mask
-netCDF4._netCDF4.Variable.__orthogonal_indexing__	netCDF4._netCDF4.Variable-class.html#__orthogonal_indexing__
-netCDF4._netCDF4.Variable.setncatts	netCDF4._netCDF4.Variable-class.html#setncatts
-netCDF4._netCDF4.Variable.setncattr	netCDF4._netCDF4.Variable-class.html#setncattr
-netCDF4._netCDF4.Variable.__len__	netCDF4._netCDF4.Variable-class.html#__len__
-netCDF4._netCDF4.Variable._varid	netCDF4._netCDF4.Variable-class.html#_varid
-netCDF4._netCDF4.Variable.ncattrs	netCDF4._netCDF4.Variable-class.html#ncattrs
-netCDF4._netCDF4.Variable.get_var_chunk_cache	netCDF4._netCDF4.Variable-class.html#get_var_chunk_cache
-netCDF4._netCDF4.Variable.set_var_chunk_cache	netCDF4._netCDF4.Variable-class.html#set_var_chunk_cache
-netCDF4._netCDF4.Variable.renameAttribute	netCDF4._netCDF4.Variable-class.html#renameAttribute
-netCDF4._netCDF4.Variable.__getitem__	netCDF4._netCDF4.Variable-class.html#__getitem__
-netCDF4._netCDF4.Variable._assign_vlen	netCDF4._netCDF4.Variable-class.html#_assign_vlen
-netCDF4._netCDF4.Variable.chunking	netCDF4._netCDF4.Variable-class.html#chunking
-netCDF4._netCDF4.Variable.delncattr	netCDF4._netCDF4.Variable-class.html#delncattr
-netCDF4._netCDF4.Variable.least_significant_digit	netCDF4._netCDF4.Variable-class.html#least_significant_digit
-netCDF4._netCDF4.Variable._get	netCDF4._netCDF4.Variable-class.html#_get
-netCDF4._netCDF4.Variable._vltype	netCDF4._netCDF4.Variable-class.html#_vltype
-netCDF4._netCDF4.Variable.__unicode__	netCDF4._netCDF4.Variable-class.html#__unicode__
-netCDF4._netCDF4.Variable.dimensions	netCDF4._netCDF4.Variable-class.html#dimensions
-netCDF4._netCDF4.Variable._grp	netCDF4._netCDF4.Variable-class.html#_grp
-netCDF4._netCDF4.Variable.__delitem__	netCDF4._netCDF4.Variable-class.html#__delitem__
-netCDF4._netCDF4.Variable._cmptype	netCDF4._netCDF4.Variable-class.html#_cmptype
-netCDF4._netCDF4.Variable._put	netCDF4._netCDF4.Variable-class.html#_put
-netCDF4._netCDF4.Variable.getncattr	netCDF4._netCDF4.Variable-class.html#getncattr
-netCDF4._netCDF4.Variable.datatype	netCDF4._netCDF4.Variable-class.html#datatype
-netCDF4._netCDF4.Variable.set_auto_scale	netCDF4._netCDF4.Variable-class.html#set_auto_scale
-netCDF4._netCDF4.Variable.mask	netCDF4._netCDF4.Variable-class.html#mask
-netCDF4._netCDF4.Variable.__setitem__	netCDF4._netCDF4.Variable-class.html#__setitem__
-netCDF4._netCDF4.Variable._name	netCDF4._netCDF4.Variable-class.html#_name
-netCDF4._netCDF4.Variable.__delattr__	netCDF4._netCDF4.Variable-class.html#__delattr__
-netCDF4._netCDF4.Variable._getdims	netCDF4._netCDF4.Variable-class.html#_getdims
-netCDF4._netCDF4.Variable.__repr__	netCDF4._netCDF4.Variable-class.html#__repr__
-netCDF4._netCDF4.Variable.endian	netCDF4._netCDF4.Variable-class.html#endian
-netCDF4._netCDF4.Variable._nunlimdim	netCDF4._netCDF4.Variable-class.html#_nunlimdim
-netCDF4._netCDF4.Variable._isprimitive	netCDF4._netCDF4.Variable-class.html#_isprimitive
-netCDF4._netCDF4.Variable._getname	netCDF4._netCDF4.Variable-class.html#_getname
-netCDF4._netCDF4.Variable._isvlen	netCDF4._netCDF4.Variable-class.html#_isvlen
diff --git a/docs/class-tree.html b/docs/class-tree.html
deleted file mode 100644
index 7bd668e..0000000
--- a/docs/class-tree.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Class Hierarchy</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Trees   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%"> </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<center><b>
- [ <a href="module-tree.html">Module Hierarchy</a>
- | <a href="class-tree.html">Class Hierarchy</a> ]
-</b></center><br />
-<h1 class="epydoc">Class Hierarchy</h1>
-<ul class="nomargin-top">
-    <li> <strong class="uidlink">object</strong>:
-      <em class="summary">The most base type</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.CompoundType-class.html">netCDF4._netCDF4.CompoundType</a></strong>:
-      <em class="summary">A <a href="netCDF4._netCDF4.CompoundType-class.html" 
-        class="link">CompoundType</a> instance is used to describe a 
-        compound data type.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.Dataset-class.html">netCDF4._netCDF4.Dataset</a></strong>:
-      <em class="summary">Dataset(self, filename, mode="r", clobber=True, 
-        diskless=False, persist=False, keepweakref=False, format='NETCDF4')</em>
-    <ul>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.Group-class.html">netCDF4._netCDF4.Group</a></strong>:
-      <em class="summary">Group(self, parent, name)</em>
-    </li>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.MFDataset-class.html">netCDF4._netCDF4.MFDataset</a></strong>:
-      <em class="summary">MFDataset(self, files, check=False, aggdim=None, exclude=[])</em>
-    </li>
-    </ul>
-    </li>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.Dimension-class.html">netCDF4._netCDF4.Dimension</a></strong>:
-      <em class="summary">Dimension(self, group, name, size=None)</em>
-    </li>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.VLType-class.html">netCDF4._netCDF4.VLType</a></strong>:
-      <em class="summary">A <a href="netCDF4._netCDF4.VLType-class.html" 
-        class="link">VLType</a> instance is used to describe a variable 
-        length (VLEN) data type.</em>
-    </li>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.Variable-class.html">netCDF4._netCDF4.Variable</a></strong>:
-      <em class="summary">Variable(self, group, name, datatype, dimensions=(), zlib=False, 
-        complevel=4, shuffle=True, fletcher32=False, contiguous=False, 
-        chunksizes=None, endian='native', 
-        least_significant_digit=None,fill_value=None)</em>
-    </li>
-    <li> <strong class="uidlink">netCDF4._netCDF4._Variable</strong>
-    <ul>
-    <li> <strong class="uidlink"><a href="netCDF4._netCDF4.MFTime-class.html">netCDF4._netCDF4.MFTime</a></strong>:
-      <em class="summary">MFTime(self, time, units=None)</em>
-    </li>
-    </ul>
-    </li>
-    </ul>
-    </li>
-</ul>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Trees   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue May 12 15:08:44 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/crarr.png b/docs/crarr.png
deleted file mode 100644
index 26b43c5..0000000
Binary files a/docs/crarr.png and /dev/null differ
diff --git a/docs/epydoc.css b/docs/epydoc.css
deleted file mode 100644
index 86d4170..0000000
--- a/docs/epydoc.css
+++ /dev/null
@@ -1,322 +0,0 @@
-
-
-/* Epydoc CSS Stylesheet
- *
- * This stylesheet can be used to customize the appearance of epydoc's
- * HTML output.
- *
- */
-
-/* Default Colors & Styles
- *   - Set the default foreground & background color with 'body'; and 
- *     link colors with 'a:link' and 'a:visited'.
- *   - Use bold for decision list terms.
- *   - The heading styles defined here are used for headings *within*
- *     docstring descriptions.  All headings used by epydoc itself use
- *     either class='epydoc' or class='toc' (CSS styles for both
- *     defined below).
- */
-body                        { background: #ffffff; color: #000000; }
-p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
-a:link                      { color: #0000ff; }
-a:visited                   { color: #204080; }
-dt                          { font-weight: bold; }
-h1                          { font-size: +140%; font-style: italic;
-                              font-weight: bold; }
-h2                          { font-size: +125%; font-style: italic;
-                              font-weight: bold; }
-h3                          { font-size: +110%; font-style: italic;
-                              font-weight: normal; }
-code                        { font-size: 100%; }
-/* N.B.: class, not pseudoclass */
-a.link                      { font-family: monospace; }
- 
-/* Page Header & Footer
- *   - The standard page header consists of a navigation bar (with
- *     pointers to standard pages such as 'home' and 'trees'); a
- *     breadcrumbs list, which can be used to navigate to containing
- *     classes or modules; options links, to show/hide private
- *     variables and to show/hide frames; and a page title (using
- *     <h1>).  The page title may be followed by a link to the
- *     corresponding source code (using 'span.codelink').
- *   - The footer consists of a navigation bar, a timestamp, and a
- *     pointer to epydoc's homepage.
- */ 
-h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
-h2.epydoc                   { font-size: +130%; font-weight: bold; }
-h3.epydoc                   { font-size: +115%; font-weight: bold;
-                              margin-top: 0.2em; }
-td h3.epydoc                { font-size: +115%; font-weight: bold;
-                              margin-bottom: 0; }
-table.navbar                { background: #a0c0ff; color: #000000;
-                              border: 2px groove #c0d0d0; }
-table.navbar table          { color: #000000; }
-th.navbar-select            { background: #70b0ff;
-                              color: #000000; } 
-table.navbar a              { text-decoration: none; }  
-table.navbar a:link         { color: #0000ff; }
-table.navbar a:visited      { color: #204080; }
-span.breadcrumbs            { font-size: 85%; font-weight: bold; }
-span.options                { font-size: 70%; }
-span.codelink               { font-size: 85%; }
-td.footer                   { font-size: 85%; }
-
-/* Table Headers
- *   - Each summary table and details section begins with a 'header'
- *     row.  This row contains a section title (marked by
- *     'span.table-header') as well as a show/hide private link
- *     (marked by 'span.options', defined above).
- *   - Summary tables that contain user-defined groups mark those
- *     groups using 'group header' rows.
- */
-td.table-header             { background: #70b0ff; color: #000000;
-                              border: 1px solid #608090; }
-td.table-header table       { color: #000000; }
-td.table-header table a:link      { color: #0000ff; }
-td.table-header table a:visited   { color: #204080; }
-span.table-header           { font-size: 120%; font-weight: bold; }
-th.group-header             { background: #c0e0f8; color: #000000;
-                              text-align: left; font-style: italic; 
-                              font-size: 115%; 
-                              border: 1px solid #608090; }
-
-/* Summary Tables (functions, variables, etc)
- *   - Each object is described by a single row of the table with
- *     two cells.  The left cell gives the object's type, and is
- *     marked with 'code.summary-type'.  The right cell gives the
- *     object's name and a summary description.
- *   - CSS styles for the table's header and group headers are
- *     defined above, under 'Table Headers'
- */
-table.summary               { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090;
-                              margin-bottom: 0.5em; }
-td.summary                  { border: 1px solid #608090; }
-code.summary-type           { font-size: 85%; }
-table.summary a:link        { color: #0000ff; }
-table.summary a:visited     { color: #204080; }
-
-
-/* Details Tables (functions, variables, etc)
- *   - Each object is described in its own div.
- *   - A single-row summary table w/ table-header is used as
- *     a header for each details section (CSS style for table-header
- *     is defined above, under 'Table Headers').
- */
-table.details               { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090;
-                              margin: .2em 0 0 0; }
-table.details table         { color: #000000; }
-table.details a:link        { color: #0000ff; }
-table.details a:visited     { color: #204080; }
-
-/* Fields */
-dl.fields                   { margin-left: 2em; margin-top: 1em;
-                              margin-bottom: 1em; }
-dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
-dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
-div.fields                  { margin-left: 2em; }
-div.fields p                { margin-bottom: 0.5em; }
-
-/* Index tables (identifier index, term index, etc)
- *   - link-index is used for indices containing lists of links
- *     (namely, the identifier index & term index).
- *   - index-where is used in link indices for the text indicating
- *     the container/source for each link.
- *   - metadata-index is used for indices containing metadata
- *     extracted from fields (namely, the bug index & todo index).
- */
-table.link-index            { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090; }
-td.link-index               { border-width: 0px; }
-table.link-index a:link     { color: #0000ff; }
-table.link-index a:visited  { color: #204080; }
-span.index-where            { font-size: 70%; }
-table.metadata-index        { border-collapse: collapse;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #608090; 
-                              margin: .2em 0 0 0; }
-td.metadata-index           { border-width: 1px; border-style: solid; }
-table.metadata-index a:link { color: #0000ff; }
-table.metadata-index a:visited  { color: #204080; }
-
-/* Function signatures
- *   - sig* is used for the signature in the details section.
- *   - .summary-sig* is used for the signature in the summary 
- *     table, and when listing property accessor functions.
- * */
-.sig-name                   { color: #006080; }
-.sig-arg                    { color: #008060; }
-.sig-default                { color: #602000; }
-.summary-sig                { font-family: monospace; }
-.summary-sig-name           { color: #006080; font-weight: bold; }
-table.summary a.summary-sig-name:link
-                            { color: #006080; font-weight: bold; }
-table.summary a.summary-sig-name:visited
-                            { color: #006080; font-weight: bold; }
-.summary-sig-arg            { color: #006040; }
-.summary-sig-default        { color: #501800; }
-
-/* Subclass list
- */
-ul.subclass-list { display: inline; }
-ul.subclass-list li { display: inline; }
-
-/* To render variables, classes etc. like functions */
-table.summary .summary-name { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-table.summary
-     a.summary-name:link    { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-table.summary
-    a.summary-name:visited  { color: #006080; font-weight: bold;
-                              font-family: monospace; }
-
-/* Variable values
- *   - In the 'variable details' sections, each varaible's value is
- *     listed in a 'pre.variable' box.  The width of this box is
- *     restricted to 80 chars; if the value's repr is longer than
- *     this it will be wrapped, using a backslash marked with
- *     class 'variable-linewrap'.  If the value's repr is longer
- *     than 3 lines, the rest will be ellided; and an ellipsis
- *     marker ('...' marked with 'variable-ellipsis') will be used.
- *   - If the value is a string, its quote marks will be marked
- *     with 'variable-quote'.
- *   - If the variable is a regexp, it is syntax-highlighted using
- *     the re* CSS classes.
- */
-pre.variable                { padding: .5em; margin: 0;
-                              background: #dce4ec; color: #000000;
-                              border: 1px solid #708890; }
-.variable-linewrap          { color: #604000; font-weight: bold; }
-.variable-ellipsis          { color: #604000; font-weight: bold; }
-.variable-quote             { color: #604000; font-weight: bold; }
-.variable-group             { color: #008000; font-weight: bold; }
-.variable-op                { color: #604000; font-weight: bold; }
-.variable-string            { color: #006030; }
-.variable-unknown           { color: #a00000; font-weight: bold; }
-.re                         { color: #000000; }
-.re-char                    { color: #006030; }
-.re-op                      { color: #600000; }
-.re-group                   { color: #003060; }
-.re-ref                     { color: #404040; }
-
-/* Base tree
- *   - Used by class pages to display the base class hierarchy.
- */
-pre.base-tree               { font-size: 80%; margin: 0; }
-
-/* Frames-based table of contents headers
- *   - Consists of two frames: one for selecting modules; and
- *     the other listing the contents of the selected module.
- *   - h1.toc is used for each frame's heading
- *   - h2.toc is used for subheadings within each frame.
- */
-h1.toc                      { text-align: center; font-size: 105%;
-                              margin: 0; font-weight: bold;
-                              padding: 0; }
-h2.toc                      { font-size: 100%; font-weight: bold; 
-                              margin: 0.5em 0 0 -0.3em; }
-
-/* Syntax Highlighting for Source Code
- *   - doctest examples are displayed in a 'pre.py-doctest' block.
- *     If the example is in a details table entry, then it will use
- *     the colors specified by the 'table pre.py-doctest' line.
- *   - Source code listings are displayed in a 'pre.py-src' block.
- *     Each line is marked with 'span.py-line' (used to draw a line
- *     down the left margin, separating the code from the line
- *     numbers).  Line numbers are displayed with 'span.py-lineno'.
- *     The expand/collapse block toggle button is displayed with
- *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
- *     modify the font size of the text.)
- *   - If a source code page is opened with an anchor, then the
- *     corresponding code block will be highlighted.  The code
- *     block's header is highlighted with 'py-highlight-hdr'; and
- *     the code block's body is highlighted with 'py-highlight'.
- *   - The remaining py-* classes are used to perform syntax
- *     highlighting (py-string for string literals, py-name for names,
- *     etc.)
- */
-pre.py-doctest              { padding: .5em; margin: 1em;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #708890; }
-table pre.py-doctest        { background: #dce4ec;
-                              color: #000000; }
-pre.py-src                  { border: 2px solid #000000; 
-                              background: #f0f0f0; color: #000000; }
-.py-line                    { border-left: 2px solid #000000; 
-                              margin-left: .2em; padding-left: .4em; }
-.py-lineno                  { font-style: italic; font-size: 90%;
-                              padding-left: .5em; }
-a.py-toggle                 { text-decoration: none; }
-div.py-highlight-hdr        { border-top: 2px solid #000000;
-                              border-bottom: 2px solid #000000;
-                              background: #d8e8e8; }
-div.py-highlight            { border-bottom: 2px solid #000000;
-                              background: #d0e0e0; }
-.py-prompt                  { color: #005050; font-weight: bold;}
-.py-more                    { color: #005050; font-weight: bold;}
-.py-string                  { color: #006030; }
-.py-comment                 { color: #003060; }
-.py-keyword                 { color: #600000; }
-.py-output                  { color: #404040; }
-.py-name                    { color: #000050; }
-.py-name:link               { color: #000050 !important; }
-.py-name:visited            { color: #000050 !important; }
-.py-number                  { color: #005000; }
-.py-defname                 { color: #000060; font-weight: bold; }
-.py-def-name                { color: #000060; font-weight: bold; }
-.py-base-class              { color: #000060; }
-.py-param                   { color: #000060; }
-.py-docstring               { color: #006030; }
-.py-decorator               { color: #804020; }
-/* Use this if you don't want links to names underlined: */
-/*a.py-name                   { text-decoration: none; }*/
-
-/* Graphs & Diagrams
- *   - These CSS styles are used for graphs & diagrams generated using
- *     Graphviz dot.  'img.graph-without-title' is used for bare
- *     diagrams (to remove the border created by making the image
- *     clickable).
- */
-img.graph-without-title     { border: none; }
-img.graph-with-title        { border: 1px solid #000000; }
-span.graph-title            { font-weight: bold; }
-span.graph-caption          { }
-
-/* General-purpose classes
- *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
- *     is not indented, but whose subsequent lines are.
- *   - The 'nomargin-top' class is used to remove the top margin (e.g.
- *     from lists).  The 'nomargin' class is used to remove both the
- *     top and bottom margin (but not the left or right margin --
- *     for lists, that would cause the bullets to disappear.)
- */
-p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
-                              margin: 0; }
-.nomargin-top               { margin-top: 0; }
-.nomargin                   { margin-top: 0; margin-bottom: 0; }
-
-/* HTML Log */
-div.log-block               { padding: 0; margin: .5em 0 .5em 0;
-                              background: #e8f0f8; color: #000000;
-                              border: 1px solid #000000; }
-div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #ffb0b0; color: #000000;
-                              border: 1px solid #000000; }
-div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #ffffb0; color: #000000;
-                              border: 1px solid #000000; }
-div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
-                              background: #b0ffb0; color: #000000;
-                              border: 1px solid #000000; }
-h2.log-hdr                  { background: #70b0ff; color: #000000;
-                              margin: 0; padding: 0em 0.5em 0em 0.5em;
-                              border-bottom: 1px solid #000000; font-size: 110%; }
-p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
-tr.opt-changed              { color: #000000; font-weight: bold; }
-tr.opt-default              { color: #606060; }
-pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/docs/epydoc.js b/docs/epydoc.js
deleted file mode 100644
index e787dbc..0000000
--- a/docs/epydoc.js
+++ /dev/null
@@ -1,293 +0,0 @@
-function toggle_private() {
-        // Search for any private/public links on this page.  Store
-        // their old text in "cmd," so we will know what action to
-        // take; and change their text to the opposite action.
-        var cmd = "?";
-        var elts = document.getElementsByTagName("a");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "privatelink") {
-            cmd = elts[i].innerHTML;
-            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
-                                    "hide private":"show private");
-          }
-        }
-        // Update all DIVs containing private objects.
-        var elts = document.getElementsByTagName("div");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
-          }
-          else if (elts[i].className == "public") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
-          }
-        }
-        // Update all table rows containing private objects.  Note, we
-        // use "" instead of "block" becaue IE & firefox disagree on what
-        // this should be (block vs table-row), and "" just gives the
-        // default for both browsers.
-        var elts = document.getElementsByTagName("tr");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
-          }
-        }
-        // Update all list items containing private objects.
-        var elts = document.getElementsByTagName("li");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
-                                        "none":"");
-          }
-        }
-        // Update all list items containing private objects.
-        var elts = document.getElementsByTagName("ul");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "private") {
-            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
-          }
-        }
-        // Set a cookie to remember the current option.
-        document.cookie = "EpydocPrivate="+cmd;
-      }
-function show_private() {
-        var elts = document.getElementsByTagName("a");
-        for(var i=0; i<elts.length; i++) {
-          if (elts[i].className == "privatelink") {
-            cmd = elts[i].innerHTML;
-            if (cmd && cmd.substr(0,4)=="show")
-                toggle_private();
-          }
-        }
-      }
-function getCookie(name) {
-        var dc = document.cookie;
-        var prefix = name + "=";
-        var begin = dc.indexOf("; " + prefix);
-        if (begin == -1) {
-          begin = dc.indexOf(prefix);
-          if (begin != 0) return null;
-        } else
-        { begin += 2; }
-        var end = document.cookie.indexOf(";", begin);
-        if (end == -1)
-        { end = dc.length; }
-        return unescape(dc.substring(begin + prefix.length, end));
-      }
-function setFrame(url1, url2) {
-          parent.frames[1].location.href = url1;
-          parent.frames[2].location.href = url2;
-      }
-function checkCookie() {
-        var cmd=getCookie("EpydocPrivate");
-        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
-            toggle_private();
-      }
-function toggleCallGraph(id) {
-        var elt = document.getElementById(id);
-        if (elt.style.display == "none")
-            elt.style.display = "block";
-        else
-            elt.style.display = "none";
-      }
-function expand(id) {
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.style.display = "block";
-  var elt = document.getElementById(id+"-expanded-linenums");
-  if (elt) elt.style.display = "block";
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
-  var elt = document.getElementById(id+"-collapsed-linenums");
-  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
-  var elt = document.getElementById(id+"-toggle");
-  if (elt) { elt.innerHTML = "-"; }
-}
-
-function collapse(id) {
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.style.display = "none";
-  var elt = document.getElementById(id+"-expanded-linenums");
-  if (elt) elt.style.display = "none";
-  var elt = document.getElementById(id+"-collapsed-linenums");
-  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
-  var elt = document.getElementById(id+"-toggle");
-  if (elt) { elt.innerHTML = "+"; }
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) {
-    elt.style.display = "block";
-    
-    var indent = elt.getAttribute("indent");
-    var pad = elt.getAttribute("pad");
-    var s = "<tt class='py-lineno'>";
-    for (var i=0; i<pad.length; i++) { s += " " }
-    s += "</tt>";
-    s += "  <tt class='py-line'>";
-    for (var i=0; i<indent.length; i++) { s += " " }
-    s += "<a href='#' onclick='expand(\"" + id;
-    s += "\");return false'>...</a></tt><br />";
-    elt.innerHTML = s;
-  }
-}
-
-function toggle(id) {
-  elt = document.getElementById(id+"-toggle");
-  if (elt.innerHTML == "-")
-      collapse(id); 
-  else
-      expand(id);
-  return false;
-}
-
-function highlight(id) {
-  var elt = document.getElementById(id+"-def");
-  if (elt) elt.className = "py-highlight-hdr";
-  var elt = document.getElementById(id+"-expanded");
-  if (elt) elt.className = "py-highlight";
-  var elt = document.getElementById(id+"-collapsed");
-  if (elt) elt.className = "py-highlight";
-}
-
-function num_lines(s) {
-  var n = 1;
-  var pos = s.indexOf("\n");
-  while ( pos > 0) {
-    n += 1;
-    pos = s.indexOf("\n", pos+1);
-  }
-  return n;
-}
-
-// Collapse all blocks that mave more than `min_lines` lines.
-function collapse_all(min_lines) {
-  var elts = document.getElementsByTagName("div");
-  for (var i=0; i<elts.length; i++) {
-    var elt = elts[i];
-    var split = elt.id.indexOf("-");
-    if (split > 0)
-      if (elt.id.substring(split, elt.id.length) == "-expanded")
-        if (num_lines(elt.innerHTML) > min_lines)
-          collapse(elt.id.substring(0, split));
-  }
-}
-
-function expandto(href) {
-  var start = href.indexOf("#")+1;
-  if (start != 0 && start != href.length) {
-    if (href.substring(start, href.length) != "-") {
-      collapse_all(4);
-      pos = href.indexOf(".", start);
-      while (pos != -1) {
-        var id = href.substring(start, pos);
-        expand(id);
-        pos = href.indexOf(".", pos+1);
-      }
-      var id = href.substring(start, href.length);
-      expand(id);
-      highlight(id);
-    }
-  }
-}
-
-function kill_doclink(id) {
-  var parent = document.getElementById(id);
-  parent.removeChild(parent.childNodes.item(0));
-}
-function auto_kill_doclink(ev) {
-  if (!ev) var ev = window.event;
-  if (!this.contains(ev.toElement)) {
-    var parent = document.getElementById(this.parentID);
-    parent.removeChild(parent.childNodes.item(0));
-  }
-}
-
-function doclink(id, name, targets_id) {
-  var elt = document.getElementById(id);
-
-  // If we already opened the box, then destroy it.
-  // (This case should never occur, but leave it in just in case.)
-  if (elt.childNodes.length > 1) {
-    elt.removeChild(elt.childNodes.item(0));
-  }
-  else {
-    // The outer box: relative + inline positioning.
-    var box1 = document.createElement("div");
-    box1.style.position = "relative";
-    box1.style.display = "inline";
-    box1.style.top = 0;
-    box1.style.left = 0;
-  
-    // A shadow for fun
-    var shadow = document.createElement("div");
-    shadow.style.position = "absolute";
-    shadow.style.left = "-1.3em";
-    shadow.style.top = "-1.3em";
-    shadow.style.background = "#404040";
-    
-    // The inner box: absolute positioning.
-    var box2 = document.createElement("div");
-    box2.style.position = "relative";
-    box2.style.border = "1px solid #a0a0a0";
-    box2.style.left = "-.2em";
-    box2.style.top = "-.2em";
-    box2.style.background = "white";
-    box2.style.padding = ".3em .4em .3em .4em";
-    box2.style.fontStyle = "normal";
-    box2.onmouseout=auto_kill_doclink;
-    box2.parentID = id;
-
-    // Get the targets
-    var targets_elt = document.getElementById(targets_id);
-    var targets = targets_elt.getAttribute("targets");
-    var links = "";
-    target_list = targets.split(",");
-    for (var i=0; i<target_list.length; i++) {
-        var target = target_list[i].split("=");
-        links += "<li><a href='" + target[1] + 
-               "' style='text-decoration:none'>" +
-               target[0] + "</a></li>";
-    }
-  
-    // Put it all together.
-    elt.insertBefore(box1, elt.childNodes.item(0));
-    //box1.appendChild(box2);
-    box1.appendChild(shadow);
-    shadow.appendChild(box2);
-    box2.innerHTML =
-        "Which <b>"+name+"</b> do you want to see documentation for?" +
-        "<ul style='margin-bottom: 0;'>" +
-        links + 
-        "<li><a href='#' style='text-decoration:none' " +
-        "onclick='kill_doclink(\""+id+"\");return false;'>"+
-        "<i>None of the above</i></a></li></ul>";
-  }
-  return false;
-}
-
-function get_anchor() {
-          var href = location.href;
-          var start = href.indexOf("#")+1;
-          if ((start != 0) && (start != href.length))
-              return href.substring(start, href.length);
-      }
-function redirect_url(dottedName) {
-          // Scan through each element of the "pages" list, and check
-          // if "name" matches with any of them.
-          for (var i=0; i<pages.length; i++) {
-
-              // Each page has the form "<pagename>-m" or "<pagename>-c";
-              // extract the <pagename> portion & compare it to dottedName.
-              var pagename = pages[i].substring(0, pages[i].length-2);
-              if (pagename == dottedName.substring(0,pagename.length)) {
-
-                  // We've found a page that matches `dottedName`;
-                  // construct its URL, using leftover `dottedName`
-                  // content to form an anchor.
-                  var pagetype = pages[i].charAt(pages[i].length-1);
-                  var url = pagename + ((pagetype=="m")?"-module.html":
-                                                        "-class.html");
-                  if (dottedName.length > pagename.length)
-                      url += "#" + dottedName.substring(pagename.length+1,
-                                                        dottedName.length);
-                  return url;
-              }
-          }
-      }
diff --git a/docs/help.html b/docs/help.html
deleted file mode 100644
index 2f4f00c..0000000
--- a/docs/help.html
+++ /dev/null
@@ -1,272 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Help</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Help   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%"> </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-
-<h1 class="epydoc"> API Documentation </h1>
-
-<p> This document contains the API (Application Programming Interface)
-documentation for netcdf4-python.  Documentation for the Python
-objects defined by the project is divided into separate pages for each
-package, module, and class.  The API documentation also includes two
-pages containing information about the project as a whole: a trees
-page, and an index page.  </p>
-
-<h2> Object Documentation </h2>
-
-  <p>Each <strong>Package Documentation</strong> page contains: </p>
-  <ul>
-    <li> A description of the package. </li>
-    <li> A list of the modules and sub-packages contained by the
-    package.  </li>
-    <li> A summary of the classes defined by the package. </li>
-    <li> A summary of the functions defined by the package. </li>
-    <li> A summary of the variables defined by the package. </li>
-    <li> A detailed description of each function defined by the
-    package. </li>
-    <li> A detailed description of each variable defined by the
-    package. </li>
-  </ul>
-  
-  <p>Each <strong>Module Documentation</strong> page contains:</p>
-  <ul>
-    <li> A description of the module. </li>
-    <li> A summary of the classes defined by the module. </li>
-    <li> A summary of the functions defined by the module. </li>
-    <li> A summary of the variables defined by the module. </li>
-    <li> A detailed description of each function defined by the
-    module. </li>
-    <li> A detailed description of each variable defined by the
-    module. </li>
-  </ul>
-  
-  <p>Each <strong>Class Documentation</strong> page contains: </p>
-  <ul>
-    <li> A class inheritance diagram. </li>
-    <li> A list of known subclasses. </li>
-    <li> A description of the class. </li>
-    <li> A summary of the methods defined by the class. </li>
-    <li> A summary of the instance variables defined by the class. </li>
-    <li> A summary of the class (static) variables defined by the
-    class. </li> 
-    <li> A detailed description of each method defined by the
-    class. </li>
-    <li> A detailed description of each instance variable defined by the
-    class. </li> 
-    <li> A detailed description of each class (static) variable defined
-    by the class. </li> 
-  </ul>
-
-<h2> Project Documentation </h2>
-
-  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
-  <ul>
-    <li> The <em>module hierarchy</em> lists every package and module, with
-    modules grouped into packages.  At the top level, and within each
-    package, modules and sub-packages are listed alphabetically. </li>
-    <li> The <em>class hierarchy</em> lists every class, grouped by base
-    class.  If a class has more than one base class, then it will be
-    listed under each base class.  At the top level, and under each base
-    class, classes are listed alphabetically. </li>
-  </ul>
-  
-  <p> The <strong>Index</strong> page contains indices of terms and
-  identifiers: </p>
-  <ul>
-    <li> The <em>term index</em> lists every term indexed by any object's
-    documentation.  For each term, the index provides links to each
-    place where the term is indexed. </li>
-    <li> The <em>identifier index</em> lists the (short) name of every package,
-    module, class, method, function, variable, and parameter.  For each
-    identifier, the index provides a short description, and a link to
-    its documentation. </li>
-  </ul>
-
-<h2> The Table of Contents </h2>
-
-<p> The table of contents occupies the two frames on the left side of
-the window.  The upper-left frame displays the <em>project
-contents</em>, and the lower-left frame displays the <em>module
-contents</em>: </p>
-
-<table class="help summary" border="1" cellspacing="0" cellpadding="3">
-  <tr style="height: 30%">
-    <td align="center" style="font-size: small">
-       Project<br />Contents<hr />...</td>
-    <td align="center" style="font-size: small" rowspan="2" width="70%">
-      API<br />Documentation<br />Frame<br /><br /><br />
-    </td>
-  </tr>
-  <tr>
-    <td align="center" style="font-size: small">
-      Module<br />Contents<hr /> <br />...<br /> 
-    </td>
-  </tr>
-</table><br />
-
-<p> The <strong>project contents frame</strong> contains a list of all packages
-and modules that are defined by the project.  Clicking on an entry
-will display its contents in the module contents frame.  Clicking on a
-special entry, labeled "Everything," will display the contents of
-the entire project. </p>
-
-<p> The <strong>module contents frame</strong> contains a list of every
-submodule, class, type, exception, function, and variable defined by a
-module or package.  Clicking on an entry will display its
-documentation in the API documentation frame.  Clicking on the name of
-the module, at the top of the frame, will display the documentation
-for the module itself. </p>
-
-<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
-navigation bar can be used to control whether the table of contents is
-displayed or not. </p>
-
-<h2> The Navigation Bar </h2>
-
-<p> A navigation bar is located at the top and bottom of every page.
-It indicates what type of page you are currently viewing, and allows
-you to go to related pages.  The following table describes the labels
-on the navigation bar.  Note that not some labels (such as
-[Parent]) are not displayed on all pages. </p>
-
-<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
-<tr class="summary">
-  <th>Label</th>
-  <th>Highlighted when...</th>
-  <th>Links to...</th>
-</tr>
-  <tr><td valign="top"><strong>[Parent]</strong></td>
-      <td valign="top"><em>(never highlighted)</em></td>
-      <td valign="top"> the parent of the current package </td></tr>
-  <tr><td valign="top"><strong>[Package]</strong></td>
-      <td valign="top">viewing a package</td>
-      <td valign="top">the package containing the current object
-      </td></tr>
-  <tr><td valign="top"><strong>[Module]</strong></td>
-      <td valign="top">viewing a module</td>
-      <td valign="top">the module containing the current object
-      </td></tr> 
-  <tr><td valign="top"><strong>[Class]</strong></td>
-      <td valign="top">viewing a class </td>
-      <td valign="top">the class containing the current object</td></tr>
-  <tr><td valign="top"><strong>[Trees]</strong></td>
-      <td valign="top">viewing the trees page</td>
-      <td valign="top"> the trees page </td></tr>
-  <tr><td valign="top"><strong>[Index]</strong></td>
-      <td valign="top">viewing the index page</td>
-      <td valign="top"> the index page </td></tr>
-  <tr><td valign="top"><strong>[Help]</strong></td>
-      <td valign="top">viewing the help page</td>
-      <td valign="top"> the help page </td></tr>
-</table>
-
-<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
-the top navigation bar can be used to control whether documentation
-for private objects is displayed.  Private objects are usually defined
-as objects whose (short) names begin with a single underscore, but do
-not end with an underscore.  For example, "<code>_x</code>",
-"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
-are private objects; but "<code>re.sub</code>",
-"<code>__init__</code>", and "<code>type_</code>" are not.  However,
-if a module defines the "<code>__all__</code>" variable, then its
-contents are used to decide which objects are private. </p>
-
-<p> A timestamp below the bottom navigation bar indicates when each
-page was last updated. </p>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Help   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue May 12 15:08:44 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/identifier-index.html b/docs/identifier-index.html
deleted file mode 100644
index 9348af3..0000000
--- a/docs/identifier-index.html
+++ /dev/null
@@ -1,698 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Identifier Index</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Indices   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%"> </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<table border="0" width="100%">
-<tr valign="bottom"><td>
-<h1 class="epydoc">Identifier Index</h1>
-</td><td>
-[
- <a href="#A">A</a>
-  B
- <a href="#C">C</a>
- <a href="#D">D</a>
- <a href="#E">E</a>
- <a href="#F">F</a>
- <a href="#G">G</a>
- <a href="#H">H</a>
- <a href="#I">I</a>
-  J
- <a href="#K">K</a>
-  L
- <a href="#M">M</a>
- <a href="#N">N</a>
-  O
- <a href="#P">P</a>
-  Q
- <a href="#R">R</a>
- <a href="#S">S</a>
-  T
- <a href="#U">U</a>
- <a href="#V">V</a>
-  W
-  X
-  Y
-  Z
- <a href="#_">_</a>
-]
-</td></table>
-<table border="0" width="100%">
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#assignValue">assignValue()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#chartostring">chartostring()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html#close">close()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#createDimension">createDimension()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#chunking">chunking()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#cmptypes">cmptypes</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#createGroup">createGroup()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#close">close()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.CompoundType-class.html">CompoundType</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#createVariable">createVariable()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Group-class.html#close">close()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Group-class.html">Group</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#createCompoundType">createCompoundType()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#createVLType">createVLType()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#data_model">data_model</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#default_encoding">default_encoding</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#dimensions">dimensions</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#default_fillvals">default_fillvals</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#disk_format">disk_format</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#datatype">datatype</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#delncattr">delncattr()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.CompoundType-class.html#dtype">dtype</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.CompoundType-class.html">CompoundType</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#date2index">date2index()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#delncattr">delncattr()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.VLType-class.html#dtype">dtype</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.VLType-class.html">VLType</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#date2num">date2num()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#dtype">dtype</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#day_units">day_units</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#dimensions">dimensions</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#endian">endian()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#file_format">file_format</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#filepath">filepath()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#filters">filters()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#get_var_chunk_cache">get_var_chunk_cache()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#getValue">getValue()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#group">group()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#getlibversion">getlibversion()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#gregorian">gregorian</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#groups">groups</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#getncattr">getncattr()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Group-class.html">Group</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#getncattr">getncattr()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#group">group()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#hr_units">hr_units</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#is_native_big">is_native_big</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#is_native_little">is_native_little</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#isunlimited">isunlimited()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="K">K</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#keepweakref">keepweakref</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#mask">mask</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#microsec_units">microsec_units</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#MINYEAR">MINYEAR</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#millisec_units">millisec_units</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFTime-class.html">MFTime</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#min_units">min_units</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.CompoundType-class.html#name">name</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.CompoundType-class.html">CompoundType</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#name">name</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#ncattrs">ncattrs()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#name">name</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#NC_DISKLESS">NC_DISKLESS</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#ndim">ndim</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Group-class.html#name">name</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Group-class.html">Group</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#ncattrs">ncattrs()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#num2date">num2date()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.VLType-class.html#name">name</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.VLType-class.html">VLType</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html#ncattrs">ncattrs()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#parent">parent</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#path">path</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#python3">python3</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#renameAttribute">renameAttribute()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#renameDimension">renameDimension()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#renameVariable">renameVariable()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#renameAttribute">renameAttribute()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#renameGroup">renameGroup()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#scale">scale</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#set_auto_scale">set_auto_scale()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#setncatts">setncatts()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#sec_units">sec_units</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#set_fill_off">set_fill_off()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#shape">shape</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#set_auto_mask">set_auto_mask()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#set_fill_on">set_fill_on()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#size">size</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#set_auto_mask">set_auto_mask()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#set_var_chunk_cache">set_var_chunk_cache()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#stringtoarr">stringtoarr()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#set_auto_maskandscale">set_auto_maskandscale()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#setncattr">setncattr()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#stringtochar">stringtochar()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#set_auto_maskandscale">set_auto_maskandscale()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#setncattr">setncattr()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#sync">sync()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#set_auto_scale">set_auto_scale()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#setncatts">setncatts()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#unicode_error">unicode_error</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html">Variable</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.VLType-class.html">VLType</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#variables">variables</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#vltypes">vltypes</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-</table>
-</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__array__">__array__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Group-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Group-class.html">Group</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__delattr__">__delattr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__delattr__">__delattr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFTime-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFTime-class.html">MFTime</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.VLType-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.VLType-class.html">VLType</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__delitem__">__delitem__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.VLType-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.VLType-class.html">VLType</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__enter__">__enter__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__setattr__">__setattr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__exit__">__exit__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#__len__">__len__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html#__setattr__">__setattr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__getattr__">__getattr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__len__">__len__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__setattr__">__setattr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__getattr__">__getattr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#__netcdf4libversion__">__netcdf4libversion__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__setitem__">__setitem__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__getattribute__">__getattribute__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.CompoundType-class.html#__new__">__new__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.CompoundType-class.html">CompoundType</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.CompoundType-class.html#__unicode__">__unicode__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.CompoundType-class.html">CompoundType</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html#__getattribute__">__getattribute__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__new__">__new__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__unicode__">__unicode__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__getattribute__">__getattribute__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#__new__">__new__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#__unicode__">__unicode__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__getitem__">__getitem__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Group-class.html#__new__">__new__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Group-class.html">Group</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.VLType-class.html#__unicode__">__unicode__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.VLType-class.html">VLType</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFTime-class.html#__getitem__">__getitem__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFTime-class.html">MFTime</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.VLType-class.html#__new__">__new__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.VLType-class.html">VLType</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__unicode__">__unicode__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__getitem__">__getitem__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__new__">__new__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#_key">_key</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#__has_nc_inq_format_extended__">__has_nc_inq_format_extended__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__orthogonal_indexing__">__orthogonal_indexing__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#_nctonptype">_nctonptype</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#__has_nc_inq_path__">__has_nc_inq_path__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Variable-class.html#__orthogonal_indexing__">__orthogonal_indexing__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Variable-class.html">Variable</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html">_netCDF4</a><br />
-<span class="index-where">(in netCDF4)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#__has_rename_grp__">__has_rename_grp__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#__package__">__package__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#_nptonctype">_nptonctype</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#__hdf5libversion__">__hdf5libversion__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFDataset-class.html#__qualname__">__qualname__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFDataset-class.html">MFDataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#_npversion">_npversion</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.CompoundType-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.CompoundType-class.html">CompoundType</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.MFTime-class.html#__qualname__">__qualname__</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.MFTime-class.html">MFTime</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#_private_atts">_private_atts</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.CompoundType-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.CompoundType-class.html">CompoundType</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#_supportedtypes">_supportedtypes</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dimension-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dimension-class.html">Dimension</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4.Dataset-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4.Dataset-class.html">Dataset</a>)</span></td>
-<td width="33%" class="link-index"><a href="netCDF4._netCDF4-module.html#_value">_value</a><br />
-<span class="index-where">(in <a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a>)</span></td>
-</tr>
-</table>
-</td></tr>
-</table>
-<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Indices   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue May 12 15:08:44 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index 93b58e4..0000000
--- a/docs/index.html
+++ /dev/null
@@ -1,1732 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4._netCDF4</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Home   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        Package netCDF4 ::
-        Module _netCDF4
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== MODULE DESCRIPTION ==================== -->
-<h1 class="epydoc">Module _netCDF4</h1><p class="nomargin-top"></p>
-<h1 class="heading">Introduction</h1>
-    <p>Python interface to the netCDF version 4 library.  <a 
-    href="http://www.unidata.ucar.edu/software/netcdf/netcdf-4" 
-    target="_top">netCDF version 4</a> has many features not found in 
-    earlier versions of the library and is implemented on top of <a 
-    href="http://www.hdfgroup.org/HDF5" target="_top">HDF5</a>. This module
-    can read and write files in both the new netCDF 4 and the old netCDF 3 
-    format, and can create files that are readable by HDF5 clients. The API
-    modelled after <a 
-    href="http://dirac.cnrs-orleans.fr/plone/software/scientificpython/" 
-    target="_top">Scientific.IO.NetCDF</a>, and should be familiar to users
-    of that module.</p>
-    <p>Most new features of netCDF 4 are implemented, such as multiple 
-    unlimited dimensions, groups and zlib data compression.  All the new 
-    numeric data types (such as 64 bit and unsigned integer types) are 
-    implemented. Compound and variable length (vlen) data types are 
-    supported, but the enum and opaque data types are not. Mixtures of 
-    compound and vlen data types (compound types containing vlens, and 
-    vlens containing compound types) are not supported.</p>
-  <h1 class="heading">Download</h1>
-    <ul>
-      <li>
-        Latest bleeding-edge code from the <a 
-        href="http://github.com/Unidata/netcdf4-python" 
-        target="_top">github repository</a>.
-      </li>
-      <li>
-        Latest <a href="https://pypi.python.org/pypi/netCDF4" 
-        target="_top">releases</a> (source code and windows installers).
-      </li>
-    </ul>
-  <h1 class="heading">Requires</h1>
-    <ul>
-      <li>
-        Python 2.5 or later (python 3 works too).
-      </li>
-      <li>
-        numpy array module <a href="http://numpy.scipy.org" 
-        target="_top">http://numpy.scipy.org</a>, version 1.7.0 or later.
-      </li>
-      <li>
-        <a href="http://cython.org" target="_top">Cython</a>, version 0.19 
-        or later, is optional - if it is installed setup.py will use it to 
-        recompile the Cython source code into C, using conditional 
-        compilation to enable features in the netCDF API that have been 
-        added since version 4.1.1.  If Cython is not installed, these 
-        features (such as the ability to rename Group objects) will be 
-        disabled to preserve backward compatibility with older versions of 
-        the netCDF library.
-      </li>
-      <li>
-        For python < 2.7, the ordereddict module <a 
-        href="http://python.org/pypi/ordereddict" 
-        target="_top">http://python.org/pypi/ordereddict</a>.
-      </li>
-      <li>
-        The HDF5 C library version 1.8.4-patch1 or higher (1.8.8 or higher 
-        recommended) from <a href="ftp://ftp.hdfgroup.org/HDF5/current/src"
-        target="_top">ftp://ftp.hdfgroup.org/HDF5/current/src</a>. Be sure 
-        to build with '<code>--enable-hl --enable-shared</code>'.
-      </li>
-      <li>
-        <a href="http://curl.haxx.se/libcurl/" target="_top">Libcurl</a>, 
-        if you want <a href="http://opendap.org/" target="_top">OPeNDAP</a>
-        support.
-      </li>
-      <li>
-        <a href="http://www.hdfgroup.org/products/hdf4/" 
-        target="_top">HDF4</a>, if you want to be able to read HDF4 
-        "Scientific Dataset" (SD) files.
-      </li>
-      <li>
-        The netCDF-4 C library from <a 
-        href="ftp://ftp.unidata.ucar.edu/pub/netcdf" 
-        target="_top">ftp://ftp.unidata.ucar.edu/pub/netcdf</a>. Version 
-        4.1.1 or higher is required (4.2 or higher recommended). Be sure to
-        build with '<code>--enable-netcdf-4 --enable-shared</code>', and 
-        set <code>CPPFLAGS="-I $HDF5_DIR/include"</code> and 
-        <code>LDFLAGS="-L $HDF5_DIR/lib"</code>, where 
-        <code>$HDF5_DIR</code> is the directory where HDF5 was installed. 
-        If you want <a href="http://opendap.org/" target="_top">OPeNDAP</a>
-        support, add '<code>--enable-dap</code>'. If you want HDF4 SD 
-        support, add '<code>--enable-hdf4</code>' and add the location of 
-        the HDF4 headers and library to <code>CPPFLAGS</code> and 
-        <code>LDFLAGS</code>.
-      </li>
-    </ul>
-  <h1 class="heading">Install</h1>
-    <ul>
-      <li>
-        install the requisite python modules and C libraries (see above). 
-        It's easiest if all the C libs are built as shared libraries.
-      </li>
-      <li>
-        By default, the utility <code>nc-config</code>, installed with 
-        netcdf 4.1.2 or higher, will be run used to determine where all the
-        dependencies live.
-      </li>
-      <li>
-        If <code>nc-config</code> is not in your default <code>PATH</code>,
-        rename the file <code>setup.cfg.template</code> to 
-        <code>setup.cfg</code>, then edit in a text editor (follow the 
-        instructions in the comments). In addition to specifying the path 
-        to <code>nc-config</code>, you can manually set the paths to all 
-        the libraries and their include files (in case 
-        <code>nc-config</code> does not do the right thing).
-      </li>
-      <li>
-        run <code>python setup.py build</code>, then <code>python setup.py 
-        install</code> (as root if necessary).
-      </li>
-      <li>
-        run the tests in the 'test' directory by running <code>python 
-        run_all.py</code>.
-      </li>
-    </ul>
-  <h1 class="heading">Tutorial</h1>
-    <h2 class="heading">1) Creating/Opening/Closing a netCDF file</h2>
-      <p>To create a netCDF file from python, you simply call the <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      constructor. This is also the method used to open an existing netCDF 
-      file.  If the file is open for write access (<code>w, r+</code> or 
-      <code>a</code>), you may write any type of data including new 
-      dimensions, groups, variables and attributes.  netCDF files come in 
-      several flavors (<code>NETCDF3_CLASSIC, NETCDF3_64BIT, 
-      NETCDF4_CLASSIC</code>, and <code>NETCDF4</code>). The first two 
-      flavors are supported by version 3 of the netCDF library. 
-      <code>NETCDF4_CLASSIC</code> files use the version 4 disk format 
-      (HDF5), but do not use any features not found in the version 3 API. 
-      They can be read by netCDF 3 clients only if they have been relinked 
-      against the netCDF 4 library. They can also be read by HDF5 clients. 
-      <code>NETCDF4</code> files use the version 4 disk format (HDF5) and 
-      use the new features of the version 4 API.  The <code>netCDF4</code> 
-      module can read and write files in any of these formats. When 
-      creating a new file, the format may be specified using the 
-      <code>format</code> keyword in the <code>Dataset</code> constructor.
-      The default format is <code>NETCDF4</code>. To see how a given file 
-      is formatted, you can examine the <code>data_model</code> <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      attribute.  Closing the netCDF file is accomplished via the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#close" 
-      class="link">close</a> method of the <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      instance.</p>
-      <p>Here's an example:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> netCDF4 <span class="py-keyword">import</span> Dataset
-<span class="py-prompt">>>> </span>rootgrp = Dataset(<span class="py-string">'test.nc'</span>, <span class="py-string">'w'</span>, format=<span class="py-string">'NETCDF4'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.data_model
-<span class="py-output">NETCDF4</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span>rootgrp.close()</pre>
-      <p>Remote <a href="http://opendap.org" 
-      target="_top">OPeNDAP</a>-hosted datasets can be accessed for reading
-      over http if a URL is provided to the <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      constructor instead of a filename.  However, this requires that the 
-      netCDF library be built with OPenDAP support, via the 
-      <code>--enable-dap</code> configure option (added in version 
-      4.0.1).</p>
-    <h2 class="heading">2) Groups in a netCDF file</h2>
-      <p>netCDF version 4 added support for organizing data in hierarchical
-      groups, which are analagous to directories in a filesystem. Groups 
-      serve as containers for variables, dimensions and attributes, as well
-      as other groups.  A <code>netCDF4.Dataset</code> defines creates a 
-      special group, called the 'root group', which is similar to the root 
-      directory in a unix filesystem.  To create <a 
-      href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> 
-      instances, use the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createGroup" 
-      class="link">createGroup</a> method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      instance. <a href="netCDF4._netCDF4.Dataset-class.html#createGroup" 
-      class="link">createGroup</a> takes a single argument, a python string
-      containing the name of the new group. The new <a 
-      href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> 
-      instances contained within the root group can be accessed by name 
-      using the <code>groups</code> dictionary attribute of the <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      instance.  Only <code>NETCDF4</code> formatted files support Groups, 
-      if you try to create a Group in a netCDF 3 file you will get an error
-      message.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>rootgrp = Dataset(<span class="py-string">'test.nc'</span>, <span class="py-string">'a'</span>)
-<span class="py-prompt">>>> </span>fcstgrp = rootgrp.createGroup(<span class="py-string">'forecasts'</span>)
-<span class="py-prompt">>>> </span>analgrp = rootgrp.createGroup(<span class="py-string">'analyses'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.groups
-<span class="py-output">OrderedDict([('forecasts', <netCDF4.Group object at 0x1b4b7b0>),</span>
-<span class="py-output">             ('analyses', <netCDF4.Group object at 0x1b4b970>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Groups can exist within groups in a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a>, 
-      just as directories exist within directories in a unix filesystem. 
-      Each <a href="netCDF4._netCDF4.Group-class.html" 
-      class="link">Group</a> instance has a <code>'groups'</code> attribute
-      dictionary containing all of the group instances contained within 
-      that group. Each <a href="netCDF4._netCDF4.Group-class.html" 
-      class="link">Group</a> instance also has a <code>'path'</code> 
-      attribute that contains a simulated unix directory path to that 
-      group.  To simplify the creation of nested groups, you can use a 
-      unix-like path as an argument to <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createGroup" 
-      class="link">createGroup</a>.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>fcstgrp1 = rootgrp.createGroup(<span class="py-string">'/forecasts/model1'</span>)
-<span class="py-prompt">>>> </span>fcstgrp2 = rootgrp.createGroup(<span class="py-string">'/forecasts/model2'</span>)</pre>
-      <p>If any of the intermediate elements of the path do not exist, they
-      are created, just as with the unix command <code>'mkdir -p'</code>. 
-      If you try to create a group that already exists, no error will be 
-      raised, and the existing group will be returned.</p>
-      <p>Here's an example that shows how to navigate all the groups in a 
-      <a href="netCDF4._netCDF4.Dataset-class.html" 
-      class="link">Dataset</a>. The function <code>walktree</code> is a 
-      Python generator that is used to walk the directory tree. Note that 
-      printing the <a href="netCDF4._netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> or <a 
-      href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> 
-      object yields summary information about it's contents.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">walktree</span>(top):
-<span class="py-prompt">>>> </span>    <span class="py-builtin">values</span> = top.groups.values()
-<span class="py-prompt">>>> </span>    yield <span class="py-builtin">values</span>
-<span class="py-prompt">>>> </span>    <span class="py-keyword">for</span> value <span class="py-keyword">in</span> top.groups.values():
-<span class="py-prompt">>>> </span>        <span class="py-keyword">for</span> children <span class="py-keyword">in</span> walktree(value):
-<span class="py-prompt">>>> </span>            yield children
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> children <span class="py-keyword">in</span> walktree(rootgrp):
-<span class="py-prompt">>>> </span>     <span class="py-keyword">for</span> child <span class="py-keyword">in</span> children:
-<span class="py-prompt">>>> </span>         <span class="py-keyword">print</span> child
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">        groups: forecasts, analyses</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /forecasts:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups: model1, model2</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /analyses:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /forecasts/model1:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /forecasts/model2:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-    <h2 class="heading">3) Dimensions in a netCDF file</h2>
-      <p>netCDF defines the sizes of all variables in terms of dimensions, 
-      so before any variables can be created the dimensions they use must 
-      be created first. A special case, not often used in practice, is that
-      of a scalar variable, which has no dimensions. A dimension is created
-      using the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createDimension" 
-      class="link">createDimension</a> method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      instance. A Python string is used to set the name of the dimension, 
-      and an integer value is used to set the size. To create an unlimited 
-      dimension (a dimension that can be appended to), the size value is 
-      set to <code>None</code> or 0. In this example, there both the 
-      <code>time</code> and <code>level</code> dimensions are unlimited.  
-      Having more than one unlimited dimension is a new netCDF 4 feature, 
-      in netCDF 3 files there may be only one, and it must be the first 
-      (leftmost) dimension of the variable.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>level = rootgrp.createDimension(<span class="py-string">'level'</span>, None)
-<span class="py-prompt">>>> </span>time = rootgrp.createDimension(<span class="py-string">'time'</span>, None)
-<span class="py-prompt">>>> </span>lat = rootgrp.createDimension(<span class="py-string">'lat'</span>, 73)
-<span class="py-prompt">>>> </span>lon = rootgrp.createDimension(<span class="py-string">'lon'</span>, 144)</pre>
-      <p>All of the <a href="netCDF4._netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> instances are stored in a python 
-      dictionary.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.dimensions
-<span class="py-output">OrderedDict([('level', <netCDF4.Dimension object at 0x1b48030>),</span>
-<span class="py-output">             ('time', <netCDF4.Dimension object at 0x1b481c0>),</span>
-<span class="py-output">             ('lat', <netCDF4.Dimension object at 0x1b480f8>),</span>
-<span class="py-output">             ('lon', <netCDF4.Dimension object at 0x1b48a08>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Calling the python <code>len</code> function with a <a 
-      href="netCDF4._netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> instance returns the current size of that 
-      dimension. The <a 
-      href="netCDF4._netCDF4.Dimension-class.html#isunlimited" 
-      class="link">isunlimited</a> method of a <a 
-      href="netCDF4._netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> instance can be used to determine if the 
-      dimensions is unlimited, or appendable.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> len(lon)
-<span class="py-output">144</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> len.is_unlimited()
-<span class="py-output">False</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> time.is_unlimited()
-<span class="py-output">True</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Printing the <a href="netCDF4._netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> object provides useful summary info, 
-      including the name and length of the dimension, and whether it is 
-      unlimited.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> dimobj <span class="py-keyword">in</span> rootgrp.dimensions.values():
-<span class="py-prompt">>>> </span>   <span class="py-keyword">print</span> dimobj
-<span class="py-output"><type 'netCDF4.Dimension'> (unlimited): name = 'level', size = 0</span>
-<span class="py-output"><type 'netCDF4.Dimension'> (unlimited): name = 'time', size = 0</span>
-<span class="py-output"><type 'netCDF4.Dimension'>: name = 'lat', size = 73</span>
-<span class="py-output"><type 'netCDF4.Dimension'>: name = 'lon', size = 144</span>
-<span class="py-output"><type 'netCDF4.Dimension'> (unlimited): name = 'time', size = 0</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p><a href="netCDF4._netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> names can be changed using the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#renameDimension" 
-      class="link">renameDimension</a> method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      instance.</p>
-    <h2 class="heading">4) Variables in a netCDF file</h2>
-      <p>netCDF variables behave much like python multidimensional array 
-      objects supplied by the <a href="http://numpy.scipy.org" 
-      target="_top">numpy module</a>. However, unlike numpy arrays, netCDF4
-      variables can be appended to along one or more 'unlimited' 
-      dimensions. To create a netCDF variable, use the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      instance. The <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method has two mandatory arguments, 
-      the variable name (a Python string), and the variable datatype. The 
-      variable's dimensions are given by a tuple containing the dimension 
-      names (defined previously with <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createDimension" 
-      class="link">createDimension</a>). To create a scalar variable, 
-      simply leave out the dimensions keyword. The variable primitive 
-      datatypes correspond to the dtype attribute of a numpy array. You can
-      specify the datatype as a numpy dtype object, or anything that can be
-      converted to a numpy dtype object.  Valid datatype specifiers 
-      include: <code>'f4'</code> (32-bit floating point), <code>'f8'</code>
-      (64-bit floating point), <code>'i4'</code> (32-bit signed integer), 
-      <code>'i2'</code> (16-bit signed integer), <code>'i8'</code> (64-bit 
-      singed integer), <code>'i1'</code> (8-bit signed integer), 
-      <code>'u1'</code> (8-bit unsigned integer), <code>'u2'</code> (16-bit
-      unsigned integer), <code>'u4'</code> (32-bit unsigned integer), 
-      <code>'u8'</code> (64-bit unsigned integer), or <code>'S1'</code> 
-      (single-character string).  The old Numeric single-character 
-      typecodes (<code>'f'</code>,<code>'d'</code>,<code>'h'</code>, 
-      <code>'s'</code>,<code>'b'</code>,<code>'B'</code>,<code>'c'</code>,<code>'i'</code>,<code>'l'</code>),
-      corresponding to 
-      (<code>'f4'</code>,<code>'f8'</code>,<code>'i2'</code>,<code>'i2'</code>,<code>'i1'</code>,<code>'i1'</code>,<code>'S1'</code>,<code>'i4'</code>,<code>'i4'</code>),
-      will also work. The unsigned integer types and the 64-bit integer 
-      type can only be used if the file format is <code>NETCDF4</code>.</p>
-      <p>The dimensions themselves are usually also defined as variables, 
-      called coordinate variables. The <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method returns an instance of the <a 
-      href="netCDF4._netCDF4.Variable-class.html" class="link">Variable</a>
-      class whose methods can be used later to access and set variable data
-      and attributes.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>times = rootgrp.createVariable(<span class="py-string">'time'</span>,<span class="py-string">'f8'</span>,(<span class="py-string">'time'</span>,))
-<span class="py-prompt">>>> </span>levels = rootgrp.createVariable(<span class="py-string">'level'</span>,<span class="py-string">'i4'</span>,(<span class="py-string">'level'</span>,))
-<span class="py-prompt">>>> </span>latitudes = rootgrp.createVariable(<span class="py-string">'latitude'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'lat'</span>,))
-<span class="py-prompt">>>> </span>longitudes = rootgrp.createVariable(<span class="py-string">'longitude'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'lon'</span>,))
-<span class="py-prompt">>>> </span><span class="py-comment"># two dimensions unlimited.</span>
-<span class="py-prompt">>>> </span>temp = rootgrp.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,))</pre>
-      <p>To get summary info on a <a 
-      href="netCDF4._netCDF4.Variable-class.html" class="link">Variable</a>
-      instance in an interactive session, just print it.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> temp
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output">float32 temp(time, level, lat, lon)</span>
-<span class="py-output">    least_significant_digit: 3</span>
-<span class="py-output">    units: K</span>
-<span class="py-output">unlimited dimensions: time, level</span>
-<span class="py-output">current shape = (0, 0, 73, 144)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>You can use a path to create a Variable inside a hierarchy of 
-      groups.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>ftemp = rootgrp.createVariable(<span class="py-string">'/forecasts/model1/temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,))</pre>
-      <p>If the intermediate groups do not yet exist, they will be 
-      created.</p>
-      <p>You can also query a <a href="netCDF4._netCDF4.Dataset-class.html"
-      class="link">Dataset</a> or <a 
-      href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> 
-      instance directly to obtain <a 
-      href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> or <a
-      href="netCDF4._netCDF4.Variable-class.html" class="link">Variable</a>
-      instances using paths.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp[<span class="py-string">'/forecasts/model1'</span>] <span class="py-comment"># a Group instance</span>
-<span class="py-output"><type 'netCDF4._netCDF4.Group'></span>
-<span class="py-output">group /forecasts/model1:</span>
-<span class="py-output">    dimensions(sizes):</span>
-<span class="py-output">    variables(dimensions): float32 temp(time,level,lat,lon)</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp[<span class="py-string">'/forecasts/model1/temp'</span>] <span class="py-comment"># a Variable instance</span>
-<span class="py-output"><type 'netCDF4._netCDF4.Variable'></span>
-<span class="py-output">float32 temp(time, level, lat, lon)</span>
-<span class="py-output">path = /forecasts/model1</span>
-<span class="py-output">unlimited dimensions: time, level</span>
-<span class="py-output">current shape = (0, 0, 73, 144)</span>
-<span class="py-output">filling on, default _FillValue of 9.96920996839e+36 used</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>All of the variables in the <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      are stored in a Python dictionary, in the same way as the 
-      dimensions:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.variables
-<span class="py-output">OrderedDict([('time', <netCDF4.Variable object at 0x1b4ba70>),</span>
-<span class="py-output">             ('level', <netCDF4.Variable object at 0x1b4bab0>),</span>
-<span class="py-output">             ('latitude', <netCDF4.Variable object at 0x1b4baf0>),</span>
-<span class="py-output">             ('longitude', <netCDF4.Variable object at 0x1b4bb30>),</span>
-<span class="py-output">             ('temp', <netCDF4.Variable object at 0x1b4bb70>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p><a href="netCDF4._netCDF4.Variable-class.html" 
-      class="link">Variable</a> names can be changed using the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#renameVariable" 
-      class="link">renameVariable</a> method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      instance.</p>
-    <h2 class="heading">5) Attributes in a netCDF file</h2>
-      <p>There are two types of attributes in a netCDF file, global and 
-      variable. Global attributes provide information about a group, or the
-      entire dataset, as a whole. <a 
-      href="netCDF4._netCDF4.Variable-class.html" class="link">Variable</a>
-      attributes provide information about one of the variables in a group.
-      Global attributes are set by assigning values to <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      instance variables. <a href="netCDF4._netCDF4.Variable-class.html" 
-      class="link">Variable</a> attributes are set by assigning values to 
-      <a href="netCDF4._netCDF4.Variable-class.html" 
-      class="link">Variable</a> instances variables. Attributes can be 
-      strings, numbers or sequences. Returning to our example,</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> time
-<span class="py-prompt">>>> </span>rootgrp.description = <span class="py-string">'bogus example script'</span>
-<span class="py-prompt">>>> </span>rootgrp.history = <span class="py-string">'Created '</span> + time.ctime(time.time())
-<span class="py-prompt">>>> </span>rootgrp.source = <span class="py-string">'netCDF4 python module tutorial'</span>
-<span class="py-prompt">>>> </span>latitudes.units = <span class="py-string">'degrees north'</span>
-<span class="py-prompt">>>> </span>longitudes.units = <span class="py-string">'degrees east'</span>
-<span class="py-prompt">>>> </span>levels.units = <span class="py-string">'hPa'</span>
-<span class="py-prompt">>>> </span>temp.units = <span class="py-string">'K'</span>
-<span class="py-prompt">>>> </span>times.units = <span class="py-string">'hours since 0001-01-01 00:00:00.0'</span>
-<span class="py-prompt">>>> </span>times.calendar = <span class="py-string">'gregorian'</span></pre>
-      <p>The <a href="netCDF4._netCDF4.Dataset-class.html#ncattrs" 
-      class="link">ncattrs</a> method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a>, 
-      <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> or
-      <a href="netCDF4._netCDF4.Variable-class.html" 
-      class="link">Variable</a> instance can be used to retrieve the names 
-      of all the netCDF attributes. This method is provided as a 
-      convenience, since using the built-in <code>dir</code> Python 
-      function will return a bunch of private methods and attributes that 
-      cannot (or should not) be modified by the user.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> name <span class="py-keyword">in</span> rootgrp.ncattrs():
-<span class="py-prompt">>>> </span>    <span class="py-keyword">print</span> <span class="py-string">'Global attr'</span>, name, <span class="py-string">'='</span>, getattr(rootgrp,name)
-<span class="py-output">Global attr description = bogus example script</span>
-<span class="py-output">Global attr history = Created Mon Nov  7 10.30:56 2005</span>
-<span class="py-output">Global attr source = netCDF4 python module tutorial</span></pre>
-      <p>The <code>__dict__</code> attribute of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a>, 
-      <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> or
-      <a href="netCDF4._netCDF4.Variable-class.html" 
-      class="link">Variable</a> instance provides all the netCDF attribute 
-      name/value pairs in a python dictionary:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.__dict__
-<span class="py-output">OrderedDict([(u'description', u'bogus example script'),</span>
-<span class="py-output">             (u'history', u'Created Thu Mar  3 19:30:33 2011'),</span>
-<span class="py-output">             (u'source', u'netCDF4 python module tutorial')])</span></pre>
-      <p>Attributes can be deleted from a netCDF <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a>, 
-      <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a> or
-      <a href="netCDF4._netCDF4.Variable-class.html" 
-      class="link">Variable</a> using the python <code>del</code> statement
-      (i.e. <code>del grp.foo</code> removes the attribute <code>foo</code>
-      the the group <code>grp</code>).</p>
-    <h2 class="heading">6) Writing data to and retrieving data from a netCDF variable</h2>
-      <p>Now that you have a netCDF <a 
-      href="netCDF4._netCDF4.Variable-class.html" class="link">Variable</a>
-      instance, how do you put data into it? You can just treat it like an 
-      array and assign data to a slice.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> numpy
-<span class="py-prompt">>>> </span>lats =  numpy.arange(-90,91,2.5)
-<span class="py-prompt">>>> </span>lons =  numpy.arange(-180,180,2.5)
-<span class="py-prompt">>>> </span>latitudes[:] = lats
-<span class="py-prompt">>>> </span>longitudes[:] = lons
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'latitudes =\n'</span>,latitudes[:]
-<span class="py-output">latitudes =</span>
-<span class="py-output">[-90.  -87.5 -85.  -82.5 -80.  -77.5 -75.  -72.5 -70.  -67.5 -65.  -62.5</span>
-<span class="py-output"> -60.  -57.5 -55.  -52.5 -50.  -47.5 -45.  -42.5 -40.  -37.5 -35.  -32.5</span>
-<span class="py-output"> -30.  -27.5 -25.  -22.5 -20.  -17.5 -15.  -12.5 -10.   -7.5  -5.   -2.5</span>
-<span class="py-output">   0.    2.5   5.    7.5  10.   12.5  15.   17.5  20.   22.5  25.   27.5</span>
-<span class="py-output">  30.   32.5  35.   37.5  40.   42.5  45.   47.5  50.   52.5  55.   57.5</span>
-<span class="py-output">  60.   62.5  65.   67.5  70.   72.5  75.   77.5  80.   82.5  85.   87.5</span>
-<span class="py-output">  90. ]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Unlike NumPy's array objects, netCDF <a 
-      href="netCDF4._netCDF4.Variable-class.html" class="link">Variable</a>
-      objects with unlimited dimensions will grow along those dimensions if
-      you assign data outside the currently defined range of indices.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-comment"># append along two unlimited dimensions by assigning to slice.</span>
-<span class="py-prompt">>>> </span>nlats = len(rootgrp.dimensions[<span class="py-string">'lat'</span>])
-<span class="py-prompt">>>> </span>nlons = len(rootgrp.dimensions[<span class="py-string">'lon'</span>])
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'temp shape before adding data = '</span>,temp.shape
-<span class="py-output">temp shape before adding data =  (0, 0, 73, 144)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> numpy.random <span class="py-keyword">import</span> uniform
-<span class="py-prompt">>>> </span>temp[0:5,0:10,:,:] = uniform(size=(5,10,nlats,nlons))
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'temp shape after adding data = '</span>,temp.shape
-<span class="py-output">temp shape after adding data =  (6, 10, 73, 144)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span><span class="py-comment"># levels have grown, but no values yet assigned.</span>
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'levels shape after adding pressure data = '</span>,levels.shape
-<span class="py-output">levels shape after adding pressure data =  (10,)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Note that the size of the levels variable grows when data is 
-      appended along the <code>level</code> dimension of the variable 
-      <code>temp</code>, even though no data has yet been assigned to 
-      levels.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-comment"># now, assign data to levels dimension variable.</span>
-<span class="py-prompt">>>> </span>levels[:] =  [1000.,850.,700.,500.,300.,250.,200.,150.,100.,50.]</pre>
-      <p>However, that there are some differences between NumPy and netCDF 
-      variable slicing rules. Slices behave as usual, being specified as a 
-      <code>start:stop:step</code> triplet. Using a scalar integer index 
-      <code>i</code> takes the ith element and reduces the rank of the 
-      output array by one. Boolean array and integer sequence indexing 
-      behaves differently for netCDF variables than for numpy arrays.  Only
-      1-d boolean arrays and integer sequences are allowed, and these 
-      indices work independently along each dimension (similar to the way 
-      vector subscripts work in fortran).  This means that</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp[0, 0, [0,1,2,3], [0,1,2,3]]</pre>
-      <p>returns an array of shape (4,4) when slicing a netCDF variable, 
-      but for a numpy array it returns an array of shape (4,). Similarly, a
-      netCDF variable of shape <code>(2,3,4,5)</code> indexed with 
-      <code>[0, array([True, False, True]), array([False, True, True, 
-      True]), :]</code> would return a <code>(2, 3, 5)</code> array. In 
-      NumPy, this would raise an error since it would be equivalent to 
-      <code>[0, [0,1], [1,2,3], :]</code>. When slicing with integer 
-      sequences, the indices must be sorted in increasing order and contain
-      no duplicates. While this behaviour may cause some confusion for 
-      those used to NumPy's 'fancy indexing' rules, it provides a very 
-      powerful way to extract data from multidimensional netCDF variables 
-      by using logical operations on the dimension arrays to create 
-      slices.</p>
-      <p>For example,</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>tempdat = temp[::2, [1,3,6], lats>0, lons>0]</pre>
-      <p>will extract time indices 0,2 and 4, pressure levels 850, 500 and 
-      200 hPa, all Northern Hemisphere latitudes and Eastern Hemisphere 
-      longitudes, resulting in a numpy array of shape  (3, 3, 36, 71).</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'shape of fancy temp slice = '</span>,tempdat.shape
-<span class="py-output">shape of fancy temp slice =  (3, 3, 36, 71)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p><b>Special note for scalar variables</b>: To extract data from a 
-      scalar variable <code>v</code> with no associated dimensions, use an 
-      Ellipsis slice (<code>v[...]</code>). The result will be a numpy 
-      scalar object.</p>
-    <h2 class="heading">7) Dealing with time coordinates</h2>
-      <p>Time coordinate values pose a special challenge to netCDF users.  
-      Most metadata standards (such as CF and COARDS) specify that time 
-      should be measure relative to a fixed date using a certain calendar, 
-      with units specified like <code>hours since YY:MM:DD hh-mm-ss</code>.
-      These units can be awkward to deal with, without a utility to convert
-      the values to and from calendar dates.  The functione called <a 
-      href="netCDF4._netCDF4-module.html#num2date" 
-      class="link">num2date</a> and <a 
-      href="netCDF4._netCDF4-module.html#date2num" 
-      class="link">date2num</a> are provided with this package to do just 
-      that.  Here's an example of how they can be used:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-comment"># fill in times.</span>
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> datetime <span class="py-keyword">import</span> datetime, timedelta
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> netCDF4 <span class="py-keyword">import</span> num2date, date2num
-<span class="py-prompt">>>> </span>dates = [datetime(2001,3,1)+n*timedelta(hours=12) <span class="py-keyword">for</span> n <span class="py-keyword">in</span> range(temp.shape[0])]
-<span class="py-prompt">>>> </span>times[:] = date2num(dates,units=times.units,calendar=times.calendar)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'time values (in units %s): '</span> % times.units+<span class="py-string">'\n'</span>,times[:]
-<span class="py-output">time values (in units hours since January 1, 0001):</span>
-<span class="py-output">[ 17533056.  17533068.  17533080.  17533092.  17533104.]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span>dates = num2date(times[:],units=times.units,calendar=times.calendar)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'dates corresponding to time values:\n'</span>,dates
-<span class="py-output">dates corresponding to time values:</span>
-<span class="py-output">[2001-03-01 00:00:00 2001-03-01 12:00:00 2001-03-02 00:00:00</span>
-<span class="py-output"> 2001-03-02 12:00:00 2001-03-03 00:00:00]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p><a href="netCDF4._netCDF4-module.html#num2date" 
-      class="link">num2date</a> converts numeric values of time in the 
-      specified <code>units</code> and <code>calendar</code> to datetime 
-      objects, and <a href="netCDF4._netCDF4-module.html#date2num" 
-      class="link">date2num</a> does the reverse. All the calendars 
-      currently defined in the <a 
-      href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/" 
-      target="_top">CF metadata convention</a> are supported. A function 
-      called <a href="netCDF4._netCDF4-module.html#date2index" 
-      class="link">date2index</a> is also provided which returns the 
-      indices of a netCDF time variable corresponding to a sequence of 
-      datetime instances.</p>
-    <h2 class="heading">8) Reading data from a multi-file netCDF dataset.</h2>
-      <p>If you want to read data from a variable that spans multiple 
-      netCDF files, you can use the <a 
-      href="netCDF4._netCDF4.MFDataset-class.html" 
-      class="link">MFDataset</a> class to read the data as if it were 
-      contained in a single file. Instead of using a single filename to 
-      create a <a href="netCDF4._netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> instance, create a <a 
-      href="netCDF4._netCDF4.MFDataset-class.html" 
-      class="link">MFDataset</a> instance with either a list of filenames, 
-      or a string with a wildcard (which is then converted to a sorted list
-      of files using the python glob module). Variables in the list of 
-      files that share the same unlimited dimension are aggregated 
-      together, and can be sliced across multiple files.  To illustrate 
-      this, let's first create a bunch of netCDF files with the same 
-      variable (with the same unlimited dimension).  The files must in be 
-      in <code>NETCDF3_64BIT</code>, <code>NETCDF3_CLASSIC</code> or 
-      <code>NETCDF4_CLASSIC format</code> (<code>NETCDF4</code> formatted 
-      multi-file datasets are not supported).</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> nfile <span class="py-keyword">in</span> range(10):
-<span class="py-prompt">>>> </span>    f = Dataset(<span class="py-string">'mftest'</span>+repr(nfile)+<span class="py-string">'.nc'</span>,<span class="py-string">'w'</span>,format=<span class="py-string">'NETCDF4_CLASSIC'</span>)
-<span class="py-prompt">>>> </span>    f.createDimension(<span class="py-string">'x'</span>,None)
-<span class="py-prompt">>>> </span>    x = f.createVariable(<span class="py-string">'x'</span>,<span class="py-string">'i'</span>,(<span class="py-string">'x'</span>,))
-<span class="py-prompt">>>> </span>    x[0:10] = numpy.arange(nfile*10,10*(nfile+1))
-<span class="py-prompt">>>> </span>    f.close()</pre>
-      <p>Now read all the files back in at once with <a 
-      href="netCDF4._netCDF4.MFDataset-class.html" 
-      class="link">MFDataset</a></p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> netCDF4 <span class="py-keyword">import</span> MFDataset
-<span class="py-prompt">>>> </span>f = MFDataset(<span class="py-string">'mftest*nc'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'x'</span>][:]
-<span class="py-output">[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24</span>
-<span class="py-output"> 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</span>
-<span class="py-output"> 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</span>
-<span class="py-output"> 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]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Note that MFDataset can only be used to read, not write, 
-      multi-file datasets.</p>
-    <h2 class="heading">9) Efficient compression of netCDF variables</h2>
-      <p>Data stored in netCDF 4 <a 
-      href="netCDF4._netCDF4.Variable-class.html" class="link">Variable</a>
-      objects can be compressed and decompressed on the fly. The parameters
-      for the compression are determined by the <code>zlib</code>, 
-      <code>complevel</code> and <code>shuffle</code> keyword arguments to 
-      the <a href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method. To turn on compression, set 
-      <code>zlib=True</code>.  The <code>complevel</code> keyword regulates
-      the speed and efficiency of the compression (1 being fastest, but 
-      lowest compression ratio, 9 being slowest but best compression 
-      ratio). The default value of <code>complevel</code> is 4. Setting 
-      <code>shuffle=False</code> will turn off the HDF5 shuffle filter, 
-      which de-interlaces a block of data before compression by reordering 
-      the bytes.  The shuffle filter can significantly improve compression 
-      ratios, and is on by default.  Setting <code>fletcher32</code> 
-      keyword argument to <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> to <code>True</code> (it's 
-      <code>False</code> by default) enables the Fletcher32 checksum 
-      algorithm for error detection. It's also possible to set the HDF5 
-      chunking parameters and endian-ness of the binary data stored in the 
-      HDF5 file with the <code>chunksizes</code> and <code>endian</code> 
-      keyword arguments to <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a>.  These keyword arguments only are 
-      relevant for <code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code> 
-      files (where the underlying file format is HDF5) and are silently 
-      ignored if the file format is <code>NETCDF3_CLASSIC</code> or 
-      <code>NETCDF3_64BIT</code>,</p>
-      <p>If your data only has a certain number of digits of precision (say
-      for example, it is temperature data that was measured with a 
-      precision of 0.1 degrees), you can dramatically improve zlib 
-      compression by quantizing (or truncating) the data using the 
-      <code>least_significant_digit</code> keyword argument to <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a>. The least significant digit is the 
-      power of ten of the smallest decimal place in the data that is a 
-      reliable value. For example if the data has a precision of 0.1, then 
-      setting <code>least_significant_digit=1</code> will cause data the 
-      data to be quantized using 
-      <code>numpy.around(scale*data)/scale</code>, where scale = 2**bits, 
-      and bits is determined so that a precision of 0.1 is retained (in 
-      this case bits=4).  Effectively, this makes the compression 'lossy' 
-      instead of 'lossless', that is some precision in the data is 
-      sacrificed for the sake of disk space.</p>
-      <p>In our example, try replacing the line</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp = rootgrp.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,))</pre>
-      <p>with</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp = dataset.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,),zlib=True)</pre>
-      <p>and then</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp = dataset.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,),zlib=True,least_significant_digit=3)</pre>
-      <p>and see how much smaller the resulting files are.</p>
-    <h2 class="heading">10) Beyond homogenous arrays of a fixed type - compound data types</h2>
-      <p>Compound data types map directly to numpy structured (a.k.a 
-      'record' arrays).  Structured arrays are akin to C structs, or 
-      derived types in Fortran. They allow for the construction of 
-      table-like structures composed of combinations of other data types, 
-      including other compound types. Compound types might be useful for 
-      representing multiple parameter values at each point on a grid, or at
-      each time and space location for scattered (point) data. You can then
-      access all the information for a point by reading one variable, 
-      instead of reading different parameters from different variables.  
-      Compound data types are created from the corresponding numpy data 
-      type using the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createCompoundType" 
-      class="link">createCompoundType</a> method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      instance. Since there is no native complex data type in netcdf, 
-      compound types are handy for storing numpy complex arrays.  Here's an
-      example:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>f = Dataset(<span class="py-string">'complex.nc'</span>,<span class="py-string">'w'</span>)
-<span class="py-prompt">>>> </span>size = 3 <span class="py-comment"># length of 1-d complex array</span>
-<span class="py-prompt">>>> </span><span class="py-comment"># create sample complex data.</span>
-<span class="py-prompt">>>> </span>datac = numpy.exp(1j*(1.+numpy.linspace(0, numpy.pi, size)))
-<span class="py-prompt">>>> </span><span class="py-comment"># create complex128 compound data type.</span>
-<span class="py-prompt">>>> </span>complex128 = numpy.dtype([(<span class="py-string">'real'</span>,numpy.float64),(<span class="py-string">'imag'</span>,numpy.float64)])
-<span class="py-prompt">>>> </span>complex128_t = f.createCompoundType(complex128,<span class="py-string">'complex128'</span>)
-<span class="py-prompt">>>> </span><span class="py-comment"># create a variable with this data type, write some data to it.</span>
-<span class="py-prompt">>>> </span>f.createDimension(<span class="py-string">'x_dim'</span>,None)
-<span class="py-prompt">>>> </span>v = f.createVariable(<span class="py-string">'cmplx_var'</span>,complex128_t,<span class="py-string">'x_dim'</span>)
-<span class="py-prompt">>>> </span>data = numpy.empty(size,complex128) <span class="py-comment"># numpy structured array</span>
-<span class="py-prompt">>>> </span>data[<span class="py-string">'real'</span>] = datac.real; data[<span class="py-string">'imag'</span>] = datac.imag
-<span class="py-prompt">>>> </span>v[:] = data <span class="py-comment"># write numpy structured array to netcdf compound var</span>
-<span class="py-prompt">>>> </span><span class="py-comment"># close and reopen the file, check the contents.</span>
-<span class="py-prompt">>>> </span>f.close(); f = Dataset(<span class="py-string">'complex.nc'</span>)
-<span class="py-prompt">>>> </span>v = f.variables[<span class="py-string">'cmplx_var'</span>]
-<span class="py-prompt">>>> </span>datain = v[:] <span class="py-comment"># read in all the data into a numpy structured array</span>
-<span class="py-prompt">>>> </span><span class="py-comment"># create an empty numpy complex array</span>
-<span class="py-prompt">>>> </span>datac2 = numpy.empty(datain.shape,numpy.complex128)
-<span class="py-prompt">>>> </span><span class="py-comment"># .. fill it with contents of structured array.</span>
-<span class="py-prompt">>>> </span>datac2.real = datain[<span class="py-string">'real'</span>]; datac2.imag = datain[<span class="py-string">'imag'</span>]
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> datac.dtype,datac <span class="py-comment"># original data</span>
-<span class="py-output">complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> datac2.dtype,datac2 <span class="py-comment"># data from file</span>
-<span class="py-output">complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Compound types can be nested, but you must create the 'inner' ones
-      first. All of the compound types defined for a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      are stored in a Python dictionary, just like variables and 
-      dimensions. As always, printing objects gives useful summary 
-      information in an interactive session:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> f
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions: x_dim</span>
-<span class="py-output">    variables: cmplx_var</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'cmplx_var'</span>]
-<span class="py-output">compound cmplx_var(x_dim)</span>
-<span class="py-output">compound data type: [('real', '<f8'), ('imag', '<f8')]</span>
-<span class="py-output">unlimited dimensions: x_dim</span>
-<span class="py-output">current shape = (3,)</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.cmptypes
-<span class="py-output">OrderedDict([('complex128', <netCDF4.CompoundType object at 0x1029eb7e8>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.cmptypes[<span class="py-string">'complex128'</span>]
-<span class="py-output"><type 'netCDF4.CompoundType'>: name = 'complex128', numpy dtype = [(u'real','<f8'), (u'imag', '<f8')]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-    <h2 class="heading">11) Variable-length (vlen) data types</h2>
-      <p>NetCDF 4 has support for variable-length or "ragged" 
-      arrays.  These are arrays of variable length sequences having the 
-      same type. To create a variable-length data type, use the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVLType" 
-      class="link">createVLType</a> method method of a <a 
-      href="netCDF4._netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      or <a href="netCDF4._netCDF4.Group-class.html" class="link">Group</a>
-      instance.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>f = Dataset(<span class="py-string">'tst_vlen.nc'</span>,<span class="py-string">'w'</span>)
-<span class="py-prompt">>>> </span>vlen_t = f.createVLType(numpy.int32, <span class="py-string">'phony_vlen'</span>)</pre>
-      <p>The numpy datatype of the variable-length sequences and the name 
-      of the new datatype must be specified. Any of the primitive datatypes
-      can be used (signed and unsigned integers, 32 and 64 bit floats, and 
-      characters), but compound data types cannot. A new variable can then 
-      be created using this datatype.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>x = f.createDimension(<span class="py-string">'x'</span>,3)
-<span class="py-prompt">>>> </span>y = f.createDimension(<span class="py-string">'y'</span>,4)
-<span class="py-prompt">>>> </span>vlvar = f.createVariable(<span class="py-string">'phony_vlen_var'</span>, vlen_t, (<span class="py-string">'y'</span>,<span class="py-string">'x'</span>))</pre>
-      <p>Since there is no native vlen datatype in numpy, vlen arrays are 
-      represented in python as object arrays (arrays of dtype 
-      <code>object</code>). These are arrays whose elements are Python 
-      object pointers, and can contain any type of python object. For this 
-      application, they must contain 1-D numpy arrays all of the same type 
-      but of varying length. In this case, they contain 1-D numpy 
-      <code>int32</code> arrays of random length betwee 1 and 10.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> random
-<span class="py-prompt">>>> </span>data = numpy.empty(len(y)*len(x),object)
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> n <span class="py-keyword">in</span> range(len(y)*len(x)):
-<span class="py-prompt">>>> </span>   data[n] = numpy.arange(random.randint(1,10),dtype=<span class="py-string">'int32'</span>)+1
-<span class="py-prompt">>>> </span>data = numpy.reshape(data,(len(y),len(x)))
-<span class="py-prompt">>>> </span>vlvar[:] = data
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'vlen variable =\n'</span>,vlvar[:]
-<span class="py-output">vlen variable =</span>
-<span class="py-output">[[[ 1  2  3  4  5  6  7  8  9 10] [1 2 3 4 5] [1 2 3 4 5 6 7 8]]</span>
-<span class="py-output"> [[1 2 3 4 5 6 7] [1 2 3 4 5 6] [1 2 3 4 5]]</span>
-<span class="py-output"> [[1 2 3 4 5] [1 2 3 4] [1]]</span>
-<span class="py-output"> [[ 1  2  3  4  5  6  7  8  9 10] [ 1  2  3  4  5  6  7  8  9 10]</span>
-<span class="py-output">  [1 2 3 4 5 6 7 8]]]</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions: x, y</span>
-<span class="py-output">    variables: phony_vlen_var</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'phony_vlen_var'</span>]
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output">vlen phony_vlen_var(y, x)</span>
-<span class="py-output">vlen data type: int32</span>
-<span class="py-output">unlimited dimensions:</span>
-<span class="py-output">current shape = (4, 3)</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.VLtypes[<span class="py-string">'phony_vlen'</span>]
-<span class="py-output"><type 'netCDF4.VLType'>: name = 'phony_vlen', numpy dtype = int32</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Numpy object arrays containing python strings can also be written 
-      as vlen variables,  For vlen strings, you don't need to create a vlen
-      data type. Instead, simply use the python <code>str</code> builtin 
-      (or a numpy string datatype with fixed length greater than 1) when 
-      calling the <a 
-      href="netCDF4._netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>z = f.createDimension(<span class="py-string">'z'</span>,10)
-<span class="py-prompt">>>> </span>strvar = rootgrp.createVariable(<span class="py-string">'strvar'</span>, str, <span class="py-string">'z'</span>)</pre>
-      <p>In this example, an object array is filled with random python 
-      strings with random lengths between 2 and 12 characters, and the data
-      in the object array is assigned to the vlen string variable.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>chars = <span class="py-string">'1234567890aabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>
-<span class="py-prompt">>>> </span>data = numpy.empty(10,<span class="py-string">'O'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> n <span class="py-keyword">in</span> range(10):
-<span class="py-prompt">>>> </span>    stringlen = random.randint(2,12)
-<span class="py-prompt">>>> </span>    data[n] = <span class="py-string">''</span>.join([random.choice(chars) <span class="py-keyword">for</span> i <span class="py-keyword">in</span> range(stringlen)])
-<span class="py-prompt">>>> </span>strvar[:] = data
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'variable-length string variable:\n'</span>,strvar[:]
-<span class="py-output">variable-length string variable:</span>
-<span class="py-output">[aDy29jPt jd7aplD b8t4RM jHh8hq KtaPWF9cQj Q1hHN5WoXSiT MMxsVeq td LUzvVTzj</span>
-<span class="py-output"> 5DS9X8S]</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions: x, y, z</span>
-<span class="py-output">    variables: phony_vlen_var, strvar</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'strvar'</span>]
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output">vlen strvar(z)</span>
-<span class="py-output">vlen data type: <type 'str'></span>
-<span class="py-output">unlimited dimensions:</span>
-<span class="py-output">current size = (10,)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>It is also possible to set contents of vlen string variables with 
-      numpy arrays of any string or unicode data type. Note, however, that 
-      accessing the contents of such variables will always return numpy 
-      arrays with dtype <code>object</code>.</p>
-      <p>All of the code in this tutorial is available in 
-      <code>examples/tutorial.py</code>, Unit tests are in the 
-      <code>test</code> directory.</p>
-
-<hr />
-<div class="fields">      <p><strong>Contact:</strong>
-        Jeffrey Whitaker <jeffrey.s.whitaker at noaa.gov>
-      </p>
-      <p><strong>Copyright:</strong>
-        2008 by Jeffrey Whitaker.
-      </p>
-      <p><strong>License:</strong>
-        Permission to use, copy, modify, and distribute this software and 
-        its documentation for any purpose and without fee is hereby 
-        granted, provided that the above copyright notice appear in all 
-        copies and that both the copyright notice and this permission 
-        notice appear in supporting documentation. THE AUTHOR DISCLAIMS ALL
-        WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED 
-        WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 
-        AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES
-        OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 
-        PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 
-        TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
-        PERFORMANCE OF THIS SOFTWARE.
-      </p>
-      <p><strong>Version:</strong>
-        1.1.8
-      </p>
-</div><!-- ==================== CLASSES ==================== -->
-<a name="section-Classes"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Classes</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.CompoundType-class.html" class="summary-name">CompoundType</a><br />
-      A <a href="netCDF4._netCDF4.CompoundType-class.html" 
-        class="link">CompoundType</a> instance is used to describe a 
-        compound data type.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.Dataset-class.html" class="summary-name">Dataset</a><br />
-      Dataset(self, filename, mode="r", clobber=True, 
-        diskless=False, persist=False, keepweakref=False, format='NETCDF4')
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.Dimension-class.html" class="summary-name">Dimension</a><br />
-      Dimension(self, group, name, size=None)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.Group-class.html" class="summary-name">Group</a><br />
-      Group(self, parent, name)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.MFDataset-class.html" class="summary-name">MFDataset</a><br />
-      MFDataset(self, files, check=False, aggdim=None, exclude=[])
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.MFTime-class.html" class="summary-name">MFTime</a><br />
-      MFTime(self, time, units=None)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.VLType-class.html" class="summary-name">VLType</a><br />
-      A <a href="netCDF4._netCDF4.VLType-class.html" 
-        class="link">VLType</a> instance is used to describe a variable 
-        length (VLEN) data type.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4.Variable-class.html" class="summary-name">Variable</a><br />
-      Variable(self, group, name, datatype, dimensions=(), zlib=False, 
-        complevel=4, shuffle=True, fletcher32=False, contiguous=False, 
-        chunksizes=None, endian='native', 
-        least_significant_digit=None,fill_value=None)
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTIONS ==================== -->
-<a name="section-Functions"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Functions</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4._netCDF4-module.html#chartostring" class="summary-sig-name">chartostring</a>(<span class="summary-sig-arg">b</span>)</span><br />
-      convert a character array to a string array with one less dimension.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4._netCDF4-module.html#date2index" class="summary-sig-name">date2index</a>(<span class="summary-sig-arg">dates</span>,
-        <span class="summary-sig-arg">nctime</span>,
-        <span class="summary-sig-arg">calendar</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">select</span>=<span class="summary-sig-default">'exact'</span>)</span><br />
-      Return indices of a netCDF time variable corresponding to the given 
-      dates.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4._netCDF4-module.html#date2num" class="summary-sig-name">date2num</a>(<span class="summary-sig-arg">dates</span>,
-        <span class="summary-sig-arg">units</span>,
-        <span class="summary-sig-arg">calendar</span>=<span class="summary-sig-default">'standard'</span>)</span><br />
-      Return numeric time values given datetime objects.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="getlibversion"></a><span class="summary-sig-name">getlibversion</span>()</span><br />
-      returns a string describing the version of the netcdf library used to
-      build the module, and when it was built.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4._netCDF4-module.html#num2date" class="summary-sig-name">num2date</a>(<span class="summary-sig-arg">times</span>,
-        <span class="summary-sig-arg">units</span>,
-        <span class="summary-sig-arg">calendar</span>=<span class="summary-sig-default">'standard'</span>)</span><br />
-      Return datetime objects given numeric time values.</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4._netCDF4-module.html#stringtoarr" class="summary-sig-name">stringtoarr</a>(<span class="summary-sig-arg">a</span>,
-        <span class="summary-sig-arg">NUMCHARS</span>,
-        <span class="summary-sig-arg">dtype</span>=<span class="summary-sig-default">'S'</span>)</span><br />
-      convert a string to a character array of length NUMCHARS</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4._netCDF4-module.html#stringtochar" class="summary-sig-name">stringtochar</a>(<span class="summary-sig-arg">a</span>)</span><br />
-      convert a string array to a character array with one extra dimension</td>
-          <td align="right" valign="top">
-            
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== VARIABLES ==================== -->
-<a name="section-Variables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="MINYEAR"></a><span class="summary-name">MINYEAR</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="NC_DISKLESS"></a><span class="summary-name">NC_DISKLESS</span> = <code title="8">8</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__has_nc_inq_format_extended__"></a><span class="summary-name">__has_nc_inq_format_extended__</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__has_nc_inq_path__"></a><span class="summary-name">__has_nc_inq_path__</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__has_rename_grp__"></a><span class="summary-name">__has_rename_grp__</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__hdf5libversion__"></a><span class="summary-name">__hdf5libversion__</span> = <code title="'1.8.14'"><code class="variable-quote">'</code><code class="variable-string">1.8.14</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__netcdf4libversion__"></a><span class="summary-name">__netcdf4libversion__</span> = <code title="u'4.3.3-rc2'"><code class="variable-quote">u'</code><code class="variable-string">4.3.3-rc2</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'netCDF4'"><code class="variable-quote">'</code><code class="variable-string">netCDF4</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="day_units"></a><span class="summary-name">day_units</span> = <code title="['day', 'days', 'd']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">day</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">days</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code  [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="default_encoding"></a><span class="summary-name">default_encoding</span> = <code title="'utf-8'"><code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4-module.html#default_fillvals" class="summary-name">default_fillvals</a> = <code title="{'S1': '\x00',
- 'U1': '\x00',
- 'f4': 9.96920996839e+36,
- 'f8': 9.96920996839e+36,
- 'i1': -127,
- 'i2': -32767,
- 'i4': -2147483647,
- 'i8': -9223372036854775806,
-..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">S1</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x00</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">U1</code><code class="variable-quote">'</code><code class="variable-op">: </code><cod [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="gregorian"></a><span class="summary-name">gregorian</span> = <code title="datetime.datetime(1582, 10, 15, 0, 0)">datetime.datetime(1582, 10, 15, 0, 0)</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="hr_units"></a><span class="summary-name">hr_units</span> = <code title="['hour', 'hours', 'hr', 'hrs', 'h']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">hour</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">hours</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote" [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="is_native_big"></a><span class="summary-name">is_native_big</span> = <code title="False">False</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="is_native_little"></a><span class="summary-name">is_native_little</span> = <code title="True">True</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4-module.html#microsec_units" class="summary-name">microsec_units</a> = <code title="['microseconds', 'microsecond', 'microsec', 'microsecs']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">microseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">microsecond</code><code class="variable-quote">'</code> [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4._netCDF4-module.html#millisec_units" class="summary-name">millisec_units</a> = <code title="['milliseconds', 'millisecond', 'millisec', 'millisecs']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">milliseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">millisecond</code><code class="variable-quote">'</code> [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="min_units"></a><span class="summary-name">min_units</span> = <code title="['minute', 'minutes', 'min', 'mins']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">minute</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">minutes</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="python3"></a><span class="summary-name">python3</span> = <code title="False">False</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="sec_units"></a><span class="summary-name">sec_units</span> = <code title="['second', 'seconds', 'sec', 'secs', 's']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">second</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">seconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="var [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="unicode_error"></a><span class="summary-name">unicode_error</span> = <code title="'replace'"><code class="variable-quote">'</code><code class="variable-string">replace</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTION DETAILS ==================== -->
-<a name="section-FunctionDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Function Details</span></td>
-</tr>
-</table>
-<a name="chartostring"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">chartostring</span>(<span class="sig-arg">b</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    > 
-    </td>
-  </tr></table>
-  
-  <p>convert a character array to a string array with one less 
-  dimension.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>b</code></strong> - Input character array (numpy datatype 'S1' or 'U1'). Will be 
-          converted to a array of strings, where each string has a fixed 
-          length of b.shape[-1] characters.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>A numpy string array with datatype 'SN' or 'UN' and shape 
-          b.shape[:-1], where N=b.shape[-1].</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="date2index"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">date2index</span>(<span class="sig-arg">dates</span>,
-        <span class="sig-arg">nctime</span>,
-        <span class="sig-arg">calendar</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">select</span>=<span class="sig-default">'exact'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    > 
-    </td>
-  </tr></table>
-  
-  <p>Return indices of a netCDF time variable corresponding to the given 
-  dates.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>dates</code></strong> - A datetime object or a sequence of datetime objects. The datetime
-          objects should not include a time-zone offset.</li>
-        <li><strong class="pname"><code>nctime</code></strong> - A netCDF time variable object. The nctime object must have a 
-          <code>units</code> attribute.</li>
-        <li><strong class="pname"><code>calendar</code></strong> - Describes the calendar used in the time calculation. Valid 
-          calendars <code>'standard', 'gregorian', 'proleptic_gregorian' 
-          'noleap', '365_day', '360_day', 'julian', 'all_leap', 
-          '366_day'</code>. Default is <code>'standard'</code>, which is a 
-          mixed Julian/Gregorian calendar If <code>calendar</code> is None,
-          its value is given by <code>nctime.calendar</code> or 
-          <code>standard</code> if no such attribute exists.</li>
-        <li><strong class="pname"><code>select</code></strong> - <code>'exact', 'before', 'after', 'nearest'</code> The index 
-          selection method. <code>exact</code> will return the indices 
-          perfectly matching the dates given. <code>before</code> and 
-          <code>after</code> will return the indices corresponding to the 
-          dates just before or just after the given dates if an exact match
-          cannot be found. <code>nearest</code> will return the indices 
-          that correspond to the closest dates.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>an index (indices) of the netCDF time variable corresponding to 
-          the given datetime object(s).</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="date2num"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">date2num</span>(<span class="sig-arg">dates</span>,
-        <span class="sig-arg">units</span>,
-        <span class="sig-arg">calendar</span>=<span class="sig-default">'standard'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    > 
-    </td>
-  </tr></table>
-  
-  <p>Return numeric time values given datetime objects. The units of the 
-  numeric time values are described by the <code class="link">units</code> 
-  argument and the <code class="link">calendar</code> keyword. The datetime
-  objects must be in UTC with no time-zone offset.  If there is a time-zone
-  offset in <code>units</code>, it will be applied to the returned numeric 
-  values.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>dates</code></strong> - A datetime object or a sequence of datetime objects. The datetime
-          objects should not include a time-zone offset.</li>
-        <li><strong class="pname"><code>units</code></strong> - a string of the form <code>'<b>time units</b> since <b>reference 
-          time</b></code>' describing the time units. <b><code>time 
-          units</code></b> can be days, hours, minutes, seconds, 
-          milliseconds or microseconds. <b><code>reference time</code></b> 
-          is the time origin.  Accuracy is somewhere between a millisecond 
-          and a microsecond, depending on the time interval and the 
-          calendar used.</li>
-        <li><strong class="pname"><code>calendar</code></strong> - describes the calendar used in the time calculations. All the 
-          values currently defined in the <a 
-          href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/" 
-          target="_top">CF metadata convention</a> are supported. Valid 
-          calendars <code>'standard', 'gregorian', 'proleptic_gregorian' 
-          'noleap', '365_day', '360_day', 'julian', 'all_leap', 
-          '366_day'</code>. Default is <code>'standard'</code>, which is a 
-          mixed Julian/Gregorian calendar.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>a numeric time value, or an array of numeric time values.</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="num2date"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">num2date</span>(<span class="sig-arg">times</span>,
-        <span class="sig-arg">units</span>,
-        <span class="sig-arg">calendar</span>=<span class="sig-default">'standard'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    > 
-    </td>
-  </tr></table>
-  
-  <p>Return datetime objects given numeric time values. The units of the 
-  numeric time values are described by the <code>units</code> argument and 
-  the <code>calendar</code> keyword. The returned datetime objects 
-  represent UTC with no time-zone offset, even if the specified 
-  <code>units</code> contain a time-zone offset.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>times</code></strong> - numeric time values.</li>
-        <li><strong class="pname"><code>units</code></strong> - a string of the form <code>'<b>time units</b> since <b>reference 
-          time</b></code>' describing the time units. <b><code>time 
-          units</code></b> can be days, hours, minutes, seconds, 
-          milliseconds or microseconds. <b><code>reference time</code></b> 
-          is the time origin.  Accuracy is somewhere between a millisecond 
-          and a microsecond, depending on the time interval and the 
-          calendar used.</li>
-        <li><strong class="pname"><code>calendar</code></strong> - describes the calendar used in the time calculations. All the 
-          values currently defined in the <a 
-          href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/" 
-          target="_top">CF metadata convention</a> are supported. Valid 
-          calendars <code>'standard', 'gregorian', 'proleptic_gregorian' 
-          'noleap', '365_day', '360_day', 'julian', 'all_leap', 
-          '366_day'</code>. Default is <code>'standard'</code>, which is a 
-          mixed Julian/Gregorian calendar.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>a datetime instance, or an array of datetime instances.
-          <p>The datetime instances returned are 'real' python datetime 
-          objects if <code>calendar='proleptic_gregorian'</code>, or 
-          <code>calendar = 'standard'</code> or <code>'gregorian'</code> 
-          and the date is after the breakpoint between the Julian and 
-          Gregorian calendars (1582-10-15). Otherwise, they are 'phony' 
-          datetime objects which support some but not all the methods of 
-          'real' python datetime objects. The datetime instances do not 
-          contain a time-zone offset, even if the specified 
-          <code>units</code> contains one.</p></dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="stringtoarr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">stringtoarr</span>(<span class="sig-arg">a</span>,
-        <span class="sig-arg">NUMCHARS</span>,
-        <span class="sig-arg">dtype</span>=<span class="sig-default">'S'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    > 
-    </td>
-  </tr></table>
-  
-  <p>convert a string to a character array of length NUMCHARS</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>a</code></strong> - Input python string.</li>
-        <li><strong class="pname"><code>NUMCHARS</code></strong> - number of characters used to represent string (if len(a) < 
-          NUMCHARS, it will be padded on the right with blanks).</li>
-        <li><strong class="pname"><code>dtype</code></strong> - type of numpy array to return.  Default is 'S', which means an 
-          array of dtype 'S1' will be returned.  If dtype='U', a unicode 
-          array (dtype = 'U1') will be returned.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>A rank 1 numpy character array of length NUMCHARS with datatype 
-          'S1' (default) or 'U1' (if dtype='U')</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="stringtochar"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">stringtochar</span>(<span class="sig-arg">a</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    > 
-    </td>
-  </tr></table>
-  
-  <p>convert a string array to a character array with one extra 
-  dimension</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>a</code></strong> - Input numpy string array with numpy datatype 'SN' or 'UN', where 
-          N is the number of characters in each string.  Will be converted 
-          to an array of characters (datatype 'S1' or 'U1') of shape 
-          a.shape + (N,).</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>A numpy character array with datatype 'S1' or 'U1' and shape 
-          a.shape + (N,), where N is the length of each string in a.</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== VARIABLES DETAILS ==================== -->
-<a name="section-VariablesDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables Details</span></td>
-</tr>
-</table>
-<a name="default_fillvals"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">default_fillvals</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">S1</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x00</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">U1</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x00</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">f4</code><code class="variable-quote">'</code><code class="variable-op">: </code>9.96920996839e+36<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">f8</code><code class="variable-quote">'</code><code class="variable-op">: </code>9.96920996839e+36<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i1</code><code class="variable-quote">'</code><code class="variable-op">: </code>-127<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i2</code><code class="variable-quote">'</code><code class="variable-op">: </code>-32767<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i4</code><code class="variable-quote">'</code><code class="variable-op">: </code>-2147483647<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i8</code><code class="variable-quote">'</code><code class="variable-op">: </code>-9223372036854775806<code class="variable-op">,</code>
-<code class="variable-ellipsis">...</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="microsec_units"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">microsec_units</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">microseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">microsecond</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">microsec</code><code class="variable-quote">'</code><code class="variable [...]
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="millisec_units"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">millisec_units</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">milliseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">millisecond</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">millisec</code><code class="variable-quote">'</code><code class="variable [...]
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Home   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue May 12 15:08:44 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/module-tree.html b/docs/module-tree.html
deleted file mode 100644
index 450306a..0000000
--- a/docs/module-tree.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>Module Hierarchy</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Trees   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%"> </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<center><b>
- [ <a href="module-tree.html">Module Hierarchy</a>
- | <a href="class-tree.html">Class Hierarchy</a> ]
-</b></center><br />
-<h1 class="epydoc">Module Hierarchy</h1>
-<ul class="nomargin-top">
-    <li class="private"> <strong class="uidlink"><a href="netCDF4._netCDF4-module.html" onclick="show_private();">netCDF4._netCDF4</a></strong>: <em class="summary">Python interface to the netCDF version 4 library.</em>    </li>
-</ul>
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4._netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Trees   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-  <!-- Project homepage -->
-      <th class="navbar" align="right" width="100%">
-        <table border="0" cellpadding="0" cellspacing="0">
-          <tr><th class="navbar" align="center"
-            >netcdf4-python</th>
-          </tr></table></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue May 12 15:08:44 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4-module.html b/docs/netCDF4-module.html
deleted file mode 100644
index 3e868e0..0000000
--- a/docs/netCDF4-module.html
+++ /dev/null
@@ -1,1660 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Home   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        Module netCDF4
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== MODULE DESCRIPTION ==================== -->
-<h1 class="epydoc">Module netCDF4</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html">source code</a></span></p>
-<h1 class="heading">Introduction</h1>
-    <p>Python interface to the netCDF version 4 library.  <a 
-    href="http://www.unidata.ucar.edu/software/netcdf/netcdf-4" 
-    target="_top">netCDF version 4</a> has many features not found in 
-    earlier versions of the library and is implemented on top of <a 
-    href="http://www.hdfgroup.org/HDF5" target="_top">HDF5</a>. This module
-    can read and write files in both the new netCDF 4 and the old netCDF 3 
-    format, and can create files that are readable by HDF5 clients. The API
-    modelled after <a 
-    href="http://dirac.cnrs-orleans.fr/plone/software/scientificpython/" 
-    target="_top">Scientific.IO.NetCDF</a>, and should be familiar to users
-    of that module.</p>
-    <p>Most new features of netCDF 4 are implemented, such as multiple 
-    unlimited dimensions, groups and zlib data compression.  All the new 
-    numeric data types (such as 64 bit and unsigned integer types) are 
-    implemented. Compound and variable length (vlen) data types are 
-    supported, but the enum and opaque data types are not. Mixtures of 
-    compound and vlen data types (compound types containing vlens, and 
-    vlens containing compound types) are not supported.</p>
-  <h1 class="heading">Download</h1>
-    <ul>
-      <li>
-        Latest bleeding-edge code from the <a 
-        href="http://github.com/Unidata/netcdf4-python" 
-        target="_top">github repository</a>.
-      </li>
-      <li>
-        Latest <a href="https://pypi.python.org/pypi/netCDF4" 
-        target="_top">releases</a> (source code and windows installers).
-      </li>
-    </ul>
-  <h1 class="heading">Requires</h1>
-    <ul>
-      <li>
-        Python 2.5 or later (python 3 works too).
-      </li>
-      <li>
-        numpy array module <a href="http://numpy.scipy.org" 
-        target="_top">http://numpy.scipy.org</a>, version 1.7.0 or later.
-      </li>
-      <li>
-        <a href="http://cython.org" target="_top">Cython</a>, version 0.19 
-        or later, is optional - if it is installed setup.py will use it to 
-        recompile the Cython source code into C, using conditional 
-        compilation to enable features in the netCDF API that have been 
-        added since version 4.1.1.  If Cython is not installed, these 
-        features (such as the ability to rename Group objects) will be 
-        disabled to preserve backward compatibility with older versions of 
-        the netCDF library.
-      </li>
-      <li>
-        For python < 2.7, the ordereddict module <a 
-        href="http://python.org/pypi/ordereddict" 
-        target="_top">http://python.org/pypi/ordereddict</a>.
-      </li>
-      <li>
-        The HDF5 C library version 1.8.4-patch1 or higher (1.8.8 or higher 
-        recommended) from <a href="ftp://ftp.hdfgroup.org/HDF5/current/src"
-        target="_top">ftp://ftp.hdfgroup.org/HDF5/current/src</a>. Be sure 
-        to build with '<code>--enable-hl --enable-shared</code>'.
-      </li>
-      <li>
-        <a href="http://curl.haxx.se/libcurl/" target="_top">Libcurl</a>, 
-        if you want <a href="http://opendap.org/" target="_top">OPeNDAP</a>
-        support.
-      </li>
-      <li>
-        <a href="http://www.hdfgroup.org/products/hdf4/" 
-        target="_top">HDF4</a>, if you want to be able to read HDF4 
-        "Scientific Dataset" (SD) files.
-      </li>
-      <li>
-        The netCDF-4 C library from <a 
-        href="ftp://ftp.unidata.ucar.edu/pub/netcdf" 
-        target="_top">ftp://ftp.unidata.ucar.edu/pub/netcdf</a>. Version 
-        4.1.1 or higher is required (4.2 or higher recommended). Be sure to
-        build with '<code>--enable-netcdf-4 --enable-shared</code>', and 
-        set <code>CPPFLAGS="-I $HDF5_DIR/include"</code> and 
-        <code>LDFLAGS="-L $HDF5_DIR/lib"</code>, where 
-        <code>$HDF5_DIR</code> is the directory where HDF5 was installed. 
-        If you want <a href="http://opendap.org/" target="_top">OPeNDAP</a>
-        support, add '<code>--enable-dap</code>'. If you want HDF4 SD 
-        support, add '<code>--enable-hdf4</code>' and add the location of 
-        the HDF4 headers and library to <code>CPPFLAGS</code> and 
-        <code>LDFLAGS</code>.
-      </li>
-    </ul>
-  <h1 class="heading">Install</h1>
-    <ul>
-      <li>
-        install the requisite python modules and C libraries (see above). 
-        It's easiest if all the C libs are built as shared libraries.
-      </li>
-      <li>
-        By default, the utility <code>nc-config</code>, installed with 
-        netcdf 4.1.2 or higher, will be run used to determine where all the
-        dependencies live.
-      </li>
-      <li>
-        If <code>nc-config</code> is not in your default <code>PATH</code>,
-        rename the file <code>setup.cfg.template</code> to 
-        <code>setup.cfg</code>, then edit in a text editor (follow the 
-        instructions in the comments). In addition to specifying the path 
-        to <code>nc-config</code>, you can manually set the paths to all 
-        the libraries and their include files (in case 
-        <code>nc-config</code> does not do the right thing).
-      </li>
-      <li>
-        run <code>python setup.py build</code>, then <code>python setup.py 
-        install</code> (as root if necessary).
-      </li>
-      <li>
-        run the tests in the 'test' directory by running <code>python 
-        run_all.py</code>.
-      </li>
-    </ul>
-  <h1 class="heading">Tutorial</h1>
-    <h2 class="heading">1) Creating/Opening/Closing a netCDF file</h2>
-      <p>To create a netCDF file from python, you simply call the <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      constructor. This is also the method used to open an existing netCDF 
-      file.  If the file is open for write access (<code>w, r+</code> or 
-      <code>a</code>), you may write any type of data including new 
-      dimensions, groups, variables and attributes.  netCDF files come in 
-      several flavors (<code>NETCDF3_CLASSIC, NETCDF3_64BIT, 
-      NETCDF4_CLASSIC</code>, and <code>NETCDF4</code>). The first two 
-      flavors are supported by version 3 of the netCDF library. 
-      <code>NETCDF4_CLASSIC</code> files use the version 4 disk format 
-      (HDF5), but do not use any features not found in the version 3 API. 
-      They can be read by netCDF 3 clients only if they have been relinked 
-      against the netCDF 4 library. They can also be read by HDF5 clients. 
-      <code>NETCDF4</code> files use the version 4 disk format (HDF5) and 
-      use the new features of the version 4 API.  The <code>netCDF4</code> 
-      module can read and write files in any of these formats. When 
-      creating a new file, the format may be specified using the 
-      <code>format</code> keyword in the <code>Dataset</code> constructor.
-      The default format is <code>NETCDF4</code>. To see how a given file 
-      is formatted, you can examine the <code>data_model</code> <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> attribute.
-      Closing the netCDF file is accomplished via the <a 
-      href="netCDF4.Dataset-class.html#close" class="link">close</a> method
-      of the <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      instance.</p>
-      <p>Here's an example:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> netCDF4 <span class="py-keyword">import</span> Dataset
-<span class="py-prompt">>>> </span>rootgrp = Dataset(<span class="py-string">'test.nc'</span>, <span class="py-string">'w'</span>, format=<span class="py-string">'NETCDF4'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.data_model
-<span class="py-output">NETCDF4</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span>rootgrp.close()</pre>
-      <p>Remote <a href="http://opendap.org" 
-      target="_top">OPeNDAP</a>-hosted datasets can be accessed for reading
-      over http if a URL is provided to the <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      constructor instead of a filename.  However, this requires that the 
-      netCDF library be built with OPenDAP support, via the 
-      <code>--enable-dap</code> configure option (added in version 
-      4.0.1).</p>
-    <h2 class="heading">2) Groups in a netCDF file</h2>
-      <p>netCDF version 4 added support for organizing data in hierarchical
-      groups, which are analagous to directories in a filesystem. Groups 
-      serve as containers for variables, dimensions and attributes, as well
-      as other groups.  A <code>netCDF4.Dataset</code> defines creates a 
-      special group, called the 'root group', which is similar to the root 
-      directory in a unix filesystem.  To create <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instances, use
-      the <a href="netCDF4.Dataset-class.html#createGroup" 
-      class="link">createGroup</a> method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance. <a 
-      href="netCDF4.Dataset-class.html#createGroup" 
-      class="link">createGroup</a> takes a single argument, a python string
-      containing the name of the new group. The new <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instances 
-      contained within the root group can be accessed by name using the 
-      <code>groups</code> dictionary attribute of the <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> instance.
-      Only <code>NETCDF4</code> formatted files support Groups, if you try 
-      to create a Group in a netCDF 3 file you will get an error 
-      message.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>rootgrp = Dataset(<span class="py-string">'test.nc'</span>, <span class="py-string">'a'</span>)
-<span class="py-prompt">>>> </span>fcstgrp = rootgrp.createGroup(<span class="py-string">'forecasts'</span>)
-<span class="py-prompt">>>> </span>analgrp = rootgrp.createGroup(<span class="py-string">'analyses'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.groups
-<span class="py-output">OrderedDict([('forecasts', <netCDF4.Group object at 0x1b4b7b0>),</span>
-<span class="py-output">             ('analyses', <netCDF4.Group object at 0x1b4b970>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Groups can exist within groups in a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a>, just as 
-      directories exist within directories in a unix filesystem. Each <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance has a
-      <code>'groups'</code> attribute dictionary containing all of the 
-      group instances contained within that group. Each <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance also 
-      has a <code>'path'</code> attribute that contains a simulated unix 
-      directory path to that group.</p>
-      <p>Here's an example that shows how to navigate all the groups in a 
-      <a href="netCDF4.Dataset-class.html" class="link">Dataset</a>. The 
-      function <code>walktree</code> is a Python generator that is used to 
-      walk the directory tree. Note that printing the <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> object yields 
-      summary information about it's contents.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>fcstgrp1 = fcstgrp.createGroup(<span class="py-string">'model1'</span>)
-<span class="py-prompt">>>> </span>fcstgrp2 = fcstgrp.createGroup(<span class="py-string">'model2'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">def</span> <span class="py-defname">walktree</span>(top):
-<span class="py-prompt">>>> </span>    <span class="py-builtin">values</span> = top.groups.values()
-<span class="py-prompt">>>> </span>    yield <span class="py-builtin">values</span>
-<span class="py-prompt">>>> </span>    <span class="py-keyword">for</span> value <span class="py-keyword">in</span> top.groups.values():
-<span class="py-prompt">>>> </span>        <span class="py-keyword">for</span> children <span class="py-keyword">in</span> walktree(value):
-<span class="py-prompt">>>> </span>            yield children
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> children <span class="py-keyword">in</span> walktree(rootgrp):
-<span class="py-prompt">>>> </span>     <span class="py-keyword">for</span> child <span class="py-keyword">in</span> children:
-<span class="py-prompt">>>> </span>         <span class="py-keyword">print</span> child
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">        groups: forecasts, analyses</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /forecasts:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups: model1, model2</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /analyses:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /forecasts/model1:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"><type 'netCDF4.Group'></span>
-<span class="py-output">group /forecasts/model2:</span>
-<span class="py-output">    dimensions:</span>
-<span class="py-output">    variables:</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-    <h2 class="heading">3) Dimensions in a netCDF file</h2>
-      <p>netCDF defines the sizes of all variables in terms of dimensions, 
-      so before any variables can be created the dimensions they use must 
-      be created first. A special case, not often used in practice, is that
-      of a scalar variable, which has no dimensions. A dimension is created
-      using the <a href="netCDF4.Dataset-class.html#createDimension" 
-      class="link">createDimension</a> method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance. A 
-      Python string is used to set the name of the dimension, and an 
-      integer value is used to set the size. To create an unlimited 
-      dimension (a dimension that can be appended to), the size value is 
-      set to <code>None</code> or 0. In this example, there both the 
-      <code>time</code> and <code>level</code> dimensions are unlimited.  
-      Having more than one unlimited dimension is a new netCDF 4 feature, 
-      in netCDF 3 files there may be only one, and it must be the first 
-      (leftmost) dimension of the variable.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>level = rootgrp.createDimension(<span class="py-string">'level'</span>, None)
-<span class="py-prompt">>>> </span>time = rootgrp.createDimension(<span class="py-string">'time'</span>, None)
-<span class="py-prompt">>>> </span>lat = rootgrp.createDimension(<span class="py-string">'lat'</span>, 73)
-<span class="py-prompt">>>> </span>lon = rootgrp.createDimension(<span class="py-string">'lon'</span>, 144)</pre>
-      <p>All of the <a href="netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> instances are stored in a python 
-      dictionary.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.dimensions
-<span class="py-output">OrderedDict([('level', <netCDF4.Dimension object at 0x1b48030>),</span>
-<span class="py-output">             ('time', <netCDF4.Dimension object at 0x1b481c0>),</span>
-<span class="py-output">             ('lat', <netCDF4.Dimension object at 0x1b480f8>),</span>
-<span class="py-output">             ('lon', <netCDF4.Dimension object at 0x1b48a08>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Calling the python <code>len</code> function with a <a 
-      href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-      instance returns the current size of that dimension. The <a 
-      href="netCDF4.Dimension-class.html#isunlimited" 
-      class="link">isunlimited</a> method of a <a 
-      href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-      instance can be used to determine if the dimensions is unlimited, or 
-      appendable.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> len(lon)
-<span class="py-output">144</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> len.is_unlimited()
-<span class="py-output">False</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> time.is_unlimited()
-<span class="py-output">True</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Printing the <a href="netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> object provides useful summary info, 
-      including the name and length of the dimension, and whether it is 
-      unlimited.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> dimobj <span class="py-keyword">in</span> rootgrp.dimensions.values():
-<span class="py-prompt">>>> </span>   <span class="py-keyword">print</span> dimobj
-<span class="py-output"><type 'netCDF4.Dimension'> (unlimited): name = 'level', size = 0</span>
-<span class="py-output"><type 'netCDF4.Dimension'> (unlimited): name = 'time', size = 0</span>
-<span class="py-output"><type 'netCDF4.Dimension'>: name = 'lat', size = 73</span>
-<span class="py-output"><type 'netCDF4.Dimension'>: name = 'lon', size = 144</span>
-<span class="py-output"><type 'netCDF4.Dimension'> (unlimited): name = 'time', size = 0</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p><a href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-      names can be changed using the <a 
-      href="netCDF4.Dataset-class.html#renameDimension" 
-      class="link">renameDimension</a> method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance.</p>
-    <h2 class="heading">4) Variables in a netCDF file</h2>
-      <p>netCDF variables behave much like python multidimensional array 
-      objects supplied by the <a href="http://numpy.scipy.org" 
-      target="_top">numpy module</a>. However, unlike numpy arrays, netCDF4
-      variables can be appended to along one or more 'unlimited' 
-      dimensions. To create a netCDF variable, use the <a 
-      href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance. The 
-      <a href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method has two mandatory arguments, 
-      the variable name (a Python string), and the variable datatype. The 
-      variable's dimensions are given by a tuple containing the dimension 
-      names (defined previously with <a 
-      href="netCDF4.Dataset-class.html#createDimension" 
-      class="link">createDimension</a>). To create a scalar variable, 
-      simply leave out the dimensions keyword. The variable primitive 
-      datatypes correspond to the dtype attribute of a numpy array. You can
-      specify the datatype as a numpy dtype object, or anything that can be
-      converted to a numpy dtype object.  Valid datatype specifiers 
-      include: <code>'f4'</code> (32-bit floating point), <code>'f8'</code>
-      (64-bit floating point), <code>'i4'</code> (32-bit signed integer), 
-      <code>'i2'</code> (16-bit signed integer), <code>'i8'</code> (64-bit 
-      singed integer), <code>'i1'</code> (8-bit signed integer), 
-      <code>'u1'</code> (8-bit unsigned integer), <code>'u2'</code> (16-bit
-      unsigned integer), <code>'u4'</code> (32-bit unsigned integer), 
-      <code>'u8'</code> (64-bit unsigned integer), or <code>'S1'</code> 
-      (single-character string).  The old Numeric single-character 
-      typecodes (<code>'f'</code>,<code>'d'</code>,<code>'h'</code>, 
-      <code>'s'</code>,<code>'b'</code>,<code>'B'</code>,<code>'c'</code>,<code>'i'</code>,<code>'l'</code>),
-      corresponding to 
-      (<code>'f4'</code>,<code>'f8'</code>,<code>'i2'</code>,<code>'i2'</code>,<code>'i1'</code>,<code>'i1'</code>,<code>'S1'</code>,<code>'i4'</code>,<code>'i4'</code>),
-      will also work. The unsigned integer types and the 64-bit integer 
-      type can only be used if the file format is <code>NETCDF4</code>.</p>
-      <p>The dimensions themselves are usually also defined as variables, 
-      called coordinate variables. The <a 
-      href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method returns an instance of the <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> class 
-      whose methods can be used later to access and set variable data and 
-      attributes.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>times = rootgrp.createVariable(<span class="py-string">'time'</span>,<span class="py-string">'f8'</span>,(<span class="py-string">'time'</span>,))
-<span class="py-prompt">>>> </span>levels = rootgrp.createVariable(<span class="py-string">'level'</span>,<span class="py-string">'i4'</span>,(<span class="py-string">'level'</span>,))
-<span class="py-prompt">>>> </span>latitudes = rootgrp.createVariable(<span class="py-string">'latitude'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'lat'</span>,))
-<span class="py-prompt">>>> </span>longitudes = rootgrp.createVariable(<span class="py-string">'longitude'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'lon'</span>,))
-<span class="py-prompt">>>> </span><span class="py-comment"># two dimensions unlimited.</span>
-<span class="py-prompt">>>> </span>temp = rootgrp.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,))</pre>
-      <p>All of the variables in the <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> or <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> are stored in a Python dictionary, in the same
-      way as the dimensions:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.variables
-<span class="py-output">OrderedDict([('time', <netCDF4.Variable object at 0x1b4ba70>),</span>
-<span class="py-output">             ('level', <netCDF4.Variable object at 0x1b4bab0>),</span>
-<span class="py-output">             ('latitude', <netCDF4.Variable object at 0x1b4baf0>),</span>
-<span class="py-output">             ('longitude', <netCDF4.Variable object at 0x1b4bb30>),</span>
-<span class="py-output">             ('temp', <netCDF4.Variable object at 0x1b4bb70>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>To get summary info on a <a href="netCDF4.Variable-class.html" 
-      class="link">Variable</a> instance in an interactive session, just 
-      print it.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.variables[<span class="py-string">'temp'</span>]
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output">float32 temp(time, level, lat, lon)</span>
-<span class="py-output">    least_significant_digit: 3</span>
-<span class="py-output">    units: K</span>
-<span class="py-output">unlimited dimensions: time, level</span>
-<span class="py-output">current shape = (0, 0, 73, 144)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p><a href="netCDF4.Variable-class.html" class="link">Variable</a> 
-      names can be changed using the <a 
-      href="netCDF4.Dataset-class.html#renameVariable" 
-      class="link">renameVariable</a> method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-      instance.</p>
-    <h2 class="heading">5) Attributes in a netCDF file</h2>
-      <p>There are two types of attributes in a netCDF file, global and 
-      variable. Global attributes provide information about a group, or the
-      entire dataset, as a whole. <a href="netCDF4.Variable-class.html" 
-      class="link">Variable</a> attributes provide information about one of
-      the variables in a group. Global attributes are set by assigning 
-      values to <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> or <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> instance variables. <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> 
-      attributes are set by assigning values to <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> 
-      instances variables. Attributes can be strings, numbers or sequences.
-      Returning to our example,</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> time
-<span class="py-prompt">>>> </span>rootgrp.description = <span class="py-string">'bogus example script'</span>
-<span class="py-prompt">>>> </span>rootgrp.history = <span class="py-string">'Created '</span> + time.ctime(time.time())
-<span class="py-prompt">>>> </span>rootgrp.source = <span class="py-string">'netCDF4 python module tutorial'</span>
-<span class="py-prompt">>>> </span>latitudes.units = <span class="py-string">'degrees north'</span>
-<span class="py-prompt">>>> </span>longitudes.units = <span class="py-string">'degrees east'</span>
-<span class="py-prompt">>>> </span>levels.units = <span class="py-string">'hPa'</span>
-<span class="py-prompt">>>> </span>temp.units = <span class="py-string">'K'</span>
-<span class="py-prompt">>>> </span>times.units = <span class="py-string">'hours since 0001-01-01 00:00:00.0'</span>
-<span class="py-prompt">>>> </span>times.calendar = <span class="py-string">'gregorian'</span></pre>
-      <p>The <a href="netCDF4.Dataset-class.html#ncattrs" 
-      class="link">ncattrs</a> method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a>, <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> or <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> instance
-      can be used to retrieve the names of all the netCDF attributes. This 
-      method is provided as a convenience, since using the built-in 
-      <code>dir</code> Python function will return a bunch of private 
-      methods and attributes that cannot (or should not) be modified by the
-      user.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> name <span class="py-keyword">in</span> rootgrp.ncattrs():
-<span class="py-prompt">>>> </span>    <span class="py-keyword">print</span> <span class="py-string">'Global attr'</span>, name, <span class="py-string">'='</span>, getattr(rootgrp,name)
-<span class="py-output">Global attr description = bogus example script</span>
-<span class="py-output">Global attr history = Created Mon Nov  7 10.30:56 2005</span>
-<span class="py-output">Global attr source = netCDF4 python module tutorial</span></pre>
-      <p>The <code>__dict__</code> attribute of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a>, <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> or <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> instance
-      provides all the netCDF attribute name/value pairs in a python 
-      dictionary:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> rootgrp.__dict__
-<span class="py-output">OrderedDict([(u'description', u'bogus example script'),</span>
-<span class="py-output">             (u'history', u'Created Thu Mar  3 19:30:33 2011'),</span>
-<span class="py-output">             (u'source', u'netCDF4 python module tutorial')])</span></pre>
-      <p>Attributes can be deleted from a netCDF <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a>, <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> or <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> using 
-      the python <code>del</code> statement (i.e. <code>del grp.foo</code> 
-      removes the attribute <code>foo</code> the the group 
-      <code>grp</code>).</p>
-    <h2 class="heading">6) Writing data to and retrieving data from a netCDF variable</h2>
-      <p>Now that you have a netCDF <a href="netCDF4.Variable-class.html" 
-      class="link">Variable</a> instance, how do you put data into it? You 
-      can just treat it like an array and assign data to a slice.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> numpy
-<span class="py-prompt">>>> </span>lats =  numpy.arange(-90,91,2.5)
-<span class="py-prompt">>>> </span>lons =  numpy.arange(-180,180,2.5)
-<span class="py-prompt">>>> </span>latitudes[:] = lats
-<span class="py-prompt">>>> </span>longitudes[:] = lons
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'latitudes =\n'</span>,latitudes[:]
-<span class="py-output">latitudes =</span>
-<span class="py-output">[-90.  -87.5 -85.  -82.5 -80.  -77.5 -75.  -72.5 -70.  -67.5 -65.  -62.5</span>
-<span class="py-output"> -60.  -57.5 -55.  -52.5 -50.  -47.5 -45.  -42.5 -40.  -37.5 -35.  -32.5</span>
-<span class="py-output"> -30.  -27.5 -25.  -22.5 -20.  -17.5 -15.  -12.5 -10.   -7.5  -5.   -2.5</span>
-<span class="py-output">   0.    2.5   5.    7.5  10.   12.5  15.   17.5  20.   22.5  25.   27.5</span>
-<span class="py-output">  30.   32.5  35.   37.5  40.   42.5  45.   47.5  50.   52.5  55.   57.5</span>
-<span class="py-output">  60.   62.5  65.   67.5  70.   72.5  75.   77.5  80.   82.5  85.   87.5</span>
-<span class="py-output">  90. ]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Unlike NumPy's array objects, netCDF <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> objects 
-      with unlimited dimensions will grow along those dimensions if you 
-      assign data outside the currently defined range of indices.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-comment"># append along two unlimited dimensions by assigning to slice.</span>
-<span class="py-prompt">>>> </span>nlats = len(rootgrp.dimensions[<span class="py-string">'lat'</span>])
-<span class="py-prompt">>>> </span>nlons = len(rootgrp.dimensions[<span class="py-string">'lon'</span>])
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'temp shape before adding data = '</span>,temp.shape
-<span class="py-output">temp shape before adding data =  (0, 0, 73, 144)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> numpy.random <span class="py-keyword">import</span> uniform
-<span class="py-prompt">>>> </span>temp[0:5,0:10,:,:] = uniform(size=(5,10,nlats,nlons))
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'temp shape after adding data = '</span>,temp.shape
-<span class="py-output">temp shape after adding data =  (6, 10, 73, 144)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span><span class="py-comment"># levels have grown, but no values yet assigned.</span>
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'levels shape after adding pressure data = '</span>,levels.shape
-<span class="py-output">levels shape after adding pressure data =  (10,)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Note that the size of the levels variable grows when data is 
-      appended along the <code>level</code> dimension of the variable 
-      <code>temp</code>, even though no data has yet been assigned to 
-      levels.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-comment"># now, assign data to levels dimension variable.</span>
-<span class="py-prompt">>>> </span>levels[:] =  [1000.,850.,700.,500.,300.,250.,200.,150.,100.,50.]</pre>
-      <p>However, that there are some differences between NumPy and netCDF 
-      variable slicing rules. Slices behave as usual, being specified as a 
-      <code>start:stop:step</code> triplet. Using a scalar integer index 
-      <code>i</code> takes the ith element and reduces the rank of the 
-      output array by one. Boolean array and integer sequence indexing 
-      behaves differently for netCDF variables than for numpy arrays.  Only
-      1-d boolean arrays and integer sequences are allowed, and these 
-      indices work independently along each dimension (similar to the way 
-      vector subscripts work in fortran).  This means that</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp[0, 0, [0,1,2,3], [0,1,2,3]]</pre>
-      <p>returns an array of shape (4,4) when slicing a netCDF variable, 
-      but for a numpy array it returns an array of shape (4,). Similarly, a
-      netCDF variable of shape <code>(2,3,4,5)</code> indexed with 
-      <code>[0, array([True, False, True]), array([False, True, True, 
-      True]), :]</code> would return a <code>(2, 3, 5)</code> array. In 
-      NumPy, this would raise an error since it would be equivalent to 
-      <code>[0, [0,1], [1,2,3], :]</code>. When slicing with integer 
-      sequences, the indices must be sorted in increasing order and contain
-      no duplicates. While this behaviour may cause some confusion for 
-      those used to NumPy's 'fancy indexing' rules, it provides a very 
-      powerful way to extract data from multidimensional netCDF variables 
-      by using logical operations on the dimension arrays to create 
-      slices.</p>
-      <p>For example,</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>tempdat = temp[::2, [1,3,6], lats>0, lons>0]</pre>
-      <p>will extract time indices 0,2 and 4, pressure levels 850, 500 and 
-      200 hPa, all Northern Hemisphere latitudes and Eastern Hemisphere 
-      longitudes, resulting in a numpy array of shape  (3, 3, 36, 71).</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'shape of fancy temp slice = '</span>,tempdat.shape
-<span class="py-output">shape of fancy temp slice =  (3, 3, 36, 71)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Time coordinate values pose a special challenge to netCDF users.  
-      Most metadata standards (such as CF and COARDS) specify that time 
-      should be measure relative to a fixed date using a certain calendar, 
-      with units specified like <code>hours since YY:MM:DD hh-mm-ss</code>.
-      These units can be awkward to deal with, without a utility to convert
-      the values to and from calendar dates.  The functione called <a 
-      href="netCDF4-module.html#num2date" class="link">num2date</a> and <a 
-      href="netCDF4-module.html#date2num" class="link">date2num</a> are 
-      provided with this package to do just that.  Here's an example of how
-      they can be used:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-comment"># fill in times.</span>
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> datetime <span class="py-keyword">import</span> datetime, timedelta
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> netCDF4 <span class="py-keyword">import</span> num2date, date2num
-<span class="py-prompt">>>> </span>dates = [datetime(2001,3,1)+n*timedelta(hours=12) <span class="py-keyword">for</span> n <span class="py-keyword">in</span> range(temp.shape[0])]
-<span class="py-prompt">>>> </span>times[:] = date2num(dates,units=times.units,calendar=times.calendar)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'time values (in units %s): '</span> % times.units+<span class="py-string">'\n'</span>,times[:]
-<span class="py-output">time values (in units hours since January 1, 0001):</span>
-<span class="py-output">[ 17533056.  17533068.  17533080.  17533092.  17533104.]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span>dates = num2date(times[:],units=times.units,calendar=times.calendar)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'dates corresponding to time values:\n'</span>,dates
-<span class="py-output">dates corresponding to time values:</span>
-<span class="py-output">[2001-03-01 00:00:00 2001-03-01 12:00:00 2001-03-02 00:00:00</span>
-<span class="py-output"> 2001-03-02 12:00:00 2001-03-03 00:00:00]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p><a href="netCDF4-module.html#num2date" class="link">num2date</a> 
-      converts numeric values of time in the specified <code>units</code> 
-      and <code>calendar</code> to datetime objects, and <a 
-      href="netCDF4-module.html#date2num" class="link">date2num</a> does 
-      the reverse. All the calendars currently defined in the <a 
-      href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/" 
-      target="_top">CF metadata convention</a> are supported. A function 
-      called <a href="netCDF4-module.html#date2index" 
-      class="link">date2index</a> is also provided which returns the 
-      indices of a netCDF time variable corresponding to a sequence of 
-      datetime instances.</p>
-    <h2 class="heading">7) Reading data from a multi-file netCDF dataset.</h2>
-      <p>If you want to read data from a variable that spans multiple 
-      netCDF files, you can use the <a href="netCDF4.MFDataset-class.html" 
-      class="link">MFDataset</a> class to read the data as if it were 
-      contained in a single file. Instead of using a single filename to 
-      create a <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> instance, create a <a 
-      href="netCDF4.MFDataset-class.html" class="link">MFDataset</a> 
-      instance with either a list of filenames, or a string with a wildcard
-      (which is then converted to a sorted list of files using the python 
-      glob module). Variables in the list of files that share the same 
-      unlimited dimension are aggregated together, and can be sliced across
-      multiple files.  To illustrate this, let's first create a bunch of 
-      netCDF files with the same variable (with the same unlimited 
-      dimension).  The files must in be in <code>NETCDF3_64BIT</code>, 
-      <code>NETCDF3_CLASSIC</code> or <code>NETCDF4_CLASSIC format</code> 
-      (<code>NETCDF4</code> formatted multi-file datasets are not 
-      supported).</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> nfile <span class="py-keyword">in</span> range(10):
-<span class="py-prompt">>>> </span>    f = Dataset(<span class="py-string">'mftest'</span>+repr(nfile)+<span class="py-string">'.nc'</span>,<span class="py-string">'w'</span>,format=<span class="py-string">'NETCDF4_CLASSIC'</span>)
-<span class="py-prompt">>>> </span>    f.createDimension(<span class="py-string">'x'</span>,None)
-<span class="py-prompt">>>> </span>    x = f.createVariable(<span class="py-string">'x'</span>,<span class="py-string">'i'</span>,(<span class="py-string">'x'</span>,))
-<span class="py-prompt">>>> </span>    x[0:10] = numpy.arange(nfile*10,10*(nfile+1))
-<span class="py-prompt">>>> </span>    f.close()</pre>
-      <p>Now read all the files back in at once with <a 
-      href="netCDF4.MFDataset-class.html" class="link">MFDataset</a></p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">from</span> netCDF4 <span class="py-keyword">import</span> MFDataset
-<span class="py-prompt">>>> </span>f = MFDataset(<span class="py-string">'mftest*nc'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'x'</span>][:]
-<span class="py-output">[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24</span>
-<span class="py-output"> 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</span>
-<span class="py-output"> 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</span>
-<span class="py-output"> 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]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Note that MFDataset can only be used to read, not write, 
-      multi-file datasets.</p>
-    <h2 class="heading">8) Efficient compression of netCDF variables</h2>
-      <p>Data stored in netCDF 4 <a href="netCDF4.Variable-class.html" 
-      class="link">Variable</a> objects can be compressed and decompressed 
-      on the fly. The parameters for the compression are determined by the 
-      <code>zlib</code>, <code>complevel</code> and <code>shuffle</code> 
-      keyword arguments to the <a 
-      href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method. To turn on compression, set 
-      <code>zlib=True</code>.  The <code>complevel</code> keyword regulates
-      the speed and efficiency of the compression (1 being fastest, but 
-      lowest compression ratio, 9 being slowest but best compression 
-      ratio). The default value of <code>complevel</code> is 4. Setting 
-      <code>shuffle=False</code> will turn off the HDF5 shuffle filter, 
-      which de-interlaces a block of data before compression by reordering 
-      the bytes.  The shuffle filter can significantly improve compression 
-      ratios, and is on by default.  Setting <code>fletcher32</code> 
-      keyword argument to <a 
-      href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> to <code>True</code> (it's 
-      <code>False</code> by default) enables the Fletcher32 checksum 
-      algorithm for error detection. It's also possible to set the HDF5 
-      chunking parameters and endian-ness of the binary data stored in the 
-      HDF5 file with the <code>chunksizes</code> and <code>endian</code> 
-      keyword arguments to <a 
-      href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a>.  These keyword arguments only are 
-      relevant for <code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code> 
-      files (where the underlying file format is HDF5) and are silently 
-      ignored if the file format is <code>NETCDF3_CLASSIC</code> or 
-      <code>NETCDF3_64BIT</code>,</p>
-      <p>If your data only has a certain number of digits of precision (say
-      for example, it is temperature data that was measured with a 
-      precision of 0.1 degrees), you can dramatically improve zlib 
-      compression by quantizing (or truncating) the data using the 
-      <code>least_significant_digit</code> keyword argument to <a 
-      href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a>. The least significant digit is the 
-      power of ten of the smallest decimal place in the data that is a 
-      reliable value. For example if the data has a precision of 0.1, then 
-      setting <code>least_significant_digit=1</code> will cause data the 
-      data to be quantized using 
-      <code>numpy.around(scale*data)/scale</code>, where scale = 2**bits, 
-      and bits is determined so that a precision of 0.1 is retained (in 
-      this case bits=4).  Effectively, this makes the compression 'lossy' 
-      instead of 'lossless', that is some precision in the data is 
-      sacrificed for the sake of disk space.</p>
-      <p>In our example, try replacing the line</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp = rootgrp.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,))</pre>
-      <p>with</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp = dataset.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,),zlib=True)</pre>
-      <p>and then</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>temp = dataset.createVariable(<span class="py-string">'temp'</span>,<span class="py-string">'f4'</span>,(<span class="py-string">'time'</span>,<span class="py-string">'level'</span>,<span class="py-string">'lat'</span>,<span class="py-string">'lon'</span>,),zlib=True,least_significant_digit=3)</pre>
-      <p>and see how much smaller the resulting files are.</p>
-    <h2 class="heading">9) Beyond homogenous arrays of a fixed type - compound data types</h2>
-      <p>Compound data types map directly to numpy structured (a.k.a 
-      'record' arrays).  Structured arrays are akin to C structs, or 
-      derived types in Fortran. They allow for the construction of 
-      table-like structures composed of combinations of other data types, 
-      including other compound types. Compound types might be useful for 
-      representing multiple parameter values at each point on a grid, or at
-      each time and space location for scattered (point) data. You can then
-      access all the information for a point by reading one variable, 
-      instead of reading different parameters from different variables.  
-      Compound data types are created from the corresponding numpy data 
-      type using the <a 
-      href="netCDF4.Dataset-class.html#createCompoundType" 
-      class="link">createCompoundType</a> method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance. 
-      Since there is no native complex data type in netcdf, compound types 
-      are handy for storing numpy complex arrays.  Here's an example:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>f = Dataset(<span class="py-string">'complex.nc'</span>,<span class="py-string">'w'</span>)
-<span class="py-prompt">>>> </span>size = 3 <span class="py-comment"># length of 1-d complex array</span>
-<span class="py-prompt">>>> </span><span class="py-comment"># create sample complex data.</span>
-<span class="py-prompt">>>> </span>datac = numpy.exp(1j*(1.+numpy.linspace(0, numpy.pi, size)))
-<span class="py-prompt">>>> </span><span class="py-comment"># create complex128 compound data type.</span>
-<span class="py-prompt">>>> </span>complex128 = numpy.dtype([(<span class="py-string">'real'</span>,numpy.float64),(<span class="py-string">'imag'</span>,numpy.float64)])
-<span class="py-prompt">>>> </span>complex128_t = f.createCompoundType(complex128,<span class="py-string">'complex128'</span>)
-<span class="py-prompt">>>> </span><span class="py-comment"># create a variable with this data type, write some data to it.</span>
-<span class="py-prompt">>>> </span>f.createDimension(<span class="py-string">'x_dim'</span>,None)
-<span class="py-prompt">>>> </span>v = f.createVariable(<span class="py-string">'cmplx_var'</span>,complex128_t,<span class="py-string">'x_dim'</span>)
-<span class="py-prompt">>>> </span>data = numpy.empty(size,complex128) <span class="py-comment"># numpy structured array</span>
-<span class="py-prompt">>>> </span>data[<span class="py-string">'real'</span>] = datac.real; data[<span class="py-string">'imag'</span>] = datac.imag
-<span class="py-prompt">>>> </span>v[:] = data <span class="py-comment"># write numpy structured array to netcdf compound var</span>
-<span class="py-prompt">>>> </span><span class="py-comment"># close and reopen the file, check the contents.</span>
-<span class="py-prompt">>>> </span>f.close(); f = Dataset(<span class="py-string">'complex.nc'</span>)
-<span class="py-prompt">>>> </span>v = f.variables[<span class="py-string">'cmplx_var'</span>]
-<span class="py-prompt">>>> </span>datain = v[:] <span class="py-comment"># read in all the data into a numpy structured array</span>
-<span class="py-prompt">>>> </span><span class="py-comment"># create an empty numpy complex array</span>
-<span class="py-prompt">>>> </span>datac2 = numpy.empty(datain.shape,numpy.complex128)
-<span class="py-prompt">>>> </span><span class="py-comment"># .. fill it with contents of structured array.</span>
-<span class="py-prompt">>>> </span>datac2.real = datain[<span class="py-string">'real'</span>]; datac2.imag = datain[<span class="py-string">'imag'</span>]
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> datac.dtype,datac <span class="py-comment"># original data</span>
-<span class="py-output">complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span>
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> datac2.dtype,datac2 <span class="py-comment"># data from file</span>
-<span class="py-output">complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Compound types can be nested, but you must create the 'inner' ones
-      first. All of the compound types defined for a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> are stored in 
-      a Python dictionary, just like variables and dimensions. As always, 
-      printing objects gives useful summary information in an interactive 
-      session:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> f
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions: x_dim</span>
-<span class="py-output">    variables: cmplx_var</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'cmplx_var'</span>]
-<span class="py-output">compound cmplx_var(x_dim)</span>
-<span class="py-output">compound data type: [('real', '<f8'), ('imag', '<f8')]</span>
-<span class="py-output">unlimited dimensions: x_dim</span>
-<span class="py-output">current shape = (3,)</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.cmptypes
-<span class="py-output">OrderedDict([('complex128', <netCDF4.CompoundType object at 0x1029eb7e8>)])</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.cmptypes[<span class="py-string">'complex128'</span>]
-<span class="py-output"><type 'netCDF4.CompoundType'>: name = 'complex128', numpy dtype = [(u'real','<f8'), (u'imag', '<f8')]</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-    <h2 class="heading">10) Variable-length (vlen) data types.</h2>
-      <p>NetCDF 4 has support for variable-length or "ragged" 
-      arrays.  These are arrays of variable length sequences having the 
-      same type. To create a variable-length data type, use the <a 
-      href="netCDF4.Dataset-class.html#createVLType" 
-      class="link">createVLType</a> method method of a <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>f = Dataset(<span class="py-string">'tst_vlen.nc'</span>,<span class="py-string">'w'</span>)
-<span class="py-prompt">>>> </span>vlen_t = f.createVLType(numpy.int32, <span class="py-string">'phony_vlen'</span>)</pre>
-      <p>The numpy datatype of the variable-length sequences and the name 
-      of the new datatype must be specified. Any of the primitive datatypes
-      can be used (signed and unsigned integers, 32 and 64 bit floats, and 
-      characters), but compound data types cannot. A new variable can then 
-      be created using this datatype.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>x = f.createDimension(<span class="py-string">'x'</span>,3)
-<span class="py-prompt">>>> </span>y = f.createDimension(<span class="py-string">'y'</span>,4)
-<span class="py-prompt">>>> </span>vlvar = f.createVariable(<span class="py-string">'phony_vlen_var'</span>, vlen_t, (<span class="py-string">'y'</span>,<span class="py-string">'x'</span>))</pre>
-      <p>Since there is no native vlen datatype in numpy, vlen arrays are 
-      represented in python as object arrays (arrays of dtype 
-      <code>object</code>). These are arrays whose elements are Python 
-      object pointers, and can contain any type of python object. For this 
-      application, they must contain 1-D numpy arrays all of the same type 
-      but of varying length. In this case, they contain 1-D numpy 
-      <code>int32</code> arrays of random length betwee 1 and 10.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> random
-<span class="py-prompt">>>> </span>data = numpy.empty(len(y)*len(x),object)
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> n <span class="py-keyword">in</span> range(len(y)*len(x)):
-<span class="py-prompt">>>> </span>   data[n] = numpy.arange(random.randint(1,10),dtype=<span class="py-string">'int32'</span>)+1
-<span class="py-prompt">>>> </span>data = numpy.reshape(data,(len(y),len(x)))
-<span class="py-prompt">>>> </span>vlvar[:] = data
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'vlen variable =\n'</span>,vlvar[:]
-<span class="py-output">vlen variable =</span>
-<span class="py-output">[[[ 1  2  3  4  5  6  7  8  9 10] [1 2 3 4 5] [1 2 3 4 5 6 7 8]]</span>
-<span class="py-output"> [[1 2 3 4 5 6 7] [1 2 3 4 5 6] [1 2 3 4 5]]</span>
-<span class="py-output"> [[1 2 3 4 5] [1 2 3 4] [1]]</span>
-<span class="py-output"> [[ 1  2  3  4  5  6  7  8  9 10] [ 1  2  3  4  5  6  7  8  9 10]</span>
-<span class="py-output">  [1 2 3 4 5 6 7 8]]]</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions: x, y</span>
-<span class="py-output">    variables: phony_vlen_var</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'phony_vlen_var'</span>]
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output">vlen phony_vlen_var(y, x)</span>
-<span class="py-output">vlen data type: int32</span>
-<span class="py-output">unlimited dimensions:</span>
-<span class="py-output">current shape = (4, 3)</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.VLtypes[<span class="py-string">'phony_vlen'</span>]
-<span class="py-output"><type 'netCDF4.VLType'>: name = 'phony_vlen', numpy dtype = int32</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>Numpy object arrays containing python strings can also be written 
-      as vlen variables,  For vlen strings, you don't need to create a vlen
-      data type. Instead, simply use the python <code>str</code> builtin 
-      (or a numpy string datatype with fixed length greater than 1) when 
-      calling the <a href="netCDF4.Dataset-class.html#createVariable" 
-      class="link">createVariable</a> method.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>z = f.createDimension(<span class="py-string">'z'</span>,10)
-<span class="py-prompt">>>> </span>strvar = rootgrp.createVariable(<span class="py-string">'strvar'</span>, str, <span class="py-string">'z'</span>)</pre>
-      <p>In this example, an object array is filled with random python 
-      strings with random lengths between 2 and 12 characters, and the data
-      in the object array is assigned to the vlen string variable.</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span>chars = <span class="py-string">'1234567890aabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>
-<span class="py-prompt">>>> </span>data = numpy.empty(10,<span class="py-string">'O'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> n <span class="py-keyword">in</span> range(10):
-<span class="py-prompt">>>> </span>    stringlen = random.randint(2,12)
-<span class="py-prompt">>>> </span>    data[n] = <span class="py-string">''</span>.join([random.choice(chars) <span class="py-keyword">for</span> i <span class="py-keyword">in</span> range(stringlen)])
-<span class="py-prompt">>>> </span>strvar[:] = data
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> <span class="py-string">'variable-length string variable:\n'</span>,strvar[:]
-<span class="py-output">variable-length string variable:</span>
-<span class="py-output">[aDy29jPt jd7aplD b8t4RM jHh8hq KtaPWF9cQj Q1hHN5WoXSiT MMxsVeq td LUzvVTzj</span>
-<span class="py-output"> 5DS9X8S]</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f
-<span class="py-output"><type 'netCDF4.Dataset'></span>
-<span class="py-output">root group (NETCDF4 file format):</span>
-<span class="py-output">    dimensions: x, y, z</span>
-<span class="py-output">    variables: phony_vlen_var, strvar</span>
-<span class="py-output">    groups:</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'strvar'</span>]
-<span class="py-output"><type 'netCDF4.Variable'></span>
-<span class="py-output">vlen strvar(z)</span>
-<span class="py-output">vlen data type: <type 'str'></span>
-<span class="py-output">unlimited dimensions:</span>
-<span class="py-output">current size = (10,)</span>
-<span class="py-output"></span><span class="py-prompt">>>></span></pre>
-      <p>It is also possible to set contents of vlen string variables with 
-      numpy arrays of any string or unicode data type. Note, however, that 
-      accessing the contents of such variables will always return numpy 
-      arrays with dtype <code>object</code>.</p>
-      <p>All of the code in this tutorial is available in 
-      <code>examples/tutorial.py</code>, Unit tests are in the 
-      <code>test</code> directory.</p>
-
-<hr />
-<div class="fields">      <p><strong>Contact:</strong>
-        Jeffrey Whitaker <jeffrey.s.whitaker at noaa.gov>
-      </p>
-      <p><strong>Copyright:</strong>
-        2008 by Jeffrey Whitaker.
-      </p>
-      <p><strong>License:</strong>
-        Permission to use, copy, modify, and distribute this software and 
-        its documentation for any purpose and without fee is hereby 
-        granted, provided that the above copyright notice appear in all 
-        copies and that both the copyright notice and this permission 
-        notice appear in supporting documentation. THE AUTHOR DISCLAIMS ALL
-        WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED 
-        WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 
-        AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES
-        OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 
-        PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 
-        TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
-        PERFORMANCE OF THIS SOFTWARE.
-      </p>
-      <p><strong>Version:</strong>
-        1.1.8
-      </p>
-</div><!-- ==================== CLASSES ==================== -->
-<a name="section-Classes"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Classes</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.CompoundType-class.html" class="summary-name">CompoundType</a><br />
-      A <a href="netCDF4.CompoundType-class.html" 
-        class="link">CompoundType</a> instance is used to describe a 
-        compound data type.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Dataset-class.html" class="summary-name">Dataset</a><br />
-      Dataset(self, filename, mode="r", clobber=True, 
-        diskless=False, persist=False, keepweakref=False, format='NETCDF4')
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Dimension-class.html" class="summary-name">Dimension</a><br />
-      Dimension(self, group, name, size=None)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Group-class.html" class="summary-name">Group</a><br />
-      Group(self, parent, name)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.MFDataset-class.html" class="summary-name">MFDataset</a><br />
-      MFDataset(self, files, check=False, aggdim=None, exclude=[])
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.MFTime-class.html" class="summary-name">MFTime</a><br />
-      MFTime(self, time, units=None)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.VLType-class.html" class="summary-name">VLType</a><br />
-      A <a href="netCDF4.VLType-class.html" class="link">VLType</a> 
-        instance is used to describe a variable length (VLEN) data type.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Variable-class.html" class="summary-name">Variable</a><br />
-      Variable(self, group, name, datatype, dimensions=(), zlib=False, 
-        complevel=4, shuffle=True, fletcher32=False, contiguous=False, 
-        chunksizes=None, endian='native', 
-        least_significant_digit=None,fill_value=None)
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTIONS ==================== -->
-<a name="section-Functions"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Functions</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4-module.html#chartostring" class="summary-sig-name">chartostring</a>(<span class="summary-sig-arg">b</span>)</span><br />
-      convert a character array to a string array with one less dimension.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#chartostring">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4-module.html#date2index" class="summary-sig-name">date2index</a>(<span class="summary-sig-arg">dates</span>,
-        <span class="summary-sig-arg">nctime</span>,
-        <span class="summary-sig-arg">calendar</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">select</span>=<span class="summary-sig-default">'exact'</span>)</span><br />
-      Return indices of a netCDF time variable corresponding to the given 
-      dates.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#date2index">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4-module.html#date2num" class="summary-sig-name">date2num</a>(<span class="summary-sig-arg">dates</span>,
-        <span class="summary-sig-arg">units</span>,
-        <span class="summary-sig-arg">calendar</span>=<span class="summary-sig-default">'standard'</span>)</span><br />
-      Return numeric time values given datetime objects.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#date2num">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="getlibversion"></a><span class="summary-sig-name">getlibversion</span>()</span><br />
-      returns a string describing the version of the netcdf library used to
-      build the module, and when it was built.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#getlibversion">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4-module.html#num2date" class="summary-sig-name">num2date</a>(<span class="summary-sig-arg">times</span>,
-        <span class="summary-sig-arg">units</span>,
-        <span class="summary-sig-arg">calendar</span>=<span class="summary-sig-default">'standard'</span>)</span><br />
-      Return datetime objects given numeric time values.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#num2date">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4-module.html#stringtoarr" class="summary-sig-name">stringtoarr</a>(<span class="summary-sig-arg">a</span>,
-        <span class="summary-sig-arg">NUMCHARS</span>,
-        <span class="summary-sig-arg">dtype</span>=<span class="summary-sig-default">'S'</span>)</span><br />
-      convert a string to a character array of length NUMCHARS</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#stringtoarr">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4-module.html#stringtochar" class="summary-sig-name">stringtochar</a>(<span class="summary-sig-arg">a</span>)</span><br />
-      convert a string array to a character array with one extra dimension</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#stringtochar">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-</table>
-<!-- ==================== VARIABLES ==================== -->
-<a name="section-Variables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="MINYEAR"></a><span class="summary-name">MINYEAR</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="NC_DISKLESS"></a><span class="summary-name">NC_DISKLESS</span> = <code title="8">8</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__has_nc_inq_format_extended__"></a><span class="summary-name">__has_nc_inq_format_extended__</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__has_nc_inq_path__"></a><span class="summary-name">__has_nc_inq_path__</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__has_rename_grp__"></a><span class="summary-name">__has_rename_grp__</span> = <code title="1">1</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__hdf5libversion__"></a><span class="summary-name">__hdf5libversion__</span> = <code title="'1.8.13'"><code class="variable-quote">'</code><code class="variable-string">1.8.13</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__netcdf4libversion__"></a><span class="summary-name">__netcdf4libversion__</span> = <code title="u'4.3.2'"><code class="variable-quote">u'</code><code class="variable-string">4.3.2</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="None">None</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="day_units"></a><span class="summary-name">day_units</span> = <code title="['day', 'days', 'd']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">day</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">days</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code  [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="default_encoding"></a><span class="summary-name">default_encoding</span> = <code title="'utf-8'"><code class="variable-quote">'</code><code class="variable-string">utf-8</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4-module.html#default_fillvals" class="summary-name">default_fillvals</a> = <code title="{'S1': '\x00',
- 'U1': '\x00',
- 'f4': 9.96920996839e+36,
- 'f8': 9.96920996839e+36,
- 'i1': -127,
- 'i2': -32767,
- 'i4': -2147483647,
- 'i8': -9223372036854775806,
-..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">S1</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x00</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">U1</code><code class="variable-quote">'</code><code class="variable-op">: </code><cod [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="gregorian"></a><span class="summary-name">gregorian</span> = <code title="datetime.datetime(1582, 10, 15, 0, 0)">datetime.datetime(1582, 10, 15, 0, 0)</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="hr_units"></a><span class="summary-name">hr_units</span> = <code title="['hour', 'hours', 'hr', 'hrs', 'h']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">hour</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">hours</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote" [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="is_native_big"></a><span class="summary-name">is_native_big</span> = <code title="False">False</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="is_native_little"></a><span class="summary-name">is_native_little</span> = <code title="True">True</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4-module.html#microsec_units" class="summary-name">microsec_units</a> = <code title="['microseconds', 'microsecond', 'microsec', 'microsecs']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">microseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">microsecond</code><code class="variable-quote">'</code><code cla [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4-module.html#millisec_units" class="summary-name">millisec_units</a> = <code title="['milliseconds', 'millisecond', 'millisec', 'millisecs']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">milliseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">millisecond</code><code class="variable-quote">'</code><code cla [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="min_units"></a><span class="summary-name">min_units</span> = <code title="['minute', 'minutes', 'min', 'mins']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">minute</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">minutes</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="python3"></a><span class="summary-name">python3</span> = <code title="False">False</code>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="sec_units"></a><span class="summary-name">sec_units</span> = <code title="['second', 'seconds', 'sec', 'secs', 's']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">second</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">seconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="var [...]
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="unicode_error"></a><span class="summary-name">unicode_error</span> = <code title="'replace'"><code class="variable-quote">'</code><code class="variable-string">replace</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-</table>
-<!-- ==================== FUNCTION DETAILS ==================== -->
-<a name="section-FunctionDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Function Details</span></td>
-</tr>
-</table>
-<a name="chartostring"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">chartostring</span>(<span class="sig-arg">b</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#chartostring">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>convert a character array to a string array with one less 
-  dimension.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>b</code></strong> - Input character array (numpy datatype 'S1' or 'U1'). Will be 
-          converted to a array of strings, where each string has a fixed 
-          length of b.shape[-1] characters.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>A numpy string array with datatype 'SN' or 'UN' and shape 
-          b.shape[:-1], where N=b.shape[-1].</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="date2index"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">date2index</span>(<span class="sig-arg">dates</span>,
-        <span class="sig-arg">nctime</span>,
-        <span class="sig-arg">calendar</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">select</span>=<span class="sig-default">'exact'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#date2index">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Return indices of a netCDF time variable corresponding to the given 
-  dates.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>dates</code></strong> - A datetime object or a sequence of datetime objects. The datetime
-          objects should not include a time-zone offset.</li>
-        <li><strong class="pname"><code>nctime</code></strong> - A netCDF time variable object. The nctime object must have a 
-          <code>units</code> attribute.</li>
-        <li><strong class="pname"><code>calendar</code></strong> - Describes the calendar used in the time calculation. Valid 
-          calendars <code>'standard', 'gregorian', 'proleptic_gregorian' 
-          'noleap', '365_day', '360_day', 'julian', 'all_leap', 
-          '366_day'</code>. Default is <code>'standard'</code>, which is a 
-          mixed Julian/Gregorian calendar If <code>calendar</code> is None,
-          its value is given by <code>nctime.calendar</code> or 
-          <code>standard</code> if no such attribute exists.</li>
-        <li><strong class="pname"><code>select</code></strong> - <code>'exact', 'before', 'after', 'nearest'</code> The index 
-          selection method. <code>exact</code> will return the indices 
-          perfectly matching the dates given. <code>before</code> and 
-          <code>after</code> will return the indices corresponding to the 
-          dates just before or just after the given dates if an exact match
-          cannot be found. <code>nearest</code> will return the indices 
-          that correspond to the closest dates.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>an index (indices) of the netCDF time variable corresponding to 
-          the given datetime object(s).</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="date2num"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">date2num</span>(<span class="sig-arg">dates</span>,
-        <span class="sig-arg">units</span>,
-        <span class="sig-arg">calendar</span>=<span class="sig-default">'standard'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#date2num">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Return numeric time values given datetime objects. The units of the 
-  numeric time values are described by the <code class="link">units</code> 
-  argument and the <code class="link">calendar</code> keyword. The datetime
-  objects must be in UTC with no time-zone offset.  If there is a time-zone
-  offset in <code>units</code>, it will be applied to the returned numeric 
-  values.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>dates</code></strong> - A datetime object or a sequence of datetime objects. The datetime
-          objects should not include a time-zone offset.</li>
-        <li><strong class="pname"><code>units</code></strong> - a string of the form <code>'<b>time units</b> since <b>reference 
-          time</b></code>' describing the time units. <b><code>time 
-          units</code></b> can be days, hours, minutes, seconds, 
-          milliseconds or microseconds. <b><code>reference time</code></b> 
-          is the time origin.  Accuracy is somewhere between a millisecond 
-          and a microsecond, depending on the time interval and the 
-          calendar used.</li>
-        <li><strong class="pname"><code>calendar</code></strong> - describes the calendar used in the time calculations. All the 
-          values currently defined in the <a 
-          href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/" 
-          target="_top">CF metadata convention</a> are supported. Valid 
-          calendars <code>'standard', 'gregorian', 'proleptic_gregorian' 
-          'noleap', '365_day', '360_day', 'julian', 'all_leap', 
-          '366_day'</code>. Default is <code>'standard'</code>, which is a 
-          mixed Julian/Gregorian calendar.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>a numeric time value, or an array of numeric time values.</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="num2date"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">num2date</span>(<span class="sig-arg">times</span>,
-        <span class="sig-arg">units</span>,
-        <span class="sig-arg">calendar</span>=<span class="sig-default">'standard'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#num2date">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Return datetime objects given numeric time values. The units of the 
-  numeric time values are described by the <code>units</code> argument and 
-  the <code>calendar</code> keyword. The returned datetime objects 
-  represent UTC with no time-zone offset, even if the specified 
-  <code>units</code> contain a time-zone offset.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>times</code></strong> - numeric time values.</li>
-        <li><strong class="pname"><code>units</code></strong> - a string of the form <code>'<b>time units</b> since <b>reference 
-          time</b></code>' describing the time units. <b><code>time 
-          units</code></b> can be days, hours, minutes, seconds, 
-          milliseconds or microseconds. <b><code>reference time</code></b> 
-          is the time origin.  Accuracy is somewhere between a millisecond 
-          and a microsecond, depending on the time interval and the 
-          calendar used.</li>
-        <li><strong class="pname"><code>calendar</code></strong> - describes the calendar used in the time calculations. All the 
-          values currently defined in the <a 
-          href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/" 
-          target="_top">CF metadata convention</a> are supported. Valid 
-          calendars <code>'standard', 'gregorian', 'proleptic_gregorian' 
-          'noleap', '365_day', '360_day', 'julian', 'all_leap', 
-          '366_day'</code>. Default is <code>'standard'</code>, which is a 
-          mixed Julian/Gregorian calendar.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>a datetime instance, or an array of datetime instances.
-          <p>The datetime instances returned are 'real' python datetime 
-          objects if <code>calendar='proleptic_gregorian'</code>, or 
-          <code>calendar = 'standard'</code> or <code>'gregorian'</code> 
-          and the date is after the breakpoint between the Julian and 
-          Gregorian calendars (1582-10-15). Otherwise, they are 'phony' 
-          datetime objects which support some but not all the methods of 
-          'real' python datetime objects. The datetime instances do not 
-          contain a time-zone offset, even if the specified 
-          <code>units</code> contains one.</p></dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="stringtoarr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">stringtoarr</span>(<span class="sig-arg">a</span>,
-        <span class="sig-arg">NUMCHARS</span>,
-        <span class="sig-arg">dtype</span>=<span class="sig-default">'S'</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#stringtoarr">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>convert a string to a character array of length NUMCHARS</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>a</code></strong> - Input python string.</li>
-        <li><strong class="pname"><code>NUMCHARS</code></strong> - number of characters used to represent string (if len(a) < 
-          NUMCHARS, it will be padded on the right with blanks).</li>
-        <li><strong class="pname"><code>dtype</code></strong> - type of numpy array to return.  Default is 'S', which means an 
-          array of dtype 'S1' will be returned.  If dtype='U', a unicode 
-          array (dtype = 'U1') will be returned.</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>A rank 1 numpy character array of length NUMCHARS with datatype 
-          'S1' (default) or 'U1' (if dtype='U')</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="stringtochar"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">stringtochar</span>(<span class="sig-arg">a</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#stringtochar">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>convert a string array to a character array with one extra 
-  dimension</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>a</code></strong> - Input numpy string array with numpy datatype 'SN' or 'UN', where 
-          N is the number of characters in each string.  Will be converted 
-          to an array of characters (datatype 'S1' or 'U1') of shape 
-          a.shape + (N,).</li>
-    </ul></dd>
-    <dt>Returns:</dt>
-        <dd>A numpy character array with datatype 'S1' or 'U1' and shape 
-          a.shape + (N,), where N is the length of each string in a.</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== VARIABLES DETAILS ==================== -->
-<a name="section-VariablesDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Variables Details</span></td>
-</tr>
-</table>
-<a name="default_fillvals"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">default_fillvals</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">S1</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x00</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">U1</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x00</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">f4</code><code class="variable-quote">'</code><code class="variable-op">: </code>9.96920996839e+36<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">f8</code><code class="variable-quote">'</code><code class="variable-op">: </code>9.96920996839e+36<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i1</code><code class="variable-quote">'</code><code class="variable-op">: </code>-127<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i2</code><code class="variable-quote">'</code><code class="variable-op">: </code>-32767<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i4</code><code class="variable-quote">'</code><code class="variable-op">: </code>-2147483647<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">i8</code><code class="variable-quote">'</code><code class="variable-op">: </code>-9223372036854775806<code class="variable-op">,</code>
-<code class="variable-ellipsis">...</code>
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="microsec_units"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">microsec_units</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">microseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">microsecond</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">microsec</code><code class="variable-quote">'</code><code class="variable [...]
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<a name="millisec_units"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">millisec_units</h3>
-  
-  <dl class="fields">
-  </dl>
-  <dl class="fields">
-    <dt>Value:</dt>
-      <dd><table><tr><td><pre class="variable">
-<code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">milliseconds</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">millisecond</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">millisec</code><code class="variable-quote">'</code><code class="variable [...]
-</pre></td></tr></table>
-</dd>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th bgcolor="#70b0f0" class="navbar-select"
-          >   Home   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.CompoundType-class.html b/docs/netCDF4.CompoundType-class.html
deleted file mode 100644
index a16a19d..0000000
--- a/docs/netCDF4.CompoundType-class.html
+++ /dev/null
@@ -1,357 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.CompoundType</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class CompoundType
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class CompoundType</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#CompoundType">source code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">CompoundType</strong>
-</pre>
-
-<hr />
-<p>A <a href="netCDF4.CompoundType-class.html" 
-  class="link">CompoundType</a> instance is used to describe a compound 
-  data type.</p>
-  <p>Constructor: <code>CompoundType(group, datatype, 
-  datatype_name)</code></p>
-
-<hr />
-<div class="fields">      <p><strong>Attention:</strong>
-        When creating nested compound data types, the inner compound data 
-        types must already be associated with CompoundType instances (so 
-        create CompoundType instances for the innermost structures first).
-        <p><a href="netCDF4.CompoundType-class.html" 
-        class="link">CompoundType</a> instances should be created using the
-        <a href="netCDF4.Dataset-class.html#createCompoundType" 
-        class="link">createCompoundType</a> method of a Dataset or <a 
-        href="netCDF4.Group-class.html" class="link">Group</a> instance, 
-        not using this class directly.</p>
-        <p><b>Parameters:</b></p>
-        <p><b><code>group</code></b> - <a href="netCDF4.Group-class.html" 
-        class="link">Group</a> instance to associate with the compound 
-        datatype.</p>
-        <p><b><code>datatype</code></b> - A numpy dtype object describing a
-        structured (a.k.a record) array.  Can be composed of homogeneous 
-        numeric or character data types, or other structured array data 
-        types.</p>
-        <p><b><code>datatype_name</code></b> - a Python string containing a
-        description of the compound data type.</p>
-        <p><b>Returns:</b></p>
-        <p>a <a href="netCDF4.CompoundType-class.html" 
-        class="link">CompoundType</a> instance, which can be passed to the 
-        <code>createVariable</code> method of a <a 
-        href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-        href="netCDF4.Group-class.html" class="link">Group</a> 
-        instance.</p>
-        <p>The instance variables <code>dtype</code> and <code>name</code> 
-        should not be modified by the user.</p>
-      </p>
-</div><!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.CompoundType-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#CompoundType.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">a new object with type S, a subtype of T</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.CompoundType-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
-        <span class="summary-sig-arg">S</span>,
-        <span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#CompoundType.__new__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.CompoundType-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">x</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#CompoundType.__repr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__unicode__"></a><span class="summary-sig-name">__unicode__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#CompoundType.__unicode__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE VARIABLES ==================== -->
-<a name="section-InstanceVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="dtype"></a><span class="summary-name">dtype</span><br />
-      A numpy dtype object describing the compound data type.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="name"></a><span class="summary-name">name</span><br />
-      A python string describing the compound type.
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#CompoundType.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
-        <span class="sig-arg">S</span>,
-        <span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#CompoundType.__new__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Returns: a new object with type S, a subtype of T</dt>
-    <dt>Overrides:
-        object.__new__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">x</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#CompoundType.__repr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.Dataset-class.html b/docs/netCDF4.Dataset-class.html
deleted file mode 100644
index bf9f227..0000000
--- a/docs/netCDF4.Dataset-class.html
+++ /dev/null
@@ -1,1705 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.Dataset</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class Dataset
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Dataset</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#Dataset">source code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">Dataset</strong>
-</pre>
-
-<dl><dt>Known Subclasses:</dt>
-<dd>
-      <ul class="subclass-list">
-<li><a href="netCDF4.Group-class.html">Group</a></li><li>, <a href="netCDF4.MFDataset-class.html">MFDataset</a></li>  </ul>
-</dd></dl>
-
-<hr />
-<p>Dataset(self, filename, mode="r", clobber=True, 
-  diskless=False, persist=False, keepweakref=False, format='NETCDF4')</p>
-  <p>A netCDF <a href="netCDF4.Dataset-class.html" class="link">Dataset</a>
-  is a collection of dimensions, groups, variables and attributes. Together
-  they describe the meaning of data and relations among data fields stored 
-  in a netCDF file.</p>
-  <p><b>Parameters:</b></p>
-  <p><b><code>filename</code></b> - Name of netCDF file to hold 
-  dataset.</p>
-  <p><b>Keywords</b>:</p>
-  <p><b><code>mode</code></b> - access mode. <code>r</code> means 
-  read-only; no data can be modified. <code>w</code> means write; a new 
-  file is created, an existing file with the same name is deleted. 
-  <code>a</code> and <code>r+</code> mean append (in analogy with serial 
-  files); an existing file is opened for reading and writing. Appending 
-  <code>s</code> to modes <code>w</code>, <code>r+</code> or <code>a</code>
-  will enable unbuffered shared access to <code>NETCDF3_CLASSIC</code> or 
-  <code>NETCDF3_64BIT</code> formatted files. Unbuffered acesss may be 
-  useful even if you don't need shared access, since it may be faster for 
-  programs that don't access data sequentially. This option is ignored for 
-  <code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code> formatted 
-  files.</p>
-  <p><b><code>clobber</code></b> - if <code>True</code> (default), opening 
-  a file with <code>mode='w'</code> will clobber an existing file with the 
-  same name.  if <code>False</code>, an exception will be raised if a file 
-  with the same name already exists.</p>
-  <p><b><code>format</code></b> - underlying file format (one of 
-  <code>'NETCDF4', 'NETCDF4_CLASSIC', 'NETCDF3_CLASSIC'</code> or 
-  <code>'NETCDF3_64BIT'</code>.  Only relevant if <code>mode = 'w'</code> 
-  (if <code>mode = 'r','a'</code> or <code>'r+'</code> the file format is 
-  automatically detected). Default <code>'NETCDF4'</code>, which means the 
-  data is stored in an HDF5 file, using netCDF 4 API features.  Setting 
-  <code>format='NETCDF4_CLASSIC'</code> will create an HDF5 file, using 
-  only netCDF 3 compatibile API features. netCDF 3 clients must be 
-  recompiled and linked against the netCDF 4 library to read files in 
-  <code>NETCDF4_CLASSIC</code> format. <code>'NETCDF3_CLASSIC'</code> is 
-  the classic netCDF 3 file format that does not handle 2+ Gb files very 
-  well. <code>'NETCDF3_64BIT'</code> is the 64-bit offset version of the 
-  netCDF 3 file format, which fully supports 2+ GB files, but is only 
-  compatible with clients linked against netCDF version 3.6.0 or later.</p>
-  <p><code>diskless</code> - create diskless (in memory) file.  This is an 
-  experimental feature added to the C library after the netcdf-4.2 
-  release.</p>
-  <p><code>persist</code> - if diskless=True, persist file to disk when 
-  closed (default False).</p>
-  <p><code>keepweakref</code> - if keepweakref=True, child Dimension and 
-  Variable instances will keep weak references to the parent Dataset or 
-  Group object.  Default is False, which means strong references will be 
-  kept.  Having Dimension and Variable instances keep a strong reference to
-  the parent Dataset instance, which in turn keeps a reference to child 
-  Dimension and Variable instances, creates circular references. Circular 
-  references complicate garbage collection, which may mean increased memory
-  usage for programs that create may Dataset instances with lots of 
-  Variables.  Setting keepweakref to True allows Dataset instances to be 
-  garbage collected as soon as they go out of scope, potential reducing 
-  memory usage.  However, in most cases this is not desirable, since the 
-  associated Variable instances may still be needed, but are rendered 
-  unusable when the parent Dataset instance is garbage collected.</p>
-  <p><b>Returns:</b></p>
-  <p>a <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-  instance.  All further operations on the netCDF Dataset are accomplised 
-  via <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-  instance methods.</p>
-  <p>A list of attribute names corresponding to global netCDF attributes 
-  defined for the <a href="netCDF4.Dataset-class.html" 
-  class="link">Dataset</a> can be obtained with the <a 
-  href="netCDF4.Dataset-class.html#ncattrs" class="link">ncattrs()</a> 
-  method. These attributes can be created by assigning to an attribute of 
-  the <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-  instance. A dictionary containing all the netCDF attribute name/value 
-  pairs is provided by the <code>__dict__</code> attribute of a <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> instance.</p>
-  <p>The instance variables <code>dimensions, variables, groups, cmptypes, 
-  data_model, disk_format</code> and <code>path</code> are read-only (and 
-  should not be modified by the user).</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#__delattr__" class="summary-sig-name">__delattr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__delattr__('name') <==> del x.name</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__delattr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__enter__"></a><span class="summary-sig-name">__enter__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__enter__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__exit__"></a><span class="summary-sig-name">__exit__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__exit__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__getattr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#__getattribute__" class="summary-sig-name">__getattribute__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__getattribute__('name') <==> x.name</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__getattribute__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">filename</span>,
-        <span class="summary-sig-arg">mode</span>=<span class="summary-sig-default">"r"</span>,
-        <span class="summary-sig-arg">clobber</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">diskless</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">persist</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">keepweakref</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">format</span>=<span class="summary-sig-default">'NETCDF4'</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">a new object with type S, a subtype of T</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
-        <span class="summary-sig-arg">S</span>,
-        <span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__new__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">x</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__repr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__setattr__('name', value) <==> x.name = value</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__setattr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__unicode__"></a><span class="summary-sig-name">__unicode__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__unicode__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="close"></a><span class="summary-sig-name">close</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Close the Dataset.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.close">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#createCompoundType" class="summary-sig-name">createCompoundType</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">datatype</span>,
-        <span class="summary-sig-arg">datatype_name</span>)</span><br />
-      Creates a new compound data type named <code>datatype_name</code> 
-      from the numpy dtype object <code>datatype</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createCompoundType">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#createDimension" class="summary-sig-name">createDimension</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">dimname</span>,
-        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">None</span>)</span><br />
-      Creates a new dimension with the given <code>dimname</code> and 
-      <code>size</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createDimension">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#createGroup" class="summary-sig-name">createGroup</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">groupname</span>)</span><br />
-      Creates a new <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> with the given <code>groupname</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createGroup">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#createVLType" class="summary-sig-name">createVLType</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">datatype</span>,
-        <span class="summary-sig-arg">datatype_name</span>)</span><br />
-      Creates a new VLEN data type named <code>datatype_name</code> from a 
-      numpy dtype object <code>datatype</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createVLType">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#createVariable" class="summary-sig-name">createVariable</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">varname</span>,
-        <span class="summary-sig-arg">datatype</span>,
-        <span class="summary-sig-arg">dimensions</span>=<span class="summary-sig-default">()</span>,
-        <span class="summary-sig-arg">zlib</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">complevel</span>=<span class="summary-sig-default">4</span>,
-        <span class="summary-sig-arg">shuffle</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">fletcher32</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">contiguous</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">chunksizes</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">endian</span>=<span class="summary-sig-default">'native'</span>,
-        <span class="summary-sig-arg">least_significant_digit</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">fill_value</span>=<span class="summary-sig-default">None</span>)</span><br />
-      Creates a new variable with the given <code>varname</code>, 
-      <code>datatype</code>, and <code>dimensions</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createVariable">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#delncattr" class="summary-sig-name">delncattr</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      delete a netCDF dataset or group attribute.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.delncattr">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#filepath" class="summary-sig-name">filepath</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Get the file system path (or the opendap URL) which was used to 
-      open/create the Dataset.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.filepath">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#getncattr" class="summary-sig-name">getncattr</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>)</span><br />
-      retrievel a netCDF dataset or group attribute.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.getncattr">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="ncattrs"></a><span class="summary-sig-name">ncattrs</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      return netCDF global attribute names for this <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> in a list.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.ncattrs">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="renameAttribute"></a><span class="summary-sig-name">renameAttribute</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">oldname</span>,
-        <span class="summary-sig-arg">newname</span>)</span><br />
-      rename a <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> or <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> attribute named <code>oldname</code> to 
-      <code>newname</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.renameAttribute">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="renameDimension"></a><span class="summary-sig-name">renameDimension</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">oldname</span>,
-        <span class="summary-sig-arg">newname</span>)</span><br />
-      rename a <a href="netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> named <code>oldname</code> to 
-      <code>newname</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.renameDimension">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="renameGroup"></a><span class="summary-sig-name">renameGroup</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">oldname</span>,
-        <span class="summary-sig-arg">newname</span>)</span><br />
-      rename a <a href="netCDF4.Group-class.html" class="link">Group</a> 
-      named <code>oldname</code> to <code>newname</code> (requires netcdf 
-      >= 4.3.1).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.renameGroup">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="renameVariable"></a><span class="summary-sig-name">renameVariable</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">oldname</span>,
-        <span class="summary-sig-arg">newname</span>)</span><br />
-      rename a <a href="netCDF4.Variable-class.html" 
-      class="link">Variable</a> named <code>oldname</code> to 
-      <code>newname</code></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.renameVariable">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#set_auto_mask" class="summary-sig-name">set_auto_mask</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">True_or_False</span>)</span><br />
-      Call <a href="netCDF4.Dataset-class.html#set_auto_mask" 
-      class="link">set_auto_mask</a> for all variables contained in this <a
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a>, as well as 
-      for all variables in all its subgroups.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_auto_mask">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#set_auto_maskandscale" class="summary-sig-name">set_auto_maskandscale</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">True_or_False</span>)</span><br />
-      Call <a href="netCDF4.Dataset-class.html#set_auto_maskandscale" 
-      class="link">set_auto_maskandscale</a> for all variables contained in
-      this <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> or
-      <a href="netCDF4.Group-class.html" class="link">Group</a>, as well as
-      for all variables in all its subgroups.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_auto_maskandscale">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#set_auto_scale" class="summary-sig-name">set_auto_scale</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">True_or_False</span>)</span><br />
-      Call <a href="netCDF4.Dataset-class.html#set_auto_scale" 
-      class="link">set_auto_scale</a> for all variables contained in this 
-      <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a>, as well as 
-      for all variables in all its subgroups.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_auto_scale">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#set_fill_off" class="summary-sig-name">set_fill_off</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Sets the fill mode for a <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> open for writing to <code>off</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_fill_off">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#set_fill_on" class="summary-sig-name">set_fill_on</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      Sets the fill mode for a <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> open for writing to <code>on</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_fill_on">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#setncattr" class="summary-sig-name">setncattr</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      set a netCDF dataset or group attribute using name,value pair.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.setncattr">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dataset-class.html#setncatts" class="summary-sig-name">setncatts</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">attdict</span>)</span><br />
-      set a bunch of netCDF dataset or group attributes at once using a 
-      python dictionary.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.setncatts">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="sync"></a><span class="summary-sig-name">sync</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      Writes all buffered data in the <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> to the disk file.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dataset.sync">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE VARIABLES ==================== -->
-<a name="section-InstanceVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="cmptypes"></a><span class="summary-name">cmptypes</span><br />
-      The <code>cmptypes</code> dictionary maps the names of compound types
-      defined for the <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> or <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> to instances of the <a 
-      href="netCDF4.CompoundType-class.html" class="link">CompoundType</a> 
-      class.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="data_model"></a><span class="summary-name">data_model</span><br />
-      The <code>data_model</code> attribute describes the netCDF data model
-      version, one of <code>NETCDF3_CLASSIC</code>, <code>NETCDF4</code>, 
-      <code>NETCDF4_CLASSIC</code> or <code>NETCDF3_64BIT</code>.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="dimensions"></a><span class="summary-name">dimensions</span><br />
-      The <code>dimensions</code> dictionary maps the names of dimensions 
-      defined for the <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> or <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> to instances of the <a 
-      href="netCDF4.Dimension-class.html" class="link">Dimension</a> class.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Dataset-class.html#disk_format" class="summary-name">disk_format</a><br />
-      The <code>disk_format</code> attribute describes the underlying file 
-      format, one of <code>NETCDF3</code>, <code>HDF5</code>, 
-      <code>HDF4</code>, <code>PNETCDF</code>, <code>DAP2</code>, 
-      <code>DAP4</code> or <code>UNDEFINED</code>.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="file_format"></a><span class="summary-name">file_format</span><br />
-      same as <code>data_model</code>, retained for backwards 
-      compatibility.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="groups"></a><span class="summary-name">groups</span><br />
-      The groups dictionary maps the names of groups created for this <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> to instances 
-      of the <a href="netCDF4.Group-class.html" class="link">Group</a> 
-      class (the <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> class is simply a special case of the <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> class which 
-      describes the root group in the netCDF file).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Dataset-class.html#parent" class="summary-name">parent</a><br />
-      The <code>parent</code> attribute is a reference to the parent <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instance.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Dataset-class.html#path" class="summary-name">path</a><br />
-      The <code>path</code> attribute shows the location of the <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> in the <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> in a unix 
-      directory format (the names of groups in the hierarchy separated by 
-      backslashes).
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="variables"></a><span class="summary-name">variables</span><br />
-      The <code>variables</code> dictionary maps the names of variables 
-      defined for this <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> or <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> to instances of the <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> class.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="vltypes"></a><span class="summary-name">vltypes</span><br />
-      The <code>vltypes</code> dictionary maps the names of variable-length
-      types defined for the <a href="netCDF4.Group-class.html" 
-      class="link">Group</a> or <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> to instances of the <a 
-      href="netCDF4.VLType-class.html" class="link">VLType</a> class.
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__orthogonal_indexing__"></a><span class="summary-name">__orthogonal_indexing__</span>
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="keepweakref"></a><span class="summary-name">keepweakref</span>
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__delattr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__delattr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__delattr__('name') <==> del x.name</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__delattr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__getattribute__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__getattribute__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__getattribute__('name') <==> x.name</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__getattribute__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">filename</span>,
-        <span class="sig-arg">mode</span>=<span class="sig-default">"r"</span>,
-        <span class="sig-arg">clobber</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">diskless</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">persist</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">keepweakref</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">format</span>=<span class="sig-default">'NETCDF4'</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
-        <span class="sig-arg">S</span>,
-        <span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__new__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Returns: a new object with type S, a subtype of T</dt>
-    <dt>Overrides:
-        object.__new__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">x</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__repr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__setattr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.__setattr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__setattr__('name', value) <==> x.name = value</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__setattr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="createCompoundType"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">createCompoundType</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">datatype</span>,
-        <span class="sig-arg">datatype_name</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createCompoundType">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Creates a new compound data type named <code>datatype_name</code> from
-  the numpy dtype object <code>datatype</code>.</p>
-  <dl class="fields">
-  </dl>
-<div class="fields">      <p><strong>Attention:</strong>
-        If the new compound data type contains other compound data types 
-        (i.e. it is a 'nested' compound type, where not all of the elements
-        are homogenous numeric data types), then the 'inner' compound types
-        <b>must</b> be created first.
-        <p>The return value is the <a 
-        href="netCDF4.CompoundType-class.html" 
-        class="link">CompoundType</a> class instance describing the new 
-        datatype.</p>
-      </p>
-</div></td></tr></table>
-</div>
-<a name="createDimension"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">createDimension</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">dimname</span>,
-        <span class="sig-arg">size</span>=<span class="sig-default">None</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createDimension">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Creates a new dimension with the given <code>dimname</code> and 
-  <code>size</code>.</p>
-  <p><code>size</code> must be a positive integer or <code>None</code>, 
-  which stands for "unlimited" (default is <code>None</code>). 
-  Specifying a size of 0 also results in an unlimited dimension. The return
-  value is the <a href="netCDF4.Dimension-class.html" 
-  class="link">Dimension</a> class instance describing the new dimension.  
-  To determine the current maximum size of the dimension, use the 
-  <code>len</code> function on the <a href="netCDF4.Dimension-class.html" 
-  class="link">Dimension</a> instance. To determine if a dimension is 
-  'unlimited', use the <code>isunlimited()</code> method of the <a 
-  href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-  instance.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="createGroup"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">createGroup</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">groupname</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createGroup">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Creates a new <a href="netCDF4.Group-class.html" 
-  class="link">Group</a> with the given <code>groupname</code>.</p>
-  <p>The return value is a <a href="netCDF4.Group-class.html" 
-  class="link">Group</a> class instance describing the new group.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="createVLType"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">createVLType</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">datatype</span>,
-        <span class="sig-arg">datatype_name</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createVLType">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Creates a new VLEN data type named <code>datatype_name</code> from a 
-  numpy dtype object <code>datatype</code>.</p>
-  <p>The return value is the <a href="netCDF4.VLType-class.html" 
-  class="link">VLType</a> class instance describing the new datatype.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="createVariable"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">createVariable</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">varname</span>,
-        <span class="sig-arg">datatype</span>,
-        <span class="sig-arg">dimensions</span>=<span class="sig-default">()</span>,
-        <span class="sig-arg">zlib</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">complevel</span>=<span class="sig-default">4</span>,
-        <span class="sig-arg">shuffle</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">fletcher32</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">contiguous</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">chunksizes</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">endian</span>=<span class="sig-default">'native'</span>,
-        <span class="sig-arg">least_significant_digit</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">fill_value</span>=<span class="sig-default">None</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.createVariable">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Creates a new variable with the given <code>varname</code>, 
-  <code>datatype</code>, and <code>dimensions</code>. If dimensions are not
-  given, the variable is assumed to be a scalar.</p>
-  <p>The <code>datatype</code> can be a numpy datatype object, or a string 
-  that describes a numpy dtype object (like the <code>dtype.str</code> 
-  attribue of a numpy array). Supported specifiers include: <code>'S1' or 
-  'c' (NC_CHAR), 'i1' or 'b' or 'B' (NC_BYTE), 'u1' (NC_UBYTE), 'i2' or 'h'
-  or 's' (NC_SHORT), 'u2' (NC_USHORT), 'i4' or 'i' or 'l' (NC_INT), 'u4' 
-  (NC_UINT), 'i8' (NC_INT64), 'u8' (NC_UINT64), 'f4' or 'f' (NC_FLOAT), 
-  'f8' or 'd' (NC_DOUBLE)</code>. <code>datatype</code> can also be a <a 
-  href="netCDF4.CompoundType-class.html" class="link">CompoundType</a> 
-  instance (for a structured, or compound array), a <a 
-  href="netCDF4.VLType-class.html" class="link">VLType</a> instance (for a 
-  variable-length array), or the python <code>str</code> builtin (for a 
-  variable-length string array). Numpy string and unicode datatypes with 
-  length greater than one are aliases for <code>str</code>.</p>
-  <p>Data from netCDF variables is presented to python as numpy arrays with
-  the corresponding data type.</p>
-  <p><code>dimensions</code> must be a tuple containing dimension names 
-  (strings) that have been defined previously using 
-  <code>createDimension</code>. The default value is an empty tuple, which 
-  means the variable is a scalar.</p>
-  <p>If the optional keyword <code>zlib</code> is <code>True</code>, the 
-  data will be compressed in the netCDF file using gzip compression 
-  (default <code>False</code>).</p>
-  <p>The optional keyword <code>complevel</code> is an integer between 1 
-  and 9 describing the level of compression desired (default 4). Ignored if
-  <code>zlib=False</code>.</p>
-  <p>If the optional keyword <code>shuffle</code> is <code>True</code>, the
-  HDF5 shuffle filter will be applied before compressing the data (default 
-  <code>True</code>).  This significantly improves compression. Default is 
-  <code>True</code>. Ignored if <code>zlib=False</code>.</p>
-  <p>If the optional keyword <code>fletcher32</code> is <code>True</code>, 
-  the Fletcher32 HDF5 checksum algorithm is activated to detect errors. 
-  Default <code>False</code>.</p>
-  <p>If the optional keyword <code>contiguous</code> is <code>True</code>, 
-  the variable data is stored contiguously on disk.  Default 
-  <code>False</code>. Setting to <code>True</code> for a variable with an 
-  unlimited dimension will trigger an error.</p>
-  <p>The optional keyword <code>chunksizes</code> can be used to manually 
-  specify the HDF5 chunksizes for each dimension of the variable. A 
-  detailed discussion of HDF chunking and I/O performance is available <a 
-  href="http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html" 
-  target="_top">here</a>. Basically, you want the chunk size for each 
-  dimension to match as closely as possible the size of the data block that
-  users will read from the file.  <code>chunksizes</code> cannot be set if 
-  <code>contiguous=True</code>.</p>
-  <p>The optional keyword <code>endian</code> can be used to control 
-  whether the data is stored in little or big endian format on disk. 
-  Possible values are <code>little, big</code> or <code>native</code> 
-  (default). The library will automatically handle endian conversions when 
-  the data is read, but if the data is always going to be read on a 
-  computer with the opposite format as the one used to create the file, 
-  there may be some performance advantage to be gained by setting the 
-  endian-ness.</p>
-  <p>The <code>zlib, complevel, shuffle, fletcher32, contiguous, 
-  chunksizes</code> and <code>endian</code> keywords are silently ignored 
-  for netCDF 3 files that do not use HDF5.</p>
-  <p>The optional keyword <code>fill_value</code> can be used to override 
-  the default netCDF <code>_FillValue</code> (the value that the variable 
-  gets filled with before any data is written to it, defaults given in 
-  netCDF4.default_fillvals). If fill_value is set to <code>False</code>, 
-  then the variable is not pre-filled.</p>
-  <p>If the optional keyword parameter <code>least_significant_digit</code>
-  is specified, variable data will be truncated (quantized). In conjunction
-  with <code>zlib=True</code> this produces 'lossy', but significantly more
-  efficient compression. For example, if 
-  <code>least_significant_digit=1</code>, data will be quantized using 
-  <code>numpy.around(scale*data)/scale</code>, where scale = 2**bits, and 
-  bits is determined so that a precision of 0.1 is retained (in this case 
-  bits=4). From <a 
-  href="http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml" 
-  target="_top">http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml</a>:
-  "least_significant_digit -- power of ten of the smallest decimal 
-  place in unpacked data that is a reliable value." Default is 
-  <code>None</code>, or no quantization, or 'lossless' compression.</p>
-  <p>When creating variables in a <code>NETCDF4</code> or 
-  <code>NETCDF4_CLASSIC</code> formatted file, HDF5 creates something 
-  called a 'chunk cache' for each variable.  The default size of the chunk 
-  cache may be large enough to completely fill available memory when 
-  creating thousands of variables.  The optional keyword 
-  <code>chunk_cache</code> allows you to reduce (or increase) the size of 
-  the default chunk cache when creating a variable.  The setting only 
-  persists as long as the Dataset is open - you can use the 
-  set_var_chunk_cache method to change it the next time the Dataset is 
-  opened. Warning - messing with this parameter can seriously degrade 
-  performance.</p>
-  <p>The return value is the <a href="netCDF4.Variable-class.html" 
-  class="link">Variable</a> class instance describing the new variable.</p>
-  <p>A list of names corresponding to netCDF variable attributes can be 
-  obtained with the <a href="netCDF4.Variable-class.html" 
-  class="link">Variable</a> method <code>ncattrs()</code>. A dictionary 
-  containing all the netCDF attribute name/value pairs is provided by the 
-  <code>__dict__</code> attribute of a <a 
-  href="netCDF4.Variable-class.html" class="link">Variable</a> 
-  instance.</p>
-  <p><a href="netCDF4.Variable-class.html" class="link">Variable</a> 
-  instances behave much like array objects. Data can be assigned to or 
-  retrieved from a variable with indexing and slicing operations on the <a 
-  href="netCDF4.Variable-class.html" class="link">Variable</a> instance. A 
-  <a href="netCDF4.Variable-class.html" class="link">Variable</a> instance 
-  has six Dataset standard attributes: <code>dimensions, dtype, shape, 
-  ndim, name</code> and <code>least_significant_digit</code>. Application 
-  programs should never modify these attributes. The 
-  <code>dimensions</code> attribute is a tuple containing the names of the 
-  dimensions associated with this variable. The <code>dtype</code> 
-  attribute is a string describing the variable's data type (<code>i4, f8, 
-  S1,</code> etc). The <code>shape</code> attribute is a tuple describing 
-  the current sizes of all the variable's dimensions. The <code>name</code>
-  attribute is a string containing the name of the Variable instance. The 
-  <code>least_significant_digit</code> attributes describes the power of 
-  ten of the smallest decimal place in the data the contains a reliable 
-  value.  assigned to the <a href="netCDF4.Variable-class.html" 
-  class="link">Variable</a> instance. If <code>None</code>, the data is not
-  truncated. The <code>ndim</code> attribute is the number of variable 
-  dimensions.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="delncattr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">delncattr</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.delncattr">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>delete a netCDF dataset or group attribute.  Only use if you need to 
-  delete a netCDF attribute with the same name as one of the reserved 
-  python attributes.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="filepath"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">filepath</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.filepath">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Get the file system path (or the opendap URL) which was used to 
-  open/create the Dataset. Requires netcdf >= 4.1.2</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="getncattr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">getncattr</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.getncattr">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>retrievel a netCDF dataset or group attribute.  Only use if you need 
-  to set a netCDF attribute with the same name as one of the reserved 
-  python attributes.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_auto_mask"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_auto_mask</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">True_or_False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_auto_mask">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Call <a href="netCDF4.Dataset-class.html#set_auto_mask" 
-  class="link">set_auto_mask</a> for all variables contained in this <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-  href="netCDF4.Group-class.html" class="link">Group</a>, as well as for 
-  all variables in all its subgroups.</p>
-  <p><b>Parameters</b>:</p>
-  <p><b><code>True_or_False</code></b> - Boolean determining if automatic 
-  conversion to masked arrays shall be applied for all variables.</p>
-  <p><b>Notes</b>:</p>
-  <p>Calling this function only affects existing variables. Variables 
-  created after calling this function will follow the default 
-  behaviour.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_auto_maskandscale"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_auto_maskandscale</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">True_or_False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_auto_maskandscale">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Call <a href="netCDF4.Dataset-class.html#set_auto_maskandscale" 
-  class="link">set_auto_maskandscale</a> for all variables contained in 
-  this <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-  href="netCDF4.Group-class.html" class="link">Group</a>, as well as for 
-  all variables in all its subgroups.</p>
-  <p><b>Parameters</b>:</p>
-  <p><b><code>True_or_False</code></b> - Boolean determining if automatic 
-  conversion to masked arrays and variable scaling shall be applied for all
-  variables.</p>
-  <p><b>Notes</b>:</p>
-  <p>Calling this function only affects existing variables. Variables 
-  created after calling this function will follow the default 
-  behaviour.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_auto_scale"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_auto_scale</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">True_or_False</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_auto_scale">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Call <a href="netCDF4.Dataset-class.html#set_auto_scale" 
-  class="link">set_auto_scale</a> for all variables contained in this <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-  href="netCDF4.Group-class.html" class="link">Group</a>, as well as for 
-  all variables in all its subgroups.</p>
-  <p><b>Parameters</b>:</p>
-  <p><b><code>True_or_False</code></b> - Boolean determining if automatic 
-  variable scaling shall be applied for all variables.</p>
-  <p><b>Notes</b>:</p>
-  <p>Calling this function only affects existing variables. Variables 
-  created after calling this function will follow the default 
-  behaviour.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_fill_off"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_fill_off</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_fill_off">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Sets the fill mode for a <a href="netCDF4.Dataset-class.html" 
-  class="link">Dataset</a> open for writing to <code>off</code>.</p>
-  <p>This will prevent the data from being pre-filled with fill values, 
-  which may result in some performance improvements. However, you must then
-  make sure the data is actually written before being read.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_fill_on"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_fill_on</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.set_fill_on">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Sets the fill mode for a <a href="netCDF4.Dataset-class.html" 
-  class="link">Dataset</a> open for writing to <code>on</code>.</p>
-  <p>This causes data to be pre-filled with fill values. The fill values 
-  can be controlled by the variable's <code>_Fill_Value</code> attribute, 
-  but is usually sufficient to the use the netCDF default 
-  <code>_Fill_Value</code> (defined separately for each variable type). The
-  default behavior of the netCDF library correspongs to 
-  <code>set_fill_on</code>.  Data which are equal to the 
-  <code>_Fill_Value</code> indicate that the variable was created, but 
-  never written to.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setncattr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setncattr</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.setncattr">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>set a netCDF dataset or group attribute using name,value pair.  Only 
-  use if you need to set a netCDF attribute with the same name as one of 
-  the reserved python attributes.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setncatts"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setncatts</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">attdict</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dataset.setncatts">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>set a bunch of netCDF dataset or group attributes at once using a 
-  python dictionary. This may be faster when setting a lot of attributes 
-  for a NETCDF3 formatted file, since nc_redef/nc_enddef is not called in 
-  between setting each attribute</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
-<a name="section-InstanceVariableDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variable Details</span></td>
-</tr>
-</table>
-<a name="disk_format"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">disk_format</h3>
-  The <code>disk_format</code> attribute describes the underlying file 
-  format, one of <code>NETCDF3</code>, <code>HDF5</code>, 
-  <code>HDF4</code>, <code>PNETCDF</code>, <code>DAP2</code>, 
-  <code>DAP4</code> or <code>UNDEFINED</code>. Only available if using 
-  netcdf C library version >= 4.3.1, otherwise will always return 
-  <code>UNDEFINED</code>.
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="parent"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">parent</h3>
-  The <code>parent</code> attribute is a reference to the parent <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> instance. 
-  <code>None</code> for a the root group or <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> instance
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="path"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">path</h3>
-  The <code>path</code> attribute shows the location of the <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> in the <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> in a unix 
-  directory format (the names of groups in the hierarchy separated by 
-  backslashes). A <a href="netCDF4.Dataset-class.html" 
-  class="link">Dataset</a> instance is the root group, so the path is 
-  simply <code>'/'</code>.
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.Dimension-class.html b/docs/netCDF4.Dimension-class.html
deleted file mode 100644
index 3b7590e..0000000
--- a/docs/netCDF4.Dimension-class.html
+++ /dev/null
@@ -1,394 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.Dimension</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class Dimension
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Dimension</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#Dimension">source code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">Dimension</strong>
-</pre>
-
-<hr />
-<p>Dimension(self, group, name, size=None)</p>
-  <p>A netCDF <a href="netCDF4.Dimension-class.html" 
-  class="link">Dimension</a> is used to describe the coordinates of a <a 
-  href="netCDF4.Variable-class.html" class="link">Variable</a>.</p>
-  <p><a href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-  instances should be created using the <a 
-  href="netCDF4.Dataset-class.html#createDimension" 
-  class="link">createDimension</a> method of a <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> or <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> instance, not 
-  using this class directly.</p>
-  <p><b>Parameters:</b></p>
-  <p><b><code>group</code></b> - <a href="netCDF4.Group-class.html" 
-  class="link">Group</a> instance to associate with dimension.</p>
-  <p><b><code>name</code></b>  - Name of the dimension.</p>
-  <p><b>Keywords:</b></p>
-  <p><b><code>size</code></b>  - Size of the dimension. <code>None</code> 
-  or 0 means unlimited. (Default <code>None</code>).</p>
-  <p><b>Returns:</b></p>
-  <p>a <a href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-  instance.  All further operations on the netCDF Dimension are accomplised
-  via <a href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-  instance methods.</p>
-  <p>The current maximum size of a <a href="netCDF4.Dimension-class.html" 
-  class="link">Dimension</a> instance can be obtained by calling the python
-  <code>len</code> function on the <a href="netCDF4.Dimension-class.html" 
-  class="link">Dimension</a> instance. The <code>isunlimited()</code> 
-  method of a <a href="netCDF4.Dimension-class.html" 
-  class="link">Dimension</a> instance can be used to determine if the 
-  dimension is unlimited</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dimension-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">group</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__len__"></a><span class="summary-sig-name">__len__</span>(<span class="summary-sig-arg">x</span>)</span><br />
-      len(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__len__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">a new object with type S, a subtype of T</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dimension-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
-        <span class="summary-sig-arg">S</span>,
-        <span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__new__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Dimension-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">x</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__repr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__unicode__"></a><span class="summary-sig-name">__unicode__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__unicode__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="group"></a><span class="summary-sig-name">group</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      return the group that this <a href="netCDF4.Dimension-class.html" 
-      class="link">Dimension</a> is a member of.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dimension.group">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="isunlimited"></a><span class="summary-sig-name">isunlimited</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      returns <code>True</code> if the <a 
-      href="netCDF4.Dimension-class.html" class="link">Dimension</a> 
-      instance is unlimited, <code>False</code> otherwise.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Dimension.isunlimited">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="name"></a><span class="summary-name">name</span><br />
-      string name of Dimension instance
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">group</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">size</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
-        <span class="sig-arg">S</span>,
-        <span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__new__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Returns: a new object with type S, a subtype of T</dt>
-    <dt>Overrides:
-        object.__new__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">x</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Dimension.__repr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.Group-class.html b/docs/netCDF4.Group-class.html
deleted file mode 100644
index 55bef05..0000000
--- a/docs/netCDF4.Group-class.html
+++ /dev/null
@@ -1,387 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.Group</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class Group
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Group</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#Group">source code</a></span></p>
-<pre class="base-tree">
-object --+    
-         |    
-   <a href="netCDF4.Dataset-class.html">Dataset</a> --+
-             |
-            <strong class="uidshort">Group</strong>
-</pre>
-
-<hr />
-<p>Group(self, parent, name)</p>
-  <p>Groups define a hierarchical namespace within a netCDF file. They are 
-  analagous to directories in a unix filesystem. Each <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> behaves like a <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> within a 
-  Dataset, and can contain it's own variables, dimensions and attributes 
-  (and other Groups).</p>
-  <p><a href="netCDF4.Group-class.html" class="link">Group</a> instances 
-  should be created using the <a 
-  href="netCDF4.Dataset-class.html#createGroup" 
-  class="link">createGroup</a> method of a <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> instance, or 
-  another <a href="netCDF4.Group-class.html" class="link">Group</a> 
-  instance, not using this class directly.</p>
-  <p><b>Parameters:</b></p>
-  <p><b><code>parent</code></b> - <a href="netCDF4.Group-class.html" 
-  class="link">Group</a> instance for the parent group.  If being created 
-  in the root group, use a <a href="netCDF4.Dataset-class.html" 
-  class="link">Dataset</a> instance.</p>
-  <p><b><code>name</code></b> - Name of the group.</p>
-  <p><b>Returns:</b></p>
-  <p>a <a href="netCDF4.Group-class.html" class="link">Group</a> instance.
-  All further operations on the netCDF Group are accomplished via <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> instance 
-  methods.</p>
-  <p><a href="netCDF4.Group-class.html" class="link">Group</a> inherits 
-  from <a href="netCDF4.Dataset-class.html" class="link">Dataset</a>, so 
-  all the <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> 
-  class methods and variables are available to a <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> instance (except 
-  the <code>close</code> method).</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Group-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">parent</span>,
-        <span class="summary-sig-arg">name</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Group.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">a new object with type S, a subtype of T</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Group-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
-        <span class="summary-sig-arg">S</span>,
-        <span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Group.__new__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Group-class.html#close" class="summary-sig-name">close</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      overrides <a href="netCDF4.Dataset-class.html" 
-      class="link">Dataset</a> close method which does not apply to <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> instances, 
-      raises IOError.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Group.close">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="netCDF4.Dataset-class.html">Dataset</a></code></b>:
-      <code><a href="netCDF4.Dataset-class.html#__delattr__">__delattr__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__enter__">__enter__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__exit__">__exit__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__getattr__">__getattr__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__getattribute__">__getattribute__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__repr__">__repr__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__setattr__">__setattr__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__unicode__">__unicode__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createCompoundType">createCompoundType</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createDimension">createDimension</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createGroup">createGroup</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createVLType">createVLType</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createVariable">createVariable</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#delncattr">delncattr</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#filepath">filepath</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#getncattr">getncattr</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#ncattrs">ncattrs</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameAttribute">renameAttribute</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameDimension">renameDimension</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameGroup">renameGroup</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameVariable">renameVariable</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_auto_mask">set_auto_mask</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_auto_maskandscale">set_auto_maskandscale</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_auto_scale">set_auto_scale</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_fill_off">set_fill_off</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_fill_on">set_fill_on</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#setncattr">setncattr</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#setncatts">setncatts</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#sync">sync</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE VARIABLES ==================== -->
-<a name="section-InstanceVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="netCDF4.Dataset-class.html">Dataset</a></code></b>:
-      <code><a href="netCDF4.Dataset-class.html#cmptypes">cmptypes</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#data_model">data_model</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#dimensions">dimensions</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#disk_format">disk_format</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#file_format">file_format</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#groups">groups</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#parent">parent</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#path">path</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#variables">variables</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#vltypes">vltypes</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="name"></a><span class="summary-name">name</span><br />
-      string name of Group instance
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="netCDF4.Dataset-class.html">Dataset</a></code></b>:
-      <code><a href="netCDF4.Dataset-class.html#__orthogonal_indexing__">__orthogonal_indexing__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#keepweakref">keepweakref</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">parent</span>,
-        <span class="sig-arg">name</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Group.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
-        <span class="sig-arg">S</span>,
-        <span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Group.__new__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Returns: a new object with type S, a subtype of T</dt>
-    <dt>Overrides:
-        object.__new__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="close"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">close</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Group.close">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>overrides <a href="netCDF4.Dataset-class.html" 
-  class="link">Dataset</a> close method which does not apply to <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> instances, raises 
-  IOError.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="netCDF4.Dataset-class.html#close">Dataset.close</a>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.MFDataset-class.html b/docs/netCDF4.MFDataset-class.html
deleted file mode 100644
index 03b8962..0000000
--- a/docs/netCDF4.MFDataset-class.html
+++ /dev/null
@@ -1,528 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.MFDataset</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class MFDataset
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class MFDataset</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#MFDataset">source code</a></span></p>
-<pre class="base-tree">
-object --+    
-         |    
-   <a href="netCDF4.Dataset-class.html">Dataset</a> --+
-             |
-            <strong class="uidshort">MFDataset</strong>
-</pre>
-
-<hr />
-<p>MFDataset(self, files, check=False, aggdim=None, exclude=[])</p>
-  <p>Class for reading multi-file netCDF Datasets, making variables 
-  spanning multiple files appear as if they were in one file.</p>
-  <p>Datasets must be in <code>NETCDF4_CLASSIC, NETCDF3_CLASSIC or 
-  NETCDF3_64BIT</code> format (<code>NETCDF4</code> Datasets won't 
-  work).</p>
-  <p>Adapted from <a href="http://pysclint.sourceforge.net/pycdf" 
-  target="_top">pycdf</a> by Andre Gosselin.</p>
-  <p>Example usage:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> numpy
-<span class="py-prompt">>>> </span><span class="py-comment"># create a series of netCDF files with a variable sharing</span>
-<span class="py-prompt">>>> </span><span class="py-comment"># the same unlimited dimension.</span>
-<span class="py-prompt">>>> </span><span class="py-keyword">for</span> nfile <span class="py-keyword">in</span> range(10):
-<span class="py-prompt">>>> </span>    f = Dataset(<span class="py-string">'mftest'</span>+repr(nfile)+<span class="py-string">'.nc'</span>,<span class="py-string">'w'</span>)
-<span class="py-prompt">>>> </span>    f.createDimension(<span class="py-string">'x'</span>,None)
-<span class="py-prompt">>>> </span>    x = f.createVariable(<span class="py-string">'x'</span>,<span class="py-string">'i'</span>,(<span class="py-string">'x'</span>,))
-<span class="py-prompt">>>> </span>    x[0:10] = numpy.arange(nfile*10,10*(nfile+1))
-<span class="py-prompt">>>> </span>    f.close()
-<span class="py-prompt">>>> </span><span class="py-comment"># now read all those files in at once, in one Dataset.</span>
-<span class="py-prompt">>>> </span>f = MFDataset(<span class="py-string">'mftest*nc'</span>)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> f.variables[<span class="py-string">'x'</span>][:]
-<span class="py-output">[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24</span>
-<span class="py-output"> 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</span>
-<span class="py-output"> 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</span>
-<span class="py-output"> 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]</span></pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFDataset-class.html#__getattribute__" class="summary-sig-name">__getattribute__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__getattribute__('name') <==> x.name</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__getattribute__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFDataset-class.html#__init__" class="summary-sig-name">__init__</a>()</span><br />
-      Open a Dataset spanning multiple files, making it look as if it was a
-      single file.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFDataset-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__repr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFDataset-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      override base class attribute creation</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__setattr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFDataset-class.html#close" class="summary-sig-name">close</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      Close the Dataset.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.close">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFDataset-class.html#ncattrs" class="summary-sig-name">ncattrs</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      return netCDF global attribute names for this <a 
-      href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-      href="netCDF4.Group-class.html" class="link">Group</a> in a list.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.ncattrs">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="netCDF4.Dataset-class.html">Dataset</a></code></b>:
-      <code><a href="netCDF4.Dataset-class.html#__delattr__">__delattr__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__enter__">__enter__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__exit__">__exit__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__getattr__">__getattr__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__new__">__new__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#__unicode__">__unicode__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createCompoundType">createCompoundType</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createDimension">createDimension</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createGroup">createGroup</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createVLType">createVLType</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#createVariable">createVariable</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#delncattr">delncattr</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#filepath">filepath</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#getncattr">getncattr</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameAttribute">renameAttribute</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameDimension">renameDimension</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameGroup">renameGroup</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#renameVariable">renameVariable</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_auto_mask">set_auto_mask</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_auto_maskandscale">set_auto_maskandscale</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_auto_scale">set_auto_scale</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_fill_off">set_fill_off</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#set_fill_on">set_fill_on</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#setncattr">setncattr</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#setncatts">setncatts</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#sync">sync</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__qualname__"></a><span class="summary-name">__qualname__</span> = <code title="'MFDataset'"><code class="variable-quote">'</code><code class="variable-string">MFDataset</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE VARIABLES ==================== -->
-<a name="section-InstanceVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variables</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="netCDF4.Dataset-class.html">Dataset</a></code></b>:
-      <code><a href="netCDF4.Dataset-class.html#cmptypes">cmptypes</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#data_model">data_model</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#dimensions">dimensions</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#disk_format">disk_format</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#file_format">file_format</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#groups">groups</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#parent">parent</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#path">path</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#variables">variables</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#vltypes">vltypes</a></code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="netCDF4.Dataset-class.html">Dataset</a></code></b>:
-      <code><a href="netCDF4.Dataset-class.html#__orthogonal_indexing__">__orthogonal_indexing__</a></code>,
-      <code><a href="netCDF4.Dataset-class.html#keepweakref">keepweakref</a></code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__getattribute__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__getattribute__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__getattribute__('name') <==> x.name</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__getattribute__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>()</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Open a Dataset spanning multiple files, making it look as if it was a 
-  single file. Variables in the list of files that share the same dimension
-  (specified with the keyword <code>aggdim</code>) are aggregated. If 
-  <code>aggdim</code> is not specified, the unlimited is aggregated.  
-  Currently, <code>aggdim</code> must be the leftmost (slowest varying) 
-  dimension of each of the variables to be aggregated.</p>
-  <p>Adapted from <a href="http://pysclint.sourceforge.net/pycdf" 
-  target="_top">pycdf</a> by Andre Gosselin.</p>
-  <p>Usage:</p>
-  <p>nc = MFDataset(files, check=False, aggdim=None, exclude=[])</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>files</code></strong> - either a sequence of netCDF files or a string with a wildcard 
-          (converted to a sorted list of files using glob)  The first file 
-          in the list will become the "master" file, defining all
-          the variables with an aggregation dimension which may span 
-          subsequent files. Attribute access returns attributes only from 
-          "master" file. The files are always opened in read-only
-          mode.</li>
-        <li><strong class="pname"><code>check</code></strong> - True if you want to do consistency checking to ensure the correct
-          variables structure for all of the netcdf files.  Checking makes 
-          the initialization of the MFDataset instance much slower. Default
-          is False.</li>
-        <li><strong class="pname"><code>aggdim</code></strong> - The name of the dimension to aggregate over (must be the leftmost
-          dimension of each of the variables to be aggregated). If None 
-          (default), aggregate over the unlimited dimension.</li>
-        <li><strong class="pname"><code>exclude</code></strong> - A list of variable names to exclude from aggregation. Default is 
-          an empty list.</li>
-    </ul></dd>
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">...</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__repr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__setattr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.__setattr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>override base class attribute creation</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__setattr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="close"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">close</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.close">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Close the Dataset.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="netCDF4.Dataset-class.html#close">Dataset.close</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="ncattrs"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">ncattrs</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFDataset.ncattrs">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>return netCDF global attribute names for this <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> in a list.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        <a href="netCDF4.Dataset-class.html#ncattrs">Dataset.ncattrs</a>
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.MFTime-class.html b/docs/netCDF4.MFTime-class.html
deleted file mode 100644
index 131ce36..0000000
--- a/docs/netCDF4.MFTime-class.html
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.MFTime</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class MFTime
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class MFTime</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#MFTime">source code</a></span></p>
-<pre class="base-tree">
-object --+    
-         |    
- _Variable --+
-             |
-            <strong class="uidshort">MFTime</strong>
-</pre>
-
-<hr />
-<p>MFTime(self, time, units=None)</p>
-  <p>Class providing an interface to a MFDataset time Variable by imposing 
-  a unique common time unit to all files.</p>
-  <p>Example usage:</p>
-<pre class="py-doctest">
-<span class="py-prompt">>>> </span><span class="py-keyword">import</span> numpy
-<span class="py-prompt">>>> </span>f1 = Dataset(<span class="py-string">'mftest_1.nc'</span>,<span class="py-string">'w'</span>, format=<span class="py-string">'NETCDF4_CLASSIC'</span>)
-<span class="py-prompt">>>> </span>f2 = Dataset(<span class="py-string">'mftest_2.nc'</span>,<span class="py-string">'w'</span>, format=<span class="py-string">'NETCDF4_CLASSIC'</span>)
-<span class="py-prompt">>>> </span>f1.createDimension(<span class="py-string">'time'</span>,None)
-<span class="py-prompt">>>> </span>f2.createDimension(<span class="py-string">'time'</span>,None)
-<span class="py-prompt">>>> </span>t1 = f1.createVariable(<span class="py-string">'time'</span>,<span class="py-string">'i'</span>,(<span class="py-string">'time'</span>,))
-<span class="py-prompt">>>> </span>t2 = f2.createVariable(<span class="py-string">'time'</span>,<span class="py-string">'i'</span>,(<span class="py-string">'time'</span>,))
-<span class="py-prompt">>>> </span>t1.units = <span class="py-string">'days since 2000-01-01'</span>
-<span class="py-prompt">>>> </span>t2.units = <span class="py-string">'days since 2000-02-01'</span>
-<span class="py-prompt">>>> </span>t1.calendar = <span class="py-string">'standard'</span>
-<span class="py-prompt">>>> </span>t2.calendar = <span class="py-string">'standard'</span>
-<span class="py-prompt">>>> </span>t1[:] = numpy.arange(31)
-<span class="py-prompt">>>> </span>t2[:] = numpy.arange(30)
-<span class="py-prompt">>>> </span>f1.close()
-<span class="py-prompt">>>> </span>f2.close()
-<span class="py-prompt">>>> </span><span class="py-comment"># Read the two files in at once, in one Dataset.</span>
-<span class="py-prompt">>>> </span>f = MFDataset(<span class="py-string">'mftest*nc'</span>)
-<span class="py-prompt">>>> </span>t = f.variables[<span class="py-string">'time'</span>]
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> t.units
-<span class="py-output">days since 2000-01-01</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-keyword">print</span> t[32] <span class="py-comment"># The value written in the file, inconsistent with the MF time units.</span>
-<span class="py-output">1</span>
-<span class="py-output"></span><span class="py-prompt">>>> </span>T = MFTime(t)
-<span class="py-prompt">>>> </span><span class="py-keyword">print</span> T[32]
-<span class="py-output">32</span></pre>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFTime-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      Get records from a concatenated set of variables.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFTime.__getitem__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.MFTime-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">time</span>,
-        <span class="summary-sig-arg">units</span>=<span class="summary-sig-default">None</span>)</span><br />
-      Create a time Variable with units consistent across a multifile 
-      dataset.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#MFTime.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>_Variable</code></b>:
-      <code>__getattr__</code>,
-      <code>__len__</code>,
-      <code>__repr__</code>,
-      <code>ncattrs</code>,
-      <code>set_auto_maskandscale</code>,
-      <code>typecode</code>
-      </p>
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__new__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS VARIABLES ==================== -->
-<a name="section-ClassVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Class Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="__qualname__"></a><span class="summary-name">__qualname__</span> = <code title="'MFTime'"><code class="variable-quote">'</code><code class="variable-string">MFTime</code><code class="variable-quote">'</code></code>
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__getitem__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">...</span>)</span>
-    <br /><em class="fname">(Indexing operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFTime.__getitem__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Get records from a concatenated set of variables.</p>
-  <dl class="fields">
-    <dt>Overrides:
-        _Variable.__getitem__
-        <dd><em class="note">(inherited documentation)</em></dd>
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">time</span>,
-        <span class="sig-arg">units</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#MFTime.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>Create a time Variable with units consistent across a multifile 
-  dataset.</p>
-  <dl class="fields">
-    <dt>Parameters:</dt>
-    <dd><ul class="nomargin-top">
-        <li><strong class="pname"><code>time</code></strong> - Time variable from a MFDataset.</li>
-        <li><strong class="pname"><code>units</code></strong> - Time units, for example, 'days since 1979-01-01'. If None, use 
-          the units from the master variable.</li>
-    </ul></dd>
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.VLType-class.html b/docs/netCDF4.VLType-class.html
deleted file mode 100644
index aa81b19..0000000
--- a/docs/netCDF4.VLType-class.html
+++ /dev/null
@@ -1,344 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.VLType</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class VLType
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class VLType</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#VLType">source code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">VLType</strong>
-</pre>
-
-<hr />
-<p>A <a href="netCDF4.VLType-class.html" class="link">VLType</a> instance
-  is used to describe a variable length (VLEN) data type.</p>
-  <p>Constructor: <code>VLType(group, datatype, datatype_name)</code></p>
-  <p><a href="netCDF4.VLType-class.html" class="link">VLType</a> instances 
-  should be created using the <a 
-  href="netCDF4.Dataset-class.html#createVLType" 
-  class="link">createVLType</a> method of a Dataset or <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> instance, not 
-  using this class directly.</p>
-  <p><b>Parameters:</b></p>
-  <p><b><code>group</code></b> - <a href="netCDF4.Group-class.html" 
-  class="link">Group</a> instance to associate with the VLEN datatype.</p>
-  <p><b><code>datatype</code></b> - An numpy dtype object describing a the 
-  component type for the variable length array.</p>
-  <p><b><code>datatype_name</code></b> - a Python string containing a 
-  description of the VLEN data type.</p>
-  <p><b>Returns:</b></p>
-  <p>a <a href="netCDF4.VLType-class.html" class="link">VLType</a> 
-  instance, which can be passed to the <code>createVariable</code> method 
-  of a <a href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> instance.</p>
-  <p>The instance variables <code>dtype</code> and <code>name</code> should
-  not be modified by the user.</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.VLType-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#VLType.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">a new object with type S, a subtype of T</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.VLType-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
-        <span class="summary-sig-arg">S</span>,
-        <span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#VLType.__new__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.VLType-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">x</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#VLType.__repr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__unicode__"></a><span class="summary-sig-name">__unicode__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#VLType.__unicode__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__delattr__</code>,
-      <code>__format__</code>,
-      <code>__getattribute__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__setattr__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE VARIABLES ==================== -->
-<a name="section-InstanceVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="dtype"></a><span class="summary-name">dtype</span><br />
-      An object describing the VLEN type.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="name"></a><span class="summary-name">name</span><br />
-      A python string describing the VLEN type.
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#VLType.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
-        <span class="sig-arg">S</span>,
-        <span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#VLType.__new__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Returns: a new object with type S, a subtype of T</dt>
-    <dt>Overrides:
-        object.__new__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">x</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#VLType.__repr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4.Variable-class.html b/docs/netCDF4.Variable-class.html
deleted file mode 100644
index 473eb4c..0000000
--- a/docs/netCDF4.Variable-class.html
+++ /dev/null
@@ -1,1464 +0,0 @@
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>netCDF4.Variable</title>
-  <link rel="stylesheet" href="epydoc.css" type="text/css" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-
-<body bgcolor="white" text="black" link="blue" vlink="#204080"
-      alink="#204080">
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table width="100%" cellpadding="0" cellspacing="0">
-  <tr valign="top">
-    <td width="100%">
-      <span class="breadcrumbs">
-        <a href="netCDF4-module.html">Module netCDF4</a> ::
-        Class Variable
-      </span>
-    </td>
-    <td>
-      <table cellpadding="0" cellspacing="0">
-        <!-- hide/show private -->
-      </table>
-    </td>
-  </tr>
-</table>
-<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class Variable</h1><p class="nomargin-top"><span class="codelink"><a href="netCDF4-pysrc.html#Variable">source code</a></span></p>
-<pre class="base-tree">
-object --+
-         |
-        <strong class="uidshort">Variable</strong>
-</pre>
-
-<hr />
-<p>Variable(self, group, name, datatype, dimensions=(), zlib=False, 
-  complevel=4, shuffle=True, fletcher32=False, contiguous=False, 
-  chunksizes=None, endian='native', 
-  least_significant_digit=None,fill_value=None)</p>
-  <p>A netCDF <a href="netCDF4.Variable-class.html" 
-  class="link">Variable</a> is used to read and write netCDF data.  They 
-  are analagous to numpy array objects.</p>
-  <p><a href="netCDF4.Variable-class.html" class="link">Variable</a> 
-  instances should be created using the <a 
-  href="netCDF4.Dataset-class.html#createVariable" 
-  class="link">createVariable</a> method of a <a 
-  href="netCDF4.Dataset-class.html" class="link">Dataset</a> or <a 
-  href="netCDF4.Group-class.html" class="link">Group</a> instance, not 
-  using this class directly.</p>
-  <p><b>Parameters:</b></p>
-  <p><b><code>group</code></b> - <a href="netCDF4.Group-class.html" 
-  class="link">Group</a> or <a href="netCDF4.Dataset-class.html" 
-  class="link">Dataset</a> instance to associate with variable.</p>
-  <p><b><code>name</code></b>  - Name of the variable.</p>
-  <p><b><code>datatype</code></b> - <a href="netCDF4.Variable-class.html" 
-  class="link">Variable</a> data type. Can be specified by providing a 
-  numpy dtype object, or a string that describes a numpy dtype object. 
-  Supported values, corresponding to <code>str</code> attribute of numpy 
-  dtype objects, include <code>'f4'</code> (32-bit floating point), 
-  <code>'f8'</code> (64-bit floating point), <code>'i4'</code> (32-bit 
-  signed integer), <code>'i2'</code> (16-bit signed integer), 
-  <code>'i8'</code> (64-bit singed integer), <code>'i4'</code> (8-bit 
-  singed integer), <code>'i1'</code> (8-bit signed integer), 
-  <code>'u1'</code> (8-bit unsigned integer), <code>'u2'</code> (16-bit 
-  unsigned integer), <code>'u4'</code> (32-bit unsigned integer), 
-  <code>'u8'</code> (64-bit unsigned integer), or <code>'S1'</code> 
-  (single-character string).  From compatibility with Scientific.IO.NetCDF,
-  the old Numeric single character typecodes can also be used 
-  (<code>'f'</code> instead of <code>'f4'</code>, <code>'d'</code> instead 
-  of <code>'f8'</code>, <code>'h'</code> or <code>'s'</code> instead of 
-  <code>'i2'</code>, <code>'b'</code> or <code>'B'</code> instead of 
-  <code>'i1'</code>, <code>'c'</code> instead of <code>'S1'</code>, and 
-  <code>'i'</code> or <code>'l'</code> instead of <code>'i4'</code>). 
-  <code>datatype</code> can also be a <a 
-  href="netCDF4.CompoundType-class.html" class="link">CompoundType</a> 
-  instance (for a structured, or compound array), a <a 
-  href="netCDF4.VLType-class.html" class="link">VLType</a> instance (for a 
-  variable-length array), or the python <code>str</code> builtin (for a 
-  variable-length string array). Numpy string and unicode datatypes with 
-  length greater than one are aliases for <code>str</code>.</p>
-  <p><b>Keywords:</b></p>
-  <p><b><code>dimensions</code></b> - a tuple containing the variable's 
-  dimension names (defined previously with <code>createDimension</code>). 
-  Default is an empty tuple which means the variable is a scalar (and 
-  therefore has no dimensions).</p>
-  <p><b><code>zlib</code></b> - if <code>True</code>, data assigned to the 
-  <a href="netCDF4.Variable-class.html" class="link">Variable</a> instance 
-  is compressed on disk. Default <code>False</code>.</p>
-  <p><b><code>complevel</code></b> - the level of zlib compression to use 
-  (1 is the fastest, but poorest compression, 9 is the slowest but best 
-  compression). Default 4. Ignored if <code>zlib=False</code>.</p>
-  <p><b><code>shuffle</code></b> - if <code>True</code>, the HDF5 shuffle 
-  filter is applied to improve compression. Default <code>True</code>. 
-  Ignored if <code>zlib=False</code>.</p>
-  <p><b><code>fletcher32</code></b> - if <code>True</code> (default 
-  <code>False</code>), the Fletcher32 checksum algorithm is used for error 
-  detection.</p>
-  <p><b><code>contiguous</code></b> - if <code>True</code> (default 
-  <code>False</code>), the variable data is stored contiguously on disk.  
-  Default <code>False</code>. Setting to <code>True</code> for a variable 
-  with an unlimited dimension will trigger an error.</p>
-  <p><b><code>chunksizes</code></b> - Can be used to specify the HDF5 
-  chunksizes for each dimension of the variable. A detailed discussion of 
-  HDF chunking and I/O performance is available <a 
-  href="http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html" 
-  target="_top">here</a>. Basically, you want the chunk size for each 
-  dimension to match as closely as possible the size of the data block that
-  users will read from the file. <code>chunksizes</code> cannot be set if 
-  <code>contiguous=True</code>.</p>
-  <p><b><code>endian</code></b> - Can be used to control whether the data 
-  is stored in little or big endian format on disk. Possible values are 
-  <code>little, big</code> or <code>native</code> (default). The library 
-  will automatically handle endian conversions when the data is read, but 
-  if the data is always going to be read on a computer with the opposite 
-  format as the one used to create the file, there may be some performance 
-  advantage to be gained by setting the endian-ness. For netCDF 3 files 
-  (that don't use HDF5), only <code>endian='native'</code> is allowed.</p>
-  <p>The <code>zlib, complevel, shuffle, fletcher32, contiguous</code> and 
-  {chunksizes} keywords are silently ignored for netCDF 3 files that do not
-  use HDF5.</p>
-  <p><b><code>least_significant_digit</code></b> - If specified, variable 
-  data will be truncated (quantized). In conjunction with 
-  <code>zlib=True</code> this produces 'lossy', but significantly more 
-  efficient compression. For example, if 
-  <code>least_significant_digit=1</code>, data will be quantized using 
-  around(scale*data)/scale, where scale = 2**bits, and bits is determined 
-  so that a precision of 0.1 is retained (in this case bits=4). Default is 
-  <code>None</code>, or no quantization.</p>
-  <p><b><code>fill_value</code></b> - If specified, the default netCDF 
-  <code>_FillValue</code> (the value that the variable gets filled with 
-  before any data is written to it) is replaced with this value.  If 
-  fill_value is set to <code>False</code>, then the variable is not 
-  pre-filled. The default netCDF fill values can be found in 
-  netCDF4.default_fillvals.</p>
-  <p><b>Returns:</b></p>
-  <p>a <a href="netCDF4.Variable-class.html" class="link">Variable</a> 
-  instance.  All further operations on the netCDF Variable are accomplised 
-  via <a href="netCDF4.Variable-class.html" class="link">Variable</a> 
-  instance methods.</p>
-  <p>A list of attribute names corresponding to netCDF attributes defined 
-  for the variable can be obtained with the <code>ncattrs()</code> method. 
-  These attributes can be created by assigning to an attribute of the <a 
-  href="netCDF4.Variable-class.html" class="link">Variable</a> instance. A 
-  dictionary containing all the netCDF attribute name/value pairs is 
-  provided by the <code>__dict__</code> attribute of a <a 
-  href="netCDF4.Variable-class.html" class="link">Variable</a> 
-  instance.</p>
-  <p>The instance variables <code>dimensions, dtype, ndim, shape</code> and
-  <code>least_significant_digit</code> are read-only (and should not be 
-  modified by the user).</p>
-
-<!-- ==================== INSTANCE METHODS ==================== -->
-<a name="section-InstanceMethods"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Methods</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__array__"></a><span class="summary-sig-name">__array__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__array__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#__delattr__" class="summary-sig-name">__delattr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__delattr__('name') <==> del x.name</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__delattr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__delitem__"></a><span class="summary-sig-name">__delitem__</span>(<span class="summary-sig-arg">x</span>,
-        <span class="summary-sig-arg">y</span>)</span><br />
-      del x[y]</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__delitem__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__getattr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#__getattribute__" class="summary-sig-name">__getattribute__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__getattribute__('name') <==> x.name</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__getattribute__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__getitem__"></a><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-arg">x</span>,
-        <span class="summary-sig-arg">y</span>)</span><br />
-      x[y]</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__getitem__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">group</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">datatype</span>,
-        <span class="summary-sig-arg">dimensions</span>=<span class="summary-sig-default">()</span>,
-        <span class="summary-sig-arg">zlib</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">complevel</span>=<span class="summary-sig-default">4</span>,
-        <span class="summary-sig-arg">shuffle</span>=<span class="summary-sig-default">True</span>,
-        <span class="summary-sig-arg">fletcher32</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">contiguous</span>=<span class="summary-sig-default">False</span>,
-        <span class="summary-sig-arg">chunksizes</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">endian</span>=<span class="summary-sig-default">'native'</span>,
-        <span class="summary-sig-arg">least_significant_digit</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">fill_value</span>=<span class="summary-sig-default">None</span>)</span><br />
-      x.__init__(...) initializes x; see help(type(x)) for signature</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__init__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__len__"></a><span class="summary-sig-name">__len__</span>(<span class="summary-sig-arg">x</span>)</span><br />
-      len(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__len__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type">a new object with type S, a subtype of T</span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
-        <span class="summary-sig-arg">S</span>,
-        <span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__new__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">x</span>)</span><br />
-      repr(x)</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__repr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">...</span>)</span><br />
-      x.__setattr__('name', value) <==> x.name = value</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__setattr__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__setitem__"></a><span class="summary-sig-name">__setitem__</span>(<span class="summary-sig-arg">x</span>,
-        <span class="summary-sig-arg">i</span>,
-        <span class="summary-sig-arg">y</span>)</span><br />
-      x[i]=y</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__setitem__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="__unicode__"></a><span class="summary-sig-name">__unicode__</span>(<span class="summary-sig-arg">...</span>)</span></td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.__unicode__">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#assignValue" class="summary-sig-name">assignValue</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">val</span>)</span><br />
-      assign a value to a scalar variable.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.assignValue">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#chunking" class="summary-sig-name">chunking</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      return variable chunking information.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.chunking">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#delncattr" class="summary-sig-name">delncattr</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      delete a netCDF variable attribute.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.delncattr">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="endian"></a><span class="summary-sig-name">endian</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      return endian-ness (little,big,native) of variable (as stored in HDF5
-      file).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.endian">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="filters"></a><span class="summary-sig-name">filters</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      return dictionary containing HDF5 filter parameters.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.filters">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#getValue" class="summary-sig-name">getValue</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      get the value of a scalar variable.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.getValue">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#get_var_chunk_cache" class="summary-sig-name">get_var_chunk_cache</a>(<span class="summary-sig-arg">self</span>)</span><br />
-      return variable chunk cache information in a tuple 
-      (size,nelems,preemption).</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.get_var_chunk_cache">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#getncattr" class="summary-sig-name">getncattr</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>)</span><br />
-      retrievel a netCDF variable attribute.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.getncattr">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="group"></a><span class="summary-sig-name">group</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      return the group that this <a href="netCDF4.Variable-class.html" 
-      class="link">Variable</a> is a member of.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.group">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="ncattrs"></a><span class="summary-sig-name">ncattrs</span>(<span class="summary-sig-arg">self</span>)</span><br />
-      return netCDF attribute names for this <a 
-      href="netCDF4.Variable-class.html" class="link">Variable</a> in a 
-      list.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.ncattrs">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a name="renameAttribute"></a><span class="summary-sig-name">renameAttribute</span>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">oldname</span>,
-        <span class="summary-sig-arg">newname</span>)</span><br />
-      rename a <a href="netCDF4.Variable-class.html" 
-      class="link">Variable</a> attribute named <code>oldname</code> to 
-      <code>newname</code>.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.renameAttribute">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#set_auto_mask" class="summary-sig-name">set_auto_mask</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">mask</span>)</span><br />
-      turn on or off automatic conversion of variable data to and from 
-      masked arrays .</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_auto_mask">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#set_auto_maskandscale" class="summary-sig-name">set_auto_maskandscale</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">maskandscale</span>)</span><br />
-      turn on or off automatic conversion of variable data to and from 
-      masked arrays and automatic packing/unpacking of variable data using 
-      <code>scale_factor</code> and <code>add_offset</code> attributes.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_auto_maskandscale">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#set_auto_scale" class="summary-sig-name">set_auto_scale</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">scale</span>)</span><br />
-      turn on or off automatic packing/unpacking of variable data using 
-      <code>scale_factor</code> and <code>add_offset</code> attributes.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_auto_scale">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#set_var_chunk_cache" class="summary-sig-name">set_var_chunk_cache</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">nelems</span>=<span class="summary-sig-default">None</span>,
-        <span class="summary-sig-arg">preemption</span>=<span class="summary-sig-default">None</span>)</span><br />
-      change variable chunk cache settings.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_var_chunk_cache">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#setncattr" class="summary-sig-name">setncattr</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">name</span>,
-        <span class="summary-sig-arg">value</span>)</span><br />
-      set a netCDF variable attribute using name,value pair.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.setncattr">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-      <table width="100%" cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td><span class="summary-sig"><a href="netCDF4.Variable-class.html#setncatts" class="summary-sig-name">setncatts</a>(<span class="summary-sig-arg">self</span>,
-        <span class="summary-sig-arg">attdict</span>)</span><br />
-      set a bunch of netCDF variable attributes at once using a python 
-      dictionary.</td>
-          <td align="right" valign="top">
-            <span class="codelink"><a href="netCDF4-pysrc.html#Variable.setncatts">source code</a></span>
-            
-          </td>
-        </tr>
-      </table>
-      
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__format__</code>,
-      <code>__hash__</code>,
-      <code>__reduce__</code>,
-      <code>__reduce_ex__</code>,
-      <code>__sizeof__</code>,
-      <code>__str__</code>,
-      <code>__subclasshook__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== INSTANCE VARIABLES ==================== -->
-<a name="section-InstanceVariables"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variables</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Variable-class.html#__orthogonal_indexing__" class="summary-name">__orthogonal_indexing__</a><br />
-      Always <code>True</code>.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="dimensions"></a><span class="summary-name">dimensions</span><br />
-      A tuple containing the names of the dimensions associated with this 
-      variable.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="dtype"></a><span class="summary-name">dtype</span><br />
-      A numpy dtype object describing the variable's data type.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Variable-class.html#least_significant_digit" class="summary-name">least_significant_digit</a><br />
-      Describes the power of ten of the smallest decimal place in the data 
-      the contains a reliable value.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Variable-class.html#mask" class="summary-name">mask</a><br />
-      if True, data is automatically converted to/from masked arrays when 
-      missing values or fill values are present.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="ndim"></a><span class="summary-name">ndim</span><br />
-      The number of variable dimensions.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a href="netCDF4.Variable-class.html#scale" class="summary-name">scale</a><br />
-      if True, <code>scale_factor</code> and <code>add_offset</code> are 
-      automatically applied.
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="shape"></a><span class="summary-name">shape</span><br />
-      a tuple describing the current size of all the variable's dimensions.
-    </td>
-  </tr>
-</table>
-<!-- ==================== PROPERTIES ==================== -->
-<a name="section-Properties"></a>
-<table class="summary" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Properties</span></td>
-</tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="datatype"></a><span class="summary-name">datatype</span><br />
-      numpy data type (for primitive data types) or VLType/CompoundType 
-      instance (for compound or vlen data types)
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="name"></a><span class="summary-name">name</span><br />
-      string name of Variable instance
-    </td>
-  </tr>
-<tr>
-    <td width="15%" align="right" valign="top" class="summary">
-      <span class="summary-type"> </span>
-    </td><td class="summary">
-        <a name="size"></a><span class="summary-name">size</span><br />
-      Return the number of stored elements.
-    </td>
-  </tr>
-  <tr>
-    <td colspan="2" class="summary">
-    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
-      <code>__class__</code>
-      </p>
-    </td>
-  </tr>
-</table>
-<!-- ==================== METHOD DETAILS ==================== -->
-<a name="section-MethodDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Method Details</span></td>
-</tr>
-</table>
-<a name="__delattr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__delattr__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.__delattr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__delattr__('name') <==> del x.name</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__delattr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__getattribute__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.__getattribute__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__getattribute__('name') <==> x.name</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__getattribute__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__init__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">group</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">datatype</span>,
-        <span class="sig-arg">dimensions</span>=<span class="sig-default">()</span>,
-        <span class="sig-arg">zlib</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">complevel</span>=<span class="sig-default">4</span>,
-        <span class="sig-arg">shuffle</span>=<span class="sig-default">True</span>,
-        <span class="sig-arg">fletcher32</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">contiguous</span>=<span class="sig-default">False</span>,
-        <span class="sig-arg">chunksizes</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">endian</span>=<span class="sig-default">'native'</span>,
-        <span class="sig-arg">least_significant_digit</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">fill_value</span>=<span class="sig-default">None</span>)</span>
-    <br /><em class="fname">(Constructor)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.__init__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__init__(...) initializes x; see help(type(x)) for signature</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__init__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__new__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
-        <span class="sig-arg">S</span>,
-        <span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.__new__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  
-  <dl class="fields">
-    <dt>Returns: a new object with type S, a subtype of T</dt>
-    <dt>Overrides:
-        object.__new__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__repr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">x</span>)</span>
-    <br /><em class="fname">(Representation operator)</em>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.__repr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>repr(x)</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__repr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="__setattr__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">...</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.__setattr__">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>x.__setattr__('name', value) <==> x.name = value</p>
-  <dl class="fields">
-    <dt>Overrides:
-        object.__setattr__
-    </dt>
-  </dl>
-</td></tr></table>
-</div>
-<a name="assignValue"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">assignValue</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">val</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.assignValue">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>assign a value to a scalar variable.  Provided for compatibility with 
-  Scientific.IO.NetCDF, can also be done by assigning to a slice ([:]).</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="chunking"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">chunking</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.chunking">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>return variable chunking information.  If the dataset is defined to be
-  contiguous (and hence there is no chunking) the word 'contiguous' is 
-  returned.  Otherwise, a sequence with the chunksize for each dimension is
-  returned.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="delncattr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">delncattr</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.delncattr">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>delete a netCDF variable attribute.  Only use if you need to delete a 
-  netCDF attribute with the same name as one of the reserved python 
-  attributes.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="getValue"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">getValue</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.getValue">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>get the value of a scalar variable.  Provided for compatibility with 
-  Scientific.IO.NetCDF, can also be done by slicing ([:]).</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="get_var_chunk_cache"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_var_chunk_cache</span>(<span class="sig-arg">self</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.get_var_chunk_cache">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>return variable chunk cache information in a tuple 
-  (size,nelems,preemption). See netcdf C library documentation for 
-  <code>nc_get_var_chunk_cache</code> for details.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="getncattr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">getncattr</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.getncattr">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>retrievel a netCDF variable attribute.  Only use if you need to set a 
-  netCDF attribute with the same name as one of the reserved python 
-  attributes.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_auto_mask"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_auto_mask</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">mask</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_auto_mask">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>turn on or off automatic conversion of variable data to and from 
-  masked arrays .</p>
-  <p>If <code>mask</code> is set to <code>True</code>, when data is read 
-  from a variable it is converted to a masked array if any of the values 
-  are exactly equal to the either the netCDF _FillValue or the value 
-  specified by the missing_value variable attribute. The fill_value of the 
-  masked array is set to the missing_value attribute (if it exists), 
-  otherwise the netCDF _FillValue attribute (which has a default value for 
-  each data type).  When data is written to a variable, the masked array is
-  converted back to a regular numpy array by replacing all the masked 
-  values by the fill_value of the masked array.</p>
-  <p>The default value of <code>mask</code> is <code>True</code> (automatic
-  conversions are performed).</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_auto_maskandscale"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_auto_maskandscale</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">maskandscale</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_auto_maskandscale">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>turn on or off automatic conversion of variable data to and from 
-  masked arrays and automatic packing/unpacking of variable data using 
-  <code>scale_factor</code> and <code>add_offset</code> attributes.</p>
-  <p>If <code>maskandscale</code> is set to <code>True</code>, when data is
-  read from a variable it is converted to a masked array if any of the 
-  values are exactly equal to the either the netCDF _FillValue or the value
-  specified by the missing_value variable attribute. The fill_value of the 
-  masked array is set to the missing_value attribute (if it exists), 
-  otherwise the netCDF _FillValue attribute (which has a default value for 
-  each data type).  When data is written to a variable, the masked array is
-  converted back to a regular numpy array by replacing all the masked 
-  values by the fill_value of the masked array.</p>
-  <p>If <code>maskandscale</code> is set to <code>True</code>, and the 
-  variable has a <code>scale_factor</code> or an <code>add_offset</code> 
-  attribute, then data read from that variable is unpacked using:</p>
-<pre class="literalblock">
-   data = self.scale_factor*data + self.add_offset
-</pre>
-  <p>When data is written to a variable it is packed using:</p>
-<pre class="literalblock">
-   data = (data - self.add_offset)/self.scale_factor
-</pre>
-  <p>If either scale_factor is present, but add_offset is missing, 
-  add_offset is assumed zero.  If add_offset is present, but scale_factor 
-  is missing, scale_factor is assumed to be one. For more information on 
-  how <code>scale_factor</code> and <code>add_offset</code> can be used to 
-  provide simple compression, see <a 
-  href="http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml" 
-  target="_top">http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml</a>.</p>
-  <p>The default value of <code>maskandscale</code> is <code>True</code> 
-  (automatic conversions are performed).</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_auto_scale"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_auto_scale</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">scale</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_auto_scale">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>turn on or off automatic packing/unpacking of variable data using 
-  <code>scale_factor</code> and <code>add_offset</code> attributes.</p>
-  <p>If <code>scale</code> is set to <code>True</code>, and the variable 
-  has a <code>scale_factor</code> or an <code>add_offset</code> attribute, 
-  then data read from that variable is unpacked using:</p>
-<pre class="literalblock">
-   data = self.scale_factor*data + self.add_offset
-</pre>
-  <p>When data is written to a variable it is packed using:</p>
-<pre class="literalblock">
-   data = (data - self.add_offset)/self.scale_factor
-</pre>
-  <p>If either scale_factor is present, but add_offset is missing, 
-  add_offset is assumed zero.  If add_offset is present, but scale_factor 
-  is missing, scale_factor is assumed to be one. For more information on 
-  how <code>scale_factor</code> and <code>add_offset</code> can be used to 
-  provide simple compression, see <a 
-  href="http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml" 
-  target="_top">http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml</a>.</p>
-  <p>The default value of <code>scale</code> is <code>True</code> 
-  (automatic conversions are performed).</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="set_var_chunk_cache"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_var_chunk_cache</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">size</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">nelems</span>=<span class="sig-default">None</span>,
-        <span class="sig-arg">preemption</span>=<span class="sig-default">None</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.set_var_chunk_cache">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>change variable chunk cache settings. See netcdf C library 
-  documentation for <code>nc_set_var_chunk_cache</code> for details.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setncattr"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setncattr</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">name</span>,
-        <span class="sig-arg">value</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.setncattr">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>set a netCDF variable attribute using name,value pair.  Only use if 
-  you need to set a netCDF attribute with the same name as one of the 
-  reserved python attributes.</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="setncatts"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <table width="100%" cellpadding="0" cellspacing="0" border="0">
-  <tr valign="top"><td>
-  <h3 class="epydoc"><span class="sig"><span class="sig-name">setncatts</span>(<span class="sig-arg">self</span>,
-        <span class="sig-arg">attdict</span>)</span>
-  </h3>
-  </td><td align="right" valign="top"
-    ><span class="codelink"><a href="netCDF4-pysrc.html#Variable.setncatts">source code</a></span> 
-    </td>
-  </tr></table>
-  
-  <p>set a bunch of netCDF variable attributes at once using a python 
-  dictionary. This may be faster when setting a lot of attributes for a 
-  NETCDF3 formatted file, since nc_redef/nc_enddef is not called in between
-  setting each attribute</p>
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== INSTANCE VARIABLE DETAILS ==================== -->
-<a name="section-InstanceVariableDetails"></a>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr bgcolor="#70b0f0" class="table-header">
-  <td align="left" colspan="2" class="table-header">
-    <span class="table-header">Instance Variable Details</span></td>
-</tr>
-</table>
-<a name="__orthogonal_indexing__"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">__orthogonal_indexing__</h3>
-  Always <code>True</code>.  Indicates to client code that the object 
-  supports "orthogonal indexing", which means that slices that 
-  are 1d arrays or lists slice along each dimension independently.  This 
-  behavior is similar to Fortran or Matlab, but different than numpy.
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="least_significant_digit"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">least_significant_digit</h3>
-  Describes the power of ten of the smallest decimal place in the data the 
-  contains a reliable value.  Data is truncated to this decimal place when 
-  it is assigned to the <a href="netCDF4.Variable-class.html" 
-  class="link">Variable</a> instance. If <code>None</code>, the data is not
-  truncated.
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="mask"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">mask</h3>
-  if True, data is automatically converted to/from masked arrays when 
-  missing values or fill values are present. Default is <code>True</code>, 
-  can be reset using <a href="netCDF4.Variable-class.html#set_auto_mask" 
-  class="link">set_auto_mask</a> and <a 
-  href="netCDF4.Variable-class.html#set_auto_maskandscale" 
-  class="link">set_auto_maskandscale</a> methods.
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<a name="scale"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
-       cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
-  <h3 class="epydoc">scale</h3>
-  if True, <code>scale_factor</code> and <code>add_offset</code> are 
-  automatically applied. Default is <code>True</code>, can be reset using 
-  <a href="netCDF4.Variable-class.html#set_auto_scale" 
-  class="link">set_auto_scale</a> and <a 
-  href="netCDF4.Variable-class.html#set_auto_maskandscale" 
-  class="link">set_auto_maskandscale</a> methods.
-  <dl class="fields">
-  </dl>
-</td></tr></table>
-</div>
-<br />
-<!-- ==================== NAVIGATION BAR ==================== -->
-<table class="navbar" border="0" width="100%" cellpadding="0"
-       bgcolor="#a0c0ff" cellspacing="0">
-  <tr valign="middle">
-  <!-- Home link -->
-      <th>   <a
-        href="netCDF4-module.html">Home</a>   </th>
-
-  <!-- Tree link -->
-      <th>   <a
-        href="module-tree.html">Trees</a>   </th>
-
-  <!-- Index link -->
-      <th>   <a
-        href="identifier-index.html">Indices</a>   </th>
-
-  <!-- Help link -->
-      <th>   <a
-        href="help.html">Help</a>   </th>
-
-      <th class="navbar" width="100%"></th>
-  </tr>
-</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%%">
-  <tr>
-    <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun May  3 20:05:24 2015
-    </td>
-    <td align="right" class="footer">
-      <a target="mainFrame" href="http://epydoc.sourceforge.net"
-        >http://epydoc.sourceforge.net</a>
-    </td>
-  </tr>
-</table>
-
-<script type="text/javascript">
-  <!--
-  // Private objects are initially displayed (because if
-  // javascript is turned off then we want them to be
-  // visible); but by default, we want to hide them.  So hide
-  // them unless we have a cookie that says to show them.
-  checkCookie();
-  // -->
-</script>
-</body>
-</html>
diff --git a/docs/netCDF4/index.html b/docs/netCDF4/index.html
new file mode 100644
index 0000000..782220e
--- /dev/null
+++ b/docs/netCDF4/index.html
@@ -0,0 +1,5584 @@
+<!doctype html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
+
+    <title>netCDF4 API documentation</title>
+    <meta name="description" content="Introduction
+============
+
+netcdf4-python is a Python interface to the netCDF C library.  
+
+[netCDF ..." />
+
+  <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300' rel='stylesheet' type='text/css'>
+  
+  <style type="text/css">
+  
+* {
+  box-sizing: border-box;
+}
+/*! normalize.css v1.1.1 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Prevent system color scheme's background color being used in Firefox, IE,
+ *    and Opera.
+ * 2. Prevent system color scheme's text color being used in Firefox, IE, and
+ *    Opera.
+ * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 4. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    background: #fff; /* 1 */
+    color: #000; /* 2 */
+    font-size: 100%; /* 3 */
+    -webkit-text-size-adjust: 100%; /* 4 */
+    -ms-text-size-adjust: 100%; /* 4 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+    quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+    margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+    text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+    *overflow: visible;  /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+  </style>
+
+  <style type="text/css">
+  
+  html, body {
+    margin: 0;
+    padding: 0;
+    height: 100%;
+  }
+  body {
+    background: #fff;
+    font-family: "Source Sans Pro", "Helvetica Neueue", Helvetica, sans;
+    font-weight: 300;
+    font-size: 16px;
+    line-height: 1.6em;
+  }
+  #content {
+    width: 70%;
+    max-width: 850px;
+    float: left;
+    padding: 30px 60px;
+    border-left: 1px solid #ddd;
+  }
+  #sidebar {
+    width: 25%;
+    float: left;
+    padding: 30px;
+    overflow: hidden;
+  }
+  #nav {
+    font-size: 130%;
+    margin: 0 0 15px 0;
+  }
+
+  #top {
+    display: block;
+    position: fixed;
+    bottom: 5px;
+    left: 5px;
+    font-size: .85em;
+    text-transform: uppercase;
+  }
+
+  #footer {
+    font-size: .75em;
+    padding: 5px 30px;
+    border-top: 1px solid #ddd;
+    text-align: right;
+  }
+    #footer p {
+      margin: 0 0 0 30px;
+      display: inline-block;
+    }
+
+  h1, h2, h3, h4, h5 {
+    font-weight: 300;
+  }
+  h1 {
+    font-size: 2.5em;
+    line-height: 1.1em;
+    margin: 0 0 .50em 0;
+  }
+
+  h2 {
+    font-size: 1.75em;
+    margin: 1em 0 .50em 0;
+  }
+
+  h3 {
+    margin: 25px 0 10px 0;
+  }
+
+  h4 {
+    margin: 0;
+    font-size: 105%;
+  }
+
+  a {
+    color: #058;
+    text-decoration: none;
+    transition: color .3s ease-in-out;
+  }
+
+  a:hover {
+    color: #e08524;
+    transition: color .3s ease-in-out;
+  }
+
+  pre, code, .mono, .name {
+    font-family: "Ubuntu Mono", "Cousine", "DejaVu Sans Mono", monospace;
+  }
+
+  .title .name {
+    font-weight: bold;
+  }
+  .section-title {
+    margin-top: 2em;
+  }
+  .ident {
+    color: #900;
+  }
+
+  code {
+    background: #f9f9f9;
+  } 
+
+  pre {
+    background: #fefefe;
+    border: 1px solid #ddd;
+    box-shadow: 2px 2px 0 #f3f3f3;
+    margin: 0 30px;
+    padding: 15px 30px;
+  }
+
+  .codehilite {
+    margin: 0 30px 10px 30px;
+  }
+
+    .codehilite pre {
+      margin: 0;
+    }
+    .codehilite .err { background: #ff3300; color: #fff !important; } 
+
+  table#module-list {
+    font-size: 110%;
+  }
+
+    table#module-list tr td:first-child {
+      padding-right: 10px;
+      white-space: nowrap;
+    }
+
+    table#module-list td {
+      vertical-align: top;
+      padding-bottom: 8px;
+    }
+
+      table#module-list td p {
+        margin: 0 0 7px 0;
+      }
+
+  .def {
+    display: table;
+  }
+
+    .def p {
+      display: table-cell;
+      vertical-align: top;
+      text-align: left;
+    }
+
+    .def p:first-child {
+      white-space: nowrap;
+    }
+
+    .def p:last-child {
+      width: 100%;
+    }
+
+
+  #index {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+  }
+    ul#index .class_name {
+      /* font-size: 110%; */
+      font-weight: bold;
+    }
+    #index ul {
+      margin: 0;
+    }
+
+  .item {
+    margin: 0 0 15px 0;
+  }
+
+    .item .class {
+      margin: 0 0 25px 30px;
+    }
+
+      .item .class ul.class_list {
+        margin: 0 0 20px 0;
+      }
+
+    .item .name {
+      background: #fafafa;
+      margin: 0;
+      font-weight: bold;
+      padding: 5px 10px;
+      border-radius: 3px;
+      display: inline-block;
+      min-width: 40%;
+    }
+      .item .name:hover {
+        background: #f6f6f6;
+      }
+
+    .item .empty_desc {
+      margin: 0 0 5px 0;
+      padding: 0;
+    }
+
+    .item .inheritance {
+      margin: 3px 0 0 30px;
+    }
+
+    .item .inherited {
+      color: #666;
+    }
+
+    .item .desc {
+      padding: 0 8px;
+      margin: 0;
+    }
+
+      .item .desc p {
+        margin: 0 0 10px 0;
+      }
+
+    .source_cont {
+      margin: 0;
+      padding: 0;
+    }
+
+    .source_link a {
+      background: #ffc300;
+      font-weight: 400;
+      font-size: .75em;
+      text-transform: uppercase;
+      color: #fff;
+      text-shadow: 1px 1px 0 #f4b700;
+      
+      padding: 3px 8px;
+      border-radius: 2px;
+      transition: background .3s ease-in-out;
+    }
+      .source_link a:hover {
+        background: #FF7200;
+        text-shadow: none;
+        transition: background .3s ease-in-out;
+      }
+
+    .source {
+      display: none;
+      max-height: 600px;
+      overflow-y: scroll;
+      margin-bottom: 15px;
+    }
+
+      .source .codehilite {
+        margin: 0;
+      }
+
+  .desc h1, .desc h2, .desc h3 {
+    font-size: 100% !important;
+  }
+  .clear {
+    clear: both;
+  }
+
+  @media all and (max-width: 950px) {
+    #sidebar {
+      width: 35%;
+    }
+    #content {
+      width: 65%;
+    }
+  }
+  @media all and (max-width: 650px) {
+    #top {
+      display: none;
+    }
+    #sidebar {
+      float: none;
+      width: auto;
+    }
+    #content {
+      float: none;
+      width: auto;
+      padding: 30px;
+    }
+
+    #index ul {
+      padding: 0;
+      margin-bottom: 15px;
+    }
+    #index ul li {
+      display: inline-block;
+      margin-right: 30px;
+    }
+    #footer {
+      text-align: left;
+    }
+    #footer p {
+      display: block;
+      margin: inherit;
+    }
+  }
+
+  /*****************************/
+
+  </style>
+
+  <style type="text/css">
+  .codehilite .hll { background-color: #ffffcc }
+.codehilite  { background: #f8f8f8; }
+.codehilite .c { color: #408080; font-style: italic } /* Comment */
+.codehilite .err { border: 1px solid #FF0000 } /* Error */
+.codehilite .k { color: #008000; font-weight: bold } /* Keyword */
+.codehilite .o { color: #666666 } /* Operator */
+.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */
+.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */
+.codehilite .gd { color: #A00000 } /* Generic.Deleted */
+.codehilite .ge { font-style: italic } /* Generic.Emph */
+.codehilite .gr { color: #FF0000 } /* Generic.Error */
+.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.codehilite .gi { color: #00A000 } /* Generic.Inserted */
+.codehilite .go { color: #888888 } /* Generic.Output */
+.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.codehilite .gs { font-weight: bold } /* Generic.Strong */
+.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.codehilite .gt { color: #0044DD } /* Generic.Traceback */
+.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.codehilite .kp { color: #008000 } /* Keyword.Pseudo */
+.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.codehilite .kt { color: #B00040 } /* Keyword.Type */
+.codehilite .m { color: #666666 } /* Literal.Number */
+.codehilite .s { color: #BA2121 } /* Literal.String */
+.codehilite .na { color: #7D9029 } /* Name.Attribute */
+.codehilite .nb { color: #008000 } /* Name.Builtin */
+.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.codehilite .no { color: #880000 } /* Name.Constant */
+.codehilite .nd { color: #AA22FF } /* Name.Decorator */
+.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.codehilite .nf { color: #0000FF } /* Name.Function */
+.codehilite .nl { color: #A0A000 } /* Name.Label */
+.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.codehilite .nv { color: #19177C } /* Name.Variable */
+.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
+.codehilite .mb { color: #666666 } /* Literal.Number.Bin */
+.codehilite .mf { color: #666666 } /* Literal.Number.Float */
+.codehilite .mh { color: #666666 } /* Literal.Number.Hex */
+.codehilite .mi { color: #666666 } /* Literal.Number.Integer */
+.codehilite .mo { color: #666666 } /* Literal.Number.Oct */
+.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
+.codehilite .sc { color: #BA2121 } /* Literal.String.Char */
+.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
+.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.codehilite .sx { color: #008000 } /* Literal.String.Other */
+.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */
+.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
+.codehilite .ss { color: #19177C } /* Literal.String.Symbol */
+.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.codehilite .vc { color: #19177C } /* Name.Variable.Class */
+.codehilite .vg { color: #19177C } /* Name.Variable.Global */
+.codehilite .vi { color: #19177C } /* Name.Variable.Instance */
+.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
+  </style>
+
+  <style type="text/css">
+  
+/* ==========================================================================
+   EXAMPLE Media Queries for Responsive Design.
+   These examples override the primary ('mobile first') styles.
+   Modify as content requires.
+   ========================================================================== */
+
+ at media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+ at media print,
+       (-o-min-device-pixel-ratio: 5/4),
+       (-webkit-min-device-pixel-ratio: 1.25),
+       (min-resolution: 120dpi) {
+    /* Style adjustments for high resolution devices */
+}
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+
+ at media print {
+    * {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: h5bp.com/s */
+        box-shadow: none !important;
+        text-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links for images, or javascript/internal links
+     */
+
+    .ir a:after,
+    a[href^="javascript:"]:after,
+    a[href^="#"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    thead {
+        display: table-header-group; /* h5bp.com/t */
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    @page {
+        margin: 0.5cm;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}
+
+  </style>
+
+  <script type="text/javascript">
+  function toggle(id, $link) {
+    $node = document.getElementById(id);
+    if (!$node)
+    return;
+    if (!$node.style.display || $node.style.display == 'none') {
+    $node.style.display = 'block';
+    $link.innerHTML = 'Hide source ≢';
+    } else {
+    $node.style.display = 'none';
+    $link.innerHTML = 'Show source ≡';
+    }
+  }
+  </script>
+</head>
+<body>
+<a href="#" id="top">Top</a>
+
+<div id="container">
+    
+  
+  <div id="sidebar">
+    <h1>Index</h1>
+    <ul id="index">
+
+    <li class="set"><h3><a href="#header-functions">Functions</a></h3>
+      
+  <ul>
+    <li class="mono"><a href="#netCDF4.chartostring">chartostring</a></li>
+    <li class="mono"><a href="#netCDF4.date2index">date2index</a></li>
+    <li class="mono"><a href="#netCDF4.date2num">date2num</a></li>
+    <li class="mono"><a href="#netCDF4.getlibversion">getlibversion</a></li>
+    <li class="mono"><a href="#netCDF4.num2date">num2date</a></li>
+    <li class="mono"><a href="#netCDF4.stringtoarr">stringtoarr</a></li>
+    <li class="mono"><a href="#netCDF4.stringtochar">stringtochar</a></li>
+  </ul>
+
+    </li>
+
+    <li class="set"><h3><a href="#header-classes">Classes</a></h3>
+      <ul>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.CompoundType">CompoundType</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.CompoundType.__init__">__init__</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.Dataset">Dataset</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.Dataset.__init__">__init__</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.close">close</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.createCompoundType">createCompoundType</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.createDimension">createDimension</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.createGroup">createGroup</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.createVLType">createVLType</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.createVariable">createVariable</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.delncattr">delncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.filepath">filepath</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.getncattr">getncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.ncattrs">ncattrs</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.renameAttribute">renameAttribute</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.renameDimension">renameDimension</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.renameGroup">renameGroup</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.renameVariable">renameVariable</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.set_auto_mask">set_auto_mask</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.set_auto_maskandscale">set_auto_maskandscale</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.set_auto_scale">set_auto_scale</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.set_fill_off">set_fill_off</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.set_fill_on">set_fill_on</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.setncattr">setncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.setncatts">setncatts</a></li>
+    <li class="mono"><a href="#netCDF4.Dataset.sync">sync</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.Dimension">Dimension</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.Dimension.__init__">__init__</a></li>
+    <li class="mono"><a href="#netCDF4.Dimension.group">group</a></li>
+    <li class="mono"><a href="#netCDF4.Dimension.isunlimited">isunlimited</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.Group">Group</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.Group.__init__">__init__</a></li>
+    <li class="mono"><a href="#netCDF4.Group.close">close</a></li>
+    <li class="mono"><a href="#netCDF4.Group.createCompoundType">createCompoundType</a></li>
+    <li class="mono"><a href="#netCDF4.Group.createDimension">createDimension</a></li>
+    <li class="mono"><a href="#netCDF4.Group.createGroup">createGroup</a></li>
+    <li class="mono"><a href="#netCDF4.Group.createVLType">createVLType</a></li>
+    <li class="mono"><a href="#netCDF4.Group.createVariable">createVariable</a></li>
+    <li class="mono"><a href="#netCDF4.Group.delncattr">delncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Group.filepath">filepath</a></li>
+    <li class="mono"><a href="#netCDF4.Group.getncattr">getncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Group.ncattrs">ncattrs</a></li>
+    <li class="mono"><a href="#netCDF4.Group.renameAttribute">renameAttribute</a></li>
+    <li class="mono"><a href="#netCDF4.Group.renameDimension">renameDimension</a></li>
+    <li class="mono"><a href="#netCDF4.Group.renameGroup">renameGroup</a></li>
+    <li class="mono"><a href="#netCDF4.Group.renameVariable">renameVariable</a></li>
+    <li class="mono"><a href="#netCDF4.Group.set_auto_mask">set_auto_mask</a></li>
+    <li class="mono"><a href="#netCDF4.Group.set_auto_maskandscale">set_auto_maskandscale</a></li>
+    <li class="mono"><a href="#netCDF4.Group.set_auto_scale">set_auto_scale</a></li>
+    <li class="mono"><a href="#netCDF4.Group.set_fill_off">set_fill_off</a></li>
+    <li class="mono"><a href="#netCDF4.Group.set_fill_on">set_fill_on</a></li>
+    <li class="mono"><a href="#netCDF4.Group.setncattr">setncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Group.setncatts">setncatts</a></li>
+    <li class="mono"><a href="#netCDF4.Group.sync">sync</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.MFDataset">MFDataset</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.MFDataset.createCompoundType">createCompoundType</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.createDimension">createDimension</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.createGroup">createGroup</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.createVLType">createVLType</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.createVariable">createVariable</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.delncattr">delncattr</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.filepath">filepath</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.getncattr">getncattr</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.renameAttribute">renameAttribute</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.renameDimension">renameDimension</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.renameGroup">renameGroup</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.renameVariable">renameVariable</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.set_auto_mask">set_auto_mask</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.set_auto_maskandscale">set_auto_maskandscale</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.set_auto_scale">set_auto_scale</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.set_fill_off">set_fill_off</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.set_fill_on">set_fill_on</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.setncattr">setncattr</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.setncatts">setncatts</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.sync">sync</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.__init__">__init__</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.close">close</a></li>
+    <li class="mono"><a href="#netCDF4.MFDataset.ncattrs">ncattrs</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.MFTime">MFTime</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.MFTime.__init__">__init__</a></li>
+    <li class="mono"><a href="#netCDF4.MFTime.ncattrs">ncattrs</a></li>
+    <li class="mono"><a href="#netCDF4.MFTime.set_auto_maskandscale">set_auto_maskandscale</a></li>
+    <li class="mono"><a href="#netCDF4.MFTime.typecode">typecode</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.VLType">VLType</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.VLType.__init__">__init__</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#netCDF4.Variable">Variable</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#netCDF4.Variable.__init__">__init__</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.assignValue">assignValue</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.chunking">chunking</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.delncattr">delncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.endian">endian</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.filters">filters</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.getValue">getValue</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.get_var_chunk_cache">get_var_chunk_cache</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.getncattr">getncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.group">group</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.ncattrs">ncattrs</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.renameAttribute">renameAttribute</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.set_auto_mask">set_auto_mask</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.set_auto_maskandscale">set_auto_maskandscale</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.set_auto_scale">set_auto_scale</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.set_var_chunk_cache">set_var_chunk_cache</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.setncattr">setncattr</a></li>
+    <li class="mono"><a href="#netCDF4.Variable.setncatts">setncatts</a></li>
+  </ul>
+
+        </li>
+      </ul>
+    </li>
+
+    </ul>
+  </div>
+
+    <article id="content">
+      
+  
+
+  
+
+
+  <header id="section-intro">
+  <h1 class="title"><span class="name">netCDF4</span> module</h1>
+  <h1>Introduction</h1>
+<p>netcdf4-python is a Python interface to the netCDF C library.  </p>
+<p><a href="http://www.unidata.ucar.edu/software/netcdf/netcdf-4">netCDF version 4</a> has many features
+not found in earlier versions of the library and is implemented on top of
+<a href="http://www.hdfgroup.org/HDF5">HDF5</a>. This module can read and write
+files in both the new netCDF 4 and the old netCDF 3 format, and can create
+files that are readable by HDF5 clients. The API modelled after
+<a href="http://dirac.cnrs-orleans.fr/plone/software/scientificpython/">Scientific.IO.NetCDF</a>,
+and should be familiar to users of that module.</p>
+<p>Most new features of netCDF 4 are implemented, such as multiple
+unlimited dimensions, groups and zlib data compression.  All the new
+numeric data types (such as 64 bit and unsigned integer types) are
+implemented. Compound (struct) and variable length (vlen) data types are supported,
+but the enum and opaque data types are not. Mixtures of compound and vlen
+data types (compound types containing vlens, and vlens containing compound
+types) are not supported.</p>
+<h1>Download</h1>
+<ul>
+<li>Latest bleeding-edge code from the 
+   <a href="http://github.com/Unidata/netcdf4-python">github repository</a>.</li>
+<li>Latest <a href="https://pypi.python.org/pypi/netCDF4">releases</a>
+   (source code and windows installers).</li>
+</ul>
+<h1>Requires</h1>
+<ul>
+<li>Python 2.5 or later (python 3 works too).</li>
+<li><a href="http://numpy.scipy.org">numpy array module</a>, version 1.7.0 or later.</li>
+<li><a href="http://cython.org">Cython</a>, version 0.19 or later, is optional - if it is installed setup.py will
+   use it to recompile the Cython source code into C, using conditional compilation
+   to enable features in the netCDF API that have been added since version 4.1.1.  If
+   Cython is not installed, these features (such as the ability to rename Group objects)
+   will be disabled to preserve backward compatibility with older versions of the netCDF
+   library.</li>
+<li>For python < 2.7, the <a href="http://python.org/pypi/ordereddict">ordereddict module</a>.</li>
+<li>The HDF5 C library version 1.8.4-patch1 or higher (1.8.8 or higher
+ recommended) from <a href="ftp://ftp.hdfgroup.org/HDF5/current/src"></a>.
+ Be sure to build with <code>--enable-hl --enable-shared</code>.</li>
+<li><a href="http://curl.haxx.se/libcurl">Libcurl</a>, if you want
+ <a href="http://opendap.org">OPeNDAP</a> support.</li>
+<li><a href="http://www.hdfgroup.org/products/hdf4">HDF4</a>, if you want
+ to be able to read HDF4 "Scientific Dataset" (SD) files.</li>
+<li>The netCDF-4 C library from 
+ <a href="ftp://ftp.unidata.ucar.edu/pub/netcdf">ftp://ftp.unidata.ucar.edu/pub/netcdf</a>.
+ Version 4.1.1 or higher is required (4.2 or higher recommended).
+ Be sure to build with <code>--enable-netcdf-4 --enable-shared</code>, and set
+ <code>CPPFLAGS="-I $HDF5_DIR/include"</code> and <code>LDFLAGS="-L $HDF5_DIR/lib"</code>,
+ where <code>$HDF5_DIR</code> is the directory where HDF5 was installed.
+ If you want <a href="http://opendap.org">OPeNDAP</a> support, add <code>--enable-dap</code>.
+ If you want HDF4 SD support, add <code>--enable-hdf4</code> and add
+ the location of the HDF4 headers and library to <code>$CPPFLAGS</code> and <code>$LDFLAGS</code>.</li>
+</ul>
+<h1>Install</h1>
+<ul>
+<li>install the requisite python modules and C libraries (see above). It's
+ easiest if all the C libs are built as shared libraries.</li>
+<li>By default, the utility <code>nc-config</code>, installed with netcdf 4.1.2 or higher,
+ will be run used to determine where all the dependencies live.</li>
+<li>If <code>nc-config</code> is not in your default <code>$PATH</code>, rename the
+ file <code>setup.cfg.template</code> to <code>setup.cfg</code>, then edit
+ in a text editor (follow the instructions in the comments).
+ In addition to specifying the path to <code>nc-config</code>,
+ you can manually set the paths to all the libraries and their include files
+ (in case <code>nc-config</code> does not do the right thing).</li>
+<li>run <code>python setup.py build</code>, then <code>python setup.py install</code> (as root if
+ necessary).</li>
+<li>run the tests in the 'test' directory by running <code>python run_all.py</code>.</li>
+</ul>
+<h1>Tutorial</h1>
+<ol>
+<li><a href="#section1">Creating/Opening/Closing a netCDF file.</a></li>
+<li><a href="#section2">Groups in a netCDF file.</a></li>
+<li><a href="#section3">Dimensions in a netCDF file.</a></li>
+<li><a href="#section4">Variables in a netCDF file.</a></li>
+<li><a href="#section5">Attributes in a netCDF file.</a></li>
+<li><a href="#section6">Writing data to and retrieving data from a netCDF variable.</a></li>
+<li><a href="#section7">Dealing with time coordinates.</a></li>
+<li><a href="#section8">Reading data from a multi-file netCDF dataset.</a></li>
+<li><a href="#section9">Efficient compression of netCDF variables.</a></li>
+<li><a href="#section10">Beyond homogenous arrays of a fixed type - compound data types.</a></li>
+<li><a href="#section11">Variable-length (vlen) data types.</a></li>
+</ol>
+<h2><div id='section1'>1) Creating/Opening/Closing a netCDF file.</h2>
+<p>To create a netCDF file from python, you simply call the <a href="#netCDF4.Dataset"><code>Dataset</code></a>
+constructor. This is also the method used to open an existing netCDF
+file.  If the file is open for write access (<code>mode='w', 'r+'</code> or <code>'a'</code>), you may
+write any type of data including new dimensions, groups, variables and
+attributes.  netCDF files come in several flavors (<code>NETCDF3_CLASSIC,
+NETCDF3_64BIT, NETCDF4_CLASSIC</code>, and <code>NETCDF4</code>). The first two flavors
+are supported by version 3 of the netCDF library. <code>NETCDF4_CLASSIC</code>
+files use the version 4 disk format (HDF5), but do not use any features
+not found in the version 3 API. They can be read by netCDF 3 clients
+only if they have been relinked against the netCDF 4 library. They can
+also be read by HDF5 clients. <code>NETCDF4</code> files use the version 4 disk
+format (HDF5) and use the new features of the version 4 API.  The
+<code>netCDF4</code> module can read and write files in any of these formats. When
+creating a new file, the format may be specified using the <code>format</code>
+keyword in the <code>Dataset</code> constructor.  The default format is
+<code>NETCDF4</code>. To see how a given file is formatted, you can examine the
+<code>data_model</code> attribute.  Closing the netCDF file is
+accomplished via the <a href="#netCDF4.Dataset.close"><code>close</code></a> method of the <a href="#netCDF4.Dataset"><code>Dataset</code></a>
+instance.</p>
+<p>Here's an example:</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="kn">from</span> <span class="nn">netCDF4</span> <span class="kn">import</span> <span class="n">Dataset</span>
+<span class="o">>>></span> <span class="n">rootgrp</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"test.nc"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="s">"NETCDF4"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">data_model</span>
+<span class="n">NETCDF4</span>
+<span class="o">>>></span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+
+<p>Remote <a href="http://opendap.org">OPeNDAP</a>-hosted datasets can be accessed for
+reading over http if a URL is provided to the <a href="#netCDF4.Dataset"><code>Dataset</code></a> constructor instead of a
+filename.  However, this requires that the netCDF library be built with
+OPenDAP support, via the <code>--enable-dap</code> configure option (added in
+version 4.0.1).</p>
+<h2><div id='section2'>2) Groups in a netCDF file.</h2>
+<p>netCDF version 4 added support for organizing data in hierarchical
+groups, which are analagous to directories in a filesystem. Groups serve
+as containers for variables, dimensions and attributes, as well as other
+groups.  A <a href="#netCDF4.Dataset"><code>Dataset</code></a> defines creates a special group, called
+the 'root group', which is similar to the root directory in a unix
+filesystem.  To create <a href="#netCDF4.Group"><code>Group</code></a> instances, use the
+<a href="#netCDF4.Dataset.createGroup"><code>createGroup</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a>
+instance. <a href="#netCDF4.Dataset.createGroup"><code>createGroup</code></a> takes a single argument, a
+python string containing the name of the new group. The new <a href="#netCDF4.Group"><code>Group</code></a>
+instances contained within the root group can be accessed by name using
+the <code>groups</code> dictionary attribute of the <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance.  Only
+<code>NETCDF4</code> formatted files support Groups, if you try to create a Group
+in a netCDF 3 file you will get an error message.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">rootgrp</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"test.nc"</span><span class="p">,</span> <span class="s">"a"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">fcstgrp</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createGroup</span><span class="p">(</span><span class="s">"forecasts"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">analgrp</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createGroup</span><span class="p">(</span><span class="s">"analyses"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">groups</span>
+<span class="n">OrderedDict</span><span class="p">([(</span><span class="s">"forecasts"</span><span class="p">,</span> 
+              <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">_netCDF4</span><span class="o">.</span><span class="n">Group</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b4b7b0</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"analyses"</span><span class="p">,</span> 
+              <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">_netCDF4</span><span class="o">.</span><span class="n">Group</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b4b970</span><span class="o">></span><span class="p">)])</span>
+</pre></div>
+
+
+<p>Groups can exist within groups in a <a href="#netCDF4.Dataset"><code>Dataset</code></a>, just as directories
+exist within directories in a unix filesystem. Each <a href="#netCDF4.Group"><code>Group</code></a> instance
+has a <code>groups</code> attribute dictionary containing all of the group
+instances contained within that group. Each <a href="#netCDF4.Group"><code>Group</code></a> instance also has a
+<code>path</code> attribute that contains a simulated unix directory path to
+that group.  To simplify the creation of nested groups, you can
+use a unix-like path as an argument to <a href="#netCDF4.Dataset.createGroup"><code>createGroup</code></a>.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">fcstgrp1</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createGroup</span><span class="p">(</span><span class="s">"/forecasts/model1"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">fcstgrp2</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createGroup</span><span class="p">(</span><span class="s">"/forecasts/model2"</span><span class="p">)</span>
+</pre></div>
+
+
+<p>If any of the intermediate elements of the path do not exist, they are created,
+just as with the unix command <code>'mkdir -p'</code>. If you try to create a group
+that already exists, no error will be raised, and the existing group will be 
+returned.</p>
+<p>Here's an example that shows how to navigate all the groups in a
+<a href="#netCDF4.Dataset"><code>Dataset</code></a>. The function <code>walktree</code> is a Python generator that is used
+to walk the directory tree. Note that printing the <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a>
+object yields summary information about it's contents.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">def</span> <span class="nf">walktree</span><span class="p">(</span><span class="n">top</span><span class="p">):</span>
+<span class="o">>>></span>     <span class="n">values</span> <span class="o">=</span> <span class="n">top</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">values</span><span class="p">()</span>
+<span class="o">>>></span>     <span class="k">yield</span> <span class="n">values</span>
+<span class="o">>>></span>     <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">top</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
+<span class="o">>>></span>         <span class="k">for</span> <span class="n">children</span> <span class="ow">in</span> <span class="n">walktree</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
+<span class="o">>>></span>             <span class="k">yield</span> <span class="n">children</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span>
+<span class="o">>>></span> <span class="k">for</span> <span class="n">children</span> <span class="ow">in</span> <span class="n">walktree</span><span class="p">(</span><span class="n">rootgrp</span><span class="p">):</span>
+<span class="o">>>></span>      <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">children</span><span class="p">:</span>
+<span class="o">>>></span>          <span class="k">print</span> <span class="n">child</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dataset"</span><span class="o">></span>
+<span class="n">root</span> <span class="n">group</span> <span class="p">(</span><span class="n">NETCDF4</span> <span class="nb">file</span> <span class="n">format</span><span class="p">):</span>
+    <span class="n">dimensions</span><span class="p">:</span>
+    <span class="n">variables</span><span class="p">:</span>
+    <span class="n">groups</span><span class="p">:</span> <span class="n">forecasts</span><span class="p">,</span> <span class="n">analyses</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Group"</span><span class="o">></span>
+<span class="n">group</span> <span class="o">/</span><span class="n">forecasts</span><span class="p">:</span>
+    <span class="n">dimensions</span><span class="p">:</span>
+    <span class="n">variables</span><span class="p">:</span>
+    <span class="n">groups</span><span class="p">:</span> <span class="n">model1</span><span class="p">,</span> <span class="n">model2</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Group"</span><span class="o">></span>
+<span class="n">group</span> <span class="o">/</span><span class="n">analyses</span><span class="p">:</span>
+    <span class="n">dimensions</span><span class="p">:</span>
+    <span class="n">variables</span><span class="p">:</span>
+    <span class="n">groups</span><span class="p">:</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Group"</span><span class="o">></span>
+<span class="n">group</span> <span class="o">/</span><span class="n">forecasts</span><span class="o">/</span><span class="n">model1</span><span class="p">:</span>
+    <span class="n">dimensions</span><span class="p">:</span>
+    <span class="n">variables</span><span class="p">:</span>
+    <span class="n">groups</span><span class="p">:</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Group"</span><span class="o">></span>
+<span class="n">group</span> <span class="o">/</span><span class="n">forecasts</span><span class="o">/</span><span class="n">model2</span><span class="p">:</span>
+    <span class="n">dimensions</span><span class="p">:</span>
+    <span class="n">variables</span><span class="p">:</span>
+    <span class="n">groups</span><span class="p">:</span>
+</pre></div>
+
+
+<h2><div id='section3'>3) Dimensions in a netCDF file.</h2>
+<p>netCDF defines the sizes of all variables in terms of dimensions, so
+before any variables can be created the dimensions they use must be
+created first. A special case, not often used in practice, is that of a
+scalar variable, which has no dimensions. A dimension is created using
+the <a href="#netCDF4.Dataset.createDimension"><code>createDimension</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a>
+or <a href="#netCDF4.Group"><code>Group</code></a> instance. A Python string is used to set the name of the
+dimension, and an integer value is used to set the size. To create an
+unlimited dimension (a dimension that can be appended to), the size
+value is set to <code>None</code> or 0. In this example, there both the <code>time</code> and
+<code>level</code> dimensions are unlimited.  Having more than one unlimited
+dimension is a new netCDF 4 feature, in netCDF 3 files there may be only
+one, and it must be the first (leftmost) dimension of the variable.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">level</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"level"</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">time</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">lat</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"lat"</span><span class="p">,</span> <span class="mi">73</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">lon</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"lon"</span><span class="p">,</span> <span class="mi">144</span><span class="p">)</span>
+</pre></div>
+
+
+<p>All of the <a href="#netCDF4.Dimension"><code>Dimension</code></a> instances are stored in a python dictionary.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">dimensions</span>
+<span class="n">OrderedDict</span><span class="p">([(</span><span class="s">"level"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">_netCDF4</span><span class="o">.</span><span class="n">Dimension</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b48030</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"time"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">_netCDF4</span><span class="o">.</span><span class="n">Dimension</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b481c0</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"lat"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">_netCDF4</span><span class="o">.</span><span class="n">Dimension</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b480f8</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"lon"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">_netCDF4</span><span class="o">.</span><span class="n">Dimension</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b48a08</span><span class="o">></span><span class="p">)])</span>
+</pre></div>
+
+
+<p>Calling the python <code>len</code> function with a <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance returns
+the current size of that dimension.
+The <a href="#netCDF4.Dimension.isunlimited"><code>isunlimited</code></a> method of a <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance
+can be used to determine if the dimensions is unlimited, or appendable.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="nb">len</span><span class="p">(</span><span class="n">lon</span><span class="p">)</span>
+<span class="mi">144</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="nb">len</span><span class="o">.</span><span class="n">is_unlimited</span><span class="p">()</span>
+<span class="bp">False</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">time</span><span class="o">.</span><span class="n">is_unlimited</span><span class="p">()</span>
+<span class="bp">True</span>
+</pre></div>
+
+
+<p>Printing the <a href="#netCDF4.Dimension"><code>Dimension</code></a> object
+provides useful summary info, including the name and length of the dimension,
+and whether it is unlimited.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">for</span> <span class="n">dimobj</span> <span class="ow">in</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">dimensions</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
+<span class="o">>>></span>    <span class="k">print</span> <span class="n">dimobj</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dimension"</span><span class="o">></span> <span class="p">(</span><span class="n">unlimited</span><span class="p">):</span> <span class="n">name</span> <span class="o">=</span> <span class="s">"level"</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dimension"</span><span class="o">></span> <span class="p">(</span><span class="n">unlimited</span><span class="p">):</span> <span class="n">name</span> <span class="o">=</span> <span class="s">"time"</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dimension"</span><span class="o">></span><span class="p">:</span> <span class="n">name</span> <span class="o">=</span> <span class="s">"lat"</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="mi">73</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dimension"</span><span class="o">></span><span class="p">:</span> <span class="n">name</span> <span class="o">=</span> <span class="s">"lon"</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="mi">144</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dimension"</span><span class="o">></span> <span class="p">(</span><span class="n">unlimited</span><span class="p">):</span> <span class="n">name</span> <span class="o">=</span> <span class="s">"time"</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span>
+</pre></div>
+
+
+<p><a href="#netCDF4.Dimension"><code>Dimension</code></a> names can be changed using the
+<code>netCDF4.Datatset.renameDimension</code> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a> instance.</p>
+<h2><div id='section4'>4) Variables in a netCDF file.</h2>
+<p>netCDF variables behave much like python multidimensional array objects
+supplied by the <a href="http://numpy.scipy.org">numpy module</a>. However,
+unlike numpy arrays, netCDF4 variables can be appended to along one or
+more 'unlimited' dimensions. To create a netCDF variable, use the
+<a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a> instance. The <a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> method
+has two mandatory arguments, the variable name (a Python string), and
+the variable datatype. The variable's dimensions are given by a tuple
+containing the dimension names (defined previously with
+<a href="#netCDF4.Dataset.createDimension"><code>createDimension</code></a>). To create a scalar
+variable, simply leave out the dimensions keyword. The variable
+primitive datatypes correspond to the dtype attribute of a numpy array.
+You can specify the datatype as a numpy dtype object, or anything that
+can be converted to a numpy dtype object.  Valid datatype specifiers
+include: <code>'f4'</code> (32-bit floating point), <code>'f8'</code> (64-bit floating
+point), <code>'i4'</code> (32-bit signed integer), <code>'i2'</code> (16-bit signed
+integer), <code>'i8'</code> (64-bit singed integer), <code>'i1'</code> (8-bit signed
+integer), <code>'u1'</code> (8-bit unsigned integer), <code>'u2'</code> (16-bit unsigned
+integer), <code>'u4'</code> (32-bit unsigned integer), <code>'u8'</code> (64-bit unsigned
+integer), or <code>'S1'</code> (single-character string).  The old Numeric
+single-character typecodes (<code>'f'</code>,<code>'d'</code>,<code>'h'</code>,
+<code>'s'</code>,<code>'b'</code>,<code>'B'</code>,<code>'c'</code>,<code>'i'</code>,<code>'l'</code>), corresponding to
+(<code>'f4'</code>,<code>'f8'</code>,<code>'i2'</code>,<code>'i2'</code>,<code>'i1'</code>,<code>'i1'</code>,<code>'S1'</code>,<code>'i4'</code>,<code>'i4'</code>),
+will also work. The unsigned integer types and the 64-bit integer type
+can only be used if the file format is <code>NETCDF4</code>.</p>
+<p>The dimensions themselves are usually also defined as variables, called
+coordinate variables. The <a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a>
+method returns an instance of the <a href="#netCDF4.Variable"><code>Variable</code></a> class whose methods can be
+used later to access and set variable data and attributes.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">times</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"f8"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,))</span>
+<span class="o">>>></span> <span class="n">levels</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"level"</span><span class="p">,</span><span class="s">"i4"</span><span class="p">,(</span><span class="s">"level"</span><span class="p">,))</span>
+<span class="o">>>></span> <span class="n">latitudes</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"latitude"</span><span class="p">,</span><span class="s">"f4"</span><span class="p">,(</span><span class="s">"lat"</span><span class="p">,))</span>
+<span class="o">>>></span> <span class="n">longitudes</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"longitude"</span><span class="p">,</span><span class="s">"f4"</span><span class="p">,(</span><span class="s">"lon"</span><span class="p">,))</span>
+<span class="o">>>></span> <span class="c"># two dimensions unlimited</span>
+<span class="o">>>></span> <span class="n">temp</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"temp"</span><span class="p">,</span><span class="s">"f4"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"level"</span><span class="p">,</span><span class="s">"lat"</spa [...]
+</pre></div>
+
+
+<p>To get summary info on a <a href="#netCDF4.Variable"><code>Variable</code></a> instance in an interactive session, just print it.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="n">temp</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Variable"</span><span class="o">></span>
+<span class="n">float32</span> <span class="n">temp</span><span class="p">(</span><span class="n">time</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">lat</span><span class="p">,</span> <span class="n">lon</span><span class="p">)</span>
+    <span class="n">least_significant_digit</span><span class="p">:</span> <span class="mi">3</span>
+    <span class="n">units</span><span class="p">:</span> <span class="n">K</span>
+<span class="n">unlimited</span> <span class="n">dimensions</span><span class="p">:</span> <span class="n">time</span><span class="p">,</span> <span class="n">level</span>
+<span class="n">current</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">73</span><span class="p">,</span> <span class="mi">144</span><span class="p">)</span>
+</pre></div>
+
+
+<p>You can use a path to create a Variable inside a hierarchy of groups.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">ftemp</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"/forecasts/model1/temp"</span><span class="p">,</span><span class="s">"f4"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"level"</span><span class= [...]
+</pre></div>
+
+
+<p>If the intermediate groups do not yet exist, they will be created.</p>
+<p>You can also query a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance directly to obtain <a href="#netCDF4.Group"><code>Group</code></a> or 
+<a href="#netCDF4.Variable"><code>Variable</code></a> instances using paths.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span><span class="p">[</span><span class="s">"/forecasts/model1"</span><span class="p">]</span> <span class="c"># a Group instance</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Group"</span><span class="o">></span>
+<span class="n">group</span> <span class="o">/</span><span class="n">forecasts</span><span class="o">/</span><span class="n">model1</span><span class="p">:</span>
+    <span class="n">dimensions</span><span class="p">(</span><span class="n">sizes</span><span class="p">):</span>
+    <span class="n">variables</span><span class="p">(</span><span class="n">dimensions</span><span class="p">):</span> <span class="n">float32</span> <span class="n">temp</span><span class="p">(</span><span class="n">time</span><span class="p">,</span><span class="n">level</span><span class="p">,</span><span class="n">lat</span><span class="p">,</span><span class="n">lon</span><span class="p">)</span>
+    <span class="n">groups</span><span class="p">:</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span><span class="p">[</span><span class="s">"/forecasts/model1/temp"</span><span class="p">]</span> <span class="c"># a Variable instance</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Variable"</span><span class="o">></span>
+<span class="n">float32</span> <span class="n">temp</span><span class="p">(</span><span class="n">time</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">lat</span><span class="p">,</span> <span class="n">lon</span><span class="p">)</span>
+<span class="n">path</span> <span class="o">=</span> <span class="o">/</span><span class="n">forecasts</span><span class="o">/</span><span class="n">model1</span>
+<span class="n">unlimited</span> <span class="n">dimensions</span><span class="p">:</span> <span class="n">time</span><span class="p">,</span> <span class="n">level</span>
+<span class="n">current</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">73</span><span class="p">,</span> <span class="mi">144</span><span class="p">)</span>
+<span class="n">filling</span> <span class="n">on</span><span class="p">,</span> <span class="n">default</span> <span class="n">_FillValue</span> <span class="n">of</span> <span class="mf">9.96920996839e+36</span> <span class="n">used</span>
+</pre></div>
+
+
+<p>All of the variables in the <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> are stored in a
+Python dictionary, in the same way as the dimensions:</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">variables</span>
+<span class="n">OrderedDict</span><span class="p">([(</span><span class="s">"time"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">Variable</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b4ba70</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"level"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">Variable</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b4bab0</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"latitude"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">Variable</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b4baf0</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"longitude"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">Variable</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b4bb30</span><span class="o">></span><span class="p">),</span>
+             <span class="p">(</span><span class="s">"temp"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">Variable</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1b4bb70</span><span class="o">></span><span class="p">)])</span>
+</pre></div>
+
+
+<p><a href="#netCDF4.Variable"><code>Variable</code></a> names can be changed using the
+<a href="#netCDF4.Dataset.renameVariable"><code>renameVariable</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a>
+instance.</p>
+<h2><div id='section5'>5) Attributes in a netCDF file.</h2>
+<p>There are two types of attributes in a netCDF file, global and variable.
+Global attributes provide information about a group, or the entire
+dataset, as a whole. <a href="#netCDF4.Variable"><code>Variable</code></a> attributes provide information about
+one of the variables in a group. Global attributes are set by assigning
+values to <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance variables. <a href="#netCDF4.Variable"><code>Variable</code></a>
+attributes are set by assigning values to <a href="#netCDF4.Variable"><code>Variable</code></a> instances
+variables. Attributes can be strings, numbers or sequences. Returning to
+our example,</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="kn">import</span> <span class="nn">time</span>
+<span class="o">>>></span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="s">"bogus example script"</span>
+<span class="o">>>></span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">history</span> <span class="o">=</span> <span class="s">"Created "</span> <span class="o">+</span> <span class="n">time</span><span class="o">.</span><span class="n">ctime</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span>
+<span class="o">>>></span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">source</span> <span class="o">=</span> <span class="s">"netCDF4 python module tutorial"</span>
+<span class="o">>>></span> <span class="n">latitudes</span><span class="o">.</span><span class="n">units</span> <span class="o">=</span> <span class="s">"degrees north"</span>
+<span class="o">>>></span> <span class="n">longitudes</span><span class="o">.</span><span class="n">units</span> <span class="o">=</span> <span class="s">"degrees east"</span>
+<span class="o">>>></span> <span class="n">levels</span><span class="o">.</span><span class="n">units</span> <span class="o">=</span> <span class="s">"hPa"</span>
+<span class="o">>>></span> <span class="n">temp</span><span class="o">.</span><span class="n">units</span> <span class="o">=</span> <span class="s">"K"</span>
+<span class="o">>>></span> <span class="n">times</span><span class="o">.</span><span class="n">units</span> <span class="o">=</span> <span class="s">"hours since 0001-01-01 00:00:00.0"</span>
+<span class="o">>>></span> <span class="n">times</span><span class="o">.</span><span class="n">calendar</span> <span class="o">=</span> <span class="s">"gregorian"</span>
+</pre></div>
+
+
+<p>The <a href="#netCDF4.Dataset.ncattrs"><code>ncattrs</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a>, <a href="#netCDF4.Group"><code>Group</code></a> or
+<a href="#netCDF4.Variable"><code>Variable</code></a> instance can be used to retrieve the names of all the netCDF
+attributes. This method is provided as a convenience, since using the
+built-in <code>dir</code> Python function will return a bunch of private methods
+and attributes that cannot (or should not) be modified by the user.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">ncattrs</span><span class="p">():</span>
+<span class="o">>>></span>     <span class="k">print</span> <span class="s">"Global attr"</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="s">"="</span><span class="p">,</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">rootgrp</span><span class="p">,</span><span class="n">name</span><span class="p">)</span>
+<span class="n">Global</span> <span class="n">attr</span> <span class="n">description</span> <span class="o">=</span> <span class="n">bogus</span> <span class="n">example</span> <span class="n">script</span>
+<span class="n">Global</span> <span class="n">attr</span> <span class="n">history</span> <span class="o">=</span> <span class="n">Created</span> <span class="n">Mon</span> <span class="n">Nov</span>  <span class="mi">7</span> <span class="mf">10.30</span><span class="p">:</span><span class="mi">56</span> <span class="mi">2005</span>
+<span class="n">Global</span> <span class="n">attr</span> <span class="n">source</span> <span class="o">=</span> <span class="n">netCDF4</span> <span class="n">python</span> <span class="n">module</span> <span class="n">tutorial</span>
+</pre></div>
+
+
+<p>The <code>__dict__</code> attribute of a <a href="#netCDF4.Dataset"><code>Dataset</code></a>, <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Variable"><code>Variable</code></a>
+instance provides all the netCDF attribute name/value pairs in a python
+dictionary:</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">__dict__</span>
+<span class="n">OrderedDict</span><span class="p">([(</span><span class="s">u"description"</span><span class="p">,</span> <span class="s">u"bogus example script"</span><span class="p">),</span>
+             <span class="p">(</span><span class="s">u"history"</span><span class="p">,</span> <span class="s">u"Created Thu Mar  3 19:30:33 2011"</span><span class="p">),</span>
+             <span class="p">(</span><span class="s">u"source"</span><span class="p">,</span> <span class="s">u"netCDF4 python module tutorial"</span><span class="p">)])</span>
+</pre></div>
+
+
+<p>Attributes can be deleted from a netCDF <a href="#netCDF4.Dataset"><code>Dataset</code></a>, <a href="#netCDF4.Group"><code>Group</code></a> or
+<a href="#netCDF4.Variable"><code>Variable</code></a> using the python <code>del</code> statement (i.e. <code>del grp.foo</code>
+removes the attribute <code>foo</code> the the group <code>grp</code>).</p>
+<h2><div id='section6'>6) Writing data to and retrieving data from a netCDF variable.</h2>
+<p>Now that you have a netCDF <a href="#netCDF4.Variable"><code>Variable</code></a> instance, how do you put data
+into it? You can just treat it like an array and assign data to a slice.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="kn">import</span> <span class="nn">numpy</span>
+<span class="o">>>></span> <span class="n">lats</span> <span class="o">=</span>  <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="o">-</span><span class="mi">90</span><span class="p">,</span><span class="mi">91</span><span class="p">,</span><span class="mf">2.5</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">lons</span> <span class="o">=</span>  <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="o">-</span><span class="mi">180</span><span class="p">,</span><span class="mi">180</span><span class="p">,</span><span class="mf">2.5</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">latitudes</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">lats</span>
+<span class="o">>>></span> <span class="n">longitudes</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">lons</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"latitudes =</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="n">latitudes</span><span class="p">[:]</span>
+<span class="n">latitudes</span> <span class="o">=</span>
+<span class="p">[</span><span class="o">-</span><span class="mf">90.</span>  <span class="o">-</span><span class="mf">87.5</span> <span class="o">-</span><span class="mf">85.</span>  <span class="o">-</span><span class="mf">82.5</span> <span class="o">-</span><span class="mf">80.</span>  <span class="o">-</span><span class="mf">77.5</span> <span class="o">-</span><span class="mf">75.</span>  <span class="o">-</span><span class="mf">72.5</span> <span class="o">-</span><span class="mf">70. [...]
+ <span class="o">-</span><span class="mf">60.</span>  <span class="o">-</span><span class="mf">57.5</span> <span class="o">-</span><span class="mf">55.</span>  <span class="o">-</span><span class="mf">52.5</span> <span class="o">-</span><span class="mf">50.</span>  <span class="o">-</span><span class="mf">47.5</span> <span class="o">-</span><span class="mf">45.</span>  <span class="o">-</span><span class="mf">42.5</span> <span class="o">-</span><span class="mf">40.</span>  <span class="o [...]
+ <span class="o">-</span><span class="mf">30.</span>  <span class="o">-</span><span class="mf">27.5</span> <span class="o">-</span><span class="mf">25.</span>  <span class="o">-</span><span class="mf">22.5</span> <span class="o">-</span><span class="mf">20.</span>  <span class="o">-</span><span class="mf">17.5</span> <span class="o">-</span><span class="mf">15.</span>  <span class="o">-</span><span class="mf">12.5</span> <span class="o">-</span><span class="mf">10.</span>   <span class=" [...]
+   <span class="mf">0.</span>    <span class="mf">2.5</span>   <span class="mf">5.</span>    <span class="mf">7.5</span>  <span class="mf">10.</span>   <span class="mf">12.5</span>  <span class="mf">15.</span>   <span class="mf">17.5</span>  <span class="mf">20.</span>   <span class="mf">22.5</span>  <span class="mf">25.</span>   <span class="mf">27.5</span>
+  <span class="mf">30.</span>   <span class="mf">32.5</span>  <span class="mf">35.</span>   <span class="mf">37.5</span>  <span class="mf">40.</span>   <span class="mf">42.5</span>  <span class="mf">45.</span>   <span class="mf">47.5</span>  <span class="mf">50.</span>   <span class="mf">52.5</span>  <span class="mf">55.</span>   <span class="mf">57.5</span>
+  <span class="mf">60.</span>   <span class="mf">62.5</span>  <span class="mf">65.</span>   <span class="mf">67.5</span>  <span class="mf">70.</span>   <span class="mf">72.5</span>  <span class="mf">75.</span>   <span class="mf">77.5</span>  <span class="mf">80.</span>   <span class="mf">82.5</span>  <span class="mf">85.</span>   <span class="mf">87.5</span>
+  <span class="mf">90.</span> <span class="p">]</span>
+</pre></div>
+
+
+<p>Unlike NumPy's array objects, netCDF <a href="#netCDF4.Variable"><code>Variable</code></a>
+objects with unlimited dimensions will grow along those dimensions if you
+assign data outside the currently defined range of indices.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="c"># append along two unlimited dimensions by assigning to slice.</span>
+<span class="o">>>></span> <span class="n">nlats</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">rootgrp</span><span class="o">.</span><span class="n">dimensions</span><span class="p">[</span><span class="s">"lat"</span><span class="p">])</span>
+<span class="o">>>></span> <span class="n">nlons</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">rootgrp</span><span class="o">.</span><span class="n">dimensions</span><span class="p">[</span><span class="s">"lon"</span><span class="p">])</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"temp shape before adding data = "</span><span class="p">,</span><span class="n">temp</span><span class="o">.</span><span class="n">shape</span>
+<span class="n">temp</span> <span class="n">shape</span> <span class="n">before</span> <span class="n">adding</span> <span class="n">data</span> <span class="o">=</span>  <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">73</span><span class="p">,</span> <span class="mi">144</span><span class="p">)</span>
+<span class="o">>>></span>
+<span class="o">>>></span> <span class="kn">from</span> <span class="nn">numpy.random</span> <span class="kn">import</span> <span class="n">uniform</span>
+<span class="o">>>></span> <span class="n">temp</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">,</span><span class="mi">0</span><span class="p">:</span><span class="mi">10</span><span class="p">,:,:]</span> <span class="o">=</span> <span class="n">uniform</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> [...]
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"temp shape after adding data = "</span><span class="p">,</span><span class="n">temp</span><span class="o">.</span><span class="n">shape</span>
+<span class="n">temp</span> <span class="n">shape</span> <span class="n">after</span> <span class="n">adding</span> <span class="n">data</span> <span class="o">=</span>  <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">73</span><span class="p">,</span> <span class="mi">144</span><span class="p">)</span>
+<span class="o">>>></span>
+<span class="o">>>></span> <span class="c"># levels have grown, but no values yet assigned.</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"levels shape after adding pressure data = "</span><span class="p">,</span><span class="n">levels</span><span class="o">.</span><span class="n">shape</span>
+<span class="n">levels</span> <span class="n">shape</span> <span class="n">after</span> <span class="n">adding</span> <span class="n">pressure</span> <span class="n">data</span> <span class="o">=</span>  <span class="p">(</span><span class="mi">10</span><span class="p">,)</span>
+</pre></div>
+
+
+<p>Note that the size of the levels variable grows when data is appended
+along the <code>level</code> dimension of the variable <code>temp</code>, even though no
+data has yet been assigned to levels.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="c"># now, assign data to levels dimension variable.</span>
+<span class="o">>>></span> <span class="n">levels</span><span class="p">[:]</span> <span class="o">=</span>  <span class="p">[</span><span class="mf">1000.</span><span class="p">,</span><span class="mf">850.</span><span class="p">,</span><span class="mf">700.</span><span class="p">,</span><span class="mf">500.</span><span class="p">,</span><span class="mf">300.</span><span class="p">,</span><span class="mf">250.</span><span class="p">,</span><span class="mf">200.</span><span cla [...]
+</pre></div>
+
+
+<p>However, that there are some differences between NumPy and netCDF
+variable slicing rules. Slices behave as usual, being specified as a
+<code>start:stop:step</code> triplet. Using a scalar integer index <code>i</code> takes the ith
+element and reduces the rank of the output array by one. Boolean array and
+integer sequence indexing behaves differently for netCDF variables
+than for numpy arrays.  Only 1-d boolean arrays and integer sequences are
+allowed, and these indices work independently along each dimension (similar
+to the way vector subscripts work in fortran).  This means that</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">temp</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span [...]
+</pre></div>
+
+
+<p>returns an array of shape (4,4) when slicing a netCDF variable, but for a
+numpy array it returns an array of shape (4,).
+Similarly, a netCDF variable of shape <code>(2,3,4,5)</code> indexed
+with <code>[0, array([True, False, True]), array([False, True, True, True]), :]</code>
+would return a <code>(2, 3, 5)</code> array. In NumPy, this would raise an error since
+it would be equivalent to <code>[0, [0,1], [1,2,3], :]</code>. When slicing with integer
+sequences, the indices must be sorted in increasing order and contain no duplicates.
+While this behaviour may cause some confusion for those used to NumPy's 'fancy indexing' rules,
+it provides a very powerful way to extract data from multidimensional netCDF
+variables by using logical operations on the dimension arrays to create slices.</p>
+<p>For example,</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">tempdat</span> <span class="o">=</span> <span class="n">temp</span><span class="p">[::</span><span class="mi">2</span><span class="p">,</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">6</span><span class="p">],</span> <span class="n">lats</span><span class="o">></span><span class="mi">0</span><span class="p"> [...]
+</pre></div>
+
+
+<p>will extract time indices 0,2 and 4, pressure levels
+850, 500 and 200 hPa, all Northern Hemisphere latitudes and Eastern
+Hemisphere longitudes, resulting in a numpy array of shape  (3, 3, 36, 71).</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="s">"shape of fancy temp slice = "</span><span class="p">,</span><span class="n">tempdat</span><span class="o">.</span><span class="n">shape</span>
+<span class="n">shape</span> <span class="n">of</span> <span class="n">fancy</span> <span class="n">temp</span> <span class="nb">slice</span> <span class="o">=</span>  <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">71</span><span class="p">)</span>
+</pre></div>
+
+
+<p><strong><em>Special note for scalar variables</em></strong>: To extract data from a scalar variable
+<code>v</code> with no associated dimensions, use <code>np.asarray(v)</code> or <code>v[...]</code>. The result
+will be a numpy scalar array.</p>
+<h2><div id='section7'>7) Dealing with time coordinates.</h2>
+<p>Time coordinate values pose a special challenge to netCDF users.  Most
+metadata standards (such as CF) specify that time should be
+measure relative to a fixed date using a certain calendar, with units
+specified like <code>hours since YY:MM:DD hh-mm-ss</code>.  These units can be
+awkward to deal with, without a utility to convert the values to and
+from calendar dates.  The functione called <a href="#netCDF4.num2date"><code>num2date</code></a> and <a href="#netCDF4.date2num"><code>date2num</code></a> are
+provided with this package to do just that.  Here's an example of how they
+can be used:</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="c"># fill in times.</span>
+<span class="o">>>></span> <span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span>
+<span class="o">>>></span> <span class="kn">from</span> <span class="nn">netCDF4</span> <span class="kn">import</span> <span class="n">num2date</span><span class="p">,</span> <span class="n">date2num</span>
+<span class="o">>>></span> <span class="n">dates</span> <span class="o">=</span> <span class="p">[</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2001</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">n</span><span class="o">*</span><span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span><span class="o">= [...]
+<span class="o">>>></span> <span class="n">times</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">date2num</span><span class="p">(</span><span class="n">dates</span><span class="p">,</span><span class="n">units</span><span class="o">=</span><span class="n">times</span><span class="o">.</span><span class="n">units</span><span class="p">,</span><span class="n">calendar</span><span class="o">=</span><span class="n">times</span><span class="o">.</span><span  [...]
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"time values (in units </span><span class="si">%s</span><span class="s">): "</span> <span class="o">%</span> <span class="n">times</span><span class="o">.</span><span class="n">units</span><span class="o">+</span><span class="s">"</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="n">times</span><span class="p">[:]</span>
+<span class="n">time</span> <span class="n">values</span> <span class="p">(</span><span class="ow">in</span> <span class="n">units</span> <span class="n">hours</span> <span class="n">since</span> <span class="n">January</span> <span class="mi">1</span><span class="p">,</span> <span class="mo">0001</span><span class="p">):</span>
+<span class="p">[</span> <span class="mf">17533056.</span>  <span class="mf">17533068.</span>  <span class="mf">17533080.</span>  <span class="mf">17533092.</span>  <span class="mf">17533104.</span><span class="p">]</span>
+<span class="o">>>></span> <span class="n">dates</span> <span class="o">=</span> <span class="n">num2date</span><span class="p">(</span><span class="n">times</span><span class="p">[:],</span><span class="n">units</span><span class="o">=</span><span class="n">times</span><span class="o">.</span><span class="n">units</span><span class="p">,</span><span class="n">calendar</span><span class="o">=</span><span class="n">times</span><span class="o">.</span><span class="n">calendar</spa [...]
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"dates corresponding to time values:</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="n">dates</span>
+<span class="n">dates</span> <span class="n">corresponding</span> <span class="n">to</span> <span class="n">time</span> <span class="n">values</span><span class="p">:</span>
+<span class="p">[</span><span class="mi">2001</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mo">01</span> <span class="mo">00</span><span class="p">:</span><span class="mo">00</span><span class="p">:</span><span class="mo">00</span> <span class="mi">2001</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mo">01</span> <span class="mi">12</span><span class="p">:</span><span class="mo">00</span><span c [...]
+ <span class="mi">2001</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mo">02</span> <span class="mi">12</span><span class="p">:</span><span class="mo">00</span><span class="p">:</span><span class="mo">00</span> <span class="mi">2001</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mo">03</span> <span class="mo">00</span><span class="p">:</span><span class="mo">00</span><span class="p">:</span><span  [...]
+</pre></div>
+
+
+<p><a href="#netCDF4.num2date"><code>num2date</code></a> converts numeric values of time in the specified <code>units</code>
+and <code>calendar</code> to datetime objects, and <a href="#netCDF4.date2num"><code>date2num</code></a> does the reverse.
+All the calendars currently defined in the
+<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/">CF metadata convention</a> are supported.
+A function called <a href="#netCDF4.date2index"><code>date2index</code></a> is also provided which returns the indices
+of a netCDF time variable corresponding to a sequence of datetime instances.</p>
+<h2><div id='section8'>8) Reading data from a multi-file netCDF dataset.</h2>
+<p>If you want to read data from a variable that spans multiple netCDF files,
+you can use the <a href="#netCDF4.MFDataset"><code>MFDataset</code></a> class to read the data as if it were
+contained in a single file. Instead of using a single filename to create
+a <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance, create a <a href="#netCDF4.MFDataset"><code>MFDataset</code></a> instance with either a list
+of filenames, or a string with a wildcard (which is then converted to
+a sorted list of files using the python glob module).
+Variables in the list of files that share the same unlimited
+dimension are aggregated together, and can be sliced across multiple
+files.  To illustrate this, let's first create a bunch of netCDF files with
+the same variable (with the same unlimited dimension).  The files
+must in be in <code>NETCDF3_64BIT</code>, <code>NETCDF3_CLASSIC</code> or
+<code>NETCDF4_CLASSIC format</code> (<code>NETCDF4</code> formatted multi-file
+datasets are not supported).</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">for</span> <span class="n">nf</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span>
+<span class="o">>>></span>     <span class="n">f</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"mftest</span><span class="si">%s</span><span class="s">.nc"</span> <span class="o">%</span> <span class="n">nf</span><span class="p">,</span><span class="s">"w"</span><span class="p">)</span>
+<span class="o">>>></span>     <span class="n">f</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"x"</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
+<span class="o">>>></span>     <span class="n">x</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"x"</span><span class="p">,</span><span class="s">"i"</span><span class="p">,(</span><span class="s">"x"</span><span class="p">,))</span>
+<span class="o">>>></span>     <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">nf</span><span class="o">*</span><span class="mi">10</span><span class="p">,</span><span class="mi">10</span><span class="o">*</span><span class="p">(</span>< [...]
+<span class="o">>>></span>     <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+
+
+<p>Now read all the files back in at once with <a href="#netCDF4.MFDataset"><code>MFDataset</code></a></p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="kn">from</span> <span class="nn">netCDF4</span> <span class="kn">import</span> <span class="n">MFDataset</span>
+<span class="o">>>></span> <span class="n">f</span> <span class="o">=</span> <span class="n">MFDataset</span><span class="p">(</span><span class="s">"mftest*nc"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="s">"x"</span><span class="p">][:]</span>
+<span class="p">[</span> <span class="mi">0</span>  <span class="mi">1</span>  <span class="mi">2</span>  <span class="mi">3</span>  <span class="mi">4</span>  <span class="mi">5</span>  <span class="mi">6</span>  <span class="mi">7</span>  <span class="mi">8</span>  <span class="mi">9</span> <span class="mi">10</span> <span class="mi">11</span> <span class="mi">12</span> <span class="mi">13</span> <span class="mi">14</span> <span class="mi">15</span> <span class="mi">16</span> <span cla [...]
+ <span class="mi">25</span> <span class="mi">26</span> <span class="mi">27</span> <span class="mi">28</span> <span class="mi">29</span> <span class="mi">30</span> <span class="mi">31</span> <span class="mi">32</span> <span class="mi">33</span> <span class="mi">34</span> <span class="mi">35</span> <span class="mi">36</span> <span class="mi">37</span> <span class="mi">38</span> <span class="mi">39</span> <span class="mi">40</span> <span class="mi">41</span> <span class="mi">42</span> <span [...]
+ <span class="mi">50</span> <span class="mi">51</span> <span class="mi">52</span> <span class="mi">53</span> <span class="mi">54</span> <span class="mi">55</span> <span class="mi">56</span> <span class="mi">57</span> <span class="mi">58</span> <span class="mi">59</span> <span class="mi">60</span> <span class="mi">61</span> <span class="mi">62</span> <span class="mi">63</span> <span class="mi">64</span> <span class="mi">65</span> <span class="mi">66</span> <span class="mi">67</span> <span [...]
+ <span class="mi">75</span> <span class="mi">76</span> <span class="mi">77</span> <span class="mi">78</span> <span class="mi">79</span> <span class="mi">80</span> <span class="mi">81</span> <span class="mi">82</span> <span class="mi">83</span> <span class="mi">84</span> <span class="mi">85</span> <span class="mi">86</span> <span class="mi">87</span> <span class="mi">88</span> <span class="mi">89</span> <span class="mi">90</span> <span class="mi">91</span> <span class="mi">92</span> <span [...]
+</pre></div>
+
+
+<p>Note that <a href="#netCDF4.MFDataset"><code>MFDataset</code></a> can only be used to read, not write, multi-file
+datasets.</p>
+<h2><div id='section9'>9) Efficient compression of netCDF variables.</h2>
+<p>Data stored in netCDF 4 <a href="#netCDF4.Variable"><code>Variable</code></a> objects can be compressed and
+decompressed on the fly. The parameters for the compression are
+determined by the <code>zlib</code>, <code>complevel</code> and <code>shuffle</code> keyword arguments
+to the <a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> method. To turn on
+compression, set <code>zlib=True</code>.  The <code>complevel</code> keyword regulates the
+speed and efficiency of the compression (1 being fastest, but lowest
+compression ratio, 9 being slowest but best compression ratio). The
+default value of <code>complevel</code> is 4. Setting <code>shuffle=False</code> will turn
+off the HDF5 shuffle filter, which de-interlaces a block of data before
+compression by reordering the bytes.  The shuffle filter can
+significantly improve compression ratios, and is on by default.  Setting
+<code>fletcher32</code> keyword argument to
+<a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> to <code>True</code> (it's <code>False</code> by
+default) enables the Fletcher32 checksum algorithm for error detection.
+It's also possible to set the HDF5 chunking parameters and endian-ness
+of the binary data stored in the HDF5 file with the <code>chunksizes</code>
+and <code>endian</code> keyword arguments to
+<a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a>.  These keyword arguments only
+are relevant for <code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code> files (where the
+underlying file format is HDF5) and are silently ignored if the file
+format is <code>NETCDF3_CLASSIC</code> or <code>NETCDF3_64BIT</code>,</p>
+<p>If your data only has a certain number of digits of precision (say for
+example, it is temperature data that was measured with a precision of
+0.1 degrees), you can dramatically improve zlib compression by
+quantizing (or truncating) the data using the <code>least_significant_digit</code>
+keyword argument to <a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a>. The least
+significant digit is the power of ten of the smallest decimal place in
+the data that is a reliable value. For example if the data has a
+precision of 0.1, then setting <code>least_significant_digit=1</code> will cause
+data the data to be quantized using <code>numpy.around(scale*data)/scale</code>, where
+scale = 2**bits, and bits is determined so that a precision of 0.1 is
+retained (in this case bits=4).  Effectively, this makes the compression
+'lossy' instead of 'lossless', that is some precision in the data is
+sacrificed for the sake of disk space.</p>
+<p>In our example, try replacing the line</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">temp</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"temp"</span><span class="p">,</span><span class="s">"f4"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"level"</span><span class="p">,</span><span c [...]
+</pre></div>
+
+
+<p>with</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">temp</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"temp"</span><span class="p">,</span><span class="s">"f4"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"level"</span><span class="p">,</span><span c [...]
+</pre></div>
+
+
+<p>and then</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">temp</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"temp"</span><span class="p">,</span><span class="s">"f4"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"level"</span><span class="p">,</span><span c [...]
+</pre></div>
+
+
+<p>and see how much smaller the resulting files are.</p>
+<h2><div id='section10'>10) Beyond homogenous arrays of a fixed type - compound data types.</h2>
+<p>Compound data types map directly to numpy structured (a.k.a 'record'
+arrays).  Structured arrays are akin to C structs, or derived types
+in Fortran. They allow for the construction of table-like structures
+composed of combinations of other data types, including other
+compound types. Compound types might be useful for representing multiple
+parameter values at each point on a grid, or at each time and space
+location for scattered (point) data. You can then access all the
+information for a point by reading one variable, instead of reading
+different parameters from different variables.  Compound data types
+are created from the corresponding numpy data type using the
+<a href="#netCDF4.Dataset.createCompoundType"><code>createCompoundType</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance.
+Since there is no native complex data type in netcdf, compound types are handy
+for storing numpy complex arrays.  Here's an example:</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">f</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"complex.nc"</span><span class="p">,</span><span class="s">"w"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">size</span> <span class="o">=</span> <span class="mi">3</span> <span class="c"># length of 1-d complex array</span>
+<span class="o">>>></span> <span class="c"># create sample complex data.</span>
+<span class="o">>>></span> <span class="n">datac</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="mi">1j</span><span class="o">*</span><span class="p">(</span><span class="mf">1.</span><span class="o">+</span><span class="n">numpy</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">num [...]
+<span class="o">>>></span> <span class="c"># create complex128 compound data type.</span>
+<span class="o">>>></span> <span class="n">complex128</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">dtype</span><span class="p">([(</span><span class="s">"real"</span><span class="p">,</span><span class="n">numpy</span><span class="o">.</span><span class="n">float64</span><span class="p">),(</span><span class="s">"imag"</span><span class="p">,</span><span class="n">numpy</span><span class="o">.</span><span [...]
+<span class="o">>>></span> <span class="n">complex128_t</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createCompoundType</span><span class="p">(</span><span class="n">complex128</span><span class="p">,</span><span class="s">"complex128"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="c"># create a variable with this data type, write some data to it.</span>
+<span class="o">>>></span> <span class="n">f</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"x_dim"</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">v</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"cmplx_var"</span><span class="p">,</span><span class="n">complex128_t</span><span class="p">,</span><span class="s">"x_dim"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">empty</span><span class="p">(</span><span class="n">size</span><span class="p">,</span><span class="n">complex128</span><span class="p">)</span> <span class="c"># numpy structured array</span>
+<span class="o">>>></span> <span class="n">data</span><span class="p">[</span><span class="s">"real"</span><span class="p">]</span> <span class="o">=</span> <span class="n">datac</span><span class="o">.</span><span class="n">real</span><span class="p">;</span> <span class="n">data</span><span class="p">[</span><span class="s">"imag"</span><span class="p">]</span> <span class="o">=</span> <span class="n">datac</span><span class="o">.</span><span class="n">imag</span>
+<span class="o">>>></span> <span class="n">v</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">data</span> <span class="c"># write numpy structured array to netcdf compound var</span>
+<span class="o">>>></span> <span class="c"># close and reopen the file, check the contents.</span>
+<span class="o">>>></span> <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">();</span> <span class="n">f</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"complex.nc"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">v</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="s">"cmplx_var"</span><span class="p">]</span>
+<span class="o">>>></span> <span class="n">datain</span> <span class="o">=</span> <span class="n">v</span><span class="p">[:]</span> <span class="c"># read in all the data into a numpy structured array</span>
+<span class="o">>>></span> <span class="c"># create an empty numpy complex array</span>
+<span class="o">>>></span> <span class="n">datac2</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">empty</span><span class="p">(</span><span class="n">datain</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span><span class="n">numpy</span><span class="o">.</span><span class="n">complex128</span><span class="p">)</span>
+<span class="o">>>></span> <span class="c"># .. fill it with contents of structured array.</span>
+<span class="o">>>></span> <span class="n">datac2</span><span class="o">.</span><span class="n">real</span> <span class="o">=</span> <span class="n">datain</span><span class="p">[</span><span class="s">"real"</span><span class="p">];</span> <span class="n">datac2</span><span class="o">.</span><span class="n">imag</span> <span class="o">=</span> <span class="n">datain</span><span class="p">[</span><span class="s">"imag"</span><span class="p">]</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">datac</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span><span class="n">datac</span> <span class="c"># original data</span>
+<span class="n">complex128</span> <span class="p">[</span> <span class="mf">0.54030231</span><span class="o">+</span><span class="mf">0.84147098j</span> <span class="o">-</span><span class="mf">0.84147098</span><span class="o">+</span><span class="mf">0.54030231j</span>  <span class="o">-</span><span class="mf">0.54030231</span><span class="o">-</span><span class="mf">0.84147098j</span><span class="p">]</span>
+<span class="o">>>></span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">datac2</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span><span class="n">datac2</span> <span class="c"># data from file</span>
+<span class="n">complex128</span> <span class="p">[</span> <span class="mf">0.54030231</span><span class="o">+</span><span class="mf">0.84147098j</span> <span class="o">-</span><span class="mf">0.84147098</span><span class="o">+</span><span class="mf">0.54030231j</span>  <span class="o">-</span><span class="mf">0.54030231</span><span class="o">-</span><span class="mf">0.84147098j</span><span class="p">]</span>
+</pre></div>
+
+
+<p>Compound types can be nested, but you must create the 'inner'
+ones first. All of the compound types defined for a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> are stored in a
+Python dictionary, just like variables and dimensions. As always, printing
+objects gives useful summary information in an interactive session:</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="k">print</span> <span class="n">f</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dataset"</span><span class="o">></span>
+<span class="n">root</span> <span class="n">group</span> <span class="p">(</span><span class="n">NETCDF4</span> <span class="nb">file</span> <span class="n">format</span><span class="p">):</span>
+    <span class="n">dimensions</span><span class="p">:</span> <span class="n">x_dim</span>
+    <span class="n">variables</span><span class="p">:</span> <span class="n">cmplx_var</span>
+    <span class="n">groups</span><span class="p">:</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Variable"</span><span class="o">></span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="s">"cmplx_var"</span><span class="p">]</span>
+<span class="n">compound</span> <span class="n">cmplx_var</span><span class="p">(</span><span class="n">x_dim</span><span class="p">)</span>
+<span class="n">compound</span> <span class="n">data</span> <span class="nb">type</span><span class="p">:</span> <span class="p">[(</span><span class="s">"real"</span><span class="p">,</span> <span class="s">"<f8"</span><span class="p">),</span> <span class="p">(</span><span class="s">"imag"</span><span class="p">,</span> <span class="s">"<f8"</span><span class="p">)]</span>
+<span class="n">unlimited</span> <span class="n">dimensions</span><span class="p">:</span> <span class="n">x_dim</span>
+<span class="n">current</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,)</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">cmptypes</span>
+<span class="n">OrderedDict</span><span class="p">([(</span><span class="s">"complex128"</span><span class="p">,</span> <span class="o"><</span><span class="n">netCDF4</span><span class="o">.</span><span class="n">CompoundType</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x1029eb7e8</span><span class="o">></span><span class="p">)])</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">cmptypes</span><span class="p">[</span><span class="s">"complex128"</span><span class="p">]</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.CompoundType"</span><span class="o">></span><span class="p">:</span> <span class="n">name</span> <span class="o">=</span> <span class="s">"complex128"</span><span class="p">,</span> <span class="n">numpy</span> <span class="n">dtype</span> <span class="o">=</span> <span class="p">[(</span><span class="s">u"real"</span><span class="p">,</span><span class="s">"&lt [...]
+</pre></div>
+
+
+<h2><div id='section11'>11) Variable-length (vlen) data types.</h2>
+<p>NetCDF 4 has support for variable-length or "ragged" arrays.  These are arrays
+of variable length sequences having the same type. To create a variable-length
+data type, use the <a href="#netCDF4.Dataset.createVLType"><code>createVLType</code></a> method
+method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">f</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"tst_vlen.nc"</span><span class="p">,</span><span class="s">"w"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">vlen_t</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createVLType</span><span class="p">(</span><span class="n">numpy</span><span class="o">.</span><span class="n">int32</span><span class="p">,</span> <span class="s">"phony_vlen"</span><span class="p">)</span>
+</pre></div>
+
+
+<p>The numpy datatype of the variable-length sequences and the name of the
+new datatype must be specified. Any of the primitive datatypes can be
+used (signed and unsigned integers, 32 and 64 bit floats, and characters),
+but compound data types cannot.
+A new variable can then be created using this datatype.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">x</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"x"</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">y</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"y"</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">vlvar</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"phony_vlen_var"</span><span class="p">,</span> <span class="n">vlen_t</span><span class="p">,</span> <span class="p">(</span><span class="s">"y"</span><span class="p">,</span><span class="s">"x"</span><span class="p">))</span>
+</pre></div>
+
+
+<p>Since there is no native vlen datatype in numpy, vlen arrays are represented
+in python as object arrays (arrays of dtype <code>object</code>). These are arrays whose
+elements are Python object pointers, and can contain any type of python object.
+For this application, they must contain 1-D numpy arrays all of the same type
+but of varying length.
+In this case, they contain 1-D numpy <code>int32</code> arrays of random length betwee
+1 and 10.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="kn">import</span> <span class="nn">random</span>
+<span class="o">>>></span> <span class="n">data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">empty</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">),</span><span class="nb">object</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)):</span>
+<span class="o">>>></span>    <span class="n">data</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">10</span><span class="p">),</span><span class="n"> [...]
+<span class="o">>>></span> <span class="n">data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">data</span><span class="p">,(</span><span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">),</span><span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)))</span>
+<span class="o">>>></span> <span class="n">vlvar</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">data</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"vlen variable =</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="n">vlvar</span><span class="p">[:]</span>
+<span class="n">vlen</span> <span class="n">variable</span> <span class="o">=</span>
+<span class="p">[[[</span> <span class="mi">1</span>  <span class="mi">2</span>  <span class="mi">3</span>  <span class="mi">4</span>  <span class="mi">5</span>  <span class="mi">6</span>  <span class="mi">7</span>  <span class="mi">8</span>  <span class="mi">9</span> <span class="mi">10</span><span class="p">]</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span><span class="p">]</ [...]
+ <span class="p">[[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="mi">7</span><span class="p">]</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span><span class="p">]</span> <span class="p">[</span><span class="mi">1</span> <span  [...]
+ <span class="p">[[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span><span class="p">]</span> <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span><span class="p">]</span> <span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
+ <span class="p">[[</span> <span class="mi">1</span>  <span class="mi">2</span>  <span class="mi">3</span>  <span class="mi">4</span>  <span class="mi">5</span>  <span class="mi">6</span>  <span class="mi">7</span>  <span class="mi">8</span>  <span class="mi">9</span> <span class="mi">10</span><span class="p">]</span> <span class="p">[</span> <span class="mi">1</span>  <span class="mi">2</span>  <span class="mi">3</span>  <span class="mi">4</span>  <span class="mi">5</span>  <span class= [...]
+  <span class="p">[</span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="mi">7</span> <span class="mi">8</span><span class="p">]]]</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dataset"</span><span class="o">></span>
+<span class="n">root</span> <span class="n">group</span> <span class="p">(</span><span class="n">NETCDF4</span> <span class="nb">file</span> <span class="n">format</span><span class="p">):</span>
+    <span class="n">dimensions</span><span class="p">:</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span>
+    <span class="n">variables</span><span class="p">:</span> <span class="n">phony_vlen_var</span>
+    <span class="n">groups</span><span class="p">:</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="s">"phony_vlen_var"</span><span class="p">]</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Variable"</span><span class="o">></span>
+<span class="n">vlen</span> <span class="n">phony_vlen_var</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
+<span class="n">vlen</span> <span class="n">data</span> <span class="nb">type</span><span class="p">:</span> <span class="n">int32</span>
+<span class="n">unlimited</span> <span class="n">dimensions</span><span class="p">:</span>
+<span class="n">current</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">VLtypes</span><span class="p">[</span><span class="s">"phony_vlen"</span><span class="p">]</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.VLType"</span><span class="o">></span><span class="p">:</span> <span class="n">name</span> <span class="o">=</span> <span class="s">"phony_vlen"</span><span class="p">,</span> <span class="n">numpy</span> <span class="n">dtype</span> <span class="o">=</span> <span class="n">int32</span>
+</pre></div>
+
+
+<p>Numpy object arrays containing python strings can also be written as vlen
+variables,  For vlen strings, you don't need to create a vlen data type.
+Instead, simply use the python <code>str</code> builtin (or a numpy string datatype
+with fixed length greater than 1) when calling the
+<a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> method.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">z</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"z"</span><span class="p">,</span><span class="mi">10</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">strvar</span> <span class="o">=</span> <span class="n">rootgrp</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"strvar"</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="s">"z"</span><span class="p">)</span>
+</pre></div>
+
+
+<p>In this example, an object array is filled with random python strings with
+random lengths between 2 and 12 characters, and the data in the object
+array is assigned to the vlen string variable.</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="n">chars</span> <span class="o">=</span> <span class="s">"1234567890aabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"</span>
+<span class="o">>>></span> <span class="n">data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">empty</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="s">"O"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span>
+<span class="o">>>></span>     <span class="n">stringlen</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">12</span><span class="p">)</span>
+<span class="o">>>></span>     <span class="n">data</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">=</span> <span class="s">""</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">chars</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span [...]
+<span class="o">>>></span> <span class="n">strvar</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">data</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="s">"variable-length string variable:</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="n">strvar</span><span class="p">[:]</span>
+<span class="n">variable</span><span class="o">-</span><span class="n">length</span> <span class="n">string</span> <span class="n">variable</span><span class="p">:</span>
+<span class="p">[</span><span class="n">aDy29jPt</span> <span class="mi">5</span><span class="n">DS9X8</span> <span class="n">jd7aplD</span> <span class="n">b8t4RM</span> <span class="n">jHh8hq</span> <span class="n">KtaPWF9cQj</span> <span class="n">Q1hHN5WoXSiT</span> <span class="n">MMxsVeq</span> <span class="n">tdLUzvVTzj</span><span class="p">]</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Dataset"</span><span class="o">></span>
+<span class="n">root</span> <span class="n">group</span> <span class="p">(</span><span class="n">NETCDF4</span> <span class="nb">file</span> <span class="n">format</span><span class="p">):</span>
+    <span class="n">dimensions</span><span class="p">:</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span>
+    <span class="n">variables</span><span class="p">:</span> <span class="n">phony_vlen_var</span><span class="p">,</span> <span class="n">strvar</span>
+    <span class="n">groups</span><span class="p">:</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="s">"strvar"</span><span class="p">]</span>
+<span class="o"><</span><span class="nb">type</span> <span class="s">"netCDF4._netCDF4.Variable"</span><span class="o">></span>
+<span class="n">vlen</span> <span class="n">strvar</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
+<span class="n">vlen</span> <span class="n">data</span> <span class="nb">type</span><span class="p">:</span> <span class="o"><</span><span class="nb">type</span> <span class="s">"str"</span><span class="o">></span>
+<span class="n">unlimited</span> <span class="n">dimensions</span><span class="p">:</span>
+<span class="n">current</span> <span class="n">size</span> <span class="o">=</span> <span class="p">(</span><span class="mi">10</span><span class="p">,)</span>
+</pre></div>
+
+
+<p>It is also possible to set contents of vlen string variables with numpy arrays
+of any string or unicode data type. Note, however, that accessing the contents
+of such variables will always return numpy arrays with dtype <code>object</code>.</p>
+<p>All of the code in this tutorial is available in <code>examples/tutorial.py</code>,
+Unit tests are in the <code>test</code> directory.</p>
+<p><strong>contact</strong>: Jeffrey Whitaker <a href="mailto:jeffrey.s.whitaker@noaa.gov">jeffrey.s.whitaker@noaa.gov</a></p>
+<p><strong>copyright</strong>: 2008 by Jeffrey Whitaker.</p>
+<p><strong>license</strong>: Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both the copyright notice and this permission notice appear in
+supporting documentation.
+THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.</p>
+  
+
+  </header>
+
+  <section id="section-items">
+
+    <h2 class="section-title" id="header-functions">Functions</h2>
+      
+  <div class="item">
+    <div class="name def" id="netCDF4.chartostring">
+    <p>def <span class="ident">chartostring</span>(</p><p>b)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>convert a character array to a string array with one less dimension.</p>
+<p><strong><code>b</code></strong>:  Input character array (numpy datatype <code>'S1'</code> or <code>'U1'</code>).
+Will be converted to a array of strings, where each string has a fixed
+length of <code>b.shape[-1]</code> characters.</p>
+<p>returns a numpy string array with datatype <code>'SN'</code> or <code>'UN'</code> and shape
+<code>b.shape[:-1]</code> where where <code>N=b.shape[-1]</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      
+  <div class="item">
+    <div class="name def" id="netCDF4.date2index">
+    <p>def <span class="ident">date2index</span>(</p><p>dates, nctime, calendar=None, select='exact')</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Return indices of a netCDF time variable corresponding to the given dates.</p>
+<p><strong><code>dates</code></strong>: A datetime object or a sequence of datetime objects.
+The datetime objects should not include a time-zone offset.</p>
+<p><strong><code>nctime</code></strong>: A netCDF time variable object. The nctime object must have a
+<code>units</code> attribute.</p>
+<p><strong><code>calendar</code></strong>: describes the calendar used in the time calculations.
+All the values currently defined in the 
+<a href="http://cfconventions.org">CF metadata convention</a>
+Valid calendars <code>'standard', 'gregorian', 'proleptic_gregorian'
+'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'</code>.
+Default is <code>'standard'</code>, which is a mixed Julian/Gregorian calendar.
+If <code>calendar</code> is None, its value is given by <code>nctime.calendar</code> or
+<code>standard</code> if no such attribute exists.</p>
+<p><strong><code>select</code></strong>: <code>'exact', 'before', 'after', 'nearest'</code>
+The index selection method. <code>exact</code> will return the indices perfectly
+matching the dates given. <code>before</code> and <code>after</code> will return the indices
+corresponding to the dates just before or just after the given dates if
+an exact match cannot be found. <code>nearest</code> will return the indices that
+correspond to the closest dates.</p>
+<p>returns an index (indices) of the netCDF time variable corresponding
+to the given datetime object(s).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      
+  <div class="item">
+    <div class="name def" id="netCDF4.date2num">
+    <p>def <span class="ident">date2num</span>(</p><p>dates,units,calendar='standard')</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Return numeric time values given datetime objects. The units
+of the numeric time values are described by the <code>netCDF4.units</code> argument
+and the <code>netCDF4.calendar</code> keyword. The datetime objects must
+be in UTC with no time-zone offset.  If there is a
+time-zone offset in <code>units</code>, it will be applied to the
+returned numeric values.</p>
+<p><strong><code>dates</code></strong>: A datetime object or a sequence of datetime objects.
+The datetime objects should not include a time-zone offset.</p>
+<p><strong><code>units</code></strong>: a string of the form <code><time units> since <reference time></code>
+describing the time units. <code><time units></code> can be days, hours, minutes,
+seconds, milliseconds or microseconds. <code><reference time></code> is the time
+origin.  Accuracy is somewhere between a millisecond and a microsecond,
+depending on the time interval and the calendar used.</p>
+<p><strong><code>calendar</code></strong>: describes the calendar used in the time calculations.
+All the values currently defined in the 
+<a href="http://cfconventions.org">CF metadata convention</a>
+Valid calendars <code>'standard', 'gregorian', 'proleptic_gregorian'
+'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'</code>.
+Default is <code>'standard'</code>, which is a mixed Julian/Gregorian calendar.</p>
+<p>returns a numeric time value, or an array of numeric time values.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      
+  <div class="item">
+    <div class="name def" id="netCDF4.getlibversion">
+    <p>def <span class="ident">getlibversion</span>(</p><p>)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>returns a string describing the version of the netcdf library
+used to build the module, and when it was built.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      
+  <div class="item">
+    <div class="name def" id="netCDF4.num2date">
+    <p>def <span class="ident">num2date</span>(</p><p>times,units,calendar='standard')</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Return datetime objects given numeric time values. The units
+of the numeric time values are described by the <code>units</code> argument
+and the <code>calendar</code> keyword. The returned datetime objects represent
+UTC with no time-zone offset, even if the specified
+<code>units</code> contain a time-zone offset.</p>
+<p><strong><code>times</code></strong>: numeric time values.</p>
+<p><strong><code>units</code></strong>: a string of the form <code><time units> since <reference time></code>
+describing the time units. <code><time units></code> can be days, hours, minutes,
+seconds, milliseconds or microseconds. <code><reference time></code> is the time
+origin.  Accuracy is somewhere between a millisecond and a microsecond,
+depending on the time interval and the calendar used.</p>
+<p><strong><code>calendar</code></strong>: describes the calendar used in the time calculations.
+All the values currently defined in the 
+<a href="http://cfconventions.org">CF metadata convention</a>
+Valid calendars <code>'standard', 'gregorian', 'proleptic_gregorian'
+'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'</code>.
+Default is <code>'standard'</code>, which is a mixed Julian/Gregorian calendar.</p>
+<p>returns a datetime instance, or an array of datetime instances.</p>
+<p><strong><em>Note</em></strong>: The datetime instances returned are 'real' python datetime
+objects if <code>calendar='proleptic_gregorian'</code>, or
+<code>calendar='standard'</code> or <code>'gregorian'</code>
+and the date is after the breakpoint between the Julian and
+Gregorian calendars (1582-10-15). Otherwise, they are 'phony' datetime
+objects which support some but not all the methods of 'real' python
+datetime objects. The datetime instances
+do not contain a time-zone offset, even if the specified <code>units</code>
+contains one.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      
+  <div class="item">
+    <div class="name def" id="netCDF4.stringtoarr">
+    <p>def <span class="ident">stringtoarr</span>(</p><p>a, NUMCHARS,dtype='S')</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>convert a string to a character array of length <code>NUMCHARS</code></p>
+<p><strong><code>a</code></strong>:  Input python string.</p>
+<p><strong><code>NUMCHARS</code></strong>:  number of characters used to represent string
+(if len(a) < <code>NUMCHARS</code>, it will be padded on the right with blanks).</p>
+<p><strong><code>dtype</code></strong>:  type of numpy array to return.  Default is <code>'S'</code>, which
+means an array of dtype <code>'S1'</code> will be returned.  If dtype=<code>'U'</code>, a
+unicode array (dtype = <code>'U1'</code>) will be returned.</p>
+<p>returns a rank 1 numpy character array of length NUMCHARS with datatype <code>'S1'</code>
+(default) or <code>'U1'</code> (if dtype=<code>'U'</code>)</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      
+  <div class="item">
+    <div class="name def" id="netCDF4.stringtochar">
+    <p>def <span class="ident">stringtochar</span>(</p><p>a)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>convert a string array to a character array with one extra dimension</p>
+<p><strong><code>a</code></strong>:  Input numpy string array with numpy datatype <code>'SN'</code> or <code>'UN'</code>, where N
+is the number of characters in each string.  Will be converted to
+an array of characters (datatype <code>'S1'</code> or <code>'U1'</code>) of shape <code>a.shape + (N,)</code>.</p>
+<p>returns a numpy character array with datatype <code>'S1'</code> or <code>'U1'</code>
+and shape <code>a.shape + (N,)</code>, where N is the length of each string in a.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+
+    <h2 class="section-title" id="header-classes">Classes</h2>
+      
+      <div class="item">
+      <p id="netCDF4.CompoundType" class="name">class <span class="ident">CompoundType</span></p>
+      
+  
+    <div class="desc"><p>A <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> instance is used to describe a compound data
+type, and can be passed to the the <a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> method of
+a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance. 
+Compound data types map to numpy structured arrays.
+See <a href="#netCDF4.CompoundType.__init__"><code>__init__</code></a> for more details.</p>
+<p>The instance variables <code>dtype</code> and <code>name</code> should not be modified by
+the user.</p></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.CompoundType">CompoundType</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Class variables</h3>
+            <div class="item">
+            <p id="netCDF4.CompoundType.dtype" class="name">var <span class="ident">dtype</span></p>
+            
+
+            
+  
+    <div class="desc"><p>A numpy dtype object describing the compound data type.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.CompoundType.name" class="name">var <span class="ident">name</span></p>
+            
+
+            
+  
+    <div class="desc"><p>String name.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+          <h3>Static methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.CompoundType.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>group, datatype, datatype_name)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>CompoundType constructor.</p>
+<p><strong><code>group</code></strong>: <a href="#netCDF4.Group"><code>Group</code></a> instance to associate with the compound datatype.</p>
+<p><strong><code>datatype</code></strong>: A numpy dtype object describing a structured (a.k.a record)
+array.  Can be composed of homogeneous numeric or character data types, or
+other structured array data types.</p>
+<p><strong><code>datatype_name</code></strong>: a Python string containing a description of the
+compound data type.</p>
+<p><strong><em>Note 1</em></strong>: When creating nested compound data types,
+the inner compound data types must already be associated with CompoundType
+instances (so create CompoundType instances for the innermost structures
+first).</p>
+<p><strong><em>Note 2</em></strong>: <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> instances should be created using the
+<a href="#netCDF4.Dataset.createCompoundType"><code>createCompoundType</code></a>
+method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance, not using this class directly.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="netCDF4.Dataset" class="name">class <span class="ident">Dataset</span></p>
+      
+  
+    <div class="desc"><p>A netCDF <a href="#netCDF4.Dataset"><code>Dataset</code></a> is a collection of dimensions, groups, variables and
+attributes. Together they describe the meaning of data and relations among
+data fields stored in a netCDF file. See <a href="#netCDF4.Dataset.__init__"><code>__init__</code></a> for more
+details.</p>
+<p>A list of attribute names corresponding to global netCDF attributes
+defined for the <a href="#netCDF4.Dataset"><code>Dataset</code></a> can be obtained with the
+<a href="#netCDF4.Dataset.ncattrs"><code>ncattrs</code></a> method.
+These attributes can be created by assigning to an attribute of the
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> instance. A dictionary containing all the netCDF attribute
+name/value pairs is provided by the <code>__dict__</code> attribute of a
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> instance.</p>
+<p>The following class variables are read-only and should not be
+modified by the user.</p>
+<p><strong><code>dimensions</code></strong>: The <code>dimensions</code> dictionary maps the names of
+dimensions defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.Dimension"><code>Dimension</code></a> class.</p>
+<p><strong><code>variables</code></strong>: The <code>variables</code> dictionary maps the names of variables
+defined for this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the 
+<a href="#netCDF4.Variable"><code>Variable</code></a> class.</p>
+<p><strong><code>groups</code></strong>: The groups dictionary maps the names of groups created for
+this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the <a href="#netCDF4.Group"><code>Group</code></a> class (the
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> class is simply a special case of the <a href="#netCDF4.Group"><code>Group</code></a> class which
+describes the root group in the netCDF4 file).</p>
+<p><strong><code>cmptypes</code></strong>: The <code>cmptypes</code> dictionary maps the names of
+compound types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.CompoundType"><code>CompoundType</code></a> class.</p>
+<p><strong><code>vltypes</code></strong>: The <code>vltypes</code> dictionary maps the names of
+variable-length types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances 
+of the <a href="#netCDF4.VLType"><code>VLType</code></a> class.</p>
+<p><strong><code>data_model</code></strong>: <code>data_model</code> describes the netCDF
+data model version, one of <code>NETCDF3_CLASSIC</code>, <code>NETCDF4</code>,
+<code>NETCDF4_CLASSIC</code> or <code>NETCDF3_64BIT</code>.</p>
+<p><strong><code>file_format</code></strong>: same as <code>data_model</code>, retained for backwards compatibility.</p>
+<p><strong><code>disk_format</code></strong>: <code>disk_format</code> describes the underlying
+file format, one of <code>NETCDF3</code>, <code>HDF5</code>, <code>HDF4</code>,
+<code>PNETCDF</code>, <code>DAP2</code>, <code>DAP4</code> or <code>UNDEFINED</code>. Only available if using
+netcdf C library version >= 4.3.1, otherwise will always return
+<code>UNDEFINED</code>.</p>
+<p><strong><code>parent</code></strong>: <code>parent</code> is a reference to the parent
+<a href="#netCDF4.Group"><code>Group</code></a> instance. <code>None</code> for a the root group or <a href="#netCDF4.Dataset"><code>Dataset</code></a>
+instance.</p>
+<p><strong><code>path</code></strong>: <code>path</code> shows the location of the <a href="#netCDF4.Group"><code>Group</code></a> in
+the <a href="#netCDF4.Dataset"><code>Dataset</code></a> in a unix directory format (the names of groups in the
+hierarchy separated by backslashes). A <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance is the root
+group, so the path is simply <code>'/'</code>.</p>
+<p><strong><code>keepweakref</code></strong>: If <code>True</code>, child Dimension and Variables objects only keep weak 
+references to the parent Dataset or Group.</p></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.Dataset">Dataset</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Class variables</h3>
+            <div class="item">
+            <p id="netCDF4.Dataset.cmptypes" class="name">var <span class="ident">cmptypes</span></p>
+            
+
+            
+  
+    <div class="desc"><p>The <code>cmptypes</code> dictionary maps the names of
+compound types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.CompoundType"><code>CompoundType</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.data_model" class="name">var <span class="ident">data_model</span></p>
+            
+
+            
+  
+    <div class="desc"><p><code>data_model</code> describes the netCDF
+data model version, one of <code>NETCDF3_CLASSIC</code>, <code>NETCDF4</code>,
+<code>NETCDF4_CLASSIC</code> or <code>NETCDF3_64BIT</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.dimensions" class="name">var <span class="ident">dimensions</span></p>
+            
+
+            
+  
+    <div class="desc"><p>The <code>dimensions</code> dictionary maps the names of
+dimensions defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.Dimension"><code>Dimension</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.disk_format" class="name">var <span class="ident">disk_format</span></p>
+            
+
+            
+  
+    <div class="desc"><p><code>disk_format</code> describes the underlying
+file format, one of <code>NETCDF3</code>, <code>HDF5</code>, <code>HDF4</code>,
+<code>PNETCDF</code>, <code>DAP2</code>, <code>DAP4</code> or <code>UNDEFINED</code>. Only available if using
+netcdf C library version >= 4.3.1, otherwise will always return
+<code>UNDEFINED</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.file_format" class="name">var <span class="ident">file_format</span></p>
+            
+
+            
+  
+    <div class="desc"><p>same as <code>data_model</code>, retained for backwards compatibility.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.groups" class="name">var <span class="ident">groups</span></p>
+            
+
+            
+  
+    <div class="desc"><p>The groups dictionary maps the names of groups created for
+this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the <a href="#netCDF4.Group"><code>Group</code></a> class (the
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> class is simply a special case of the <a href="#netCDF4.Group"><code>Group</code></a> class which
+describes the root group in the netCDF4 file).</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.keepweakref" class="name">var <span class="ident">keepweakref</span></p>
+            
+
+            
+  
+    <div class="desc"><p>If <code>True</code>, child Dimension and Variables objects only keep weak references to
+the parent Dataset or Group.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.parent" class="name">var <span class="ident">parent</span></p>
+            
+
+            
+  
+    <div class="desc"><p><code>parent</code> is a reference to the parent
+<a href="#netCDF4.Group"><code>Group</code></a> instance. <code>None</code> for a the root group or <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.path" class="name">var <span class="ident">path</span></p>
+            
+
+            
+  
+    <div class="desc"><p><code>path</code> shows the location of the <a href="#netCDF4.Group"><code>Group</code></a> in
+the <a href="#netCDF4.Dataset"><code>Dataset</code></a> in a unix directory format (the names of groups in the
+hierarchy separated by backslashes). A <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance is the root
+group, so the path is simply <code>'/'</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.variables" class="name">var <span class="ident">variables</span></p>
+            
+
+            
+  
+    <div class="desc"><p>The <code>variables</code> dictionary maps the names of variables
+defined for this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the <a href="#netCDF4.Variable"><code>Variable</code></a>
+class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Dataset.vltypes" class="name">var <span class="ident">vltypes</span></p>
+            
+
+            
+  
+    <div class="desc"><p>The <code>vltypes</code> dictionary maps the names of
+variable-length types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.VLType"><code>VLType</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+          <h3>Static methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>self, filename, mode="r", clobber=True, diskless=False, persist=False, weakref=False, format='NETCDF4')</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p><a href="#netCDF4.Dataset"><code>Dataset</code></a> constructor.</p>
+<p><strong><code>filename</code></strong>: Name of netCDF file to hold dataset.</p>
+<p><strong><code>mode</code></strong>: access mode. <code>r</code> means read-only; no data can be
+modified. <code>w</code> means write; a new file is created, an existing file with
+the same name is deleted. <code>a</code> and <code>r+</code> mean append (in analogy with
+serial files); an existing file is opened for reading and writing.
+Appending <code>s</code> to modes <code>w</code>, <code>r+</code> or <code>a</code> will enable unbuffered shared
+access to <code>NETCDF3_CLASSIC</code> or <code>NETCDF3_64BIT</code> formatted files.
+Unbuffered acesss may be useful even if you don't need shared
+access, since it may be faster for programs that don't access data
+sequentially. This option is ignored for <code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code>
+formatted files.</p>
+<p><strong><code>clobber</code></strong>: if <code>True</code> (default), opening a file with <code>mode='w'</code>
+will clobber an existing file with the same name.  if <code>False</code>, an
+exception will be raised if a file with the same name already exists.</p>
+<p><strong><code>format</code></strong>: underlying file format (one of <code>'NETCDF4',
+'NETCDF4_CLASSIC', 'NETCDF3_CLASSIC'</code> or <code>'NETCDF3_64BIT'</code>.  Only
+relevant if <code>mode = 'w'</code> (if <code>mode = 'r','a'</code> or <code>'r+'</code> the file format
+is automatically detected). Default <code>'NETCDF4'</code>, which means the data is
+stored in an HDF5 file, using netCDF 4 API features.  Setting
+<code>format='NETCDF4_CLASSIC'</code> will create an HDF5 file, using only netCDF 3
+compatibile API features. netCDF 3 clients must be recompiled and linked
+against the netCDF 4 library to read files in <code>NETCDF4_CLASSIC</code> format.
+<code>'NETCDF3_CLASSIC'</code> is the classic netCDF 3 file format that does not
+handle 2+ Gb files very well. <code>'NETCDF3_64BIT'</code> is the 64-bit offset
+version of the netCDF 3 file format, which fully supports 2+ GB files, but
+is only compatible with clients linked against netCDF version 3.6.0 or
+later.</p>
+<p><strong><code>diskless</code></strong>: If <code>True</code>, create diskless (in memory) file.<br />
+This is an experimental feature added to the C library after the
+netcdf-4.2 release.</p>
+<p><strong><code>persist</code></strong>: if <code>diskless=True</code>, persist file to disk when closed
+(default <code>False</code>).</p>
+<p><strong><code>keepweakref</code></strong>: if <code>True</code>, child Dimension and Variable instances will keep weak
+references to the parent Dataset or Group object.  Default is <code>False</code>, which
+means strong references will be kept.  Having Dimension and Variable instances
+keep a strong reference to the parent Dataset instance, which in turn keeps a
+reference to child Dimension and Variable instances, creates circular references.
+Circular references complicate garbage collection, which may mean increased
+memory usage for programs that create may Dataset instances with lots of
+Variables.  Setting <code>keepweakref=True</code> allows Dataset instances to be
+garbage collected as soon as they go out of scope, potential reducing memory
+usage.  However, in most cases this is not desirable, since the associated
+Variable instances may still be needed, but are rendered unusable when the
+parent Dataset instance is garbage collected.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.close">
+    <p>def <span class="ident">close</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Close the Dataset.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.createCompoundType">
+    <p>def <span class="ident">createCompoundType</span>(</p><p>self, datatype, datatype_name)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Creates a new compound data type named <code>datatype_name</code> from the numpy
+dtype object <code>datatype</code>.</p>
+<p><strong><em>Note</em></strong>: If the new compound data type contains other compound data types
+(i.e. it is a 'nested' compound type, where not all of the elements
+are homogenous numeric data types), then the 'inner' compound types <strong>must</strong> be
+created first.</p>
+<p>The return value is the <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> class instance describing the new
+datatype.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.createDimension">
+    <p>def <span class="ident">createDimension</span>(</p><p>self, dimname, size=None)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Creates a new dimension with the given <code>dimname</code> and <code>size</code>.</p>
+<p><code>size</code> must be a positive integer or <code>None</code>, which stands for
+"unlimited" (default is <code>None</code>). Specifying a size of 0 also
+results in an unlimited dimension. The return value is the <a href="#netCDF4.Dimension"><code>Dimension</code></a>
+class instance describing the new dimension.  To determine the current
+maximum size of the dimension, use the <code>len</code> function on the <a href="#netCDF4.Dimension"><code>Dimension</code></a>
+instance. To determine if a dimension is 'unlimited', use the
+<a href="#netCDF4.Dimension.isunlimited"><code>isunlimited</code></a> method of the <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.createGroup">
+    <p>def <span class="ident">createGroup</span>(</p><p>self, groupname)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Creates a new <a href="#netCDF4.Group"><code>Group</code></a> with the given <code>groupname</code>.</p>
+<p>If <code>groupname</code> is specified as a path, using forward slashes as in unix to
+separate components, then intermediate groups will be created as necessary 
+(analagous to <code>mkdir -p</code> in unix).  For example,
+<code>createGroup('/GroupA/GroupB/GroupC')</code> will create <code>GroupA</code>,
+<code>GroupA/GroupB</code>, and <code>GroupA/GroupB/GroupC</code>, if they don't already exist.
+If the specified path describes a group that already exists, no error is
+raised.</p>
+<p>The return value is a <a href="#netCDF4.Group"><code>Group</code></a> class instance.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.createVLType">
+    <p>def <span class="ident">createVLType</span>(</p><p>self, datatype, datatype_name)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Creates a new VLEN data type named <code>datatype_name</code> from a numpy
+dtype object <code>datatype</code>.</p>
+<p>The return value is the <a href="#netCDF4.VLType"><code>VLType</code></a> class instance describing the new
+datatype.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.createVariable">
+    <p>def <span class="ident">createVariable</span>(</p><p>self, varname, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None, fill_value=None)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Creates a new variable with the given <code>varname</code>, <code>datatype</code>, and
+<code>dimensions</code>. If dimensions are not given, the variable is assumed to be
+a scalar.</p>
+<p>If <code>varname</code> is specified as a path, using forward slashes as in unix to
+separate components, then intermediate groups will be created as necessary 
+For example, <code>createVariable('/GroupA/GroupB/VarC'),('x','y'),float)</code> will create groups <code>GroupA</code>
+and <code>GroupA/GroupB</code>, plus the variable <code>GroupA/GroupB/VarC</code>, if the preceding
+groups don't already exist.</p>
+<p>The <code>datatype</code> can be a numpy datatype object, or a string that describes
+a numpy dtype object (like the <code>dtype.str</code> attribue of a numpy array).
+Supported specifiers include: <code>'S1' or 'c' (NC_CHAR), 'i1' or 'b' or 'B'
+(NC_BYTE), 'u1' (NC_UBYTE), 'i2' or 'h' or 's' (NC_SHORT), 'u2'
+(NC_USHORT), 'i4' or 'i' or 'l' (NC_INT), 'u4' (NC_UINT), 'i8' (NC_INT64),
+'u8' (NC_UINT64), 'f4' or 'f' (NC_FLOAT), 'f8' or 'd' (NC_DOUBLE)</code>.
+<code>datatype</code> can also be a <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> instance
+(for a structured, or compound array), a <a href="#netCDF4.VLType"><code>VLType</code></a> instance
+(for a variable-length array), or the python <code>str</code> builtin
+(for a variable-length string array). Numpy string and unicode datatypes with
+length greater than one are aliases for <code>str</code>.</p>
+<p>Data from netCDF variables is presented to python as numpy arrays with
+the corresponding data type.</p>
+<p><code>dimensions</code> must be a tuple containing dimension names (strings) that
+have been defined previously using <a href="#netCDF4.Dataset.createDimension"><code>createDimension</code></a>. The default value
+is an empty tuple, which means the variable is a scalar.</p>
+<p>If the optional keyword <code>zlib</code> is <code>True</code>, the data will be compressed in
+the netCDF file using gzip compression (default <code>False</code>).</p>
+<p>The optional keyword <code>complevel</code> is an integer between 1 and 9 describing
+the level of compression desired (default 4). Ignored if <code>zlib=False</code>.</p>
+<p>If the optional keyword <code>shuffle</code> is <code>True</code>, the HDF5 shuffle filter
+will be applied before compressing the data (default <code>True</code>).  This
+significantly improves compression. Default is <code>True</code>. Ignored if
+<code>zlib=False</code>.</p>
+<p>If the optional keyword <code>fletcher32</code> is <code>True</code>, the Fletcher32 HDF5
+checksum algorithm is activated to detect errors. Default <code>False</code>.</p>
+<p>If the optional keyword <code>contiguous</code> is <code>True</code>, the variable data is
+stored contiguously on disk.  Default <code>False</code>. Setting to <code>True</code> for
+a variable with an unlimited dimension will trigger an error.</p>
+<p>The optional keyword <code>chunksizes</code> can be used to manually specify the
+HDF5 chunksizes for each dimension of the variable. A detailed
+discussion of HDF chunking and I/O performance is available
+<a href="http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html">here</a>.
+Basically, you want the chunk size for each dimension to match as
+closely as possible the size of the data block that users will read
+from the file.  <code>chunksizes</code> cannot be set if <code>contiguous=True</code>.</p>
+<p>The optional keyword <code>endian</code> can be used to control whether the
+data is stored in little or big endian format on disk. Possible
+values are <code>little, big</code> or <code>native</code> (default). The library
+will automatically handle endian conversions when the data is read,
+but if the data is always going to be read on a computer with the
+opposite format as the one used to create the file, there may be
+some performance advantage to be gained by setting the endian-ness.</p>
+<p>The <code>zlib, complevel, shuffle, fletcher32, contiguous, chunksizes</code> and <code>endian</code>
+keywords are silently ignored for netCDF 3 files that do not use HDF5.</p>
+<p>The optional keyword <code>fill_value</code> can be used to override the default
+netCDF <code>_FillValue</code> (the value that the variable gets filled with before
+any data is written to it, defaults given in <code>netCDF4.default_fillvals</code>).
+If fill_value is set to <code>False</code>, then the variable is not pre-filled.</p>
+<p>If the optional keyword parameter <code>least_significant_digit</code> is
+specified, variable data will be truncated (quantized). In conjunction
+with <code>zlib=True</code> this produces 'lossy', but significantly more
+efficient compression. For example, if <code>least_significant_digit=1</code>,
+data will be quantized using <code>numpy.around(scale*data)/scale</code>, where
+scale = 2**bits, and bits is determined so that a precision of 0.1 is
+retained (in this case bits=4). From the 
+<a href="http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml">PSD metadata conventions</a>:
+"least_significant_digit -- power of ten of the smallest decimal place
+in unpacked data that is a reliable value." Default is <code>None</code>, or no
+quantization, or 'lossless' compression.</p>
+<p>When creating variables in a <code>NETCDF4</code> or <code>NETCDF4_CLASSIC</code> formatted file,
+HDF5 creates something called a 'chunk cache' for each variable.  The
+default size of the chunk cache may be large enough to completely fill
+available memory when creating thousands of variables.  The optional
+keyword <code>chunk_cache</code> allows you to reduce (or increase) the size of
+the default chunk cache when creating a variable.  The setting only
+persists as long as the Dataset is open - you can use the set_var_chunk_cache
+method to change it the next time the Dataset is opened.
+Warning - messing with this parameter can seriously degrade performance.</p>
+<p>The return value is the <a href="#netCDF4.Variable"><code>Variable</code></a> class instance describing the new
+variable.</p>
+<p>A list of names corresponding to netCDF variable attributes can be
+obtained with the <a href="#netCDF4.Variable"><code>Variable</code></a> method <a href="#netCDF4.Variable.ncattrs"><code>ncattrs</code></a>. A dictionary
+containing all the netCDF attribute name/value pairs is provided by
+the <code>__dict__</code> attribute of a <a href="#netCDF4.Variable"><code>Variable</code></a> instance.</p>
+<p><a href="#netCDF4.Variable"><code>Variable</code></a> instances behave much like array objects. Data can be
+assigned to or retrieved from a variable with indexing and slicing
+operations on the <a href="#netCDF4.Variable"><code>Variable</code></a> instance. A <a href="#netCDF4.Variable"><code>Variable</code></a> instance has six
+Dataset standard attributes: <code>dimensions, dtype, shape, ndim, name</code> and
+<code>least_significant_digit</code>. Application programs should never modify
+these attributes. The <code>dimensions</code> attribute is a tuple containing the
+names of the dimensions associated with this variable. The <code>dtype</code>
+attribute is a string describing the variable's data type (<code>i4, f8,
+S1,</code> etc). The <code>shape</code> attribute is a tuple describing the current
+sizes of all the variable's dimensions. The <code>name</code> attribute is a
+string containing the name of the Variable instance.
+The <code>least_significant_digit</code>
+attributes describes the power of ten of the smallest decimal place in
+the data the contains a reliable value.  assigned to the <a href="#netCDF4.Variable"><code>Variable</code></a>
+instance. If <code>None</code>, the data is not truncated. The <code>ndim</code> attribute
+is the number of variable dimensions.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.delncattr">
+    <p>def <span class="ident">delncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>delete a netCDF dataset or group attribute.  Use if you need to delete a
+netCDF attribute with the same name as one of the reserved python
+attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.filepath">
+    <p>def <span class="ident">filepath</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Get the file system path (or the opendap URL) which was used to
+open/create the Dataset. Requires netcdf >= 4.1.2</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.getncattr">
+    <p>def <span class="ident">getncattr</span>(</p><p>self,name)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>retrievel a netCDF dataset or group attribute.
+Use if you need to get a netCDF attribute with the same 
+name as one of the reserved python attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.ncattrs">
+    <p>def <span class="ident">ncattrs</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return netCDF global attribute names for this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> in a list.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.renameAttribute">
+    <p>def <span class="ident">renameAttribute</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>rename a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> attribute named <code>oldname</code> to <code>newname</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.renameDimension">
+    <p>def <span class="ident">renameDimension</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>rename a <a href="#netCDF4.Dimension"><code>Dimension</code></a> named <code>oldname</code> to <code>newname</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.renameGroup">
+    <p>def <span class="ident">renameGroup</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>rename a <a href="#netCDF4.Group"><code>Group</code></a> named <code>oldname</code> to <code>newname</code> (requires netcdf >= 4.3.1).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.renameVariable">
+    <p>def <span class="ident">renameVariable</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>rename a <a href="#netCDF4.Variable"><code>Variable</code></a> named <code>oldname</code> to <code>newname</code></p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.set_auto_mask">
+    <p>def <span class="ident">set_auto_mask</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Call <a href="#netCDF4.Variable.set_auto_mask"><code>set_auto_mask</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic conversion to masked arrays
+shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.set_auto_maskandscale">
+    <p>def <span class="ident">set_auto_maskandscale</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Call <a href="#netCDF4.Variable.set_auto_maskandscale"><code>set_auto_maskandscale</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic conversion to masked arrays
+and variable scaling shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.set_auto_scale">
+    <p>def <span class="ident">set_auto_scale</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Call <a href="#netCDF4.Variable.set_auto_scale"><code>set_auto_scale</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic variable scaling
+shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.set_fill_off">
+    <p>def <span class="ident">set_fill_off</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Sets the fill mode for a <a href="#netCDF4.Dataset"><code>Dataset</code></a> open for writing to <code>off</code>.</p>
+<p>This will prevent the data from being pre-filled with fill values, which
+may result in some performance improvements. However, you must then make
+sure the data is actually written before being read.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.set_fill_on">
+    <p>def <span class="ident">set_fill_on</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Sets the fill mode for a <a href="#netCDF4.Dataset"><code>Dataset</code></a> open for writing to <code>on</code>.</p>
+<p>This causes data to be pre-filled with fill values. The fill values can be
+controlled by the variable's <code>_Fill_Value</code> attribute, but is usually
+sufficient to the use the netCDF default <code>_Fill_Value</code> (defined
+separately for each variable type). The default behavior of the netCDF
+library correspongs to <code>set_fill_on</code>.  Data which are equal to the
+<code>_Fill_Value</code> indicate that the variable was created, but never written
+to.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.setncattr">
+    <p>def <span class="ident">setncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>set a netCDF dataset or group attribute using name,value pair.
+Use if you need to set a netCDF attribute with the
+with the same name as one of the reserved python attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.setncatts">
+    <p>def <span class="ident">setncatts</span>(</p><p>self,attdict)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>set a bunch of netCDF dataset or group attributes at once using a python dictionary.
+This may be faster when setting a lot of attributes for a <code>NETCDF3</code>
+formatted file, since nc_redef/nc_enddef is not called in between setting
+each attribute</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dataset.sync">
+    <p>def <span class="ident">sync</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Writes all buffered data in the <a href="#netCDF4.Dataset"><code>Dataset</code></a> to the disk file.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="netCDF4.Dimension" class="name">class <span class="ident">Dimension</span></p>
+      
+  
+    <div class="desc"><p>A netCDF <a href="#netCDF4.Dimension"><code>Dimension</code></a> is used to describe the coordinates of a <a href="#netCDF4.Variable"><code>Variable</code></a>.
+See <a href="#netCDF4.Dimension.__init__"><code>__init__</code></a> for more details.</p>
+<p>The current maximum size of a <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance can be obtained by
+calling the python <code>len</code> function on the <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance. The
+<a href="#netCDF4.Dimension.isunlimited"><code>isunlimited</code></a> method of a <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance can be used to
+determine if the dimension is unlimited.</p>
+<p>Read-only class variables:</p>
+<p><strong><code>name</code></strong>: String name, used when creating a <a href="#netCDF4.Variable"><code>Variable</code></a> with
+<a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a>.</p></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.Dimension">Dimension</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Class variables</h3>
+            <div class="item">
+            <p id="netCDF4.Dimension.name" class="name">var <span class="ident">name</span></p>
+            
+
+            
+  
+    <div class="desc"><p>A string describing the name of the <a href="#netCDF4.Dimension"><code>Dimension</code></a> - used when creating a
+<a href="#netCDF4.Variable"><code>Variable</code></a> instance with <a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+          <h3>Static methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dimension.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>self, group, name, size=None)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p><a href="#netCDF4.Dimension"><code>Dimension</code></a> constructor.</p>
+<p><strong><code>group</code></strong>: <a href="#netCDF4.Group"><code>Group</code></a> instance to associate with dimension.</p>
+<p><strong><code>name</code></strong>: Name of the dimension.</p>
+<p><strong><code>size</code></strong>: Size of the dimension. <code>None</code> or 0 means unlimited. (Default <code>None</code>).</p>
+<p><strong><em>Note</em></strong>: <a href="#netCDF4.Dimension"><code>Dimension</code></a> instances should be created using the
+<a href="#netCDF4.Dataset.createDimension"><code>createDimension</code></a> method of a <a href="#netCDF4.Group"><code>Group</code></a> or
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> instance, not using <a href="#netCDF4.Dimension.__init__"><code>__init__</code></a> directly.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dimension.group">
+    <p>def <span class="ident">group</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return the group that this <a href="#netCDF4.Dimension"><code>Dimension</code></a> is a member of.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Dimension.isunlimited">
+    <p>def <span class="ident">isunlimited</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>returns <code>True</code> if the <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance is unlimited, <code>False</code> otherwise.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="netCDF4.Group" class="name">class <span class="ident">Group</span></p>
+      
+  
+    <div class="desc"><p>Groups define a hierarchical namespace within a netCDF file. They are
+analagous to directories in a unix filesystem. Each <a href="#netCDF4.Group"><code>Group</code></a> behaves like
+a <a href="#netCDF4.Dataset"><code>Dataset</code></a> within a Dataset, and can contain it's own variables,
+dimensions and attributes (and other Groups). See <a href="#netCDF4.Group.__init__"><code>__init__</code></a>
+for more details.</p>
+<p><a href="#netCDF4.Group"><code>Group</code></a> inherits from <a href="#netCDF4.Dataset"><code>Dataset</code></a>, so all the 
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> class methods and variables are available
+to a <a href="#netCDF4.Group"><code>Group</code></a> instance (except the <code>close</code> method).</p>
+<p>Additional read-only class variables:</p>
+<p><strong><code>name</code></strong>: String describing the group name.</p></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.Group">Group</a></li>
+          <li><a href="#netCDF4.Dataset">Dataset</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Class variables</h3>
+            <div class="item">
+            <p id="netCDF4.Group.cmptypes" class="name">var <span class="ident">cmptypes</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.cmptypes">cmptypes</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>cmptypes</code> dictionary maps the names of
+compound types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.CompoundType"><code>CompoundType</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.data_model" class="name">var <span class="ident">data_model</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.data_model">data_model</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>data_model</code> describes the netCDF
+data model version, one of <code>NETCDF3_CLASSIC</code>, <code>NETCDF4</code>,
+<code>NETCDF4_CLASSIC</code> or <code>NETCDF3_64BIT</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.dimensions" class="name">var <span class="ident">dimensions</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.dimensions">dimensions</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>dimensions</code> dictionary maps the names of
+dimensions defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.Dimension"><code>Dimension</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.disk_format" class="name">var <span class="ident">disk_format</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.disk_format">disk_format</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>disk_format</code> describes the underlying
+file format, one of <code>NETCDF3</code>, <code>HDF5</code>, <code>HDF4</code>,
+<code>PNETCDF</code>, <code>DAP2</code>, <code>DAP4</code> or <code>UNDEFINED</code>. Only available if using
+netcdf C library version >= 4.3.1, otherwise will always return
+<code>UNDEFINED</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.file_format" class="name">var <span class="ident">file_format</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.file_format">file_format</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>same as <code>data_model</code>, retained for backwards compatibility.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.groups" class="name">var <span class="ident">groups</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.groups">groups</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The groups dictionary maps the names of groups created for
+this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the <a href="#netCDF4.Group"><code>Group</code></a> class (the
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> class is simply a special case of the <a href="#netCDF4.Group"><code>Group</code></a> class which
+describes the root group in the netCDF4 file).</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.keepweakref" class="name">var <span class="ident">keepweakref</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.keepweakref">keepweakref</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>If <code>True</code>, child Dimension and Variables objects only keep weak references to
+the parent Dataset or Group.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.name" class="name">var <span class="ident">name</span></p>
+            
+
+            
+  
+    <div class="desc"><p>A string describing the name of the <a href="#netCDF4.Group"><code>Group</code></a>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.parent" class="name">var <span class="ident">parent</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.parent">parent</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>parent</code> is a reference to the parent
+<a href="#netCDF4.Group"><code>Group</code></a> instance. <code>None</code> for a the root group or <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.path" class="name">var <span class="ident">path</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.path">path</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>path</code> shows the location of the <a href="#netCDF4.Group"><code>Group</code></a> in
+the <a href="#netCDF4.Dataset"><code>Dataset</code></a> in a unix directory format (the names of groups in the
+hierarchy separated by backslashes). A <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance is the root
+group, so the path is simply <code>'/'</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.variables" class="name">var <span class="ident">variables</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.variables">variables</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>variables</code> dictionary maps the names of variables
+defined for this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the <a href="#netCDF4.Variable"><code>Variable</code></a>
+class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Group.vltypes" class="name">var <span class="ident">vltypes</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.vltypes">vltypes</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>vltypes</code> dictionary maps the names of
+variable-length types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.VLType"><code>VLType</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+          <h3>Static methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>self, parent, name)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.__init__">__init__</a></code>
+    </p>
+
+    
+  
+    <div class="desc"><p><a href="#netCDF4.Group"><code>Group</code></a> constructor.</p>
+<p><strong><code>parent</code></strong>: <a href="#netCDF4.Group"><code>Group</code></a> instance for the parent group.  If being created
+in the root group, use a <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance.</p>
+<p><strong><code>name</code></strong>: - Name of the group.</p>
+<p><strong><em>Note</em></strong>: <a href="#netCDF4.Group"><code>Group</code></a> instances should be created using the
+<a href="#netCDF4.Dataset.createGroup"><code>createGroup</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance, or
+another <a href="#netCDF4.Group"><code>Group</code></a> instance, not using this class directly.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.close">
+    <p>def <span class="ident">close</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.close">close</a></code>
+    </p>
+
+    
+  
+    <div class="desc"><p>overrides <a href="#netCDF4.Dataset"><code>Dataset</code></a> close method which does not apply to <a href="#netCDF4.Group"><code>Group</code></a>
+instances, raises IOError.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.createCompoundType">
+    <p>def <span class="ident">createCompoundType</span>(</p><p>self, datatype, datatype_name)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createCompoundType">createCompoundType</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new compound data type named <code>datatype_name</code> from the numpy
+dtype object <code>datatype</code>.</p>
+<p><strong><em>Note</em></strong>: If the new compound data type contains other compound data types
+(i.e. it is a 'nested' compound type, where not all of the elements
+are homogenous numeric data types), then the 'inner' compound types <strong>must</strong> be
+created first.</p>
+<p>The return value is the <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> class instance describing the new
+datatype.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.createDimension">
+    <p>def <span class="ident">createDimension</span>(</p><p>self, dimname, size=None)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createDimension">createDimension</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new dimension with the given <code>dimname</code> and <code>size</code>.</p>
+<p><code>size</code> must be a positive integer or <code>None</code>, which stands for
+"unlimited" (default is <code>None</code>). Specifying a size of 0 also
+results in an unlimited dimension. The return value is the <a href="#netCDF4.Dimension"><code>Dimension</code></a>
+class instance describing the new dimension.  To determine the current
+maximum size of the dimension, use the <code>len</code> function on the <a href="#netCDF4.Dimension"><code>Dimension</code></a>
+instance. To determine if a dimension is 'unlimited', use the
+<a href="#netCDF4.Dimension.isunlimited"><code>isunlimited</code></a> method of the <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.createGroup">
+    <p>def <span class="ident">createGroup</span>(</p><p>self, groupname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createGroup">createGroup</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new <a href="#netCDF4.Group"><code>Group</code></a> with the given <code>groupname</code>.</p>
+<p>If <code>groupname</code> is specified as a path, using forward slashes as in unix to
+separate components, then intermediate groups will be created as necessary 
+(analagous to <code>mkdir -p</code> in unix).  For example,
+<code>createGroup('/GroupA/GroupB/GroupC')</code> will create <code>GroupA</code>,
+<code>GroupA/GroupB</code>, and <code>GroupA/GroupB/GroupC</code>, if they don't already exist.
+If the specified path describes a group that already exists, no error is
+raised.</p>
+<p>The return value is a <a href="#netCDF4.Group"><code>Group</code></a> class instance.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.createVLType">
+    <p>def <span class="ident">createVLType</span>(</p><p>self, datatype, datatype_name)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createVLType">createVLType</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new VLEN data type named <code>datatype_name</code> from a numpy
+dtype object <code>datatype</code>.</p>
+<p>The return value is the <a href="#netCDF4.VLType"><code>VLType</code></a> class instance describing the new
+datatype.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.createVariable">
+    <p>def <span class="ident">createVariable</span>(</p><p>self, varname, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None, fill_value=None)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createVariable">createVariable</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new variable with the given <code>varname</code>, <code>datatype</code>, and
+<code>dimensions</code>. If dimensions are not given, the variable is assumed to be
+a scalar.</p>
+<p>If <code>varname</code> is specified as a path, using forward slashes as in unix to
+separate components, then intermediate groups will be created as necessary 
+For example, <code>createVariable('/GroupA/GroupB/VarC'),('x','y'),float)</code> will create groups <code>GroupA</code>
+and <code>GroupA/GroupB</code>, plus the variable <code>GroupA/GroupB/VarC</code>, if the preceding
+groups don't already exist.</p>
+<p>The <code>datatype</code> can be a numpy datatype object, or a string that describes
+a numpy dtype object (like the <code>dtype.str</code> attribue of a numpy array).
+Supported specifiers include: <code>'S1' or 'c' (NC_CHAR), 'i1' or 'b' or 'B'
+(NC_BYTE), 'u1' (NC_UBYTE), 'i2' or 'h' or 's' (NC_SHORT), 'u2'
+(NC_USHORT), 'i4' or 'i' or 'l' (NC_INT), 'u4' (NC_UINT), 'i8' (NC_INT64),
+'u8' (NC_UINT64), 'f4' or 'f' (NC_FLOAT), 'f8' or 'd' (NC_DOUBLE)</code>.
+<code>datatype</code> can also be a <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> instance
+(for a structured, or compound array), a <a href="#netCDF4.VLType"><code>VLType</code></a> instance
+(for a variable-length array), or the python <code>str</code> builtin
+(for a variable-length string array). Numpy string and unicode datatypes with
+length greater than one are aliases for <code>str</code>.</p>
+<p>Data from netCDF variables is presented to python as numpy arrays with
+the corresponding data type.</p>
+<p><code>dimensions</code> must be a tuple containing dimension names (strings) that
+have been defined previously using <a href="#netCDF4.Dataset.createDimension"><code>createDimension</code></a>. The default value
+is an empty tuple, which means the variable is a scalar.</p>
+<p>If the optional keyword <code>zlib</code> is <code>True</code>, the data will be compressed in
+the netCDF file using gzip compression (default <code>False</code>).</p>
+<p>The optional keyword <code>complevel</code> is an integer between 1 and 9 describing
+the level of compression desired (default 4). Ignored if <code>zlib=False</code>.</p>
+<p>If the optional keyword <code>shuffle</code> is <code>True</code>, the HDF5 shuffle filter
+will be applied before compressing the data (default <code>True</code>).  This
+significantly improves compression. Default is <code>True</code>. Ignored if
+<code>zlib=False</code>.</p>
+<p>If the optional keyword <code>fletcher32</code> is <code>True</code>, the Fletcher32 HDF5
+checksum algorithm is activated to detect errors. Default <code>False</code>.</p>
+<p>If the optional keyword <code>contiguous</code> is <code>True</code>, the variable data is
+stored contiguously on disk.  Default <code>False</code>. Setting to <code>True</code> for
+a variable with an unlimited dimension will trigger an error.</p>
+<p>The optional keyword <code>chunksizes</code> can be used to manually specify the
+HDF5 chunksizes for each dimension of the variable. A detailed
+discussion of HDF chunking and I/O performance is available
+<a href="http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html">here</a>.
+Basically, you want the chunk size for each dimension to match as
+closely as possible the size of the data block that users will read
+from the file.  <code>chunksizes</code> cannot be set if <code>contiguous=True</code>.</p>
+<p>The optional keyword <code>endian</code> can be used to control whether the
+data is stored in little or big endian format on disk. Possible
+values are <code>little, big</code> or <code>native</code> (default). The library
+will automatically handle endian conversions when the data is read,
+but if the data is always going to be read on a computer with the
+opposite format as the one used to create the file, there may be
+some performance advantage to be gained by setting the endian-ness.</p>
+<p>The <code>zlib, complevel, shuffle, fletcher32, contiguous, chunksizes</code> and <code>endian</code>
+keywords are silently ignored for netCDF 3 files that do not use HDF5.</p>
+<p>The optional keyword <code>fill_value</code> can be used to override the default
+netCDF <code>_FillValue</code> (the value that the variable gets filled with before
+any data is written to it, defaults given in <code>netCDF4.default_fillvals</code>).
+If fill_value is set to <code>False</code>, then the variable is not pre-filled.</p>
+<p>If the optional keyword parameter <code>least_significant_digit</code> is
+specified, variable data will be truncated (quantized). In conjunction
+with <code>zlib=True</code> this produces 'lossy', but significantly more
+efficient compression. For example, if <code>least_significant_digit=1</code>,
+data will be quantized using <code>numpy.around(scale*data)/scale</code>, where
+scale = 2**bits, and bits is determined so that a precision of 0.1 is
+retained (in this case bits=4). From the 
+<a href="http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml">PSD metadata conventions</a>:
+"least_significant_digit -- power of ten of the smallest decimal place
+in unpacked data that is a reliable value." Default is <code>None</code>, or no
+quantization, or 'lossless' compression.</p>
+<p>When creating variables in a <code>NETCDF4</code> or <code>NETCDF4_CLASSIC</code> formatted file,
+HDF5 creates something called a 'chunk cache' for each variable.  The
+default size of the chunk cache may be large enough to completely fill
+available memory when creating thousands of variables.  The optional
+keyword <code>chunk_cache</code> allows you to reduce (or increase) the size of
+the default chunk cache when creating a variable.  The setting only
+persists as long as the Dataset is open - you can use the set_var_chunk_cache
+method to change it the next time the Dataset is opened.
+Warning - messing with this parameter can seriously degrade performance.</p>
+<p>The return value is the <a href="#netCDF4.Variable"><code>Variable</code></a> class instance describing the new
+variable.</p>
+<p>A list of names corresponding to netCDF variable attributes can be
+obtained with the <a href="#netCDF4.Variable"><code>Variable</code></a> method <a href="#netCDF4.Variable.ncattrs"><code>ncattrs</code></a>. A dictionary
+containing all the netCDF attribute name/value pairs is provided by
+the <code>__dict__</code> attribute of a <a href="#netCDF4.Variable"><code>Variable</code></a> instance.</p>
+<p><a href="#netCDF4.Variable"><code>Variable</code></a> instances behave much like array objects. Data can be
+assigned to or retrieved from a variable with indexing and slicing
+operations on the <a href="#netCDF4.Variable"><code>Variable</code></a> instance. A <a href="#netCDF4.Variable"><code>Variable</code></a> instance has six
+Dataset standard attributes: <code>dimensions, dtype, shape, ndim, name</code> and
+<code>least_significant_digit</code>. Application programs should never modify
+these attributes. The <code>dimensions</code> attribute is a tuple containing the
+names of the dimensions associated with this variable. The <code>dtype</code>
+attribute is a string describing the variable's data type (<code>i4, f8,
+S1,</code> etc). The <code>shape</code> attribute is a tuple describing the current
+sizes of all the variable's dimensions. The <code>name</code> attribute is a
+string containing the name of the Variable instance.
+The <code>least_significant_digit</code>
+attributes describes the power of ten of the smallest decimal place in
+the data the contains a reliable value.  assigned to the <a href="#netCDF4.Variable"><code>Variable</code></a>
+instance. If <code>None</code>, the data is not truncated. The <code>ndim</code> attribute
+is the number of variable dimensions.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.delncattr">
+    <p>def <span class="ident">delncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.delncattr">delncattr</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>delete a netCDF dataset or group attribute.  Use if you need to delete a
+netCDF attribute with the same name as one of the reserved python
+attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.filepath">
+    <p>def <span class="ident">filepath</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.filepath">filepath</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Get the file system path (or the opendap URL) which was used to
+open/create the Dataset. Requires netcdf >= 4.1.2</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.getncattr">
+    <p>def <span class="ident">getncattr</span>(</p><p>self,name)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.getncattr">getncattr</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>retrievel a netCDF dataset or group attribute.
+Use if you need to get a netCDF attribute with the same 
+name as one of the reserved python attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.ncattrs">
+    <p>def <span class="ident">ncattrs</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.ncattrs">ncattrs</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>return netCDF global attribute names for this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> in a list.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.renameAttribute">
+    <p>def <span class="ident">renameAttribute</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameAttribute">renameAttribute</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> attribute named <code>oldname</code> to <code>newname</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.renameDimension">
+    <p>def <span class="ident">renameDimension</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameDimension">renameDimension</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Dimension"><code>Dimension</code></a> named <code>oldname</code> to <code>newname</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.renameGroup">
+    <p>def <span class="ident">renameGroup</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameGroup">renameGroup</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Group"><code>Group</code></a> named <code>oldname</code> to <code>newname</code> (requires netcdf >= 4.3.1).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.renameVariable">
+    <p>def <span class="ident">renameVariable</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameVariable">renameVariable</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Variable"><code>Variable</code></a> named <code>oldname</code> to <code>newname</code></p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.set_auto_mask">
+    <p>def <span class="ident">set_auto_mask</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_auto_mask">set_auto_mask</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Call <a href="#netCDF4.Variable.set_auto_mask"><code>set_auto_mask</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic conversion to masked arrays
+shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.set_auto_maskandscale">
+    <p>def <span class="ident">set_auto_maskandscale</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_auto_maskandscale">set_auto_maskandscale</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Call <a href="#netCDF4.Variable.set_auto_maskandscale"><code>set_auto_maskandscale</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic conversion to masked arrays
+and variable scaling shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.set_auto_scale">
+    <p>def <span class="ident">set_auto_scale</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_auto_scale">set_auto_scale</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Call <a href="#netCDF4.Variable.set_auto_scale"><code>set_auto_scale</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic variable scaling
+shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.set_fill_off">
+    <p>def <span class="ident">set_fill_off</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_fill_off">set_fill_off</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Sets the fill mode for a <a href="#netCDF4.Dataset"><code>Dataset</code></a> open for writing to <code>off</code>.</p>
+<p>This will prevent the data from being pre-filled with fill values, which
+may result in some performance improvements. However, you must then make
+sure the data is actually written before being read.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.set_fill_on">
+    <p>def <span class="ident">set_fill_on</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_fill_on">set_fill_on</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Sets the fill mode for a <a href="#netCDF4.Dataset"><code>Dataset</code></a> open for writing to <code>on</code>.</p>
+<p>This causes data to be pre-filled with fill values. The fill values can be
+controlled by the variable's <code>_Fill_Value</code> attribute, but is usually
+sufficient to the use the netCDF default <code>_Fill_Value</code> (defined
+separately for each variable type). The default behavior of the netCDF
+library correspongs to <code>set_fill_on</code>.  Data which are equal to the
+<code>_Fill_Value</code> indicate that the variable was created, but never written
+to.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.setncattr">
+    <p>def <span class="ident">setncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.setncattr">setncattr</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>set a netCDF dataset or group attribute using name,value pair.
+Use if you need to set a netCDF attribute with the
+with the same name as one of the reserved python attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.setncatts">
+    <p>def <span class="ident">setncatts</span>(</p><p>self,attdict)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.setncatts">setncatts</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>set a bunch of netCDF dataset or group attributes at once using a python dictionary.
+This may be faster when setting a lot of attributes for a <code>NETCDF3</code>
+formatted file, since nc_redef/nc_enddef is not called in between setting
+each attribute</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Group.sync">
+    <p>def <span class="ident">sync</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.sync">sync</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Writes all buffered data in the <a href="#netCDF4.Dataset"><code>Dataset</code></a> to the disk file.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="netCDF4.MFDataset" class="name">class <span class="ident">MFDataset</span></p>
+      
+  
+    <div class="desc"><p>Class for reading multi-file netCDF Datasets, making variables
+spanning multiple files appear as if they were in one file.
+Datasets must be in <code>NETCDF4_CLASSIC, NETCDF3_CLASSIC or NETCDF3_64BIT</code>
+format (<code>NETCDF4</code> Datasets won't work).</p>
+<p>Adapted from <a href="http://pysclint.sourceforge.net/pycdf">pycdf</a> by Andre Gosselin.</p>
+<p>Example usage (See <a href="#netCDF4.MFDataset.__init__"><code>__init__</code></a> for more details):</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="kn">import</span> <span class="nn">numpy</span>
+<span class="o">>>></span> <span class="c"># create a series of netCDF files with a variable sharing</span>
+<span class="o">>>></span> <span class="c"># the same unlimited dimension.</span>
+<span class="o">>>></span> <span class="k">for</span> <span class="n">nf</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span>
+<span class="o">>>></span>     <span class="n">f</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"mftest</span><span class="si">%s</span><span class="s">.nc"</span> <span class="o">%</span> <span class="n">nf</span><span class="p">,</span><span class="s">"w"</span><span class="p">)</span>
+<span class="o">>>></span>     <span class="n">f</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"x"</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
+<span class="o">>>></span>     <span class="n">x</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"x"</span><span class="p">,</span><span class="s">"i"</span><span class="p">,(</span><span class="s">"x"</span><span class="p">,))</span>
+<span class="o">>>></span>     <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">nf</span><span class="o">*</span><span class="mi">10</span><span class="p">,</span><span class="mi">10</span><span class="o">*</span><span class="p">(</span>< [...]
+<span class="o">>>></span>     <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+<span class="o">>>></span> <span class="c"># now read all those files in at once, in one Dataset.</span>
+<span class="o">>>></span> <span class="n">f</span> <span class="o">=</span> <span class="n">MFDataset</span><span class="p">(</span><span class="s">"mftest*nc"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">f</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="s">"x"</span><span class="p">][:]</span>
+<span class="p">[</span> <span class="mi">0</span>  <span class="mi">1</span>  <span class="mi">2</span>  <span class="mi">3</span>  <span class="mi">4</span>  <span class="mi">5</span>  <span class="mi">6</span>  <span class="mi">7</span>  <span class="mi">8</span>  <span class="mi">9</span> <span class="mi">10</span> <span class="mi">11</span> <span class="mi">12</span> <span class="mi">13</span> <span class="mi">14</span> <span class="mi">15</span> <span class="mi">16</span> <span cla [...]
+ <span class="mi">25</span> <span class="mi">26</span> <span class="mi">27</span> <span class="mi">28</span> <span class="mi">29</span> <span class="mi">30</span> <span class="mi">31</span> <span class="mi">32</span> <span class="mi">33</span> <span class="mi">34</span> <span class="mi">35</span> <span class="mi">36</span> <span class="mi">37</span> <span class="mi">38</span> <span class="mi">39</span> <span class="mi">40</span> <span class="mi">41</span> <span class="mi">42</span> <span [...]
+ <span class="mi">50</span> <span class="mi">51</span> <span class="mi">52</span> <span class="mi">53</span> <span class="mi">54</span> <span class="mi">55</span> <span class="mi">56</span> <span class="mi">57</span> <span class="mi">58</span> <span class="mi">59</span> <span class="mi">60</span> <span class="mi">61</span> <span class="mi">62</span> <span class="mi">63</span> <span class="mi">64</span> <span class="mi">65</span> <span class="mi">66</span> <span class="mi">67</span> <span [...]
+ <span class="mi">75</span> <span class="mi">76</span> <span class="mi">77</span> <span class="mi">78</span> <span class="mi">79</span> <span class="mi">80</span> <span class="mi">81</span> <span class="mi">82</span> <span class="mi">83</span> <span class="mi">84</span> <span class="mi">85</span> <span class="mi">86</span> <span class="mi">87</span> <span class="mi">88</span> <span class="mi">89</span> <span class="mi">90</span> <span class="mi">91</span> <span class="mi">92</span> <span [...]
+</pre></div></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.MFDataset">MFDataset</a></li>
+          <li><a href="#netCDF4.Dataset">Dataset</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Class variables</h3>
+            <div class="item">
+            <p id="netCDF4.MFDataset.cmptypes" class="name">var <span class="ident">cmptypes</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.cmptypes">cmptypes</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>cmptypes</code> dictionary maps the names of
+compound types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.CompoundType"><code>CompoundType</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.data_model" class="name">var <span class="ident">data_model</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.data_model">data_model</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>data_model</code> describes the netCDF
+data model version, one of <code>NETCDF3_CLASSIC</code>, <code>NETCDF4</code>,
+<code>NETCDF4_CLASSIC</code> or <code>NETCDF3_64BIT</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.dimensions" class="name">var <span class="ident">dimensions</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.dimensions">dimensions</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>dimensions</code> dictionary maps the names of
+dimensions defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.Dimension"><code>Dimension</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.disk_format" class="name">var <span class="ident">disk_format</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.disk_format">disk_format</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>disk_format</code> describes the underlying
+file format, one of <code>NETCDF3</code>, <code>HDF5</code>, <code>HDF4</code>,
+<code>PNETCDF</code>, <code>DAP2</code>, <code>DAP4</code> or <code>UNDEFINED</code>. Only available if using
+netcdf C library version >= 4.3.1, otherwise will always return
+<code>UNDEFINED</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.file_format" class="name">var <span class="ident">file_format</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.file_format">file_format</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>same as <code>data_model</code>, retained for backwards compatibility.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.groups" class="name">var <span class="ident">groups</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.groups">groups</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The groups dictionary maps the names of groups created for
+this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the <a href="#netCDF4.Group"><code>Group</code></a> class (the
+<a href="#netCDF4.Dataset"><code>Dataset</code></a> class is simply a special case of the <a href="#netCDF4.Group"><code>Group</code></a> class which
+describes the root group in the netCDF4 file).</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.keepweakref" class="name">var <span class="ident">keepweakref</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.keepweakref">keepweakref</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>If <code>True</code>, child Dimension and Variables objects only keep weak references to
+the parent Dataset or Group.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.parent" class="name">var <span class="ident">parent</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.parent">parent</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>parent</code> is a reference to the parent
+<a href="#netCDF4.Group"><code>Group</code></a> instance. <code>None</code> for a the root group or <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.path" class="name">var <span class="ident">path</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.path">path</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p><code>path</code> shows the location of the <a href="#netCDF4.Group"><code>Group</code></a> in
+the <a href="#netCDF4.Dataset"><code>Dataset</code></a> in a unix directory format (the names of groups in the
+hierarchy separated by backslashes). A <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance is the root
+group, so the path is simply <code>'/'</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.variables" class="name">var <span class="ident">variables</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.variables">variables</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>variables</code> dictionary maps the names of variables
+defined for this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> to instances of the <a href="#netCDF4.Variable"><code>Variable</code></a>
+class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.MFDataset.vltypes" class="name">var <span class="ident">vltypes</span></p>
+            
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.vltypes">vltypes</a></code>
+    </p>
+
+            
+  
+    <div class="desc inherited"><p>The <code>vltypes</code> dictionary maps the names of
+variable-length types defined for the <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> to instances of the
+<a href="#netCDF4.VLType"><code>VLType</code></a> class.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+          <h3>Static methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.createCompoundType">
+    <p>def <span class="ident">createCompoundType</span>(</p><p>self, datatype, datatype_name)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createCompoundType">createCompoundType</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new compound data type named <code>datatype_name</code> from the numpy
+dtype object <code>datatype</code>.</p>
+<p><strong><em>Note</em></strong>: If the new compound data type contains other compound data types
+(i.e. it is a 'nested' compound type, where not all of the elements
+are homogenous numeric data types), then the 'inner' compound types <strong>must</strong> be
+created first.</p>
+<p>The return value is the <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> class instance describing the new
+datatype.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.createDimension">
+    <p>def <span class="ident">createDimension</span>(</p><p>self, dimname, size=None)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createDimension">createDimension</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new dimension with the given <code>dimname</code> and <code>size</code>.</p>
+<p><code>size</code> must be a positive integer or <code>None</code>, which stands for
+"unlimited" (default is <code>None</code>). Specifying a size of 0 also
+results in an unlimited dimension. The return value is the <a href="#netCDF4.Dimension"><code>Dimension</code></a>
+class instance describing the new dimension.  To determine the current
+maximum size of the dimension, use the <code>len</code> function on the <a href="#netCDF4.Dimension"><code>Dimension</code></a>
+instance. To determine if a dimension is 'unlimited', use the
+<a href="#netCDF4.Dimension.isunlimited"><code>isunlimited</code></a> method of the <a href="#netCDF4.Dimension"><code>Dimension</code></a> instance.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.createGroup">
+    <p>def <span class="ident">createGroup</span>(</p><p>self, groupname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createGroup">createGroup</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new <a href="#netCDF4.Group"><code>Group</code></a> with the given <code>groupname</code>.</p>
+<p>If <code>groupname</code> is specified as a path, using forward slashes as in unix to
+separate components, then intermediate groups will be created as necessary 
+(analagous to <code>mkdir -p</code> in unix).  For example,
+<code>createGroup('/GroupA/GroupB/GroupC')</code> will create <code>GroupA</code>,
+<code>GroupA/GroupB</code>, and <code>GroupA/GroupB/GroupC</code>, if they don't already exist.
+If the specified path describes a group that already exists, no error is
+raised.</p>
+<p>The return value is a <a href="#netCDF4.Group"><code>Group</code></a> class instance.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.createVLType">
+    <p>def <span class="ident">createVLType</span>(</p><p>self, datatype, datatype_name)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createVLType">createVLType</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new VLEN data type named <code>datatype_name</code> from a numpy
+dtype object <code>datatype</code>.</p>
+<p>The return value is the <a href="#netCDF4.VLType"><code>VLType</code></a> class instance describing the new
+datatype.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.createVariable">
+    <p>def <span class="ident">createVariable</span>(</p><p>self, varname, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None, fill_value=None)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.createVariable">createVariable</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Creates a new variable with the given <code>varname</code>, <code>datatype</code>, and
+<code>dimensions</code>. If dimensions are not given, the variable is assumed to be
+a scalar.</p>
+<p>If <code>varname</code> is specified as a path, using forward slashes as in unix to
+separate components, then intermediate groups will be created as necessary 
+For example, <code>createVariable('/GroupA/GroupB/VarC'),('x','y'),float)</code> will create groups <code>GroupA</code>
+and <code>GroupA/GroupB</code>, plus the variable <code>GroupA/GroupB/VarC</code>, if the preceding
+groups don't already exist.</p>
+<p>The <code>datatype</code> can be a numpy datatype object, or a string that describes
+a numpy dtype object (like the <code>dtype.str</code> attribue of a numpy array).
+Supported specifiers include: <code>'S1' or 'c' (NC_CHAR), 'i1' or 'b' or 'B'
+(NC_BYTE), 'u1' (NC_UBYTE), 'i2' or 'h' or 's' (NC_SHORT), 'u2'
+(NC_USHORT), 'i4' or 'i' or 'l' (NC_INT), 'u4' (NC_UINT), 'i8' (NC_INT64),
+'u8' (NC_UINT64), 'f4' or 'f' (NC_FLOAT), 'f8' or 'd' (NC_DOUBLE)</code>.
+<code>datatype</code> can also be a <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> instance
+(for a structured, or compound array), a <a href="#netCDF4.VLType"><code>VLType</code></a> instance
+(for a variable-length array), or the python <code>str</code> builtin
+(for a variable-length string array). Numpy string and unicode datatypes with
+length greater than one are aliases for <code>str</code>.</p>
+<p>Data from netCDF variables is presented to python as numpy arrays with
+the corresponding data type.</p>
+<p><code>dimensions</code> must be a tuple containing dimension names (strings) that
+have been defined previously using <a href="#netCDF4.Dataset.createDimension"><code>createDimension</code></a>. The default value
+is an empty tuple, which means the variable is a scalar.</p>
+<p>If the optional keyword <code>zlib</code> is <code>True</code>, the data will be compressed in
+the netCDF file using gzip compression (default <code>False</code>).</p>
+<p>The optional keyword <code>complevel</code> is an integer between 1 and 9 describing
+the level of compression desired (default 4). Ignored if <code>zlib=False</code>.</p>
+<p>If the optional keyword <code>shuffle</code> is <code>True</code>, the HDF5 shuffle filter
+will be applied before compressing the data (default <code>True</code>).  This
+significantly improves compression. Default is <code>True</code>. Ignored if
+<code>zlib=False</code>.</p>
+<p>If the optional keyword <code>fletcher32</code> is <code>True</code>, the Fletcher32 HDF5
+checksum algorithm is activated to detect errors. Default <code>False</code>.</p>
+<p>If the optional keyword <code>contiguous</code> is <code>True</code>, the variable data is
+stored contiguously on disk.  Default <code>False</code>. Setting to <code>True</code> for
+a variable with an unlimited dimension will trigger an error.</p>
+<p>The optional keyword <code>chunksizes</code> can be used to manually specify the
+HDF5 chunksizes for each dimension of the variable. A detailed
+discussion of HDF chunking and I/O performance is available
+<a href="http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html">here</a>.
+Basically, you want the chunk size for each dimension to match as
+closely as possible the size of the data block that users will read
+from the file.  <code>chunksizes</code> cannot be set if <code>contiguous=True</code>.</p>
+<p>The optional keyword <code>endian</code> can be used to control whether the
+data is stored in little or big endian format on disk. Possible
+values are <code>little, big</code> or <code>native</code> (default). The library
+will automatically handle endian conversions when the data is read,
+but if the data is always going to be read on a computer with the
+opposite format as the one used to create the file, there may be
+some performance advantage to be gained by setting the endian-ness.</p>
+<p>The <code>zlib, complevel, shuffle, fletcher32, contiguous, chunksizes</code> and <code>endian</code>
+keywords are silently ignored for netCDF 3 files that do not use HDF5.</p>
+<p>The optional keyword <code>fill_value</code> can be used to override the default
+netCDF <code>_FillValue</code> (the value that the variable gets filled with before
+any data is written to it, defaults given in <code>netCDF4.default_fillvals</code>).
+If fill_value is set to <code>False</code>, then the variable is not pre-filled.</p>
+<p>If the optional keyword parameter <code>least_significant_digit</code> is
+specified, variable data will be truncated (quantized). In conjunction
+with <code>zlib=True</code> this produces 'lossy', but significantly more
+efficient compression. For example, if <code>least_significant_digit=1</code>,
+data will be quantized using <code>numpy.around(scale*data)/scale</code>, where
+scale = 2**bits, and bits is determined so that a precision of 0.1 is
+retained (in this case bits=4). From the 
+<a href="http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml">PSD metadata conventions</a>:
+"least_significant_digit -- power of ten of the smallest decimal place
+in unpacked data that is a reliable value." Default is <code>None</code>, or no
+quantization, or 'lossless' compression.</p>
+<p>When creating variables in a <code>NETCDF4</code> or <code>NETCDF4_CLASSIC</code> formatted file,
+HDF5 creates something called a 'chunk cache' for each variable.  The
+default size of the chunk cache may be large enough to completely fill
+available memory when creating thousands of variables.  The optional
+keyword <code>chunk_cache</code> allows you to reduce (or increase) the size of
+the default chunk cache when creating a variable.  The setting only
+persists as long as the Dataset is open - you can use the set_var_chunk_cache
+method to change it the next time the Dataset is opened.
+Warning - messing with this parameter can seriously degrade performance.</p>
+<p>The return value is the <a href="#netCDF4.Variable"><code>Variable</code></a> class instance describing the new
+variable.</p>
+<p>A list of names corresponding to netCDF variable attributes can be
+obtained with the <a href="#netCDF4.Variable"><code>Variable</code></a> method <a href="#netCDF4.Variable.ncattrs"><code>ncattrs</code></a>. A dictionary
+containing all the netCDF attribute name/value pairs is provided by
+the <code>__dict__</code> attribute of a <a href="#netCDF4.Variable"><code>Variable</code></a> instance.</p>
+<p><a href="#netCDF4.Variable"><code>Variable</code></a> instances behave much like array objects. Data can be
+assigned to or retrieved from a variable with indexing and slicing
+operations on the <a href="#netCDF4.Variable"><code>Variable</code></a> instance. A <a href="#netCDF4.Variable"><code>Variable</code></a> instance has six
+Dataset standard attributes: <code>dimensions, dtype, shape, ndim, name</code> and
+<code>least_significant_digit</code>. Application programs should never modify
+these attributes. The <code>dimensions</code> attribute is a tuple containing the
+names of the dimensions associated with this variable. The <code>dtype</code>
+attribute is a string describing the variable's data type (<code>i4, f8,
+S1,</code> etc). The <code>shape</code> attribute is a tuple describing the current
+sizes of all the variable's dimensions. The <code>name</code> attribute is a
+string containing the name of the Variable instance.
+The <code>least_significant_digit</code>
+attributes describes the power of ten of the smallest decimal place in
+the data the contains a reliable value.  assigned to the <a href="#netCDF4.Variable"><code>Variable</code></a>
+instance. If <code>None</code>, the data is not truncated. The <code>ndim</code> attribute
+is the number of variable dimensions.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.delncattr">
+    <p>def <span class="ident">delncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.delncattr">delncattr</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>delete a netCDF dataset or group attribute.  Use if you need to delete a
+netCDF attribute with the same name as one of the reserved python
+attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.filepath">
+    <p>def <span class="ident">filepath</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.filepath">filepath</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Get the file system path (or the opendap URL) which was used to
+open/create the Dataset. Requires netcdf >= 4.1.2</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.getncattr">
+    <p>def <span class="ident">getncattr</span>(</p><p>self,name)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.getncattr">getncattr</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>retrievel a netCDF dataset or group attribute.
+Use if you need to get a netCDF attribute with the same 
+name as one of the reserved python attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.renameAttribute">
+    <p>def <span class="ident">renameAttribute</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameAttribute">renameAttribute</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> attribute named <code>oldname</code> to <code>newname</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.renameDimension">
+    <p>def <span class="ident">renameDimension</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameDimension">renameDimension</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Dimension"><code>Dimension</code></a> named <code>oldname</code> to <code>newname</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.renameGroup">
+    <p>def <span class="ident">renameGroup</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameGroup">renameGroup</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Group"><code>Group</code></a> named <code>oldname</code> to <code>newname</code> (requires netcdf >= 4.3.1).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.renameVariable">
+    <p>def <span class="ident">renameVariable</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.renameVariable">renameVariable</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>rename a <a href="#netCDF4.Variable"><code>Variable</code></a> named <code>oldname</code> to <code>newname</code></p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.set_auto_mask">
+    <p>def <span class="ident">set_auto_mask</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_auto_mask">set_auto_mask</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Call <a href="#netCDF4.Variable.set_auto_mask"><code>set_auto_mask</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic conversion to masked arrays
+shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.set_auto_maskandscale">
+    <p>def <span class="ident">set_auto_maskandscale</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_auto_maskandscale">set_auto_maskandscale</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Call <a href="#netCDF4.Variable.set_auto_maskandscale"><code>set_auto_maskandscale</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic conversion to masked arrays
+and variable scaling shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.set_auto_scale">
+    <p>def <span class="ident">set_auto_scale</span>(</p><p>self, True_or_False)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_auto_scale">set_auto_scale</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Call <a href="#netCDF4.Variable.set_auto_scale"><code>set_auto_scale</code></a> for all variables contained in this <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a>, as well as for all variables in all its subgroups.</p>
+<p><strong><code>True_or_False</code></strong>: Boolean determining if automatic variable scaling
+shall be applied for all variables.</p>
+<p><strong><em>Note</em></strong>: Calling this function only affects existing variables. Variables created
+after calling this function will follow the default behaviour.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.set_fill_off">
+    <p>def <span class="ident">set_fill_off</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_fill_off">set_fill_off</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Sets the fill mode for a <a href="#netCDF4.Dataset"><code>Dataset</code></a> open for writing to <code>off</code>.</p>
+<p>This will prevent the data from being pre-filled with fill values, which
+may result in some performance improvements. However, you must then make
+sure the data is actually written before being read.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.set_fill_on">
+    <p>def <span class="ident">set_fill_on</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.set_fill_on">set_fill_on</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Sets the fill mode for a <a href="#netCDF4.Dataset"><code>Dataset</code></a> open for writing to <code>on</code>.</p>
+<p>This causes data to be pre-filled with fill values. The fill values can be
+controlled by the variable's <code>_Fill_Value</code> attribute, but is usually
+sufficient to the use the netCDF default <code>_Fill_Value</code> (defined
+separately for each variable type). The default behavior of the netCDF
+library correspongs to <code>set_fill_on</code>.  Data which are equal to the
+<code>_Fill_Value</code> indicate that the variable was created, but never written
+to.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.setncattr">
+    <p>def <span class="ident">setncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.setncattr">setncattr</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>set a netCDF dataset or group attribute using name,value pair.
+Use if you need to set a netCDF attribute with the
+with the same name as one of the reserved python attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.setncatts">
+    <p>def <span class="ident">setncatts</span>(</p><p>self,attdict)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.setncatts">setncatts</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>set a bunch of netCDF dataset or group attributes at once using a python dictionary.
+This may be faster when setting a lot of attributes for a <code>NETCDF3</code>
+formatted file, since nc_redef/nc_enddef is not called in between setting
+each attribute</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.sync">
+    <p>def <span class="ident">sync</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.sync">sync</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Writes all buffered data in the <a href="#netCDF4.Dataset"><code>Dataset</code></a> to the disk file.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+          <h3>Methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>self, files, check=False, aggdim=None, exclude=[])</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.__init__">__init__</a></code>
+    </p>
+
+    
+  
+    <div class="desc"><p>Open a Dataset spanning multiple files, making it look as if it was a
+single file. Variables in the list of files that share the same
+dimension (specified with the keyword <code>aggdim</code>) are aggregated. If
+<code>aggdim</code> is not specified, the unlimited is aggregated.  Currently,
+<code>aggdim</code> must be the leftmost (slowest varying) dimension of each
+of the variables to be aggregated.</p>
+<p><strong><code>files</code></strong>: either a sequence of netCDF files or a string with a
+wildcard (converted to a sorted list of files using glob)  The first file
+in the list will become the "master" file, defining all the
+variables with an aggregation dimension which may span
+subsequent files. Attribute access returns attributes only from "master"
+file. The files are always opened in read-only mode.</p>
+<p><strong><code>check</code></strong>: True if you want to do consistency checking to ensure the
+correct variables structure for all of the netcdf files.  Checking makes
+the initialization of the MFDataset instance much slower. Default is
+False.</p>
+<p><strong><code>aggdim</code></strong>: The name of the dimension to aggregate over (must
+be the leftmost dimension of each of the variables to be aggregated).
+If None (default), aggregate over the unlimited dimension.</p>
+<p><strong><code>exclude</code></strong>: A list of variable names to exclude from aggregation.
+Default is an empty list.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.close">
+    <p>def <span class="ident">close</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.close">close</a></code>
+    </p>
+
+    
+  
+    <div class="desc"><p>close all the open files.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFDataset.ncattrs">
+    <p>def <span class="ident">ncattrs</span>(</p><p>self)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#netCDF4.Dataset">Dataset</a></code>.<code><a href="#netCDF4.Dataset.ncattrs">ncattrs</a></code>
+    </p>
+
+    
+  
+    <div class="desc"><p>return the netcdf attribute names from the master file.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="netCDF4.MFTime" class="name">class <span class="ident">MFTime</span></p>
+      
+  
+    <div class="desc"><p>Class providing an interface to a MFDataset time Variable by imposing a unique common
+time unit to all files. </p>
+<p>Example usage (See <a href="#netCDF4.MFTime.__init__"><code>__init__</code></a> for more details):</p>
+<div class="codehilite"><pre><span class="o">>>></span> <span class="kn">import</span> <span class="nn">numpy</span>
+<span class="o">>>></span> <span class="n">f1</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"mftest_1.nc"</span><span class="p">,</span><span class="s">"w"</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="s">"NETCDF4_CLASSIC"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">f2</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s">"mftest_2.nc"</span><span class="p">,</span><span class="s">"w"</span><span class="p">,</span> <span class="n">format</span><span class="o">=</span><span class="s">"NETCDF4_CLASSIC"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">f1</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">f2</span><span class="o">.</span><span class="n">createDimension</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">t1</span> <span class="o">=</span> <span class="n">f1</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"i"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,))</span>
+<span class="o">>>></span> <span class="n">t2</span> <span class="o">=</span> <span class="n">f2</span><span class="o">.</span><span class="n">createVariable</span><span class="p">(</span><span class="s">"time"</span><span class="p">,</span><span class="s">"i"</span><span class="p">,(</span><span class="s">"time"</span><span class="p">,))</span>
+<span class="o">>>></span> <span class="n">t1</span><span class="o">.</span><span class="n">units</span> <span class="o">=</span> <span class="s">"days since 2000-01-01"</span>
+<span class="o">>>></span> <span class="n">t2</span><span class="o">.</span><span class="n">units</span> <span class="o">=</span> <span class="s">"days since 2000-02-01"</span>
+<span class="o">>>></span> <span class="n">t1</span><span class="o">.</span><span class="n">calendar</span> <span class="o">=</span> <span class="s">"standard"</span>
+<span class="o">>>></span> <span class="n">t2</span><span class="o">.</span><span class="n">calendar</span> <span class="o">=</span> <span class="s">"standard"</span>
+<span class="o">>>></span> <span class="n">t1</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">31</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">t2</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">30</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">f1</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+<span class="o">>>></span> <span class="n">f2</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+<span class="o">>>></span> <span class="c"># Read the two files in at once, in one Dataset.</span>
+<span class="o">>>></span> <span class="n">f</span> <span class="o">=</span> <span class="n">MFDataset</span><span class="p">(</span><span class="s">"mftest*nc"</span><span class="p">)</span>
+<span class="o">>>></span> <span class="n">t</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">variables</span><span class="p">[</span><span class="s">"time"</span><span class="p">]</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">t</span><span class="o">.</span><span class="n">units</span>
+<span class="n">days</span> <span class="n">since</span> <span class="mi">2000</span><span class="o">-</span><span class="mo">01</span><span class="o">-</span><span class="mo">01</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">t</span><span class="p">[</span><span class="mi">32</span><span class="p">]</span> <span class="c"># The value written in the file, inconsistent with the MF time units.</span>
+<span class="mi">1</span>
+<span class="o">>>></span> <span class="n">T</span> <span class="o">=</span> <span class="n">MFTime</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
+<span class="o">>>></span> <span class="k">print</span> <span class="n">T</span><span class="p">[</span><span class="mi">32</span><span class="p">]</span>
+<span class="mi">32</span>
+</pre></div></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.MFTime">MFTime</a></li>
+          <li>netCDF4._netCDF4._Variable</li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFTime.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>self, time, units=None)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Create a time Variable with units consistent across a multifile
+dataset.</p>
+<p><strong><code>time</code></strong>: Time variable from a <a href="#netCDF4.MFDataset"><code>MFDataset</code></a>.</p>
+<p><strong><code>units</code></strong>: Time units, for example, <code>days since 1979-01-01</code>. If None, use
+the units from the master variable.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFTime.ncattrs">
+    <p>def <span class="ident">ncattrs</span>(</p><p>...)</p>
+    </div>
+    
+
+    
+  
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFTime.set_auto_maskandscale">
+    <p>def <span class="ident">set_auto_maskandscale</span>(</p><p>...)</p>
+    </div>
+    
+
+    
+  
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.MFTime.typecode">
+    <p>def <span class="ident">typecode</span>(</p><p>...)</p>
+    </div>
+    
+
+    
+  
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="netCDF4.VLType" class="name">class <span class="ident">VLType</span></p>
+      
+  
+    <div class="desc"><p>A <a href="#netCDF4.VLType"><code>VLType</code></a> instance is used to describe a variable length (VLEN) data
+type, and can be passed to the the <a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> method of
+a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance. See 
+<a href="#netCDF4.VLType.__init__"><code>__init__</code></a> for more details.</p>
+<p>The instance variables <code>dtype</code> and <code>name</code> should not be modified by
+the user.</p></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.VLType">VLType</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Class variables</h3>
+            <div class="item">
+            <p id="netCDF4.VLType.dtype" class="name">var <span class="ident">dtype</span></p>
+            
+
+            
+  
+    <div class="desc"><p>A numpy dtype object describing the component type for the VLEN.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.VLType.name" class="name">var <span class="ident">name</span></p>
+            
+
+            
+  
+    <div class="desc"><p>String name.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+          <h3>Static methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.VLType.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>group, datatype, datatype_name)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>VLType constructor.</p>
+<p><strong><code>group</code></strong>: <a href="#netCDF4.Group"><code>Group</code></a> instance to associate with the VLEN datatype.</p>
+<p><strong><code>datatype</code></strong>: An numpy dtype object describing a the component type for the
+variable length array.</p>
+<p><strong><code>datatype_name</code></strong>: a Python string containing a description of the
+VLEN data type.</p>
+<p><strong><em><code>Note</code></em></strong>: <a href="#netCDF4.VLType"><code>VLType</code></a> instances should be created using the
+<a href="#netCDF4.Dataset.createVLType"><code>createVLType</code></a>
+method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or <a href="#netCDF4.Group"><code>Group</code></a> instance, not using this class directly.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="netCDF4.Variable" class="name">class <span class="ident">Variable</span></p>
+      
+  
+    <div class="desc"><p>A netCDF <a href="#netCDF4.Variable"><code>Variable</code></a> is used to read and write netCDF data.  They are
+analagous to numpy array objects. See <a href="#netCDF4.Variable.__init__"><code>__init__</code></a> for more
+details.</p>
+<p>A list of attribute names corresponding to netCDF attributes defined for
+the variable can be obtained with the <a href="#netCDF4.Variable.ncattrs"><code>ncattrs</code></a> method. These
+attributes can be created by assigning to an attribute of the
+<a href="#netCDF4.Variable"><code>Variable</code></a> instance. A dictionary containing all the netCDF attribute
+name/value pairs is provided by the <code>__dict__</code> attribute of a
+<a href="#netCDF4.Variable"><code>Variable</code></a> instance.</p>
+<p>The following class variables are read-only:</p>
+<p><strong><code>dimensions</code></strong>: A tuple containing the names of the
+dimensions associated with this variable.</p>
+<p><strong><code>dtype</code></strong>: A numpy dtype object describing the
+variable's data type.</p>
+<p><strong><code>ndim</code></strong>: The number of variable dimensions.</p>
+<p><strong><code>shape</code></strong>: A tuple with the current shape (length of all dimensions).</p>
+<p><strong><code>scale</code></strong>: If True, <code>scale_factor</code> and <code>add_offset</code> are
+applied. Default is <code>True</code>, can be reset using <a href="#netCDF4.Variable.set_auto_scale"><code>set_auto_scale</code></a> and
+<a href="#netCDF4.Variable.set_auto_maskandscale"><code>set_auto_maskandscale</code></a> methods.</p>
+<p><strong><code>mask</code></strong>: If True, data is automatically converted to/from masked 
+arrays when missing values or fill values are present. Default is <code>True</code>, can be
+reset using <a href="#netCDF4.Variable.set_auto_mask"><code>set_auto_mask</code></a> and <a href="#netCDF4.Variable.set_auto_maskandscale"><code>set_auto_maskandscale</code></a>
+methods.</p>
+<p><strong><code>least_significant_digit</code></strong>: Describes the power of ten of the 
+smallest decimal place in the data the contains a reliable value.  Data is
+truncated to this decimal place when it is assigned to the <a href="#netCDF4.Variable"><code>Variable</code></a>
+instance. If <code>None</code>, the data is not truncated.</p>
+<p><strong><code>__orthogonal_indexing__</code></strong>: Always <code>True</code>.  Indicates to client code
+that the object supports 'orthogonal indexing', which means that slices
+that are 1d arrays or lists slice along each dimension independently.  This
+behavior is similar to Fortran or Matlab, but different than numpy.</p>
+<p><strong><code>datatype</code></strong>: numpy data type (for primitive data types) or VLType/CompoundType
+ instance (for compound or vlen data types).</p>
+<p><strong><code>name</code></strong>: String name.</p>
+<p><strong><code>size</code></strong>: The number of stored elements.</p></div>
+  <div class="source_cont">
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#netCDF4.Variable">Variable</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Class variables</h3>
+            <div class="item">
+            <p id="netCDF4.Variable.datatype" class="name">var <span class="ident">datatype</span></p>
+            
+
+            
+  
+    <div class="desc"><p>numpy data type (for primitive data types) or VLType/CompoundType
+instance (for compound or vlen data types).</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.dimensions" class="name">var <span class="ident">dimensions</span></p>
+            
+
+            
+  
+    <div class="desc"><p>A tuple containing the names of the
+dimensions associated with this variable.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.dtype" class="name">var <span class="ident">dtype</span></p>
+            
+
+            
+  
+    <div class="desc"><p>A numpy dtype object describing the
+variable's data type.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.mask" class="name">var <span class="ident">mask</span></p>
+            
+
+            
+  
+    <div class="desc"><p>If True, data is automatically converted to/from masked 
+arrays when missing values or fill values are present. Default is <code>True</code>, can be
+reset using <a href="#netCDF4.Variable.set_auto_mask"><code>set_auto_mask</code></a> and <a href="#netCDF4.Variable.set_auto_maskandscale"><code>set_auto_maskandscale</code></a>
+methods.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.name" class="name">var <span class="ident">name</span></p>
+            
+
+            
+  
+    <div class="desc"><p>String name.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.ndim" class="name">var <span class="ident">ndim</span></p>
+            
+
+            
+  
+    <div class="desc"><p>The number of variable dimensions.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.scale" class="name">var <span class="ident">scale</span></p>
+            
+
+            
+  
+    <div class="desc"><p>if True, <code>scale_factor</code> and <code>add_offset</code> are
+applied. Default is <code>True</code>, can be reset using <a href="#netCDF4.Variable.set_auto_scale"><code>set_auto_scale</code></a> and
+<a href="#netCDF4.Variable.set_auto_maskandscale"><code>set_auto_maskandscale</code></a> methods.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.shape" class="name">var <span class="ident">shape</span></p>
+            
+
+            
+  
+    <div class="desc"><p>A tuple with the current shape (length of all dimensions).</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+            <div class="item">
+            <p id="netCDF4.Variable.size" class="name">var <span class="ident">size</span></p>
+            
+
+            
+  
+    <div class="desc"><p>The number of stored elements.</p></div>
+  <div class="source_cont">
+</div>
+
+            </div>
+          <h3>Static methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.__init__">
+    <p>def <span class="ident">__init__</span>(</p><p>self, group, name, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None,fill_value=None)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p><a href="#netCDF4.Variable"><code>Variable</code></a> constructor.</p>
+<p><strong><code>group</code></strong>: <a href="#netCDF4.Group"><code>Group</code></a> or <a href="#netCDF4.Dataset"><code>Dataset</code></a> instance to associate with variable.</p>
+<p><strong><code>name</code></strong>: Name of the variable.</p>
+<p><strong><code>datatype</code></strong>: <a href="#netCDF4.Variable"><code>Variable</code></a> data type. Can be specified by providing a
+numpy dtype object, or a string that describes a numpy dtype object.
+Supported values, corresponding to <code>str</code> attribute of numpy dtype
+objects, include <code>'f4'</code> (32-bit floating point), <code>'f8'</code> (64-bit floating
+point), <code>'i4'</code> (32-bit signed integer), <code>'i2'</code> (16-bit signed integer),
+<code>'i8'</code> (64-bit singed integer), <code>'i4'</code> (8-bit singed integer), <code>'i1'</code>
+(8-bit signed integer), <code>'u1'</code> (8-bit unsigned integer), <code>'u2'</code> (16-bit
+unsigned integer), <code>'u4'</code> (32-bit unsigned integer), <code>'u8'</code> (64-bit
+unsigned integer), or <code>'S1'</code> (single-character string).  From
+compatibility with Scientific.IO.NetCDF, the old Numeric single character
+typecodes can also be used (<code>'f'</code> instead of <code>'f4'</code>, <code>'d'</code> instead of
+<code>'f8'</code>, <code>'h'</code> or <code>'s'</code> instead of <code>'i2'</code>, <code>'b'</code> or <code>'B'</code> instead of
+<code>'i1'</code>, <code>'c'</code> instead of <code>'S1'</code>, and <code>'i'</code> or <code>'l'</code> instead of
+<code>'i4'</code>). <code>datatype</code> can also be a <a href="#netCDF4.CompoundType"><code>CompoundType</code></a> instance
+(for a structured, or compound array), a <a href="#netCDF4.VLType"><code>VLType</code></a> instance
+(for a variable-length array), or the python <code>str</code> builtin
+(for a variable-length string array). Numpy string and unicode datatypes with
+length greater than one are aliases for <code>str</code>.</p>
+<p><strong><code>dimensions</code></strong>: a tuple containing the variable's dimension names
+(defined previously with <code>createDimension</code>). Default is an empty tuple
+which means the variable is a scalar (and therefore has no dimensions).</p>
+<p><strong><code>zlib</code></strong>: if <code>True</code>, data assigned to the <a href="#netCDF4.Variable"><code>Variable</code></a>
+instance is compressed on disk. Default <code>False</code>.</p>
+<p><strong><code>complevel</code></strong>: the level of zlib compression to use (1 is the fastest,
+but poorest compression, 9 is the slowest but best compression). Default 4.
+Ignored if <code>zlib=False</code>.</p>
+<p><strong><code>shuffle</code></strong>: if <code>True</code>, the HDF5 shuffle filter is applied
+to improve compression. Default <code>True</code>. Ignored if <code>zlib=False</code>.</p>
+<p><strong><code>fletcher32</code></strong>: if <code>True</code> (default <code>False</code>), the Fletcher32 checksum
+algorithm is used for error detection.</p>
+<p><strong><code>contiguous</code></strong>: if <code>True</code> (default <code>False</code>), the variable data is
+stored contiguously on disk.  Default <code>False</code>. Setting to <code>True</code> for
+a variable with an unlimited dimension will trigger an error.</p>
+<p><strong><code>chunksizes</code></strong>: Can be used to specify the HDF5 chunksizes for each
+dimension of the variable. A detailed discussion of HDF chunking and I/O
+performance is available
+<a href="http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html">here</a>.
+Basically, you want the chunk size for each dimension to match as
+closely as possible the size of the data block that users will read
+from the file. <code>chunksizes</code> cannot be set if <code>contiguous=True</code>.</p>
+<p><strong><code>endian</code></strong>: Can be used to control whether the
+data is stored in little or big endian format on disk. Possible
+values are <code>little, big</code> or <code>native</code> (default). The library
+will automatically handle endian conversions when the data is read,
+but if the data is always going to be read on a computer with the
+opposite format as the one used to create the file, there may be
+some performance advantage to be gained by setting the endian-ness.
+For netCDF 3 files (that don't use HDF5), only <code>endian='native'</code> is allowed.</p>
+<p>The <code>zlib, complevel, shuffle, fletcher32, contiguous</code> and <code>chunksizes</code>
+keywords are silently ignored for netCDF 3 files that do not use HDF5.</p>
+<p><strong><code>least_significant_digit</code></strong>: If specified, variable data will be
+truncated (quantized). In conjunction with <code>zlib=True</code> this produces
+'lossy', but significantly more efficient compression. For example, if
+<code>least_significant_digit=1</code>, data will be quantized using
+around(scale<em>data)/scale, where scale = 2</em>*bits, and bits is determined
+so that a precision of 0.1 is retained (in this case bits=4). Default is
+<code>None</code>, or no quantization.</p>
+<p><strong><code>fill_value</code></strong>:  If specified, the default netCDF <code>_FillValue</code> (the
+value that the variable gets filled with before any data is written to it)
+is replaced with this value.  If fill_value is set to <code>False</code>, then
+the variable is not pre-filled. The default netCDF fill values can be found
+in <code>netCDF4.default_fillvals</code>.</p>
+<p><strong><em>Note</em></strong>: <a href="#netCDF4.Variable"><code>Variable</code></a> instances should be created using the
+<a href="#netCDF4.Dataset.createVariable"><code>createVariable</code></a> method of a <a href="#netCDF4.Dataset"><code>Dataset</code></a> or
+<a href="#netCDF4.Group"><code>Group</code></a> instance, not using this class directly.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.assignValue">
+    <p>def <span class="ident">assignValue</span>(</p><p>self, val)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>assign a value to a scalar variable.  Provided for compatibility with
+Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...]).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.chunking">
+    <p>def <span class="ident">chunking</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return variable chunking information.  If the dataset is
+defined to be contiguous (and hence there is no chunking) the word 'contiguous'
+is returned.  Otherwise, a sequence with the chunksize for
+each dimension is returned.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.delncattr">
+    <p>def <span class="ident">delncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>delete a netCDF variable attribute.  Use if you need to delete a
+netCDF attribute with the same name as one of the reserved python
+attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.endian">
+    <p>def <span class="ident">endian</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return endian-ness (<code>little,big,native</code>) of variable (as stored in HDF5 file).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.filters">
+    <p>def <span class="ident">filters</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return dictionary containing HDF5 filter parameters.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.getValue">
+    <p>def <span class="ident">getValue</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>get the value of a scalar variable.  Provided for compatibility with
+Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...]).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.get_var_chunk_cache">
+    <p>def <span class="ident">get_var_chunk_cache</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return variable chunk cache information in a tuple (size,nelems,preemption).
+See netcdf C library documentation for <code>nc_get_var_chunk_cache</code> for
+details.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.getncattr">
+    <p>def <span class="ident">getncattr</span>(</p><p>self,name)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>retrievel a netCDF variable attribute.  Use if you need to set a
+netCDF attribute with the same name as one of the reserved python
+attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.group">
+    <p>def <span class="ident">group</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return the group that this <a href="#netCDF4.Variable"><code>Variable</code></a> is a member of.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.ncattrs">
+    <p>def <span class="ident">ncattrs</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return netCDF attribute names for this <a href="#netCDF4.Variable"><code>Variable</code></a> in a list.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.renameAttribute">
+    <p>def <span class="ident">renameAttribute</span>(</p><p>self, oldname, newname)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>rename a <a href="#netCDF4.Variable"><code>Variable</code></a> attribute named <code>oldname</code> to <code>newname</code>.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.set_auto_mask">
+    <p>def <span class="ident">set_auto_mask</span>(</p><p>self,mask)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>turn on or off automatic conversion of variable data to and
+from masked arrays .</p>
+<p>If <code>mask</code> is set to <code>True</code>, when data is read from a variable
+it is converted to a masked array if any of the values are exactly
+equal to the either the netCDF _FillValue or the value specified by the
+missing_value variable attribute. The fill_value of the masked array
+is set to the missing_value attribute (if it exists), otherwise
+the netCDF _FillValue attribute (which has a default value
+for each data type).  When data is written to a variable, the masked
+array is converted back to a regular numpy array by replacing all the
+masked values by the fill_value of the masked array.</p>
+<p>The default value of <code>mask</code> is <code>True</code>
+(automatic conversions are performed).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.set_auto_maskandscale">
+    <p>def <span class="ident">set_auto_maskandscale</span>(</p><p>self,maskandscale)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>turn on or off automatic conversion of variable data to and
+from masked arrays and automatic packing/unpacking of variable
+data using <code>scale_factor</code> and <code>add_offset</code> attributes.</p>
+<p>If <code>maskandscale</code> is set to <code>True</code>, when data is read from a variable
+it is converted to a masked array if any of the values are exactly
+equal to the either the netCDF _FillValue or the value specified by the
+missing_value variable attribute. The fill_value of the masked array
+is set to the missing_value attribute (if it exists), otherwise
+the netCDF _FillValue attribute (which has a default value
+for each data type).  When data is written to a variable, the masked
+array is converted back to a regular numpy array by replacing all the
+masked values by the fill_value of the masked array.</p>
+<p>If <code>maskandscale</code> is set to <code>True</code>, and the variable has a
+<code>scale_factor</code> or an <code>add_offset</code> attribute, then data read
+from that variable is unpacked using::</p>
+<div class="codehilite"><pre>data = self.scale_factor*data + self.add_offset
+</pre></div>
+
+
+<p>When data is written to a variable it is packed using::</p>
+<div class="codehilite"><pre>data = (data - self.add_offset)/self.scale_factor
+</pre></div>
+
+
+<p>If either scale_factor is present, but add_offset is missing, add_offset
+is assumed zero.  If add_offset is present, but scale_factor is missing,
+scale_factor is assumed to be one.
+For more information on how <code>scale_factor</code> and <code>add_offset</code> can be
+used to provide simple compression, see the
+<a href="http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml">PSD metadata conventions</a>.</p>
+<p>The default value of <code>maskandscale</code> is <code>True</code>
+(automatic conversions are performed).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.set_auto_scale">
+    <p>def <span class="ident">set_auto_scale</span>(</p><p>self,scale)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>turn on or off automatic packing/unpacking of variable
+data using <code>scale_factor</code> and <code>add_offset</code> attributes.</p>
+<p>If <code>scale</code> is set to <code>True</code>, and the variable has a
+<code>scale_factor</code> or an <code>add_offset</code> attribute, then data read
+from that variable is unpacked using::</p>
+<div class="codehilite"><pre>data = self.scale_factor*data + self.add_offset
+</pre></div>
+
+
+<p>When data is written to a variable it is packed using::</p>
+<div class="codehilite"><pre>data = (data - self.add_offset)/self.scale_factor
+</pre></div>
+
+
+<p>If either scale_factor is present, but add_offset is missing, add_offset
+is assumed zero.  If add_offset is present, but scale_factor is missing,
+scale_factor is assumed to be one.
+For more information on how <code>scale_factor</code> and <code>add_offset</code> can be
+used to provide simple compression, see the
+<a href="http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml">PSD metadata conventions</a>.</p>
+<p>The default value of <code>scale</code> is <code>True</code>
+(automatic conversions are performed).</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.set_var_chunk_cache">
+    <p>def <span class="ident">set_var_chunk_cache</span>(</p><p>self,size=None,nelems=None,preemption=None)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>change variable chunk cache settings.
+See netcdf C library documentation for <code>nc_set_var_chunk_cache</code> for
+details.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.setncattr">
+    <p>def <span class="ident">setncattr</span>(</p><p>self,name,value)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>set a netCDF variable attribute using name,value pair.  Use if you need to set a
+netCDF attribute with the same name as one of the reserved python
+attributes.</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="netCDF4.Variable.setncatts">
+    <p>def <span class="ident">setncatts</span>(</p><p>self,attdict)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>set a bunch of netCDF variable attributes at once using a python dictionary.
+This may be faster when setting a lot of attributes for a <code>NETCDF3</code>
+formatted file, since nc_redef/nc_enddef is not called in between setting
+each attribute</p></div>
+  <div class="source_cont">
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+
+  </section>
+
+    </article>
+  <div class="clear"> </div>
+  <footer id="footer">
+    <p>
+      Documentation generated by
+      <a href="https://github.com/BurntSushi/pdoc">pdoc 0.3.1</a>
+    </p>
+
+    <p>pdoc is in the public domain with the
+      <a href="http://unlicense.org">UNLICENSE</a></p>
+
+    <p>Design by <a href="http://nadh.in">Kailash Nadh</a></p>
+  </footer>
+</div>
+</body>
+</html>
diff --git a/docs/redirect.html b/docs/redirect.html
deleted file mode 100644
index 524c955..0000000
--- a/docs/redirect.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<html><head><title>Epydoc Redirect Page</title>
-<meta http-equiv="cache-control" content="no-cache" />
-<meta http-equiv="expires" content="0" />
-<meta http-equiv="pragma" content="no-cache" />
-  <script type="text/javascript" src="epydoc.js"></script>
-</head>
-<body>
-<script type="text/javascript">
-<!--
-var pages = ["netCDF4._netCDF4.CompoundType-c", "netCDF4._netCDF4.Dimension-c", "netCDF4._netCDF4.MFDataset-c", "netCDF4._netCDF4.Variable-c", "netCDF4._netCDF4.Dataset-c", "netCDF4._netCDF4.MFTime-c", "netCDF4._netCDF4.VLType-c", "netCDF4._netCDF4.Group-c", "netCDF4._netCDF4-m"];
-var dottedName = get_anchor();
-if (dottedName) {
-    var target = redirect_url(dottedName);
-    if (target) window.location.replace(target);
-}
-// -->
-</script>
-
-<h3>Epydoc Auto-redirect page</h3>
-
-<p>When javascript is enabled, this page will redirect URLs of
-the form <tt>redirect.html#<i>dotted.name</i></tt> to the
-documentation for the object with the given fully-qualified
-dotted name.</p>
-<p><a id="message">   </a></p>
-
-<script type="text/javascript">
-<!--
-if (dottedName) {
-    var msg = document.getElementById("message");
-    msg.innerHTML = "No documentation found for <tt>"+
-                    dottedName+"</tt>";
-}
-// -->
-</script>
-
-</body>
-</html>
diff --git a/man/nc3tonc4.1 b/man/nc3tonc4.1
index e6a3de5..cfccf59 100644
--- a/man/nc3tonc4.1
+++ b/man/nc3tonc4.1
@@ -6,15 +6,15 @@
 nc3tonc4 \- a program to convert netCDF 3 files to netCDF 4 format files
 .SH SYNOPSIS
 .B nc3tonc4
-.RB [\-h ]
-.RB [\-o ]
-.RB [\-\-vars=\fIvar1,var2,..\fR ]
-.RB [\-\-zlib=\fI(0|1)\fR ]
-.RB [\-\-complevel=\fI(1\-9)\fR ]
-.RB [\-\-shuffle=\fI(0|1)\fR ]
-.RB [\-\-fletcher32=\fI(0|1)\fR ]
-.RB [\-\-unpackshort=\fI(0|1)\fR ]
-.RB [\-\-quantize=\fIvar1=n1,var2=n2,..\fR ]
+.RB [ \-h ]
+.RB [ \-o ]
+.RB [ \-\-vars=\fIvar1,var2,..\fR ]
+.RB [ \-\-zlib=\fI(0|1)\fR ]
+.RB [ \-\-complevel=\fI(1\-9)\fR ]
+.RB [ \-\-shuffle=\fI(0|1)\fR ]
+.RB [ \-\-fletcher32=\fI(0|1)\fR ]
+.RB [ \-\-unpackshort=\fI(0|1)\fR ]
+.RB [ \-\-quantize=\fIvar1=n1,var2=n2,..\fR ]
 .I netcdf3filename
 .I netcdf4filename
 .br
diff --git a/man/nc4tonc3.1 b/man/nc4tonc3.1
index 671f582..02154f4 100644
--- a/man/nc4tonc3.1
+++ b/man/nc4tonc3.1
@@ -6,9 +6,9 @@
 nc4tonc3 \- a program to convert a classic netCDF 4 file to netCDF 3 format
 .SH SYNOPSIS
 .B nc4tonc3
-.RB [\-h ]
-.RB [\-o ]
-.RB [\-\-chunk]
+.RB [ \-h ]
+.RB [ \-o ]
+.RB [ \-\-chunk ]
 .I netcdf4filename
 .I netcdf3filename
 .br
diff --git a/netCDF4/__init__.py b/netCDF4/__init__.py
index 5e881d5..cd68eda 100644
--- a/netCDF4/__init__.py
+++ b/netCDF4/__init__.py
@@ -1,8 +1,10 @@
-# init for netCDF4 package
-# Docstring comes from extension module _netCDF4
+# init for netCDF4. package
+# Docstring comes from extension module _netCDF4.
 from ._netCDF4 import *
 # Need explicit imports for names beginning with underscores
-from ._netCDF4 import __doc__
+from ._netCDF4 import __doc__, __pdoc__
 from ._netCDF4 import (__version__, __netcdf4libversion__, __hdf5libversion__,
                        __has_rename_grp__, __has_nc_inq_path__,
                        __has_nc_inq_format_extended__)
+__all__ =\
+['Dataset','Variable','Dimension','Group','MFDataset','MFTime','CompoundType','VLType','date2num','num2date','date2index','stringtochar','chartostring','stringtoarr','getlibversion']
diff --git a/netCDF4/_netCDF4.c b/netCDF4/_netCDF4.c
index c5bb266..883c44c 100644
--- a/netCDF4/_netCDF4.c
+++ b/netCDF4/_netCDF4.c
@@ -447,7 +447,7 @@ struct __pyx_opt_args_7netCDF4_8_netCDF4__strencode;
 struct __pyx_defaults;
 typedef struct __pyx_defaults __pyx_defaults;
 
-/* "netCDF4/_netCDF4.pyx":4118
+/* "netCDF4/_netCDF4.pyx":4230
  *     return xtype
  * 
  * cdef _read_compound(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
@@ -459,7 +459,7 @@ struct __pyx_opt_args_7netCDF4_8_netCDF4__read_compound {
   PyObject *endian;
 };
 
-/* "netCDF4/_netCDF4.pyx":4276
+/* "netCDF4/_netCDF4.pyx":4387
  *     return xtype, dt
  * 
  * cdef _read_vlen(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
@@ -471,7 +471,7 @@ struct __pyx_opt_args_7netCDF4_8_netCDF4__read_vlen {
   PyObject *endian;
 };
 
-/* "netCDF4/_netCDF4.pyx":4303
+/* "netCDF4/_netCDF4.pyx":4414
  *     return VLType(group, dt, name, typeid=xtype)
  * 
  * cdef _strencode(pystr,encoding=None):             # <<<<<<<<<<<<<<
@@ -486,12 +486,12 @@ struct __pyx_defaults {
   PyObject *__pyx_arg_exclude;
 };
 
-/* "netCDF4/_netCDF4.pyx":1353
- * 
+/* "netCDF4/_netCDF4.pyx":1374
+ * __pdoc__ = {}
  * 
  * cdef class Dataset:             # <<<<<<<<<<<<<<
  *     """
- * Dataset(self, filename, mode="r", clobber=True, diskless=False, persist=False, keepweakref=False, format='NETCDF4')
+ * A netCDF `netCDF4.Dataset` is a collection of dimensions, groups, variables and
  */
 struct __pyx_obj_7netCDF4_8_netCDF4_Dataset {
   PyObject_HEAD
@@ -508,29 +508,29 @@ struct __pyx_obj_7netCDF4_8_netCDF4_Dataset {
   PyObject *data_model;
   PyObject *cmptypes;
   PyObject *vltypes;
-  PyObject *keepweakref;
   PyObject *__orthogonal_indexing__;
+  PyObject *keepweakref;
 };
 
 
-/* "netCDF4/_netCDF4.pyx":2197
+/* "netCDF4/_netCDF4.pyx":2257
  * 
  * 
  * cdef class Group(Dataset):             # <<<<<<<<<<<<<<
  *     """
- * Group(self, parent, name)
+ * Groups define a hierarchical namespace within a netCDF file. They are
  */
 struct __pyx_obj_7netCDF4_8_netCDF4_Group {
   struct __pyx_obj_7netCDF4_8_netCDF4_Dataset __pyx_base;
 };
 
 
-/* "netCDF4/_netCDF4.pyx":2287
+/* "netCDF4/_netCDF4.pyx":2351
  * 
  * 
  * cdef class Dimension:             # <<<<<<<<<<<<<<
  *     """
- * Dimension(self, group, name, size=None)
+ * A netCDF `netCDF4.Dimension` is used to describe the coordinates of a `netCDF4.Variable`.
  */
 struct __pyx_obj_7netCDF4_8_netCDF4_Dimension {
   PyObject_HEAD
@@ -542,12 +542,12 @@ struct __pyx_obj_7netCDF4_8_netCDF4_Dimension {
 };
 
 
-/* "netCDF4/_netCDF4.pyx":2431
+/* "netCDF4/_netCDF4.pyx":2500
  *                 return False
  * 
  * cdef class Variable:             # <<<<<<<<<<<<<<
  *     """
- * Variable(self, group, name, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None,fill_value=None)
+ * A netCDF `netCDF4.Variable` is used to read and write netCDF data.  They are
  */
 struct __pyx_obj_7netCDF4_8_netCDF4_Variable {
   PyObject_HEAD
@@ -569,12 +569,12 @@ struct __pyx_obj_7netCDF4_8_netCDF4_Variable {
 };
 
 
-/* "netCDF4/_netCDF4.pyx":3959
+/* "netCDF4/_netCDF4.pyx":4071
  * # Compound datatype support.
  * 
  * cdef class CompoundType:             # <<<<<<<<<<<<<<
  *     """
- * A L{CompoundType} instance is used to describe a compound data type.
+ * A `netCDF4.CompoundType` instance is used to describe a compound data
  */
 struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType {
   PyObject_HEAD
@@ -584,12 +584,12 @@ struct __pyx_obj_7netCDF4_8_netCDF4_CompoundType {
 };
 
 
-/* "netCDF4/_netCDF4.pyx":4189
+/* "netCDF4/_netCDF4.pyx":4301
  * # VLEN datatype support.
  * 
  * cdef class VLType:             # <<<<<<<<<<<<<<
  *     """
- * A L{VLType} instance is used to describe a variable length (VLEN) data type.
+ * A `netCDF4.VLType` instance is used to describe a variable length (VLEN) data
  */
 struct __pyx_obj_7netCDF4_8_netCDF4_VLType {
   PyObject_HEAD
@@ -1163,12 +1163,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_8cmptypes_4__del__(struct __pyx_
 static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
 static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
 static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
-static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
-static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
 static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
 static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
+static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self); /* proto */
 static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4_8_netCDF4_Group *__pyx_v_self, PyObject *__pyx_v_parent, PyObject *__pyx_v_name, PyObject *__pyx_v_kwargs); /* proto */
 static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_2close(CYTHON_UNUSED struct __pyx_obj_7netCDF4_8_netCDF4_Group *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7netCDF4_8_netCDF4_Group *__pyx_v_self); /* proto */
@@ -1371,6 +1371,7 @@ static char __pyx_k_i2[] = "i2";
 static char __pyx_k_i4[] = "i4";
 static char __pyx_k_i8[] = "i8";
 static char __pyx_k_id[] = "id";
+static char __pyx_k_iu[] = "iu";
 static char __pyx_k_ma[] = "ma";
 static char __pyx_k_n1[] = "n1";
 static char __pyx_k_nv[] = "nv";
@@ -1425,7 +1426,8 @@ static char __pyx_k_val[] = "val";
 static char __pyx_k_var[] = "var";
 static char __pyx_k_vid[] = "vid";
 static char __pyx_k_zip[] = "zip";
-static char __pyx_k__118[] = ".";
+static char __pyx_k_HDF4[] = "HDF4";
+static char __pyx_k__120[] = ".";
 static char __pyx_k_bool[] = "bool";
 static char __pyx_k_cdfm[] = "cdfm";
 static char __pyx_k_char[] = "char";
@@ -1461,6 +1463,7 @@ static char __pyx_k_ndim[] = "ndim";
 static char __pyx_k_numv[] = "numv";
 static char __pyx_k_part[] = "part";
 static char __pyx_k_path[] = "path";
+static char __pyx_k_pdoc[] = "__pdoc__";
 static char __pyx_k_prod[] = "prod";
 static char __pyx_k_repr[] = "__repr__";
 static char __pyx_k_secs[] = "secs";
@@ -1482,7 +1485,7 @@ static char __pyx_k_vlen[] = "vlen";
 static char __pyx_k_warn[] = "warn";
 static char __pyx_k_year[] = "year";
 static char __pyx_k_zlib[] = "zlib";
-static char __pyx_k_1_1_8[] = "1.1.8";
+static char __pyx_k_1_1_9[] = "1.1.9";
 static char __pyx_k_4_2_1[] = "4.2.1";
 static char __pyx_k_align[] = "align";
 static char __pyx_k_array[] = "array";
@@ -1698,6 +1701,7 @@ static char __pyx_k_traceback[] = "traceback";
 static char __pyx_k_unlimdims[] = "unlimdims";
 static char __pyx_k_variables[] = "variables";
 static char __pyx_k_walk_grps[] = "_walk_grps";
+static char __pyx_k_Group_name[] = "Group.name";
 static char __pyx_k_IndexError[] = "IndexError";
 static char __pyx_k_ValueError[] = "ValueError";
 static char __pyx_k_add_offset[] = "add_offset";
@@ -1729,13 +1733,15 @@ static char __pyx_k_utc_offset[] = "utc_offset";
 static char __pyx_k_ImportError[] = "ImportError";
 static char __pyx_k_NC_DISKLESS[] = "NC_DISKLESS";
 static char __pyx_k_OrderedDict[] = "OrderedDict";
+static char __pyx_k_String_name[] = "String name.";
+static char __pyx_k_VLType_name[] = "VLType.name";
 static char __pyx_k_assign_vlen[] = "_assign_vlen";
 static char __pyx_k_cdfRecVar_2[] = "cdfRecVar";
 static char __pyx_k_chunk_cache[] = "chunk_cache";
 static char __pyx_k_collections[] = "collections";
 static char __pyx_k_concatenate[] = "concatenate";
 static char __pyx_k_createGroup[] = "createGroup";
-static char __pyx_k_disk_format[] = "_disk_format";
+static char __pyx_k_disk_format[] = "disk_format";
 static char __pyx_k_file_format[] = "file_format";
 static char __pyx_k_filling_off[] = "filling off\n";
 static char __pyx_k_isprimitive[] = "_isprimitive";
@@ -1748,8 +1754,10 @@ static char __pyx_k_releasevers[] = "releasevers";
 static char __pyx_k_string_type[] = ": string type";
 static char __pyx_k_stringtoarr[] = "stringtoarr";
 static char __pyx_k_variables_s[] = "    variables = %s\n";
+static char __pyx_k_Dataset_path[] = "Dataset.path";
 static char __pyx_k_MFTime__time[] = "_MFTime__time";
 static char __pyx_k_RuntimeError[] = "RuntimeError";
+static char __pyx_k_VLType_dtype[] = "VLType.dtype";
 static char __pyx_k_chartostring[] = "chartostring";
 static char __pyx_k_data_model_2[] = "_data_model";
 static char __pyx_k_dimensions_s[] = "    dimensions = %s\n";
@@ -1766,8 +1774,12 @@ static char __pyx_k_Illegal_index[] = "Illegal index";
 static char __pyx_k_MFTime___init[] = "MFTime.__init__";
 static char __pyx_k_MFTime__delta[] = "_MFTime__delta";
 static char __pyx_k_NETCDF3_64BIT[] = "NETCDF3_64BIT";
+static char __pyx_k_Variable_mask[] = "Variable.mask";
+static char __pyx_k_Variable_name[] = "Variable.name";
+static char __pyx_k_Variable_ndim[] = "Variable.ndim";
+static char __pyx_k_Variable_size[] = "Variable.size";
 static char __pyx_k_datatype_name[] = "datatype_name";
-static char __pyx_k_disk_format_2[] = "disk_format";
+static char __pyx_k_disk_format_2[] = "_disk_format";
 static char __pyx_k_file_format_2[] = "_file_format";
 static char __pyx_k_getlibversion[] = "getlibversion";
 static char __pyx_k_is_native_big[] = "is_native_big";
@@ -1777,7 +1789,13 @@ static char __pyx_k_set_auto_mask[] = "set_auto_mask";
 static char __pyx_k_timestr_split[] = "timestr_split";
 static char __pyx_k_unicode_error[] = "unicode_error";
 static char __pyx_k_AttributeError[] = "AttributeError";
+static char __pyx_k_Dataset_groups[] = "Dataset.groups";
+static char __pyx_k_Dataset_parent[] = "Dataset.parent";
+static char __pyx_k_Dimension_name[] = "Dimension.name";
 static char __pyx_k_Variable___len[] = "_Variable.__len__";
+static char __pyx_k_Variable_dtype[] = "Variable.dtype";
+static char __pyx_k_Variable_scale[] = "Variable.scale";
+static char __pyx_k_Variable_shape[] = "Variable.shape";
 static char __pyx_k_current_size_s[] = "current size = %s\n";
 static char __pyx_k_has_rename_grp[] = "__has_rename_grp__";
 static char __pyx_k_hdf5libversion[] = "__hdf5libversion__";
@@ -1785,6 +1803,7 @@ static char __pyx_k_microsec_units[] = "microsec_units";
 static char __pyx_k_millisec_units[] = "millisec_units";
 static char __pyx_k_set_auto_scale[] = "set_auto_scale";
 static char __pyx_k_supportedtypes[] = "_supportedtypes";
+static char __pyx_k_Dataset_vltypes[] = "Dataset.vltypes";
 static char __pyx_k_Dimension___len[] = "_Dimension.__len__";
 static char __pyx_k_MFDataset_close[] = "MFDataset.close";
 static char __pyx_k_NETCDF3_CLASSIC[] = "NETCDF3_CLASSIC";
@@ -1795,6 +1814,7 @@ static char __pyx_k_Variable__shape[] = "_Variable._shape";
 static char __pyx_k_current_shape_s[] = "current shape = %s\n";
 static char __pyx_k_has_nc_inq_path[] = "__has_nc_inq_path__";
 static char __pyx_k_out_array_shape[] = "_out_array_shape";
+static char __pyx_k_Dataset_cmptypes[] = "Dataset.cmptypes";
 static char __pyx_k_Dimension___init[] = "_Dimension.__init__";
 static char __pyx_k_Dimension___repr[] = "_Dimension.__repr__";
 static char __pyx_k_MFDataset___init[] = "MFDataset.__init__";
@@ -1808,22 +1828,33 @@ static char __pyx_k_is_native_little[] = "is_native_little";
 static char __pyx_k_netCDF4__netCDF4[] = "netCDF4._netCDF4";
 static char __pyx_k_s_not_found_in_s[] = "%s not found in %s";
 static char __pyx_k_vlen_data_type_s[] = "vlen data type: %s\n";
+static char __pyx_k_CompoundType_name[] = "CompoundType.name";
+static char __pyx_k_Dataset_variables[] = "Dataset.variables";
 static char __pyx_k_MFDataset_ncattrs[] = "MFDataset.ncattrs";
+static char __pyx_k_Variable_datatype[] = "Variable.datatype";
 static char __pyx_k_Variable_typecode[] = "_Variable.typecode";
 static char __pyx_k_gethdf5libversion[] = "_gethdf5libversion";
 static char __pyx_k_netcdf4libversion[] = "__netcdf4libversion__";
+static char __pyx_k_CompoundType_dtype[] = "CompoundType.dtype";
+static char __pyx_k_Dataset_data_model[] = "Dataset.data_model";
+static char __pyx_k_Dataset_dimensions[] = "Dataset.dimensions";
 static char __pyx_k_UnicodeDecodeError[] = "UnicodeDecodeError";
 static char __pyx_k_Variable___getattr[] = "_Variable.__getattr__";
 static char __pyx_k_Variable___getitem[] = "_Variable.__getitem__";
 static char __pyx_k_dimensions_sizes_s[] = "    dimensions(sizes): %s\n";
 static char __pyx_k_set_default_format[] = "_set_default_format";
+static char __pyx_k_Dataset_disk_format[] = "Dataset.disk_format";
+static char __pyx_k_Dataset_file_format[] = "Dataset.file_format";
+static char __pyx_k_Dataset_keepweakref[] = "Dataset.keepweakref";
 static char __pyx_k_MFDataset___setattr[] = "MFDataset.__setattr__";
+static char __pyx_k_Variable_dimensions[] = "Variable.dimensions";
 static char __pyx_k_get_var_chunk_cache[] = "get_var_chunk_cache";
 static char __pyx_k_orthogoral_indexing[] = "__orthogoral_indexing__";
 static char __pyx_k_proleptic_gregorian[] = "proleptic_gregorian";
 static char __pyx_k_compound_data_type_s[] = "compound data type: %s\n";
 static char __pyx_k_name_s_numpy_dtype_s[] = ": name = '%s', numpy dtype = %s\n";
 static char __pyx_k_Dimension_isunlimited[] = "_Dimension.isunlimited";
+static char __pyx_k_len_of_unsized_object[] = "len() of unsized object";
 static char __pyx_k_set_auto_maskandscale[] = "set_auto_maskandscale";
 static char __pyx_k_name_cannot_be_altered[] = "name cannot be altered";
 static char __pyx_k_unlimited_dimensions_s[] = "unlimited dimensions: %s\n";
@@ -1839,39 +1870,61 @@ static char __pyx_k_has_nc_inq_format_extended[] = "__has_nc_inq_format_extended
 static char __pyx_k_s_not_a_valid_variable_name[] = "%s not a valid variable name";
 static char __pyx_k_dimensions_cannot_be_altered[] = "dimensions cannot be altered";
 static char __pyx_k_s_not_a_valid_dimension_name[] = "%s not a valid dimension name";
+static char __pyx_k_The_number_of_stored_elements[] = "The number of stored elements.";
 static char __pyx_k_mode_must_be_w_r_a_or_r_got_s[] = "mode must be 'w', 'r', 'a' or 'r+', got '%s'";
 static char __pyx_k_string_name_of_Group_instance[] = "string name of Group instance";
+static char __pyx_k_Introduction_netcdf4_python_is[] = "\nIntroduction\n============\n\nnetcdf4-python is a Python interface to the netCDF C library.  \n\n[netCDF version 4](http://www.unidata.ucar.edu/software/netcdf/netcdf-4) has many features\nnot found in earlier versions of the library and is implemented on top of\n[HDF5](http://www.hdfgroup.org/HDF5). This module can read and write\nfiles in both the new netCDF 4 and the old netCDF 3 format, and can create\nfiles that are readable  [...]
+static char __pyx_k_Variable___orthogonal_indexing[] = "Variable.__orthogonal_indexing__";
 static char __pyx_k_Variable_set_auto_maskandscale[] = "_Variable.set_auto_maskandscale";
 static char __pyx_k_filepath_method_not_enabled_To[] = "\nfilepath method not enabled.  To enable, install Cython, make sure you have\nversion 4.1.2 or higher of the netcdf C lib, and rebuild netcdf4-python.";
+static char __pyx_k_path_shows_the_location_of_the[] = "`path` shows the location of the `netCDF4.Group` in\n    the `netCDF4.Dataset` in a unix directory format (the names of groups in the\n    hierarchy separated by backslashes). A `netCDF4.Dataset` instance is the root\n    group, so the path is simply `'/'`.";
 static char __pyx_k_renameGroup_method_not_enabled[] = "\nrenameGroup method not enabled.  To enable, install Cython, make sure you have\nversion 4.3.1 or higher of the netcdf C lib, and rebuild netcdf4-python.";
+static char __pyx_k_A_numpy_dtype_object_describing[] = "A numpy dtype object describing the\n    variable's data type.";
+static char __pyx_k_A_string_describing_the_name_of[] = "A string describing the name of the `netCDF4.Group`.";
+static char __pyx_k_A_tuple_containing_the_names_of[] = "A tuple containing the names of the\n    dimensions associated with this variable.";
+static char __pyx_k_Always_True_Indicates_to_client[] = "Always `True`.  Indicates to client code\n    that the object supports 'orthogonal indexing', which means that slices\n    that are 1d arrays or lists slice along each dimension independently.  This\n    behavior is similar to Fortran or Matlab, but different than numpy.";
+static char __pyx_k_Class_for_reading_multi_file_ne[] = "\nClass for reading multi-file netCDF Datasets, making variables\nspanning multiple files appear as if they were in one file.\nDatasets must be in `NETCDF4_CLASSIC, NETCDF3_CLASSIC or NETCDF3_64BIT`\nformat (`NETCDF4` Datasets won't work).\n\nAdapted from [pycdf](http://pysclint.sourceforge.net/pycdf) by Andre Gosselin.\n\nExample usage (See `netCDF4.MFDataset.__init__` for more details):\n\n    :::python\n    >>> import numpy\n    [...]
+static char __pyx_k_Class_providing_an_interface_to[] = "\nClass providing an interface to a MFDataset time Variable by imposing a unique common\ntime unit to all files. \n\nExample usage (See `netCDF4.MFTime.__init__` for more details):\n\n    :::python\n    >>> import numpy\n    >>> f1 = Dataset(\"mftest_1.nc\",\"w\", format=\"NETCDF4_CLASSIC\")\n    >>> f2 = Dataset(\"mftest_2.nc\",\"w\", format=\"NETCDF4_CLASSIC\")\n    >>> f1.createDimension(\"time\",None)\n    >>> f2.createDimensio [...]
 static char __pyx_k_FillValue_attribute_must_be_set[] = "_FillValue attribute must be set when variable is ";
-static char __pyx_k_Introduction_Python_interface_t[] = "\nIntroduction\n============\n\nPython interface to the netCDF version 4 library.  U{netCDF version 4\n<http://www.unidata.ucar.edu/software/netcdf/netcdf-4>} has many features\nnot found in earlier versions of the library and is implemented on top of\nU{HDF5 <http://www.hdfgroup.org/HDF5>}. This module can read and write\nfiles in both the new netCDF 4 and the old netCDF 3 format, and can create\nfiles that are readable by HDF5 cl [...]
-static char __pyx_k_MFDataset_self_files_check_Fals[] = "\nMFDataset(self, files, check=False, aggdim=None, exclude=[])\n\nClass for reading multi-file netCDF Datasets, making variables\nspanning multiple files appear as if they were in one file.\n\nDatasets must be in C{NETCDF4_CLASSIC, NETCDF3_CLASSIC or NETCDF3_64BIT}\nformat (C{NETCDF4} Datasets won't work).\n\nAdapted from U{pycdf <http://pysclint.sourceforge.net/pycdf>} by Andre Gosselin.\n\nExample usage:\n\n>>> import numpy\n>>>  [...]
-static char __pyx_k_MFTime_self_time_units_None_Cla[] = "\nMFTime(self, time, units=None)\n\nClass providing an interface to a MFDataset time Variable by imposing a unique common\ntime unit to all files.\n\nExample usage:\n\n>>> import numpy\n>>> f1 = Dataset('mftest_1.nc','w', format='NETCDF4_CLASSIC')\n>>> f2 = Dataset('mftest_2.nc','w', format='NETCDF4_CLASSIC')\n>>> f1.createDimension('time',None)\n>>> f2.createDimension('time',None)\n>>> t1 = f1.createVariable('time','i',('time',))\ [...]
-static char __pyx_k_Users_jsw_python_netcdf4_python[] = "/Users/jsw/python/netcdf4-python.git/netCDF4/_netCDF4.pyx";
+static char __pyx_k_The_vltypes_dictionary_maps_the[] = "The `vltypes` dictionary maps the names of\n    variable-length types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the\n    `netCDF4.VLType` class.";
 static char __pyx_k_Variable_object_no_longer_valid[] = "Variable object no longer valid";
 static char __pyx_k_assign_vlen_method_only_for_use[] = "_assign_vlen method only for use with VLEN variables";
 static char __pyx_k_cannot_set__FillValue_attribute[] = "cannot set _FillValue attribute for VLEN or compound variable";
 static char __pyx_k_cannot_specify_chunksizes_for_a[] = "cannot specify chunksizes for a contiguous dataset";
+static char __pyx_k_data_model_describes_the_netCDF[] = "`data_model` describes the netCDF\n    data model version, one of `NETCDF3_CLASSIC`, `NETCDF4`,\n    `NETCDF4_CLASSIC` or `NETCDF3_64BIT`.";
+static char __pyx_k_disk_format_describes_the_under[] = "`disk_format` describes the underlying\n    file format, one of `NETCDF3`, `HDF5`, `HDF4`,\n    `PNETCDF`, `DAP2`, `DAP4` or `UNDEFINED`. Only available if using\n    netcdf C library version >= 4.3.1, otherwise will always return\n    `UNDEFINED`.";
 static char __pyx_k_endian_keyword_argument_must_be[] = "'endian' keyword argument must be 'little','big' or 'native', got '%s'";
 static char __pyx_k_endian_ness_of_dtype_and_endian[] = "endian-ness of dtype and endian kwarg do not match, using endian kwarg";
 static char __pyx_k_get_variables_s_dimension_names[] = "get variables's dimension names";
 static char __pyx_k_illegal_data_type_for_attribute[] = "illegal data type for attribute, must be one of %s, got %s";
+static char __pyx_k_net_bio_c2sm_hvwaldow_git_netcd[] = "/net/bio/c2sm/hvwaldow/git/netcdf4-python/netCDF4/_netCDF4.pyx";
+static char __pyx_k_parent_is_a_reference_to_the_pa[] = "`parent` is a reference to the parent\n    `netCDF4.Group` instance. `None` for a the root group or `netCDF4.Dataset` instance";
 static char __pyx_k_s_is_one_of_the_reserved_attrib[] = "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead.";
+static char __pyx_k_same_as_data_model_retained_for[] = "same as `data_model`, retained for backwards compatibility.";
 static char __pyx_k_single_element_VLEN_slices_must[] = "single element VLEN slices must be specified by integers only";
 static char __pyx_k_wrong_data_type_in_object_array[] = "wrong data type in object array: should be %s, got %s";
 static char __pyx_k_wrong_data_type_should_be_s_got[] = "wrong data type: should be %s, got %s";
+static char __pyx_k_A_tuple_with_the_current_shape_l[] = "A tuple with the current shape (length of all dimensions).";
+static char __pyx_k_Describes_the_power_of_ten_of_th[] = "Describes the power of ten of the \n    smallest decimal place in the data the contains a reliable value.  Data is\n    truncated to this decimal place when it is assigned to the `netCDF4.Variable`\n    instance. If `None`, the data is not truncated.";
 static char __pyx_k_Dimension_object_no_longer_valid[] = "Dimension object no longer valid";
+static char __pyx_k_If_True_child_Dimension_and_Vari[] = "If `True`, child Dimension and Variables objects only keep weak references to\n    the parent Dataset or Group.";
+static char __pyx_k_If_True_data_is_automatically_co[] = "If True, data is automatically converted to/from masked \n    arrays when missing values or fill values are present. Default is `True`, can be\n    reset using `netCDF4.Variable.set_auto_mask` and `netCDF4.Variable.set_auto_maskandscale`\n    methods.";
 static char __pyx_k_MFNetCDF4_only_works_with_NETCDF[] = "MFNetCDF4 only works with NETCDF3_CLASSIC, NETCDF3_64BIT and NETCDF4_CLASSIC formatted files, not NETCDF4";
 static char __pyx_k_MFTime_requires_that_the_same_ti[] = "MFTime requires that the same time calendar is used by all files.";
 static char __pyx_k_MFTime_requires_that_the_time_va[] = "MFTime requires that the time variable in all files have a calendar attribute";
 static char __pyx_k_Return_the_number_of_stored_elem[] = "Return the number of stored elements.";
+static char __pyx_k_The_cmptypes_dictionary_maps_the[] = "The `cmptypes` dictionary maps the names of\n    compound types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the\n    `netCDF4.CompoundType` class.";
+static char __pyx_k_The_dimensions_dictionary_maps_t[] = "The `dimensions` dictionary maps the names of\n    dimensions defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the\n    `netCDF4.Dimension` class.";
+static char __pyx_k_The_groups_dictionary_maps_the_n[] = "The groups dictionary maps the names of groups created for\n    this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Group` class (the\n    `netCDF4.Dataset` class is simply a special case of the `netCDF4.Group` class which\n    describes the root group in the netCDF4 file).";
+static char __pyx_k_The_number_of_variable_dimension[] = "The number of variable dimensions.";
+static char __pyx_k_The_variables_dictionary_maps_th[] = "The `variables` dictionary maps the names of variables\n    defined for this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Variable`\n    class.";
 static char __pyx_k_Unsupported_compound_type_elemen[] = "Unsupported compound type element";
+static char __pyx_k_Variable_least_significant_digit[] = "Variable.least_significant_digit";
 static char __pyx_k_Variable_length_strings_are_only[] = "Variable length strings are only supported for the NETCDF4 format. For other formats, consider using netCDF4.stringtochar to convert string arrays into character arrays with an additional dimension.";
 static char __pyx_k_aggregation_variable_s_not_defin[] = "aggregation variable %s not defined in %s";
 static char __pyx_k_attribute_s_has_unsupported_data[] = "attribute %s has unsupported datatype";
 static char __pyx_k_cannot_assign_fill_value_for_mas[] = "cannot assign fill_value for masked array when missing_value attribute is not a scalar";
-static char __pyx_k_cannot_close_a_L_Group_only_appl[] = "cannot close a L{Group} (only applies to Dataset)";
+static char __pyx_k_cannot_close_a_netCDF4_Group_onl[] = "cannot close a `netCDF4.Group` (only applies to Dataset)";
 static char __pyx_k_cannot_find_compound_type_in_thi[] = "cannot find compound type in this group or parent groups";
 static char __pyx_k_cannot_using_file_globbing_for_r[] = "cannot using file globbing for remote (OPeNDAP) datasets";
 static char __pyx_k_chunksizes_must_be_a_sequence_wi[] = "chunksizes must be a sequence with the same length as dimensions";
@@ -1884,6 +1937,7 @@ static char __pyx_k_dtype_must_string_or_unicode_S_o[] = "dtype must string or u
 static char __pyx_k_filling_on_default__FillValue_of[] = "filling on, default _FillValue of %s ignored\n";
 static char __pyx_k_find_current_sizes_of_all_variab[] = "find current sizes of all variable dimensions";
 static char __pyx_k_format_must_be_NETCDF4_NETCDF4_C[] = "format must be 'NETCDF4', 'NETCDF4_CLASSIC', 'NETCDF3_64BIT', or 'NETCDF3_CLASSIC', got '%s'";
+static char __pyx_k_if_True_scale_factor_and_add_off[] = "if True, `scale_factor` and `add_offset` are\n    applied. Default is `True`, can be reset using `netCDF4.Variable.set_auto_scale` and\n    `netCDF4.Variable.set_auto_maskandscale` methods.";
 static char __pyx_k_illegal_primitive_data_type_must[] = "illegal primitive data type, must be one of %s, got %s";
 static char __pyx_k_invalid_scale_factor_or_add_offs[] = "invalid scale_factor or add_offset attribute, no unpacking done...";
 static char __pyx_k_master_dataset_s_does_not_have_a[] = "master dataset %s does not have a aggregation dimension";
@@ -1909,25 +1963,58 @@ static char __pyx_k_variable_s_dimensions_mismatch_b[] = "variable %s : dimensio
 static char __pyx_k_variable_s_rank_mismatch_between[] = "variable %s : rank mismatch between master %s (%s) and extension %s (%s)";
 static char __pyx_k_variable_s_shape_mismatch_betwee[] = "variable %s : shape mismatch between master %s (%s) and extension %s (%s)";
 static char __pyx_k_vlen_string_array_attributes_not[] = "vlen string array attributes not supported";
+static char __pyx_k_A_numpy_dtype_object_describing_2[] = "A numpy dtype object describing the compound data type.";
+static char __pyx_k_A_numpy_dtype_object_describing_3[] = "A numpy dtype object describing the component type for the VLEN.";
+static char __pyx_k_A_string_describing_the_name_of_2[] = "A string describing the name of the `netCDF4.Dimension` - used when creating a\n    `netCDF4.Variable` instance with `netCDF4.Dataset.createVariable`.";
 static char __pyx_k_s_is_one_of_the_reserved_attrib_2[] = "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead.";
 static char __pyx_k_filling_on_default__FillValue_of_2[] = "filling on, default _FillValue of %s used\n";
 static char __pyx_k_master_dataset_s_does_not_have_a_2[] = "master dataset %s does not have any variables to aggregate";
+static char __pyx_k_numpy_data_type_for_primitive_da_2[] = "numpy data type (for primitive data types) or VLType/CompoundType\n     instance (for compound or vlen data types).";
 static PyObject *__pyx_kp_s_;
 static PyObject *__pyx_kp_s_0m;
 static PyObject *__pyx_kp_s_1;
-static PyObject *__pyx_kp_s_1_1_8;
+static PyObject *__pyx_kp_s_1_1_9;
 static PyObject *__pyx_kp_s_4_2_1;
 static PyObject *__pyx_kp_s_4m;
+static PyObject *__pyx_kp_s_A_numpy_dtype_object_describing;
+static PyObject *__pyx_kp_s_A_numpy_dtype_object_describing_2;
+static PyObject *__pyx_kp_s_A_numpy_dtype_object_describing_3;
+static PyObject *__pyx_kp_s_A_string_describing_the_name_of;
+static PyObject *__pyx_kp_s_A_string_describing_the_name_of_2;
+static PyObject *__pyx_kp_s_A_tuple_containing_the_names_of;
+static PyObject *__pyx_kp_s_A_tuple_with_the_current_shape_l;
+static PyObject *__pyx_kp_s_Always_True_Indicates_to_client;
 static PyObject *__pyx_n_s_AttributeError;
+static PyObject *__pyx_kp_s_Class_for_reading_multi_file_ne;
+static PyObject *__pyx_kp_s_Class_providing_an_interface_to;
+static PyObject *__pyx_kp_s_CompoundType_dtype;
+static PyObject *__pyx_kp_s_CompoundType_name;
+static PyObject *__pyx_kp_s_Dataset_cmptypes;
+static PyObject *__pyx_kp_s_Dataset_data_model;
+static PyObject *__pyx_kp_s_Dataset_dimensions;
+static PyObject *__pyx_kp_s_Dataset_disk_format;
+static PyObject *__pyx_kp_s_Dataset_file_format;
+static PyObject *__pyx_kp_s_Dataset_groups;
+static PyObject *__pyx_kp_s_Dataset_keepweakref;
+static PyObject *__pyx_kp_s_Dataset_parent;
+static PyObject *__pyx_kp_s_Dataset_path;
+static PyObject *__pyx_kp_s_Dataset_variables;
+static PyObject *__pyx_kp_s_Dataset_vltypes;
+static PyObject *__pyx_kp_s_Describes_the_power_of_ten_of_th;
 static PyObject *__pyx_n_s_Dimension;
 static PyObject *__pyx_n_s_Dimension___init;
 static PyObject *__pyx_n_s_Dimension___len;
 static PyObject *__pyx_n_s_Dimension___repr;
 static PyObject *__pyx_n_s_Dimension_isunlimited;
+static PyObject *__pyx_kp_s_Dimension_name;
 static PyObject *__pyx_kp_s_Dimension_object_no_longer_valid;
 static PyObject *__pyx_n_s_FillValue;
 static PyObject *__pyx_kp_s_FillValue_attribute_must_be_set;
+static PyObject *__pyx_kp_s_Group_name;
+static PyObject *__pyx_n_s_HDF4;
 static PyObject *__pyx_n_s_IOError;
+static PyObject *__pyx_kp_s_If_True_child_Dimension_and_Vari;
+static PyObject *__pyx_kp_s_If_True_data_is_automatically_co;
 static PyObject *__pyx_kp_s_Illegal_index;
 static PyObject *__pyx_n_s_ImportError;
 static PyObject *__pyx_n_s_IndexError;
@@ -1939,7 +2026,6 @@ static PyObject *__pyx_n_s_MFDataset___repr;
 static PyObject *__pyx_n_s_MFDataset___setattr;
 static PyObject *__pyx_n_s_MFDataset_close;
 static PyObject *__pyx_n_s_MFDataset_ncattrs;
-static PyObject *__pyx_kp_s_MFDataset_self_files_check_Fals;
 static PyObject *__pyx_kp_s_MFNetCDF4_only_works_with_NETCDF;
 static PyObject *__pyx_n_s_MFTime;
 static PyObject *__pyx_n_s_MFTime___getitem;
@@ -1948,7 +2034,6 @@ static PyObject *__pyx_n_s_MFTime__delta;
 static PyObject *__pyx_n_s_MFTime__time;
 static PyObject *__pyx_kp_s_MFTime_requires_that_the_same_ti;
 static PyObject *__pyx_kp_s_MFTime_requires_that_the_time_va;
-static PyObject *__pyx_kp_s_MFTime_self_time_units_None_Cla;
 static PyObject *__pyx_n_s_MINYEAR;
 static PyObject *__pyx_n_s_NC_DISKLESS;
 static PyObject *__pyx_n_s_NETCDF3;
@@ -1963,29 +2048,49 @@ static PyObject *__pyx_n_s_RuntimeError;
 static PyObject *__pyx_n_s_S;
 static PyObject *__pyx_n_s_S1;
 static PyObject *__pyx_n_s_StartCountStride;
+static PyObject *__pyx_kp_s_String_name;
+static PyObject *__pyx_kp_s_The_cmptypes_dictionary_maps_the;
+static PyObject *__pyx_kp_s_The_dimensions_dictionary_maps_t;
+static PyObject *__pyx_kp_s_The_groups_dictionary_maps_the_n;
+static PyObject *__pyx_kp_s_The_number_of_stored_elements;
+static PyObject *__pyx_kp_s_The_number_of_variable_dimension;
+static PyObject *__pyx_kp_s_The_variables_dictionary_maps_th;
+static PyObject *__pyx_kp_s_The_vltypes_dictionary_maps_the;
 static PyObject *__pyx_n_s_TypeError;
 static PyObject *__pyx_n_s_U;
 static PyObject *__pyx_n_s_U1;
 static PyObject *__pyx_n_s_UNDEFINED;
 static PyObject *__pyx_n_s_UnicodeDecodeError;
 static PyObject *__pyx_kp_s_Unsupported_compound_type_elemen;
-static PyObject *__pyx_kp_s_Users_jsw_python_netcdf4_python;
 static PyObject *__pyx_n_s_V;
+static PyObject *__pyx_kp_s_VLType_dtype;
+static PyObject *__pyx_kp_s_VLType_name;
 static PyObject *__pyx_n_s_ValueError;
 static PyObject *__pyx_n_s_Variable;
 static PyObject *__pyx_n_s_Variable___getattr;
 static PyObject *__pyx_n_s_Variable___getitem;
 static PyObject *__pyx_n_s_Variable___init;
 static PyObject *__pyx_n_s_Variable___len;
+static PyObject *__pyx_kp_s_Variable___orthogonal_indexing;
 static PyObject *__pyx_n_s_Variable___repr;
 static PyObject *__pyx_n_s_Variable__shape;
+static PyObject *__pyx_kp_s_Variable_datatype;
+static PyObject *__pyx_kp_s_Variable_dimensions;
+static PyObject *__pyx_kp_s_Variable_dtype;
+static PyObject *__pyx_kp_s_Variable_least_significant_digit;
 static PyObject *__pyx_kp_s_Variable_length_strings_are_only;
+static PyObject *__pyx_kp_s_Variable_mask;
+static PyObject *__pyx_kp_s_Variable_name;
 static PyObject *__pyx_n_s_Variable_ncattrs;
+static PyObject *__pyx_kp_s_Variable_ndim;
 static PyObject *__pyx_kp_s_Variable_object_no_longer_valid;
+static PyObject *__pyx_kp_s_Variable_scale;
 static PyObject *__pyx_n_s_Variable_set_auto_maskandscale;
+static PyObject *__pyx_kp_s_Variable_shape;
+static PyObject *__pyx_kp_s_Variable_size;
 static PyObject *__pyx_n_s_Variable_typecode;
-static PyObject *__pyx_kp_s__118;
 static PyObject *__pyx_kp_s__12;
+static PyObject *__pyx_kp_s__120;
 static PyObject *__pyx_kp_s__13;
 static PyObject *__pyx_kp_s__14;
 static PyObject *__pyx_kp_s__17;
@@ -2027,7 +2132,7 @@ static PyObject *__pyx_n_s_byteorder;
 static PyObject *__pyx_n_s_byteswap;
 static PyObject *__pyx_n_s_calendar;
 static PyObject *__pyx_kp_s_cannot_assign_fill_value_for_mas;
-static PyObject *__pyx_kp_s_cannot_close_a_L_Group_only_appl;
+static PyObject *__pyx_kp_s_cannot_close_a_netCDF4_Group_onl;
 static PyObject *__pyx_kp_s_cannot_find_compound_type_in_thi;
 static PyObject *__pyx_kp_s_cannot_set__FillValue_attribute;
 static PyObject *__pyx_kp_s_cannot_specify_chunksizes_for_a;
@@ -2072,6 +2177,7 @@ static PyObject *__pyx_n_s_dat;
 static PyObject *__pyx_n_s_data;
 static PyObject *__pyx_n_s_data_model;
 static PyObject *__pyx_n_s_data_model_2;
+static PyObject *__pyx_kp_s_data_model_describes_the_netCDF;
 static PyObject *__pyx_kp_s_data_to_put_in_string_variable_m;
 static PyObject *__pyx_n_s_datashape;
 static PyObject *__pyx_n_s_datatype;
@@ -2105,6 +2211,7 @@ static PyObject *__pyx_n_s_dims_2;
 static PyObject *__pyx_n_s_dimtotlen;
 static PyObject *__pyx_n_s_disk_format;
 static PyObject *__pyx_n_s_disk_format_2;
+static PyObject *__pyx_kp_s_disk_format_describes_the_under;
 static PyObject *__pyx_n_s_diskless;
 static PyObject *__pyx_kp_s_diskless_mode_requires_netcdf_li;
 static PyObject *__pyx_n_s_doc;
@@ -2191,6 +2298,7 @@ static PyObject *__pyx_n_s_i4;
 static PyObject *__pyx_n_s_i8;
 static PyObject *__pyx_n_s_id;
 static PyObject *__pyx_n_s_idx;
+static PyObject *__pyx_kp_s_if_True_scale_factor_and_add_off;
 static PyObject *__pyx_kp_s_illegal_data_type_for_attribute;
 static PyObject *__pyx_kp_s_illegal_primitive_data_type_must;
 static PyObject *__pyx_n_s_import;
@@ -2213,6 +2321,7 @@ static PyObject *__pyx_n_s_item;
 static PyObject *__pyx_n_s_items;
 static PyObject *__pyx_n_s_itemsize;
 static PyObject *__pyx_n_s_itertools;
+static PyObject *__pyx_n_s_iu;
 static PyObject *__pyx_n_s_izip;
 static PyObject *__pyx_n_s_join;
 static PyObject *__pyx_n_s_k;
@@ -2222,6 +2331,7 @@ static PyObject *__pyx_n_s_keys;
 static PyObject *__pyx_n_s_kind;
 static PyObject *__pyx_n_s_least_significant_digit;
 static PyObject *__pyx_n_s_len;
+static PyObject *__pyx_kp_s_len_of_unsized_object;
 static PyObject *__pyx_n_s_little;
 static PyObject *__pyx_n_s_lower;
 static PyObject *__pyx_n_s_lst;
@@ -2273,6 +2383,7 @@ static PyObject *__pyx_n_s_ndim;
 static PyObject *__pyx_kp_s_negative_strides_not_allowed_whe;
 static PyObject *__pyx_n_s_nelems;
 static PyObject *__pyx_n_s_netCDF4__netCDF4;
+static PyObject *__pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd;
 static PyObject *__pyx_n_s_netcdf4libversion;
 static PyObject *__pyx_n_s_netcdftime;
 static PyObject *__pyx_n_s_newSlice;
@@ -2284,6 +2395,7 @@ static PyObject *__pyx_n_s_npversion;
 static PyObject *__pyx_n_s_num;
 static PyObject *__pyx_n_s_num2date;
 static PyObject *__pyx_n_s_numpy;
+static PyObject *__pyx_kp_s_numpy_data_type_for_primitive_da_2;
 static PyObject *__pyx_n_s_numv;
 static PyObject *__pyx_n_s_nunlimdim;
 static PyObject *__pyx_n_s_nv;
@@ -2296,12 +2408,15 @@ static PyObject *__pyx_n_s_ordereddict;
 static PyObject *__pyx_n_s_orthogoral_indexing;
 static PyObject *__pyx_n_s_out_array_shape;
 static PyObject *__pyx_n_s_parent;
+static PyObject *__pyx_kp_s_parent_is_a_reference_to_the_pa;
 static PyObject *__pyx_n_s_parse_date;
 static PyObject *__pyx_n_s_part;
 static PyObject *__pyx_n_s_patchstring;
 static PyObject *__pyx_n_s_path;
 static PyObject *__pyx_n_s_path_2;
 static PyObject *__pyx_kp_s_path_s;
+static PyObject *__pyx_kp_s_path_shows_the_location_of_the;
+static PyObject *__pyx_n_s_pdoc;
 static PyObject *__pyx_n_s_persist;
 static PyObject *__pyx_kp_s_please_install_ordereddict_https;
 static PyObject *__pyx_n_s_pop;
@@ -2350,6 +2465,7 @@ static PyObject *__pyx_kp_s_s_not_found_in_s;
 static PyObject *__pyx_kp_s_s_s;
 static PyObject *__pyx_kp_s_s_s_s;
 static PyObject *__pyx_kp_s_s_s_s_2;
+static PyObject *__pyx_kp_s_same_as_data_model_retained_for;
 static PyObject *__pyx_n_s_scale;
 static PyObject *__pyx_n_s_scale_factor;
 static PyObject *__pyx_n_s_sec_units;
@@ -2522,17 +2638,17 @@ static PyObject *__pyx_slice__51;
 static PyObject *__pyx_slice__54;
 static PyObject *__pyx_slice__55;
 static PyObject *__pyx_slice__61;
-static PyObject *__pyx_slice__63;
-static PyObject *__pyx_slice__65;
+static PyObject *__pyx_slice__64;
 static PyObject *__pyx_slice__66;
 static PyObject *__pyx_slice__67;
-static PyObject *__pyx_slice__77;
-static PyObject *__pyx_slice__80;
+static PyObject *__pyx_slice__68;
+static PyObject *__pyx_slice__78;
 static PyObject *__pyx_slice__81;
-static PyObject *__pyx_slice__84;
-static PyObject *__pyx_slice__86;
-static PyObject *__pyx_slice__91;
+static PyObject *__pyx_slice__82;
+static PyObject *__pyx_slice__85;
+static PyObject *__pyx_slice__87;
 static PyObject *__pyx_slice__92;
+static PyObject *__pyx_slice__93;
 static PyObject *__pyx_tuple__15;
 static PyObject *__pyx_tuple__16;
 static PyObject *__pyx_tuple__18;
@@ -2564,8 +2680,8 @@ static PyObject *__pyx_tuple__58;
 static PyObject *__pyx_tuple__59;
 static PyObject *__pyx_tuple__60;
 static PyObject *__pyx_tuple__62;
-static PyObject *__pyx_tuple__64;
-static PyObject *__pyx_tuple__68;
+static PyObject *__pyx_tuple__63;
+static PyObject *__pyx_tuple__65;
 static PyObject *__pyx_tuple__69;
 static PyObject *__pyx_tuple__70;
 static PyObject *__pyx_tuple__71;
@@ -2574,48 +2690,49 @@ static PyObject *__pyx_tuple__73;
 static PyObject *__pyx_tuple__74;
 static PyObject *__pyx_tuple__75;
 static PyObject *__pyx_tuple__76;
-static PyObject *__pyx_tuple__78;
+static PyObject *__pyx_tuple__77;
 static PyObject *__pyx_tuple__79;
-static PyObject *__pyx_tuple__82;
+static PyObject *__pyx_tuple__80;
 static PyObject *__pyx_tuple__83;
-static PyObject *__pyx_tuple__85;
-static PyObject *__pyx_tuple__87;
+static PyObject *__pyx_tuple__84;
+static PyObject *__pyx_tuple__86;
 static PyObject *__pyx_tuple__88;
 static PyObject *__pyx_tuple__89;
 static PyObject *__pyx_tuple__90;
-static PyObject *__pyx_tuple__93;
+static PyObject *__pyx_tuple__91;
 static PyObject *__pyx_tuple__94;
 static PyObject *__pyx_tuple__95;
 static PyObject *__pyx_tuple__96;
 static PyObject *__pyx_tuple__97;
 static PyObject *__pyx_tuple__98;
 static PyObject *__pyx_tuple__99;
-static PyObject *__pyx_slice__100;
-static PyObject *__pyx_slice__104;
+static PyObject *__pyx_slice__101;
 static PyObject *__pyx_slice__105;
 static PyObject *__pyx_slice__106;
 static PyObject *__pyx_slice__107;
-static PyObject *__pyx_slice__109;
-static PyObject *__pyx_slice__110;
+static PyObject *__pyx_slice__108;
 static PyObject *__pyx_slice__111;
+static PyObject *__pyx_slice__112;
 static PyObject *__pyx_slice__113;
-static PyObject *__pyx_tuple__101;
+static PyObject *__pyx_slice__115;
+static PyObject *__pyx_tuple__100;
 static PyObject *__pyx_tuple__102;
 static PyObject *__pyx_tuple__103;
-static PyObject *__pyx_tuple__108;
-static PyObject *__pyx_tuple__112;
+static PyObject *__pyx_tuple__104;
+static PyObject *__pyx_tuple__109;
+static PyObject *__pyx_tuple__110;
 static PyObject *__pyx_tuple__114;
-static PyObject *__pyx_tuple__115;
 static PyObject *__pyx_tuple__116;
 static PyObject *__pyx_tuple__117;
+static PyObject *__pyx_tuple__118;
 static PyObject *__pyx_tuple__119;
-static PyObject *__pyx_tuple__120;
 static PyObject *__pyx_tuple__121;
-static PyObject *__pyx_tuple__124;
-static PyObject *__pyx_tuple__125;
+static PyObject *__pyx_tuple__122;
+static PyObject *__pyx_tuple__123;
 static PyObject *__pyx_tuple__126;
+static PyObject *__pyx_tuple__127;
 static PyObject *__pyx_tuple__128;
-static PyObject *__pyx_tuple__129;
+static PyObject *__pyx_tuple__130;
 static PyObject *__pyx_tuple__131;
 static PyObject *__pyx_tuple__133;
 static PyObject *__pyx_tuple__135;
@@ -2643,11 +2760,11 @@ static PyObject *__pyx_tuple__177;
 static PyObject *__pyx_tuple__179;
 static PyObject *__pyx_tuple__181;
 static PyObject *__pyx_tuple__183;
-static PyObject *__pyx_tuple__184;
-static PyObject *__pyx_codeobj__122;
-static PyObject *__pyx_codeobj__123;
-static PyObject *__pyx_codeobj__127;
-static PyObject *__pyx_codeobj__130;
+static PyObject *__pyx_tuple__185;
+static PyObject *__pyx_tuple__186;
+static PyObject *__pyx_codeobj__124;
+static PyObject *__pyx_codeobj__125;
+static PyObject *__pyx_codeobj__129;
 static PyObject *__pyx_codeobj__132;
 static PyObject *__pyx_codeobj__134;
 static PyObject *__pyx_codeobj__136;
@@ -2674,9 +2791,10 @@ static PyObject *__pyx_codeobj__176;
 static PyObject *__pyx_codeobj__178;
 static PyObject *__pyx_codeobj__180;
 static PyObject *__pyx_codeobj__182;
-static PyObject *__pyx_codeobj__185;
+static PyObject *__pyx_codeobj__184;
+static PyObject *__pyx_codeobj__187;
 
-/* "netCDF4/_netCDF4.pyx":847
+/* "netCDF4/_netCDF4.pyx":865
  * # check for required version of netcdf-4 and hdf5.
  * 
  * def _gethdf5libversion():             # <<<<<<<<<<<<<<
@@ -2716,7 +2834,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_gethdf5libversion", 0);
 
-  /* "netCDF4/_netCDF4.pyx":848
+  /* "netCDF4/_netCDF4.pyx":866
  * 
  * def _gethdf5libversion():
  *     majorvers = H5_VERS_MAJOR             # <<<<<<<<<<<<<<
@@ -2725,7 +2843,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
  */
   __pyx_v_majorvers = H5_VERS_MAJOR;
 
-  /* "netCDF4/_netCDF4.pyx":849
+  /* "netCDF4/_netCDF4.pyx":867
  * def _gethdf5libversion():
  *     majorvers = H5_VERS_MAJOR
  *     minorvers = H5_VERS_MINOR             # <<<<<<<<<<<<<<
@@ -2734,7 +2852,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
  */
   __pyx_v_minorvers = H5_VERS_MINOR;
 
-  /* "netCDF4/_netCDF4.pyx":850
+  /* "netCDF4/_netCDF4.pyx":868
  *     majorvers = H5_VERS_MAJOR
  *     minorvers = H5_VERS_MINOR
  *     releasevers = H5_VERS_RELEASE             # <<<<<<<<<<<<<<
@@ -2743,30 +2861,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
  */
   __pyx_v_releasevers = H5_VERS_RELEASE;
 
-  /* "netCDF4/_netCDF4.pyx":851
+  /* "netCDF4/_netCDF4.pyx":869
  *     minorvers = H5_VERS_MINOR
  *     releasevers = H5_VERS_RELEASE
  *     patchstring = H5_VERS_SUBRELEASE.decode('ascii')             # <<<<<<<<<<<<<<
  *     if not patchstring:
  *         return '%d.%d.%d' % (majorvers,minorvers,releasevers)
  */
-  __pyx_t_1 = __Pyx_decode_c_string(H5_VERS_SUBRELEASE, 0, strlen(H5_VERS_SUBRELEASE), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_decode_c_string(H5_VERS_SUBRELEASE, 0, strlen(H5_VERS_SUBRELEASE), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_patchstring = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":852
+  /* "netCDF4/_netCDF4.pyx":870
  *     releasevers = H5_VERS_RELEASE
  *     patchstring = H5_VERS_SUBRELEASE.decode('ascii')
  *     if not patchstring:             # <<<<<<<<<<<<<<
  *         return '%d.%d.%d' % (majorvers,minorvers,releasevers)
  *     else:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_patchstring); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_patchstring); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = ((!__pyx_t_2) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":853
+    /* "netCDF4/_netCDF4.pyx":871
  *     patchstring = H5_VERS_SUBRELEASE.decode('ascii')
  *     if not patchstring:
  *         return '%d.%d.%d' % (majorvers,minorvers,releasevers)             # <<<<<<<<<<<<<<
@@ -2774,13 +2892,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
  *         return '%d.%d.%d-%s' % (majorvers,minorvers,releasevers,patchstring)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_majorvers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_majorvers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_minorvers); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_minorvers); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_releasevers); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_releasevers); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
@@ -2791,7 +2909,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
     __pyx_t_1 = 0;
     __pyx_t_4 = 0;
     __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_d_d_d, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_d_d_d, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_r = __pyx_t_5;
@@ -2800,7 +2918,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":855
+    /* "netCDF4/_netCDF4.pyx":873
  *         return '%d.%d.%d' % (majorvers,minorvers,releasevers)
  *     else:
  *         return '%d.%d.%d-%s' % (majorvers,minorvers,releasevers,patchstring)             # <<<<<<<<<<<<<<
@@ -2808,13 +2926,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
  * def getlibversion():
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_majorvers); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_majorvers); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_minorvers); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_minorvers); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_releasevers); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_releasevers); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
@@ -2828,7 +2946,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
     __pyx_t_5 = 0;
     __pyx_t_6 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_d_d_d_s, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_d_d_d_s, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_r = __pyx_t_4;
@@ -2836,7 +2954,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":847
+  /* "netCDF4/_netCDF4.pyx":865
  * # check for required version of netcdf-4 and hdf5.
  * 
  * def _gethdf5libversion():             # <<<<<<<<<<<<<<
@@ -2859,17 +2977,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4__gethdf5libversion(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":857
+/* "netCDF4/_netCDF4.pyx":875
  *         return '%d.%d.%d-%s' % (majorvers,minorvers,releasevers,patchstring)
  * 
  * def getlibversion():             # <<<<<<<<<<<<<<
  *     """
- * getlibversion()
+ * **`getlibversion()`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_3getlibversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_2getlibversion[] = "\ngetlibversion()\n\nreturns a string describing the version of the netcdf library\nused to build the module, and when it was built.\n    ";
+static char __pyx_doc_7netCDF4_8_netCDF4_2getlibversion[] = "\n**`getlibversion()`**\n\nreturns a string describing the version of the netcdf library\nused to build the module, and when it was built.\n    ";
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_3getlibversion = {"getlibversion", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_3getlibversion, METH_NOARGS, __pyx_doc_7netCDF4_8_netCDF4_2getlibversion};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_3getlibversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
@@ -2892,7 +3010,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_2getlibversion(CYTHON_UNUSED PyObje
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("getlibversion", 0);
 
-  /* "netCDF4/_netCDF4.pyx":864
+  /* "netCDF4/_netCDF4.pyx":882
  * used to build the module, and when it was built.
  *     """
  *     return (<char *>nc_inq_libvers()).decode('ascii')             # <<<<<<<<<<<<<<
@@ -2901,19 +3019,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_2getlibversion(CYTHON_UNUSED PyObje
  */
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((char *)nc_inq_libvers());
-  __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_1, 0, strlen(__pyx_t_1), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_1, 0, strlen(__pyx_t_1), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":857
+  /* "netCDF4/_netCDF4.pyx":875
  *         return '%d.%d.%d-%s' % (majorvers,minorvers,releasevers,patchstring)
  * 
  * def getlibversion():             # <<<<<<<<<<<<<<
  *     """
- * getlibversion()
+ * **`getlibversion()`**
  */
 
   /* function exit code */
@@ -2927,7 +3045,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_2getlibversion(CYTHON_UNUSED PyObje
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":926
+/* "netCDF4/_netCDF4.pyx":944
  * # internal C functions.
  * 
  * cdef _get_att_names(int grpid, int varid):             # <<<<<<<<<<<<<<
@@ -2959,7 +3077,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get_att_names", 0);
 
-  /* "netCDF4/_netCDF4.pyx":930
+  /* "netCDF4/_netCDF4.pyx":948
  *     cdef int ierr, numatts, n
  *     cdef char namstring[NC_MAX_NAME+1]
  *     if varid == NC_GLOBAL:             # <<<<<<<<<<<<<<
@@ -2969,7 +3087,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   __pyx_t_1 = ((__pyx_v_varid == NC_GLOBAL) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":931
+    /* "netCDF4/_netCDF4.pyx":949
  *     cdef char namstring[NC_MAX_NAME+1]
  *     if varid == NC_GLOBAL:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -2983,7 +3101,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":932
+          /* "netCDF4/_netCDF4.pyx":950
  *     if varid == NC_GLOBAL:
  *         with nogil:
  *             ierr = nc_inq_natts(grpid, &numatts)             # <<<<<<<<<<<<<<
@@ -2993,7 +3111,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
           __pyx_v_ierr = nc_inq_natts(__pyx_v_grpid, (&__pyx_v_numatts));
         }
 
-        /* "netCDF4/_netCDF4.pyx":931
+        /* "netCDF4/_netCDF4.pyx":949
  *     cdef char namstring[NC_MAX_NAME+1]
  *     if varid == NC_GLOBAL:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -3014,7 +3132,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":934
+    /* "netCDF4/_netCDF4.pyx":952
  *             ierr = nc_inq_natts(grpid, &numatts)
  *     else:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -3028,7 +3146,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":935
+          /* "netCDF4/_netCDF4.pyx":953
  *     else:
  *         with nogil:
  *             ierr = nc_inq_varnatts(grpid, varid, &numatts)             # <<<<<<<<<<<<<<
@@ -3038,7 +3156,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
           __pyx_v_ierr = nc_inq_varnatts(__pyx_v_grpid, __pyx_v_varid, (&__pyx_v_numatts));
         }
 
-        /* "netCDF4/_netCDF4.pyx":934
+        /* "netCDF4/_netCDF4.pyx":952
  *             ierr = nc_inq_natts(grpid, &numatts)
  *     else:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -3058,7 +3176,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":936
+  /* "netCDF4/_netCDF4.pyx":954
  *         with nogil:
  *             ierr = nc_inq_varnatts(grpid, varid, &numatts)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -3068,7 +3186,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":937
+    /* "netCDF4/_netCDF4.pyx":955
  *             ierr = nc_inq_varnatts(grpid, varid, &numatts)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -3076,35 +3194,35 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
  *     for n from 0 <= n < numatts:
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":938
+  /* "netCDF4/_netCDF4.pyx":956
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     attslist = []             # <<<<<<<<<<<<<<
  *     for n from 0 <= n < numatts:
  *         with nogil:
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_attslist = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":939
+  /* "netCDF4/_netCDF4.pyx":957
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     attslist = []
  *     for n from 0 <= n < numatts:             # <<<<<<<<<<<<<<
@@ -3114,7 +3232,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   __pyx_t_5 = __pyx_v_numatts;
   for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_5; __pyx_v_n++) {
 
-    /* "netCDF4/_netCDF4.pyx":940
+    /* "netCDF4/_netCDF4.pyx":958
  *     attslist = []
  *     for n from 0 <= n < numatts:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -3128,7 +3246,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":941
+          /* "netCDF4/_netCDF4.pyx":959
  *     for n from 0 <= n < numatts:
  *         with nogil:
  *             ierr = nc_inq_attname(grpid, varid, n, namstring)             # <<<<<<<<<<<<<<
@@ -3138,7 +3256,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
           __pyx_v_ierr = nc_inq_attname(__pyx_v_grpid, __pyx_v_varid, __pyx_v_n, __pyx_v_namstring);
         }
 
-        /* "netCDF4/_netCDF4.pyx":940
+        /* "netCDF4/_netCDF4.pyx":958
  *     attslist = []
  *     for n from 0 <= n < numatts:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -3156,7 +3274,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":942
+    /* "netCDF4/_netCDF4.pyx":960
  *         with nogil:
  *             ierr = nc_inq_attname(grpid, varid, n, namstring)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -3166,7 +3284,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
     __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":943
+      /* "netCDF4/_netCDF4.pyx":961
  *             ierr = nc_inq_attname(grpid, varid, n, namstring)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -3174,37 +3292,37 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
  *     return attslist
  */
       __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":944
+    /* "netCDF4/_netCDF4.pyx":962
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         attslist.append(namstring.decode(default_encoding,unicode_error))             # <<<<<<<<<<<<<<
  *     return attslist
  * 
  */
-    __pyx_t_4 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_8 = NULL;
     __pyx_t_9 = 0;
@@ -3218,7 +3336,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
         __pyx_t_9 = 1;
       }
     }
-    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     if (__pyx_t_8) {
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -3229,15 +3347,15 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
     __Pyx_GIVEREF(__pyx_t_7);
     __pyx_t_4 = 0;
     __pyx_t_7 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_attslist, __pyx_t_3); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_attslist, __pyx_t_3); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":945
+  /* "netCDF4/_netCDF4.pyx":963
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         attslist.append(namstring.decode(default_encoding,unicode_error))
  *     return attslist             # <<<<<<<<<<<<<<
@@ -3249,7 +3367,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   __pyx_r = __pyx_v_attslist;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":926
+  /* "netCDF4/_netCDF4.pyx":944
  * # internal C functions.
  * 
  * cdef _get_att_names(int grpid, int varid):             # <<<<<<<<<<<<<<
@@ -3274,7 +3392,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att_names(int __pyx_v_grpid, in
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":947
+/* "netCDF4/_netCDF4.pyx":965
  *     return attslist
  * 
  * cdef _get_att(grp, int varid, name):             # <<<<<<<<<<<<<<
@@ -3319,42 +3437,42 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get_att", 0);
 
-  /* "netCDF4/_netCDF4.pyx":955
+  /* "netCDF4/_netCDF4.pyx":973
  *     cdef nc_type att_type
  *     cdef ndarray value_arr
  *     bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *     attname = bytestr
  *     _grpid = grp._grpid
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":956
+  /* "netCDF4/_netCDF4.pyx":974
  *     cdef ndarray value_arr
  *     bytestr = _strencode(name)
  *     attname = bytestr             # <<<<<<<<<<<<<<
  *     _grpid = grp._grpid
  *     with nogil:
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_attname = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":957
+  /* "netCDF4/_netCDF4.pyx":975
  *     bytestr = _strencode(name)
  *     attname = bytestr
  *     _grpid = grp._grpid             # <<<<<<<<<<<<<<
  *     with nogil:
  *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_3;
 
-  /* "netCDF4/_netCDF4.pyx":958
+  /* "netCDF4/_netCDF4.pyx":976
  *     attname = bytestr
  *     _grpid = grp._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -3368,7 +3486,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":959
+        /* "netCDF4/_netCDF4.pyx":977
  *     _grpid = grp._grpid
  *     with nogil:
  *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)             # <<<<<<<<<<<<<<
@@ -3378,7 +3496,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         __pyx_v_ierr = nc_inq_att(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, (&__pyx_v_att_type), (&__pyx_v_att_len));
       }
 
-      /* "netCDF4/_netCDF4.pyx":958
+      /* "netCDF4/_netCDF4.pyx":976
  *     attname = bytestr
  *     _grpid = grp._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -3396,7 +3514,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":960
+  /* "netCDF4/_netCDF4.pyx":978
  *     with nogil:
  *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -3406,7 +3524,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
   __pyx_t_4 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":961
+    /* "netCDF4/_netCDF4.pyx":979
  *         ierr = nc_inq_att(_grpid, varid, attname, &att_type, &att_len)
  *     if ierr != NC_NOERR:
  *         raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -3414,23 +3532,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  *     if att_type == NC_CHAR:
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":977
+  /* "netCDF4/_netCDF4.pyx":995
  *             value_arr.tostring().decode(default_encoding,unicode_error).replace('\x00','')
  *         return pstring
  *     elif att_type == NC_STRING:             # <<<<<<<<<<<<<<
@@ -3439,7 +3557,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  */
   switch (__pyx_v_att_type) {
 
-    /* "netCDF4/_netCDF4.pyx":963
+    /* "netCDF4/_netCDF4.pyx":981
  *         raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     # attribute is a character or string ...
  *     if att_type == NC_CHAR:             # <<<<<<<<<<<<<<
@@ -3448,19 +3566,19 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  */
     case NC_CHAR:
 
-    /* "netCDF4/_netCDF4.pyx":964
+    /* "netCDF4/_netCDF4.pyx":982
  *     # attribute is a character or string ...
  *     if att_type == NC_CHAR:
  *         value_arr = numpy.empty(att_len,'S1')             # <<<<<<<<<<<<<<
  *         with nogil:
  *             ierr = nc_get_att_text(_grpid, varid, attname, <char *>value_arr.data)
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_7 = NULL;
     __pyx_t_8 = 0;
@@ -3474,7 +3592,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
     if (__pyx_t_7) {
       PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -3485,15 +3603,15 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_n_s_S1);
     __Pyx_GIVEREF(__pyx_n_s_S1);
     __pyx_t_5 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_value_arr = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":965
+    /* "netCDF4/_netCDF4.pyx":983
  *     if att_type == NC_CHAR:
  *         value_arr = numpy.empty(att_len,'S1')
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -3507,7 +3625,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":966
+          /* "netCDF4/_netCDF4.pyx":984
  *         value_arr = numpy.empty(att_len,'S1')
  *         with nogil:
  *             ierr = nc_get_att_text(_grpid, varid, attname, <char *>value_arr.data)             # <<<<<<<<<<<<<<
@@ -3517,7 +3635,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           __pyx_v_ierr = nc_get_att_text(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, ((char *)__pyx_v_value_arr->data));
         }
 
-        /* "netCDF4/_netCDF4.pyx":965
+        /* "netCDF4/_netCDF4.pyx":983
  *     if att_type == NC_CHAR:
  *         value_arr = numpy.empty(att_len,'S1')
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -3535,7 +3653,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":967
+    /* "netCDF4/_netCDF4.pyx":985
  *         with nogil:
  *             ierr = nc_get_att_text(_grpid, varid, attname, <char *>value_arr.data)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -3545,7 +3663,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     __pyx_t_4 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":968
+      /* "netCDF4/_netCDF4.pyx":986
  *             ierr = nc_get_att_text(_grpid, varid, attname, <char *>value_arr.data)
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -3553,56 +3671,56 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  *             # make sure _FillValue for character arrays is a byte on python 3
  */
       __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":969
+    /* "netCDF4/_netCDF4.pyx":987
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if name == '_FillValue' and python3:             # <<<<<<<<<<<<<<
  *             # make sure _FillValue for character arrays is a byte on python 3
  *             # (issue 271).
  */
-    __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FillValue, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FillValue, Py_EQ)); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_10) {
     } else {
       __pyx_t_4 = __pyx_t_10;
       goto __pyx_L12_bool_binop_done;
     }
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_4 = __pyx_t_10;
     __pyx_L12_bool_binop_done:;
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":972
+      /* "netCDF4/_netCDF4.pyx":990
  *             # make sure _FillValue for character arrays is a byte on python 3
  *             # (issue 271).
  *             pstring = bytes(value_arr)             # <<<<<<<<<<<<<<
  *         else:
  *             pstring =\
  */
-      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(((PyObject *)__pyx_v_value_arr));
       PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_value_arr));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_value_arr));
-      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_pstring = __pyx_t_6;
@@ -3611,14 +3729,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":975
+      /* "netCDF4/_netCDF4.pyx":993
  *         else:
  *             pstring =\
  *             value_arr.tostring().decode(default_encoding,unicode_error).replace('\x00','')             # <<<<<<<<<<<<<<
  *         return pstring
  *     elif att_type == NC_STRING:
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_tostring); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_tostring); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_9))) {
@@ -3631,19 +3749,19 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         }
       }
       if (__pyx_t_5) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_decode); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_decode); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_7 = NULL;
       __pyx_t_8 = 0;
@@ -3657,7 +3775,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           __pyx_t_8 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_7) {
         PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -3668,14 +3786,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       __Pyx_GIVEREF(__pyx_t_5);
       __pyx_t_1 = 0;
       __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_replace); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_replace); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __pyx_v_pstring = __pyx_t_6;
@@ -3683,7 +3801,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     }
     __pyx_L11:;
 
-    /* "netCDF4/_netCDF4.pyx":976
+    /* "netCDF4/_netCDF4.pyx":994
  *             pstring =\
  *             value_arr.tostring().decode(default_encoding,unicode_error).replace('\x00','')
  *         return pstring             # <<<<<<<<<<<<<<
@@ -3696,7 +3814,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     goto __pyx_L0;
     break;
 
-    /* "netCDF4/_netCDF4.pyx":977
+    /* "netCDF4/_netCDF4.pyx":995
  *             value_arr.tostring().decode(default_encoding,unicode_error).replace('\x00','')
  *         return pstring
  *     elif att_type == NC_STRING:             # <<<<<<<<<<<<<<
@@ -3705,7 +3823,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  */
     case NC_STRING:
 
-    /* "netCDF4/_netCDF4.pyx":978
+    /* "netCDF4/_netCDF4.pyx":996
  *         return pstring
  *     elif att_type == NC_STRING:
  *         if att_len == 1:             # <<<<<<<<<<<<<<
@@ -3715,7 +3833,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     __pyx_t_4 = ((__pyx_v_att_len == 1) != 0);
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":979
+      /* "netCDF4/_netCDF4.pyx":997
  *     elif att_type == NC_STRING:
  *         if att_len == 1:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -3729,7 +3847,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":980
+            /* "netCDF4/_netCDF4.pyx":998
  *         if att_len == 1:
  *             with nogil:
  *                 ierr = nc_get_att_string(_grpid, varid, attname, &stratt)             # <<<<<<<<<<<<<<
@@ -3739,7 +3857,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
             __pyx_v_ierr = nc_get_att_string(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, (&__pyx_v_stratt));
           }
 
-          /* "netCDF4/_netCDF4.pyx":979
+          /* "netCDF4/_netCDF4.pyx":997
  *     elif att_type == NC_STRING:
  *         if att_len == 1:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -3757,21 +3875,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":981
+      /* "netCDF4/_netCDF4.pyx":999
  *             with nogil:
  *                 ierr = nc_get_att_string(_grpid, varid, attname, &stratt)
  *             pstring = stratt.decode(default_encoding,unicode_error).replace('\x00','')             # <<<<<<<<<<<<<<
  *             return pstring
  *         else:
  */
-      __pyx_t_9 = __Pyx_PyBytes_FromString(__pyx_v_stratt); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyBytes_FromString(__pyx_v_stratt); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_decode); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_decode); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_1 = NULL;
       __pyx_t_8 = 0;
@@ -3785,7 +3903,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           __pyx_t_8 = 1;
         }
       }
-      __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_1) {
         PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -3796,20 +3914,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       __Pyx_GIVEREF(__pyx_t_5);
       __pyx_t_9 = 0;
       __pyx_t_5 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_replace); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_replace); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __pyx_v_pstring = __pyx_t_6;
       __pyx_t_6 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":982
+      /* "netCDF4/_netCDF4.pyx":1000
  *                 ierr = nc_get_att_string(_grpid, varid, attname, &stratt)
  *             pstring = stratt.decode(default_encoding,unicode_error).replace('\x00','')
  *             return pstring             # <<<<<<<<<<<<<<
@@ -3823,23 +3941,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":984
+      /* "netCDF4/_netCDF4.pyx":1002
  *             return pstring
  *         else:
  *             raise KeyError('vlen string array attributes not supported')             # <<<<<<<<<<<<<<
  *     else:
  *     # a regular numeric or compound type.
  */
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     break;
     default:
 
-    /* "netCDF4/_netCDF4.pyx":987
+    /* "netCDF4/_netCDF4.pyx":1005
  *     else:
  *     # a regular numeric or compound type.
  *         if att_type == NC_LONG:             # <<<<<<<<<<<<<<
@@ -3849,7 +3967,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     __pyx_t_4 = ((__pyx_v_att_type == NC_LONG) != 0);
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":988
+      /* "netCDF4/_netCDF4.pyx":1006
  *     # a regular numeric or compound type.
  *         if att_type == NC_LONG:
  *             att_type = NC_INT             # <<<<<<<<<<<<<<
@@ -3861,7 +3979,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     }
     __pyx_L18:;
 
-    /* "netCDF4/_netCDF4.pyx":989
+    /* "netCDF4/_netCDF4.pyx":1007
  *         if att_type == NC_LONG:
  *             att_type = NC_INT
  *         try:             # <<<<<<<<<<<<<<
@@ -3875,16 +3993,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       __Pyx_XGOTREF(__pyx_t_14);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":990
+        /* "netCDF4/_netCDF4.pyx":1008
  *             att_type = NC_INT
  *         try:
  *             type_att = _nctonptype[att_type] # see if it is a primitive type             # <<<<<<<<<<<<<<
  *         except KeyError:
  *             # check if it's a compound
  */
-        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L19_error;}
+        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L19_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_att_type, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L19_error;};
+        __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_att_type, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L19_error;};
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_v_type_att = __pyx_t_11;
@@ -3902,7 +4020,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":991
+      /* "netCDF4/_netCDF4.pyx":1009
  *         try:
  *             type_att = _nctonptype[att_type] # see if it is a primitive type
  *         except KeyError:             # <<<<<<<<<<<<<<
@@ -3912,12 +4030,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       __pyx_t_3 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
       if (__pyx_t_3) {
         __Pyx_AddTraceback("netCDF4._netCDF4._get_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L21_except_error;}
+        if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L21_except_error;}
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GOTREF(__pyx_t_7);
 
-        /* "netCDF4/_netCDF4.pyx":993
+        /* "netCDF4/_netCDF4.pyx":1011
  *         except KeyError:
  *             # check if it's a compound
  *             try:             # <<<<<<<<<<<<<<
@@ -3931,14 +4049,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           __Pyx_XGOTREF(__pyx_t_17);
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":994
+            /* "netCDF4/_netCDF4.pyx":1012
  *             # check if it's a compound
  *             try:
  *                 type_att = _read_compound(grp, att_type)             # <<<<<<<<<<<<<<
  *             except:
  *                 raise KeyError('attribute %s has unsupported datatype' % attname)
  */
-            __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_grp, __pyx_v_att_type, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
+            __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_grp, __pyx_v_att_type, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1012; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_XDECREF_SET(__pyx_v_type_att, __pyx_t_5);
             __pyx_t_5 = 0;
@@ -3952,7 +4070,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":995
+          /* "netCDF4/_netCDF4.pyx":1013
  *             try:
  *                 type_att = _read_compound(grp, att_type)
  *             except:             # <<<<<<<<<<<<<<
@@ -3961,34 +4079,34 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  */
           /*except:*/ {
             __Pyx_AddTraceback("netCDF4._netCDF4._get_att", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+            if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_9, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
             __Pyx_GOTREF(__pyx_t_5);
             __Pyx_GOTREF(__pyx_t_9);
             __Pyx_GOTREF(__pyx_t_1);
 
-            /* "netCDF4/_netCDF4.pyx":996
+            /* "netCDF4/_netCDF4.pyx":1014
  *                 type_att = _read_compound(grp, att_type)
  *             except:
  *                 raise KeyError('attribute %s has unsupported datatype' % attname)             # <<<<<<<<<<<<<<
  *         value_arr = numpy.empty(att_len,type_att)
  *         with nogil:
  */
-            __pyx_t_18 = __Pyx_PyBytes_FromString(__pyx_v_attname); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+            __pyx_t_18 = __Pyx_PyBytes_FromString(__pyx_v_attname); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
             __Pyx_GOTREF(__pyx_t_18);
-            __pyx_t_19 = __Pyx_PyString_Format(__pyx_kp_s_attribute_s_has_unsupported_data, __pyx_t_18); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+            __pyx_t_19 = __Pyx_PyString_Format(__pyx_kp_s_attribute_s_has_unsupported_data, __pyx_t_18); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
             __Pyx_GOTREF(__pyx_t_19);
             __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-            __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+            __pyx_t_18 = PyTuple_New(1); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
             __Pyx_GOTREF(__pyx_t_18);
             PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_19);
             __Pyx_GIVEREF(__pyx_t_19);
             __pyx_t_19 = 0;
-            __pyx_t_19 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_18, NULL); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+            __pyx_t_19 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_18, NULL); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
             __Pyx_GOTREF(__pyx_t_19);
             __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
             __Pyx_Raise(__pyx_t_19, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
           }
           __pyx_L31_except_error:;
           __Pyx_XGIVEREF(__pyx_t_15);
@@ -4018,19 +4136,19 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       __pyx_L26_try_end:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":997
+    /* "netCDF4/_netCDF4.pyx":1015
  *             except:
  *                 raise KeyError('attribute %s has unsupported datatype' % attname)
  *         value_arr = numpy.empty(att_len,type_att)             # <<<<<<<<<<<<<<
  *         with nogil:
  *             ierr = nc_get_att(_grpid, varid, attname, value_arr.data)
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_att_len); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_1 = NULL;
     __pyx_t_8 = 0;
@@ -4044,7 +4162,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
     if (__pyx_t_1) {
       PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -4055,15 +4173,15 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_type_att);
     __Pyx_GIVEREF(__pyx_v_type_att);
     __pyx_t_6 = 0;
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_value_arr = ((PyArrayObject *)__pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":998
+    /* "netCDF4/_netCDF4.pyx":1016
  *                 raise KeyError('attribute %s has unsupported datatype' % attname)
  *         value_arr = numpy.empty(att_len,type_att)
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -4077,7 +4195,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":999
+          /* "netCDF4/_netCDF4.pyx":1017
  *         value_arr = numpy.empty(att_len,type_att)
  *         with nogil:
  *             ierr = nc_get_att(_grpid, varid, attname, value_arr.data)             # <<<<<<<<<<<<<<
@@ -4087,7 +4205,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
           __pyx_v_ierr = nc_get_att(__pyx_v__grpid, __pyx_v_varid, __pyx_v_attname, __pyx_v_value_arr->data);
         }
 
-        /* "netCDF4/_netCDF4.pyx":998
+        /* "netCDF4/_netCDF4.pyx":1016
  *                 raise KeyError('attribute %s has unsupported datatype' % attname)
  *         value_arr = numpy.empty(att_len,type_att)
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -4105,7 +4223,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":1000
+    /* "netCDF4/_netCDF4.pyx":1018
  *         with nogil:
  *             ierr = nc_get_att(_grpid, varid, attname, value_arr.data)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -4115,7 +4233,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     __pyx_t_4 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":1001
+      /* "netCDF4/_netCDF4.pyx":1019
  *             ierr = nc_get_att(_grpid, varid, attname, value_arr.data)
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -4123,38 +4241,38 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  *             # return a scalar for a scalar array
  */
       __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_INCREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_Raise(__pyx_t_7, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":1002
+    /* "netCDF4/_netCDF4.pyx":1020
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if value_arr.shape == ():             # <<<<<<<<<<<<<<
  *             # return a scalar for a scalar array
  *             return value_arr.item()
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_11 = PyObject_RichCompare(__pyx_t_7, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_RichCompare(__pyx_t_7, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":1004
+      /* "netCDF4/_netCDF4.pyx":1022
  *         if value_arr.shape == ():
  *             # return a scalar for a scalar array
  *             return value_arr.item()             # <<<<<<<<<<<<<<
@@ -4162,7 +4280,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  *             # return a scalar for a single element array
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_item); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_item); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_9 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -4175,10 +4293,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
         }
       }
       if (__pyx_t_9) {
-        __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       } else {
-        __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -4187,7 +4305,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
       goto __pyx_L0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":1005
+    /* "netCDF4/_netCDF4.pyx":1023
  *             # return a scalar for a scalar array
  *             return value_arr.item()
  *         elif att_len == 1:             # <<<<<<<<<<<<<<
@@ -4197,7 +4315,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     __pyx_t_4 = ((__pyx_v_att_len == 1) != 0);
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":1007
+      /* "netCDF4/_netCDF4.pyx":1025
  *         elif att_len == 1:
  *             # return a scalar for a single element array
  *             return value_arr[0]             # <<<<<<<<<<<<<<
@@ -4205,7 +4323,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
  *             return value_arr
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_11 = __Pyx_GetItemInt(((PyObject *)__pyx_v_value_arr), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_11 = __Pyx_GetItemInt(((PyObject *)__pyx_v_value_arr), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_r = __pyx_t_11;
       __pyx_t_11 = 0;
@@ -4213,7 +4331,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1009
+      /* "netCDF4/_netCDF4.pyx":1027
  *             return value_arr[0]
  *         else:
  *             return value_arr             # <<<<<<<<<<<<<<
@@ -4228,7 +4346,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
     break;
   }
 
-  /* "netCDF4/_netCDF4.pyx":947
+  /* "netCDF4/_netCDF4.pyx":965
  *     return attslist
  * 
  * cdef _get_att(grp, int varid, name):             # <<<<<<<<<<<<<<
@@ -4258,7 +4376,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_att(PyObject *__pyx_v_grp, int
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1011
+/* "netCDF4/_netCDF4.pyx":1029
  *             return value_arr
  * 
  * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
@@ -4298,7 +4416,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5_set_default_format(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_set_default_format") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_set_default_format") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -4311,7 +4429,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5_set_default_format(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_set_default_format", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("_set_default_format", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4._set_default_format", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -4335,17 +4453,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_set_default_format(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_set_default_format", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1013
+  /* "netCDF4/_netCDF4.pyx":1031
  * def _set_default_format(object format='NETCDF4'):
  *     # Private function to set the netCDF file format
  *     if format == 'NETCDF4':             # <<<<<<<<<<<<<<
  *         nc_set_default_format(NC_FORMAT_NETCDF4, NULL)
  *     elif format == 'NETCDF4_CLASSIC':
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1014
+    /* "netCDF4/_netCDF4.pyx":1032
  *     # Private function to set the netCDF file format
  *     if format == 'NETCDF4':
  *         nc_set_default_format(NC_FORMAT_NETCDF4, NULL)             # <<<<<<<<<<<<<<
@@ -4356,17 +4474,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_set_default_format(CYTHON_UNUSED
     goto __pyx_L3;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1015
+  /* "netCDF4/_netCDF4.pyx":1033
  *     if format == 'NETCDF4':
  *         nc_set_default_format(NC_FORMAT_NETCDF4, NULL)
  *     elif format == 'NETCDF4_CLASSIC':             # <<<<<<<<<<<<<<
  *         nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL)
  *     elif format == 'NETCDF3_64BIT':
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF4_CLASSIC, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF4_CLASSIC, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1016
+    /* "netCDF4/_netCDF4.pyx":1034
  *         nc_set_default_format(NC_FORMAT_NETCDF4, NULL)
  *     elif format == 'NETCDF4_CLASSIC':
  *         nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL)             # <<<<<<<<<<<<<<
@@ -4377,17 +4495,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_set_default_format(CYTHON_UNUSED
     goto __pyx_L3;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1017
+  /* "netCDF4/_netCDF4.pyx":1035
  *     elif format == 'NETCDF4_CLASSIC':
  *         nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL)
  *     elif format == 'NETCDF3_64BIT':             # <<<<<<<<<<<<<<
  *         nc_set_default_format(NC_FORMAT_64BIT, NULL)
  *     elif format == 'NETCDF3_CLASSIC':
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF3_64BIT, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF3_64BIT, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1018
+    /* "netCDF4/_netCDF4.pyx":1036
  *         nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL)
  *     elif format == 'NETCDF3_64BIT':
  *         nc_set_default_format(NC_FORMAT_64BIT, NULL)             # <<<<<<<<<<<<<<
@@ -4398,17 +4516,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_set_default_format(CYTHON_UNUSED
     goto __pyx_L3;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1019
+  /* "netCDF4/_netCDF4.pyx":1037
  *     elif format == 'NETCDF3_64BIT':
  *         nc_set_default_format(NC_FORMAT_64BIT, NULL)
  *     elif format == 'NETCDF3_CLASSIC':             # <<<<<<<<<<<<<<
  *         nc_set_default_format(NC_FORMAT_CLASSIC, NULL)
  *     else:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF3_CLASSIC, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_format, __pyx_n_s_NETCDF3_CLASSIC, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1020
+    /* "netCDF4/_netCDF4.pyx":1038
  *         nc_set_default_format(NC_FORMAT_64BIT, NULL)
  *     elif format == 'NETCDF3_CLASSIC':
  *         nc_set_default_format(NC_FORMAT_CLASSIC, NULL)             # <<<<<<<<<<<<<<
@@ -4420,30 +4538,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_set_default_format(CYTHON_UNUSED
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1022
+    /* "netCDF4/_netCDF4.pyx":1040
  *         nc_set_default_format(NC_FORMAT_CLASSIC, NULL)
  *     else:
  *         raise ValueError("format must be 'NETCDF4', 'NETCDF4_CLASSIC', 'NETCDF3_64BIT', or 'NETCDF3_CLASSIC', got '%s'" % format)             # <<<<<<<<<<<<<<
  * 
  * cdef _get_format(int grpid):
  */
-    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_format_must_be_NETCDF4_NETCDF4_C, __pyx_v_format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_format_must_be_NETCDF4_NETCDF4_C, __pyx_v_format); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":1011
+  /* "netCDF4/_netCDF4.pyx":1029
  *             return value_arr
  * 
  * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
@@ -4465,7 +4583,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_4_set_default_format(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1024
+/* "netCDF4/_netCDF4.pyx":1042
  *         raise ValueError("format must be 'NETCDF4', 'NETCDF4_CLASSIC', 'NETCDF3_64BIT', or 'NETCDF3_CLASSIC', got '%s'" % format)
  * 
  * cdef _get_format(int grpid):             # <<<<<<<<<<<<<<
@@ -4487,7 +4605,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get_format", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1027
+  /* "netCDF4/_netCDF4.pyx":1045
  *     # Private function to get the netCDF file format
  *     cdef int ierr, formatp
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -4501,7 +4619,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1028
+        /* "netCDF4/_netCDF4.pyx":1046
  *     cdef int ierr, formatp
  *     with nogil:
  *         ierr = nc_inq_format(grpid, &formatp)             # <<<<<<<<<<<<<<
@@ -4511,7 +4629,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
         __pyx_v_ierr = nc_inq_format(__pyx_v_grpid, (&__pyx_v_formatp));
       }
 
-      /* "netCDF4/_netCDF4.pyx":1027
+      /* "netCDF4/_netCDF4.pyx":1045
  *     # Private function to get the netCDF file format
  *     cdef int ierr, formatp
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -4529,7 +4647,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":1029
+  /* "netCDF4/_netCDF4.pyx":1047
  *     with nogil:
  *         ierr = nc_inq_format(grpid, &formatp)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -4539,7 +4657,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1030
+    /* "netCDF4/_netCDF4.pyx":1048
  *         ierr = nc_inq_format(grpid, &formatp)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -4547,23 +4665,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
  *         return 'NETCDF4'
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1037
+  /* "netCDF4/_netCDF4.pyx":1055
  *     elif formatp == NC_FORMAT_64BIT:
  *         return 'NETCDF3_64BIT'
  *     elif formatp == NC_FORMAT_CLASSIC:             # <<<<<<<<<<<<<<
@@ -4572,7 +4690,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
  */
   switch (__pyx_v_formatp) {
 
-    /* "netCDF4/_netCDF4.pyx":1031
+    /* "netCDF4/_netCDF4.pyx":1049
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     if formatp == NC_FORMAT_NETCDF4:             # <<<<<<<<<<<<<<
@@ -4581,7 +4699,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
  */
     case NC_FORMAT_NETCDF4:
 
-    /* "netCDF4/_netCDF4.pyx":1032
+    /* "netCDF4/_netCDF4.pyx":1050
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     if formatp == NC_FORMAT_NETCDF4:
  *         return 'NETCDF4'             # <<<<<<<<<<<<<<
@@ -4594,7 +4712,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
     goto __pyx_L0;
     break;
 
-    /* "netCDF4/_netCDF4.pyx":1033
+    /* "netCDF4/_netCDF4.pyx":1051
  *     if formatp == NC_FORMAT_NETCDF4:
  *         return 'NETCDF4'
  *     elif formatp == NC_FORMAT_NETCDF4_CLASSIC:             # <<<<<<<<<<<<<<
@@ -4603,7 +4721,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
  */
     case NC_FORMAT_NETCDF4_CLASSIC:
 
-    /* "netCDF4/_netCDF4.pyx":1034
+    /* "netCDF4/_netCDF4.pyx":1052
  *         return 'NETCDF4'
  *     elif formatp == NC_FORMAT_NETCDF4_CLASSIC:
  *         return 'NETCDF4_CLASSIC'             # <<<<<<<<<<<<<<
@@ -4616,7 +4734,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
     goto __pyx_L0;
     break;
 
-    /* "netCDF4/_netCDF4.pyx":1035
+    /* "netCDF4/_netCDF4.pyx":1053
  *     elif formatp == NC_FORMAT_NETCDF4_CLASSIC:
  *         return 'NETCDF4_CLASSIC'
  *     elif formatp == NC_FORMAT_64BIT:             # <<<<<<<<<<<<<<
@@ -4625,7 +4743,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
  */
     case NC_FORMAT_64BIT:
 
-    /* "netCDF4/_netCDF4.pyx":1036
+    /* "netCDF4/_netCDF4.pyx":1054
  *         return 'NETCDF4_CLASSIC'
  *     elif formatp == NC_FORMAT_64BIT:
  *         return 'NETCDF3_64BIT'             # <<<<<<<<<<<<<<
@@ -4638,7 +4756,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
     goto __pyx_L0;
     break;
 
-    /* "netCDF4/_netCDF4.pyx":1037
+    /* "netCDF4/_netCDF4.pyx":1055
  *     elif formatp == NC_FORMAT_64BIT:
  *         return 'NETCDF3_64BIT'
  *     elif formatp == NC_FORMAT_CLASSIC:             # <<<<<<<<<<<<<<
@@ -4647,7 +4765,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
  */
     case NC_FORMAT_CLASSIC:
 
-    /* "netCDF4/_netCDF4.pyx":1038
+    /* "netCDF4/_netCDF4.pyx":1056
  *         return 'NETCDF3_64BIT'
  *     elif formatp == NC_FORMAT_CLASSIC:
  *         return 'NETCDF3_CLASSIC'             # <<<<<<<<<<<<<<
@@ -4662,7 +4780,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
     default: break;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1024
+  /* "netCDF4/_netCDF4.pyx":1042
  *         raise ValueError("format must be 'NETCDF4', 'NETCDF4_CLASSIC', 'NETCDF3_64BIT', or 'NETCDF3_CLASSIC', got '%s'" % format)
  * 
  * cdef _get_format(int grpid):             # <<<<<<<<<<<<<<
@@ -4684,7 +4802,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_format(int __pyx_v_grpid) {
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1040
+/* "netCDF4/_netCDF4.pyx":1058
  *         return 'NETCDF3_CLASSIC'
  * 
  * cdef _get_full_format(int grpid):             # <<<<<<<<<<<<<<
@@ -4697,7 +4815,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_full_format(CYTHON_UNUSED int _
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_get_full_format", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1063
+  /* "netCDF4/_netCDF4.pyx":1081
  *             return 'UNDEFINED'
  *     ELSE:
  *         return 'UNDEFINED'             # <<<<<<<<<<<<<<
@@ -4709,7 +4827,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_full_format(CYTHON_UNUSED int _
   __pyx_r = __pyx_n_s_UNDEFINED;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1040
+  /* "netCDF4/_netCDF4.pyx":1058
  *         return 'NETCDF3_CLASSIC'
  * 
  * cdef _get_full_format(int grpid):             # <<<<<<<<<<<<<<
@@ -4724,7 +4842,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_full_format(CYTHON_UNUSED int _
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1065
+/* "netCDF4/_netCDF4.pyx":1083
  *         return 'UNDEFINED'
  * 
  * cdef _set_att(grp, int varid, name, value):             # <<<<<<<<<<<<<<
@@ -4762,38 +4880,38 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_set_att", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1071
+  /* "netCDF4/_netCDF4.pyx":1089
  *     cdef char *datstring
  *     cdef ndarray value_arr
  *     bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *     attname = bytestr
  *     # put attribute value into a numpy array.
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1072
+  /* "netCDF4/_netCDF4.pyx":1090
  *     cdef ndarray value_arr
  *     bytestr = _strencode(name)
  *     attname = bytestr             # <<<<<<<<<<<<<<
  *     # put attribute value into a numpy array.
  *     value_arr = numpy.array(value)
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_attname = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":1074
+  /* "netCDF4/_netCDF4.pyx":1092
  *     attname = bytestr
  *     # put attribute value into a numpy array.
  *     value_arr = numpy.array(value)             # <<<<<<<<<<<<<<
  *     # if array is 64 bit integers or
  *     # if 64-bit datatype not supported, cast to 32 bit integers.
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -4807,53 +4925,53 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_value_arr = ((PyArrayObject *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1077
+  /* "netCDF4/_netCDF4.pyx":1095
  *     # if array is 64 bit integers or
  *     # if 64-bit datatype not supported, cast to 32 bit integers.
  *     fmt = _get_format(grp._grpid)             # <<<<<<<<<<<<<<
  *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_format(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_format(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_fmt = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1078
+  /* "netCDF4/_netCDF4.pyx":1096
  *     # if 64-bit datatype not supported, cast to 32 bit integers.
  *     fmt = _get_format(grp._grpid)
  *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'             # <<<<<<<<<<<<<<
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
  *        is_netcdf3):
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fmt, __pyx_n_s_startswith); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_7) {
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
@@ -4862,7 +4980,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     goto __pyx_L3_bool_binop_done;
   }
-  __pyx_t_5 = PyObject_RichCompare(__pyx_v_fmt, __pyx_n_s_NETCDF4_CLASSIC, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyObject_RichCompare(__pyx_v_fmt, __pyx_n_s_NETCDF4_CLASSIC, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_INCREF(__pyx_t_5);
   __pyx_t_1 = __pyx_t_5;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -4870,31 +4988,31 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
   __pyx_v_is_netcdf3 = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1079
+  /* "netCDF4/_netCDF4.pyx":1097
  *     fmt = _get_format(grp._grpid)
  *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\             # <<<<<<<<<<<<<<
  *        is_netcdf3):
  *         value_arr = value_arr.astype('i4')
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__7, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__7, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_i8, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_i8, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_8) {
   } else {
     __pyx_t_7 = __pyx_t_8;
     goto __pyx_L6_bool_binop_done;
   }
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_n_s_i8, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_n_s_i8, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_9 = (__pyx_t_8 != 0);
   if (!__pyx_t_9) {
@@ -4903,84 +5021,84 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     goto __pyx_L6_bool_binop_done;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1080
+  /* "netCDF4/_netCDF4.pyx":1098
  *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
  *        is_netcdf3):             # <<<<<<<<<<<<<<
  *         value_arr = value_arr.astype('i4')
  *     # if array contains ascii strings, write a text attribute (stored as bytes).
  */
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = __pyx_t_9;
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_7) {
 
-    /* "netCDF4/_netCDF4.pyx":1081
+    /* "netCDF4/_netCDF4.pyx":1099
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
  *        is_netcdf3):
  *         value_arr = value_arr.astype('i4')             # <<<<<<<<<<<<<<
  *     # if array contains ascii strings, write a text attribute (stored as bytes).
  *     # if array contains unicode strings, and data model is NETCDF4,
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF_SET(__pyx_v_value_arr, ((PyArrayObject *)__pyx_t_5));
     __pyx_t_5 = 0;
     goto __pyx_L5;
   }
   __pyx_L5:;
 
-  /* "netCDF4/_netCDF4.pyx":1085
+  /* "netCDF4/_netCDF4.pyx":1103
  *     # if array contains unicode strings, and data model is NETCDF4,
  *     # write as a string.  string arrays are concatenated into a single string.
  *     if value_arr.dtype.char in ['S','U']:             # <<<<<<<<<<<<<<
  *         if not value_arr.shape:
  *             dats = _strencode(value_arr.item())
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_char); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_char); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_9) {
   } else {
     __pyx_t_7 = __pyx_t_9;
     goto __pyx_L10_bool_binop_done;
   }
-  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = __pyx_t_9;
   __pyx_L10_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_9 = (__pyx_t_7 != 0);
   if (__pyx_t_9) {
 
-    /* "netCDF4/_netCDF4.pyx":1086
+    /* "netCDF4/_netCDF4.pyx":1104
  *     # write as a string.  string arrays are concatenated into a single string.
  *     if value_arr.dtype.char in ['S','U']:
  *         if not value_arr.shape:             # <<<<<<<<<<<<<<
  *             dats = _strencode(value_arr.item())
  *         else:
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_7 = ((!__pyx_t_9) != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":1087
+      /* "netCDF4/_netCDF4.pyx":1105
  *     if value_arr.dtype.char in ['S','U']:
  *         if not value_arr.shape:
  *             dats = _strencode(value_arr.item())             # <<<<<<<<<<<<<<
  *         else:
  *             value_arr1 = value_arr.ravel()
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_item); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_item); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_4 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -4993,14 +5111,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_dats = __pyx_t_5;
@@ -5009,14 +5127,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1089
+      /* "netCDF4/_netCDF4.pyx":1107
  *             dats = _strencode(value_arr.item())
  *         else:
  *             value_arr1 = value_arr.ravel()             # <<<<<<<<<<<<<<
  *             dats = _strencode(''.join(value_arr1.tolist()))
  *         lenarr = len(dats)
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_4 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -5029,24 +5147,24 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_value_arr1 = __pyx_t_5;
       __pyx_t_5 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":1090
+      /* "netCDF4/_netCDF4.pyx":1108
  *         else:
  *             value_arr1 = value_arr.ravel()
  *             dats = _strencode(''.join(value_arr1.tolist()))             # <<<<<<<<<<<<<<
  *         lenarr = len(dats)
  *         datstring = dats
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value_arr1, __pyx_n_s_tolist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value_arr1, __pyx_n_s_tolist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_4 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -5059,17 +5177,17 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_dats = __pyx_t_5;
@@ -5077,27 +5195,27 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     }
     __pyx_L12:;
 
-    /* "netCDF4/_netCDF4.pyx":1091
+    /* "netCDF4/_netCDF4.pyx":1109
  *             value_arr1 = value_arr.ravel()
  *             dats = _strencode(''.join(value_arr1.tolist()))
  *         lenarr = len(dats)             # <<<<<<<<<<<<<<
  *         datstring = dats
  *         if lenarr == 0:
  */
-    __pyx_t_10 = PyObject_Length(__pyx_v_dats); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyObject_Length(__pyx_v_dats); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_lenarr = __pyx_t_10;
 
-    /* "netCDF4/_netCDF4.pyx":1092
+    /* "netCDF4/_netCDF4.pyx":1110
  *             dats = _strencode(''.join(value_arr1.tolist()))
  *         lenarr = len(dats)
  *         datstring = dats             # <<<<<<<<<<<<<<
  *         if lenarr == 0:
  *             # write null byte
  */
-    __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_dats); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_dats); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_datstring = __pyx_t_2;
 
-    /* "netCDF4/_netCDF4.pyx":1093
+    /* "netCDF4/_netCDF4.pyx":1111
  *         lenarr = len(dats)
  *         datstring = dats
  *         if lenarr == 0:             # <<<<<<<<<<<<<<
@@ -5107,7 +5225,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     __pyx_t_7 = ((__pyx_v_lenarr == 0) != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":1095
+      /* "netCDF4/_netCDF4.pyx":1113
  *         if lenarr == 0:
  *             # write null byte
  *             lenarr=1; datstring = '\x00'             # <<<<<<<<<<<<<<
@@ -5120,63 +5238,63 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     }
     __pyx_L13:;
 
-    /* "netCDF4/_netCDF4.pyx":1096
+    /* "netCDF4/_netCDF4.pyx":1114
  *             # write null byte
  *             lenarr=1; datstring = '\x00'
  *         if value_arr.dtype.char == 'U' and not is_netcdf3:             # <<<<<<<<<<<<<<
  *             # a unicode string, use put_att_string (if NETCDF4 file).
  *             ierr = nc_put_att_string(grp._grpid, varid, attname, 1, &datstring)
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_char); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_char); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_9) {
     } else {
       __pyx_t_7 = __pyx_t_9;
       goto __pyx_L15_bool_binop_done;
     }
-    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_is_netcdf3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_8 = ((!__pyx_t_9) != 0);
     __pyx_t_7 = __pyx_t_8;
     __pyx_L15_bool_binop_done:;
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":1098
+      /* "netCDF4/_netCDF4.pyx":1116
  *         if value_arr.dtype.char == 'U' and not is_netcdf3:
  *             # a unicode string, use put_att_string (if NETCDF4 file).
  *             ierr = nc_put_att_string(grp._grpid, varid, attname, 1, &datstring)             # <<<<<<<<<<<<<<
  *         else:
  *             ierr = nc_put_att_text(grp._grpid, varid, attname, lenarr, datstring)
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_ierr = nc_put_att_string(__pyx_t_6, __pyx_v_varid, __pyx_v_attname, 1, (&__pyx_v_datstring));
       goto __pyx_L14;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1100
+      /* "netCDF4/_netCDF4.pyx":1118
  *             ierr = nc_put_att_string(grp._grpid, varid, attname, 1, &datstring)
  *         else:
  *             ierr = nc_put_att_text(grp._grpid, varid, attname, lenarr, datstring)             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_ierr = nc_put_att_text(__pyx_t_6, __pyx_v_varid, __pyx_v_attname, __pyx_v_lenarr, __pyx_v_datstring);
     }
     __pyx_L14:;
 
-    /* "netCDF4/_netCDF4.pyx":1101
+    /* "netCDF4/_netCDF4.pyx":1119
  *         else:
  *             ierr = nc_put_att_text(grp._grpid, varid, attname, lenarr, datstring)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -5186,7 +5304,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     __pyx_t_7 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":1102
+      /* "netCDF4/_netCDF4.pyx":1120
  *             ierr = nc_put_att_text(grp._grpid, varid, attname, lenarr, datstring)
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -5194,51 +5312,51 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
  *     else:
  */
       __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     goto __pyx_L9;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1105
+    /* "netCDF4/_netCDF4.pyx":1123
  *     # a 'regular' array type ('f4','i4','f8' etc)
  *     else:
  *         if value_arr.dtype.kind == 'V': # compound attribute.             # <<<<<<<<<<<<<<
  *             xtype = _find_cmptype(grp,value_arr.dtype)
  *         elif value_arr.dtype.str[1:] not in _supportedtypes:
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_V, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_V, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":1106
+      /* "netCDF4/_netCDF4.pyx":1124
  *     else:
  *         if value_arr.dtype.kind == 'V': # compound attribute.
  *             xtype = _find_cmptype(grp,value_arr.dtype)             # <<<<<<<<<<<<<<
  *         elif value_arr.dtype.str[1:] not in _supportedtypes:
  *             raise TypeError, 'illegal data type for attribute, must be one of %s, got %s' % (_supportedtypes, value_arr.dtype.str[1:])
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_v_xtype = __pyx_t_1;
@@ -5246,47 +5364,47 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
       goto __pyx_L18;
     }
 
-    /* "netCDF4/_netCDF4.pyx":1107
+    /* "netCDF4/_netCDF4.pyx":1125
  *         if value_arr.dtype.kind == 'V': # compound attribute.
  *             xtype = _find_cmptype(grp,value_arr.dtype)
  *         elif value_arr.dtype.str[1:] not in _supportedtypes:             # <<<<<<<<<<<<<<
  *             raise TypeError, 'illegal data type for attribute, must be one of %s, got %s' % (_supportedtypes, value_arr.dtype.str[1:])
  *         else:
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__9, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__9, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_t_1, __pyx_t_5, Py_NE)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_t_1, __pyx_t_5, Py_NE)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":1108
+      /* "netCDF4/_netCDF4.pyx":1126
  *             xtype = _find_cmptype(grp,value_arr.dtype)
  *         elif value_arr.dtype.str[1:] not in _supportedtypes:
  *             raise TypeError, 'illegal data type for attribute, must be one of %s, got %s' % (_supportedtypes, value_arr.dtype.str[1:])             # <<<<<<<<<<<<<<
  *         else:
  *             xtype = _nptonctype[value_arr.dtype.str[1:]]
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_5);
@@ -5294,33 +5412,33 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
       __Pyx_GIVEREF(__pyx_t_1);
       __pyx_t_5 = 0;
       __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_illegal_data_type_for_attribute, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_illegal_data_type_for_attribute, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_1, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1110
+      /* "netCDF4/_netCDF4.pyx":1128
  *             raise TypeError, 'illegal data type for attribute, must be one of %s, got %s' % (_supportedtypes, value_arr.dtype.str[1:])
  *         else:
  *             xtype = _nptonctype[value_arr.dtype.str[1:]]             # <<<<<<<<<<<<<<
  *         lenarr = PyArray_SIZE(value_arr)
  *         ierr = nc_put_att(grp._grpid, varid, attname, xtype, lenarr, value_arr.data)
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_value_arr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__11, 1, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__11, 1, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_5 = PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -5329,7 +5447,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     }
     __pyx_L18:;
 
-    /* "netCDF4/_netCDF4.pyx":1111
+    /* "netCDF4/_netCDF4.pyx":1129
  *         else:
  *             xtype = _nptonctype[value_arr.dtype.str[1:]]
  *         lenarr = PyArray_SIZE(value_arr)             # <<<<<<<<<<<<<<
@@ -5338,21 +5456,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
  */
     __pyx_v_lenarr = PyArray_SIZE(__pyx_v_value_arr);
 
-    /* "netCDF4/_netCDF4.pyx":1112
+    /* "netCDF4/_netCDF4.pyx":1130
  *             xtype = _nptonctype[value_arr.dtype.str[1:]]
  *         lenarr = PyArray_SIZE(value_arr)
  *         ierr = nc_put_att(grp._grpid, varid, attname, xtype, lenarr, value_arr.data)             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_11 = __Pyx_PyInt_As_nc_type(__pyx_v_xtype); if (unlikely((__pyx_t_11 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyInt_As_nc_type(__pyx_v_xtype); if (unlikely((__pyx_t_11 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_ierr = nc_put_att(__pyx_t_6, __pyx_v_varid, __pyx_v_attname, __pyx_t_11, __pyx_v_lenarr, __pyx_v_value_arr->data);
 
-    /* "netCDF4/_netCDF4.pyx":1113
+    /* "netCDF4/_netCDF4.pyx":1131
  *         lenarr = PyArray_SIZE(value_arr)
  *         ierr = nc_put_att(grp._grpid, varid, attname, xtype, lenarr, value_arr.data)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -5362,7 +5480,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
     __pyx_t_8 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":1114
+      /* "netCDF4/_netCDF4.pyx":1132
  *         ierr = nc_put_att(grp._grpid, varid, attname, xtype, lenarr, value_arr.data)
  *         if ierr != NC_NOERR:
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -5370,25 +5488,25 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
  * cdef _get_types(group):
  */
       __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
   }
   __pyx_L9:;
 
-  /* "netCDF4/_netCDF4.pyx":1065
+  /* "netCDF4/_netCDF4.pyx":1083
  *         return 'UNDEFINED'
  * 
  * cdef _set_att(grp, int varid, name, value):             # <<<<<<<<<<<<<<
@@ -5419,12 +5537,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__set_att(PyObject *__pyx_v_grp, int
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1116
+/* "netCDF4/_netCDF4.pyx":1134
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  * cdef _get_types(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{CompoundType} or L{VLType} instances for all the
- *     # compound or VLEN types in a L{Group} or L{Dataset}.
+ *     # Private function to create `netCDF4.CompoundType` or `netCDF4.VLType` instances for all the
+ *     # compound or VLEN types in a `netCDF4.Group` or `netCDF4.Dataset`.
  */
 
 static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group) {
@@ -5462,20 +5580,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get_types", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1123
+  /* "netCDF4/_netCDF4.pyx":1141
  *     cdef nc_type typeids[NC_MAX_VARS]
  *     cdef char namstring[NC_MAX_NAME+1]
  *     _grpid = group._grpid             # <<<<<<<<<<<<<<
  *     # get the number of user defined types in this group.
  *     with nogil:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":1125
+  /* "netCDF4/_netCDF4.pyx":1143
  *     _grpid = group._grpid
  *     # get the number of user defined types in this group.
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -5489,7 +5607,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1126
+        /* "netCDF4/_netCDF4.pyx":1144
  *     # get the number of user defined types in this group.
  *     with nogil:
  *         ierr = nc_inq_typeids(_grpid, &ntypes, typeids)             # <<<<<<<<<<<<<<
@@ -5499,7 +5617,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
         __pyx_v_ierr = nc_inq_typeids(__pyx_v__grpid, (&__pyx_v_ntypes), __pyx_v_typeids);
       }
 
-      /* "netCDF4/_netCDF4.pyx":1125
+      /* "netCDF4/_netCDF4.pyx":1143
  *     _grpid = group._grpid
  *     # get the number of user defined types in this group.
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -5517,7 +5635,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":1127
+  /* "netCDF4/_netCDF4.pyx":1145
  *     with nogil:
  *         ierr = nc_inq_typeids(_grpid, &ntypes, typeids)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -5527,7 +5645,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1128
+    /* "netCDF4/_netCDF4.pyx":1146
  *         ierr = nc_inq_typeids(_grpid, &ntypes, typeids)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -5535,30 +5653,30 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
  *     cmptypes = OrderedDict()
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1130
+  /* "netCDF4/_netCDF4.pyx":1148
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     # create empty dictionary for CompoundType instances.
  *     cmptypes = OrderedDict()             # <<<<<<<<<<<<<<
  *     vltypes = OrderedDict()
  *     if ntypes > 0:
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -5571,24 +5689,24 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_cmptypes = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1131
+  /* "netCDF4/_netCDF4.pyx":1149
  *     # create empty dictionary for CompoundType instances.
  *     cmptypes = OrderedDict()
  *     vltypes = OrderedDict()             # <<<<<<<<<<<<<<
  *     if ntypes > 0:
  *         for n from 0 <= n < ntypes:
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -5601,17 +5719,17 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_vltypes = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1132
+  /* "netCDF4/_netCDF4.pyx":1150
  *     cmptypes = OrderedDict()
  *     vltypes = OrderedDict()
  *     if ntypes > 0:             # <<<<<<<<<<<<<<
@@ -5621,7 +5739,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
   __pyx_t_3 = ((__pyx_v_ntypes > 0) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1133
+    /* "netCDF4/_netCDF4.pyx":1151
  *     vltypes = OrderedDict()
  *     if ntypes > 0:
  *         for n from 0 <= n < ntypes:             # <<<<<<<<<<<<<<
@@ -5631,7 +5749,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
     __pyx_t_2 = __pyx_v_ntypes;
     for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_2; __pyx_v_n++) {
 
-      /* "netCDF4/_netCDF4.pyx":1134
+      /* "netCDF4/_netCDF4.pyx":1152
  *     if ntypes > 0:
  *         for n from 0 <= n < ntypes:
  *             xtype = typeids[n]             # <<<<<<<<<<<<<<
@@ -5640,7 +5758,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
  */
       __pyx_v_xtype = (__pyx_v_typeids[__pyx_v_n]);
 
-      /* "netCDF4/_netCDF4.pyx":1135
+      /* "netCDF4/_netCDF4.pyx":1153
  *         for n from 0 <= n < ntypes:
  *             xtype = typeids[n]
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -5654,7 +5772,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1136
+            /* "netCDF4/_netCDF4.pyx":1154
  *             xtype = typeids[n]
  *             with nogil:
  *                 ierr = nc_inq_user_type(_grpid, xtype, namstring,             # <<<<<<<<<<<<<<
@@ -5664,7 +5782,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
             __pyx_v_ierr = nc_inq_user_type(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_namstring, NULL, NULL, NULL, (&__pyx_v_classp));
           }
 
-          /* "netCDF4/_netCDF4.pyx":1135
+          /* "netCDF4/_netCDF4.pyx":1153
  *         for n from 0 <= n < ntypes:
  *             xtype = typeids[n]
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -5682,7 +5800,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1138
+      /* "netCDF4/_netCDF4.pyx":1156
  *                 ierr = nc_inq_user_type(_grpid, xtype, namstring,
  *                                         NULL,NULL,NULL,&classp)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -5692,7 +5810,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1139
+        /* "netCDF4/_netCDF4.pyx":1157
  *                                         NULL,NULL,NULL,&classp)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -5700,23 +5818,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
  *                 name = namstring.decode(default_encoding,unicode_error)
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1150
+      /* "netCDF4/_netCDF4.pyx":1168
  *                     continue
  *                 cmptypes[name] = cmptype
  *             elif classp == NC_VLEN: # a vlen             # <<<<<<<<<<<<<<
@@ -5725,7 +5843,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
  */
       switch (__pyx_v_classp) {
 
-        /* "netCDF4/_netCDF4.pyx":1140
+        /* "netCDF4/_netCDF4.pyx":1158
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             if classp == NC_COMPOUND: # a compound             # <<<<<<<<<<<<<<
@@ -5734,21 +5852,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
  */
         case NC_COMPOUND:
 
-        /* "netCDF4/_netCDF4.pyx":1141
+        /* "netCDF4/_netCDF4.pyx":1159
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             if classp == NC_COMPOUND: # a compound
  *                 name = namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *                 # read the compound type info from the file,
  *                 # create a CompoundType instance from it.
  */
-        __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_8 = NULL;
         __pyx_t_9 = 0;
@@ -5762,7 +5880,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
             __pyx_t_9 = 1;
           }
         }
-        __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         if (__pyx_t_8) {
           PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -5773,14 +5891,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
         __Pyx_GIVEREF(__pyx_t_7);
         __pyx_t_5 = 0;
         __pyx_t_7 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
         __pyx_t_1 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":1144
+        /* "netCDF4/_netCDF4.pyx":1162
  *                 # read the compound type info from the file,
  *                 # create a CompoundType instance from it.
  *                 try:             # <<<<<<<<<<<<<<
@@ -5794,14 +5912,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __Pyx_XGOTREF(__pyx_t_13);
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1145
+            /* "netCDF4/_netCDF4.pyx":1163
  *                 # create a CompoundType instance from it.
  *                 try:
  *                     cmptype = _read_compound(group, xtype)             # <<<<<<<<<<<<<<
  *                 except KeyError:
  *                     #print 'WARNING: unsupported compound type, skipping...'
  */
-            __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_xtype, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
+            __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_xtype, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
             __Pyx_GOTREF(__pyx_t_1);
             __Pyx_XDECREF_SET(__pyx_v_cmptype, __pyx_t_1);
             __pyx_t_1 = 0;
@@ -5818,7 +5936,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":1146
+          /* "netCDF4/_netCDF4.pyx":1164
  *                 try:
  *                     cmptype = _read_compound(group, xtype)
  *                 except KeyError:             # <<<<<<<<<<<<<<
@@ -5828,12 +5946,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __pyx_t_14 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
           if (__pyx_t_14) {
             __Pyx_AddTraceback("netCDF4._netCDF4._get_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
+            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
             __Pyx_GOTREF(__pyx_t_1);
             __Pyx_GOTREF(__pyx_t_6);
             __Pyx_GOTREF(__pyx_t_10);
 
-            /* "netCDF4/_netCDF4.pyx":1148
+            /* "netCDF4/_netCDF4.pyx":1166
  *                 except KeyError:
  *                     #print 'WARNING: unsupported compound type, skipping...'
  *                     continue             # <<<<<<<<<<<<<<
@@ -5863,17 +5981,17 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __pyx_L23_try_end:;
         }
 
-        /* "netCDF4/_netCDF4.pyx":1149
+        /* "netCDF4/_netCDF4.pyx":1167
  *                     #print 'WARNING: unsupported compound type, skipping...'
  *                     continue
  *                 cmptypes[name] = cmptype             # <<<<<<<<<<<<<<
  *             elif classp == NC_VLEN: # a vlen
  *                 name = namstring.decode(default_encoding,unicode_error)
  */
-        if (unlikely(PyObject_SetItem(__pyx_v_cmptypes, __pyx_v_name, __pyx_v_cmptype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v_cmptypes, __pyx_v_name, __pyx_v_cmptype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
 
-        /* "netCDF4/_netCDF4.pyx":1150
+        /* "netCDF4/_netCDF4.pyx":1168
  *                     continue
  *                 cmptypes[name] = cmptype
  *             elif classp == NC_VLEN: # a vlen             # <<<<<<<<<<<<<<
@@ -5882,21 +6000,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
  */
         case NC_VLEN:
 
-        /* "netCDF4/_netCDF4.pyx":1151
+        /* "netCDF4/_netCDF4.pyx":1169
  *                 cmptypes[name] = cmptype
  *             elif classp == NC_VLEN: # a vlen
  *                 name = namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *                 # read the VLEN type info from the file,
  *                 # create a VLType instance from it.
  */
-        __pyx_t_6 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_5 = NULL;
         __pyx_t_9 = 0;
@@ -5910,7 +6028,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
             __pyx_t_9 = 1;
           }
         }
-        __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
         if (__pyx_t_5) {
           PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -5921,14 +6039,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
         __Pyx_GIVEREF(__pyx_t_7);
         __pyx_t_6 = 0;
         __pyx_t_7 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_10);
         __pyx_t_10 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":1154
+        /* "netCDF4/_netCDF4.pyx":1172
  *                 # read the VLEN type info from the file,
  *                 # create a VLType instance from it.
  *                 try:             # <<<<<<<<<<<<<<
@@ -5942,14 +6060,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __Pyx_XGOTREF(__pyx_t_11);
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1155
+            /* "netCDF4/_netCDF4.pyx":1173
  *                 # create a VLType instance from it.
  *                 try:
  *                     vltype = _read_vlen(group, xtype)             # <<<<<<<<<<<<<<
  *                 except KeyError:
  *                     #print 'WARNING: unsupported VLEN type, skipping...'
  */
-            __pyx_t_10 = __pyx_f_7netCDF4_8_netCDF4__read_vlen(__pyx_v_group, __pyx_v_xtype, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L26_error;}
+            __pyx_t_10 = __pyx_f_7netCDF4_8_netCDF4__read_vlen(__pyx_v_group, __pyx_v_xtype, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L26_error;}
             __Pyx_GOTREF(__pyx_t_10);
             __Pyx_XDECREF_SET(__pyx_v_vltype, __pyx_t_10);
             __pyx_t_10 = 0;
@@ -5966,7 +6084,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
           __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":1156
+          /* "netCDF4/_netCDF4.pyx":1174
  *                 try:
  *                     vltype = _read_vlen(group, xtype)
  *                 except KeyError:             # <<<<<<<<<<<<<<
@@ -5976,12 +6094,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __pyx_t_14 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
           if (__pyx_t_14) {
             __Pyx_AddTraceback("netCDF4._netCDF4._get_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_1, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L28_except_error;}
+            if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_1, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L28_except_error;}
             __Pyx_GOTREF(__pyx_t_10);
             __Pyx_GOTREF(__pyx_t_1);
             __Pyx_GOTREF(__pyx_t_8);
 
-            /* "netCDF4/_netCDF4.pyx":1158
+            /* "netCDF4/_netCDF4.pyx":1176
  *                 except KeyError:
  *                     #print 'WARNING: unsupported VLEN type, skipping...'
  *                     continue             # <<<<<<<<<<<<<<
@@ -6011,14 +6129,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
           __pyx_L33_try_end:;
         }
 
-        /* "netCDF4/_netCDF4.pyx":1159
+        /* "netCDF4/_netCDF4.pyx":1177
  *                     #print 'WARNING: unsupported VLEN type, skipping...'
  *                     continue
  *                 vltypes[name] = vltype             # <<<<<<<<<<<<<<
  *                 pass
  *     return cmptypes, vltypes
  */
-        if (unlikely(PyObject_SetItem(__pyx_v_vltypes, __pyx_v_name, __pyx_v_vltype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v_vltypes, __pyx_v_name, __pyx_v_vltype) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         break;
         default: break;
       }
@@ -6028,7 +6146,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
   }
   __pyx_L7:;
 
-  /* "netCDF4/_netCDF4.pyx":1161
+  /* "netCDF4/_netCDF4.pyx":1179
  *                 vltypes[name] = vltype
  *                 pass
  *     return cmptypes, vltypes             # <<<<<<<<<<<<<<
@@ -6036,7 +6154,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
  * cdef _get_dims(group):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_INCREF(__pyx_v_cmptypes);
   PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_cmptypes);
@@ -6048,12 +6166,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
   __pyx_t_8 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1116
+  /* "netCDF4/_netCDF4.pyx":1134
  *             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  * cdef _get_types(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{CompoundType} or L{VLType} instances for all the
- *     # compound or VLEN types in a L{Group} or L{Dataset}.
+ *     # Private function to create `netCDF4.CompoundType` or `netCDF4.VLType` instances for all the
+ *     # compound or VLEN types in a `netCDF4.Group` or `netCDF4.Dataset`.
  */
 
   /* function exit code */
@@ -6077,12 +6195,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_types(PyObject *__pyx_v_group)
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1163
+/* "netCDF4/_netCDF4.pyx":1181
  *     return cmptypes, vltypes
  * 
  * cdef _get_dims(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{Dimension} instances for all the
- *     # dimensions in a L{Group} or Dataset
+ *     # Private function to create `netCDF4.Dimension` instances for all the
+ *     # dimensions in a `netCDF4.Group` or Dataset
  */
 
 static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
@@ -6111,20 +6229,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get_dims", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1170
+  /* "netCDF4/_netCDF4.pyx":1188
  *     cdef char namstring[NC_MAX_NAME+1]
  *     # get number of dimensions in this Group.
  *     _grpid = group._grpid             # <<<<<<<<<<<<<<
  *     with nogil:
  *         ierr = nc_inq_ndims(_grpid, &numdims)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":1171
+  /* "netCDF4/_netCDF4.pyx":1189
  *     # get number of dimensions in this Group.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -6138,7 +6256,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1172
+        /* "netCDF4/_netCDF4.pyx":1190
  *     _grpid = group._grpid
  *     with nogil:
  *         ierr = nc_inq_ndims(_grpid, &numdims)             # <<<<<<<<<<<<<<
@@ -6148,7 +6266,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
         __pyx_v_ierr = nc_inq_ndims(__pyx_v__grpid, (&__pyx_v_numdims));
       }
 
-      /* "netCDF4/_netCDF4.pyx":1171
+      /* "netCDF4/_netCDF4.pyx":1189
  *     # get number of dimensions in this Group.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -6166,7 +6284,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":1173
+  /* "netCDF4/_netCDF4.pyx":1191
  *     with nogil:
  *         ierr = nc_inq_ndims(_grpid, &numdims)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -6176,7 +6294,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1174
+    /* "netCDF4/_netCDF4.pyx":1192
  *         ierr = nc_inq_ndims(_grpid, &numdims)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -6184,30 +6302,30 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
  *     dimensions = OrderedDict()
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1176
+  /* "netCDF4/_netCDF4.pyx":1194
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     # create empty dictionary for dimensions.
  *     dimensions = OrderedDict()             # <<<<<<<<<<<<<<
  *     if numdims > 0:
  *         if group.data_model == 'NETCDF4':
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -6220,17 +6338,17 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_dimensions = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1177
+  /* "netCDF4/_netCDF4.pyx":1195
  *     # create empty dictionary for dimensions.
  *     dimensions = OrderedDict()
  *     if numdims > 0:             # <<<<<<<<<<<<<<
@@ -6240,20 +6358,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
   __pyx_t_3 = ((__pyx_v_numdims > 0) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1178
+    /* "netCDF4/_netCDF4.pyx":1196
  *     dimensions = OrderedDict()
  *     if numdims > 0:
  *         if group.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":1179
+      /* "netCDF4/_netCDF4.pyx":1197
  *     if numdims > 0:
  *         if group.data_model == 'NETCDF4':
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -6267,7 +6385,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1180
+            /* "netCDF4/_netCDF4.pyx":1198
  *         if group.data_model == 'NETCDF4':
  *             with nogil:
  *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)             # <<<<<<<<<<<<<<
@@ -6277,7 +6395,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_dimids(__pyx_v__grpid, (&__pyx_v_numdims), __pyx_v_dimids, 0);
           }
 
-          /* "netCDF4/_netCDF4.pyx":1179
+          /* "netCDF4/_netCDF4.pyx":1197
  *     if numdims > 0:
  *         if group.data_model == 'NETCDF4':
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -6295,7 +6413,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1181
+      /* "netCDF4/_netCDF4.pyx":1199
  *             with nogil:
  *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -6305,7 +6423,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1182
+        /* "netCDF4/_netCDF4.pyx":1200
  *                 ierr = nc_inq_dimids(_grpid, &numdims, dimids, 0)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -6313,26 +6431,26 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
  *             for n from 0 <= n < numdims:
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       goto __pyx_L8;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1184
+      /* "netCDF4/_netCDF4.pyx":1202
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         else:
  *             for n from 0 <= n < numdims:             # <<<<<<<<<<<<<<
@@ -6342,7 +6460,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
       __pyx_t_2 = __pyx_v_numdims;
       for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_2; __pyx_v_n++) {
 
-        /* "netCDF4/_netCDF4.pyx":1185
+        /* "netCDF4/_netCDF4.pyx":1203
  *         else:
  *             for n from 0 <= n < numdims:
  *                 dimids[n] = n             # <<<<<<<<<<<<<<
@@ -6354,7 +6472,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
     }
     __pyx_L8:;
 
-    /* "netCDF4/_netCDF4.pyx":1186
+    /* "netCDF4/_netCDF4.pyx":1204
  *             for n from 0 <= n < numdims:
  *                 dimids[n] = n
  *         for n from 0 <= n < numdims:             # <<<<<<<<<<<<<<
@@ -6364,7 +6482,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
     __pyx_t_2 = __pyx_v_numdims;
     for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_2; __pyx_v_n++) {
 
-      /* "netCDF4/_netCDF4.pyx":1187
+      /* "netCDF4/_netCDF4.pyx":1205
  *                 dimids[n] = n
  *         for n from 0 <= n < numdims:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -6378,7 +6496,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1188
+            /* "netCDF4/_netCDF4.pyx":1206
  *         for n from 0 <= n < numdims:
  *             with nogil:
  *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)             # <<<<<<<<<<<<<<
@@ -6388,7 +6506,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_dimname(__pyx_v__grpid, (__pyx_v_dimids[__pyx_v_n]), __pyx_v_namstring);
           }
 
-          /* "netCDF4/_netCDF4.pyx":1187
+          /* "netCDF4/_netCDF4.pyx":1205
  *                 dimids[n] = n
  *         for n from 0 <= n < numdims:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -6406,7 +6524,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1189
+      /* "netCDF4/_netCDF4.pyx":1207
  *             with nogil:
  *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -6416,7 +6534,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1190
+        /* "netCDF4/_netCDF4.pyx":1208
  *                 ierr = nc_inq_dimname(_grpid, dimids[n], namstring)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -6424,37 +6542,37 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
  *             dimensions[name] = Dimension(group, name, id=dimids[n])
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1191
+      /* "netCDF4/_netCDF4.pyx":1209
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *             dimensions[name] = Dimension(group, name, id=dimids[n])
  *     return dimensions
  */
-      __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_8 = NULL;
       __pyx_t_9 = 0;
@@ -6468,7 +6586,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
           __pyx_t_9 = 1;
         }
       }
-      __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       if (__pyx_t_8) {
         PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -6479,21 +6597,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
       __Pyx_GIVEREF(__pyx_t_7);
       __pyx_t_5 = 0;
       __pyx_t_7 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":1192
+      /* "netCDF4/_netCDF4.pyx":1210
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)
  *             dimensions[name] = Dimension(group, name, id=dimids[n])             # <<<<<<<<<<<<<<
  *     return dimensions
  * 
  */
-      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_group);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_group);
@@ -6501,24 +6619,24 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_10 = __Pyx_PyInt_From_int((__pyx_v_dimids[__pyx_v_n])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyInt_From_int((__pyx_v_dimids[__pyx_v_n])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_id, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_id, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dimension)), __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dimension)), __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(PyObject_SetItem(__pyx_v_dimensions, __pyx_v_name, __pyx_t_10) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_v_dimensions, __pyx_v_name, __pyx_t_10) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
     goto __pyx_L7;
   }
   __pyx_L7:;
 
-  /* "netCDF4/_netCDF4.pyx":1193
+  /* "netCDF4/_netCDF4.pyx":1211
  *             name = namstring.decode(default_encoding,unicode_error)
  *             dimensions[name] = Dimension(group, name, id=dimids[n])
  *     return dimensions             # <<<<<<<<<<<<<<
@@ -6530,12 +6648,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
   __pyx_r = __pyx_v_dimensions;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1163
+  /* "netCDF4/_netCDF4.pyx":1181
  *     return cmptypes, vltypes
  * 
  * cdef _get_dims(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{Dimension} instances for all the
- *     # dimensions in a L{Group} or Dataset
+ *     # Private function to create `netCDF4.Dimension` instances for all the
+ *     # dimensions in a `netCDF4.Group` or Dataset
  */
 
   /* function exit code */
@@ -6556,12 +6674,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_dims(PyObject *__pyx_v_group) {
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1195
+/* "netCDF4/_netCDF4.pyx":1213
  *     return dimensions
  * 
  * cdef _get_grps(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{Group} instances for all the
- *     # groups in a L{Group} or Dataset
+ *     # Private function to create `netCDF4.Group` instances for all the
+ *     # groups in a `netCDF4.Group` or Dataset
  */
 
 static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
@@ -6590,20 +6708,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get_grps", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1202
+  /* "netCDF4/_netCDF4.pyx":1220
  *     cdef char namstring[NC_MAX_NAME+1]
  *     # get number of groups in this Group.
  *     _grpid = group._grpid             # <<<<<<<<<<<<<<
  *     with nogil:
  *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":1203
+  /* "netCDF4/_netCDF4.pyx":1221
  *     # get number of groups in this Group.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -6617,7 +6735,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1204
+        /* "netCDF4/_netCDF4.pyx":1222
  *     _grpid = group._grpid
  *     with nogil:
  *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)             # <<<<<<<<<<<<<<
@@ -6627,7 +6745,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
         __pyx_v_ierr = nc_inq_grps(__pyx_v__grpid, (&__pyx_v_numgrps), NULL);
       }
 
-      /* "netCDF4/_netCDF4.pyx":1203
+      /* "netCDF4/_netCDF4.pyx":1221
  *     # get number of groups in this Group.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -6645,48 +6763,48 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":1205
+  /* "netCDF4/_netCDF4.pyx":1223
  *     with nogil:
  *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
- *     # create dictionary containing L{Group} instances for groups in this group
+ *     # create dictionary containing `netCDF4.Group` instances for groups in this group
  */
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1206
+    /* "netCDF4/_netCDF4.pyx":1224
  *         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
- *     # create dictionary containing L{Group} instances for groups in this group
+ *     # create dictionary containing `netCDF4.Group` instances for groups in this group
  *     groups = OrderedDict()
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1208
+  /* "netCDF4/_netCDF4.pyx":1226
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
- *     # create dictionary containing L{Group} instances for groups in this group
+ *     # create dictionary containing `netCDF4.Group` instances for groups in this group
  *     groups = OrderedDict()             # <<<<<<<<<<<<<<
  *     if numgrps > 0:
  *         grpids = <int *>malloc(sizeof(int) * numgrps)
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -6699,18 +6817,18 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_groups = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1209
- *     # create dictionary containing L{Group} instances for groups in this group
+  /* "netCDF4/_netCDF4.pyx":1227
+ *     # create dictionary containing `netCDF4.Group` instances for groups in this group
  *     groups = OrderedDict()
  *     if numgrps > 0:             # <<<<<<<<<<<<<<
  *         grpids = <int *>malloc(sizeof(int) * numgrps)
@@ -6719,7 +6837,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
   __pyx_t_3 = ((__pyx_v_numgrps > 0) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1210
+    /* "netCDF4/_netCDF4.pyx":1228
  *     groups = OrderedDict()
  *     if numgrps > 0:
  *         grpids = <int *>malloc(sizeof(int) * numgrps)             # <<<<<<<<<<<<<<
@@ -6728,7 +6846,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
  */
     __pyx_v_grpids = ((int *)malloc(((sizeof(int)) * __pyx_v_numgrps)));
 
-    /* "netCDF4/_netCDF4.pyx":1211
+    /* "netCDF4/_netCDF4.pyx":1229
  *     if numgrps > 0:
  *         grpids = <int *>malloc(sizeof(int) * numgrps)
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -6742,7 +6860,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":1212
+          /* "netCDF4/_netCDF4.pyx":1230
  *         grpids = <int *>malloc(sizeof(int) * numgrps)
  *         with nogil:
  *             ierr = nc_inq_grps(_grpid, NULL, grpids)             # <<<<<<<<<<<<<<
@@ -6752,7 +6870,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
           __pyx_v_ierr = nc_inq_grps(__pyx_v__grpid, NULL, __pyx_v_grpids);
         }
 
-        /* "netCDF4/_netCDF4.pyx":1211
+        /* "netCDF4/_netCDF4.pyx":1229
  *     if numgrps > 0:
  *         grpids = <int *>malloc(sizeof(int) * numgrps)
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -6770,7 +6888,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":1213
+    /* "netCDF4/_netCDF4.pyx":1231
  *         with nogil:
  *             ierr = nc_inq_grps(_grpid, NULL, grpids)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -6780,7 +6898,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
     __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":1214
+      /* "netCDF4/_netCDF4.pyx":1232
  *             ierr = nc_inq_grps(_grpid, NULL, grpids)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -6788,23 +6906,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
  *             with nogil:
  */
       __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":1215
+    /* "netCDF4/_netCDF4.pyx":1233
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         for n from 0 <= n < numgrps:             # <<<<<<<<<<<<<<
@@ -6814,7 +6932,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
     __pyx_t_2 = __pyx_v_numgrps;
     for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_2; __pyx_v_n++) {
 
-      /* "netCDF4/_netCDF4.pyx":1216
+      /* "netCDF4/_netCDF4.pyx":1234
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         for n from 0 <= n < numgrps:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -6828,7 +6946,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1217
+            /* "netCDF4/_netCDF4.pyx":1235
  *         for n from 0 <= n < numgrps:
  *             with nogil:
  *                 ierr = nc_inq_grpname(grpids[n], namstring)             # <<<<<<<<<<<<<<
@@ -6838,7 +6956,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_grpname((__pyx_v_grpids[__pyx_v_n]), __pyx_v_namstring);
           }
 
-          /* "netCDF4/_netCDF4.pyx":1216
+          /* "netCDF4/_netCDF4.pyx":1234
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         for n from 0 <= n < numgrps:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -6856,7 +6974,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1218
+      /* "netCDF4/_netCDF4.pyx":1236
  *             with nogil:
  *                 ierr = nc_inq_grpname(grpids[n], namstring)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -6866,7 +6984,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1219
+        /* "netCDF4/_netCDF4.pyx":1237
  *                 ierr = nc_inq_grpname(grpids[n], namstring)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -6874,37 +6992,37 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
  *             groups[name] = Group(group, name, id=grpids[n])
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1220
+      /* "netCDF4/_netCDF4.pyx":1238
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *             groups[name] = Group(group, name, id=grpids[n])
  *         free(grpids)
  */
-      __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_8 = NULL;
       __pyx_t_9 = 0;
@@ -6918,7 +7036,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
           __pyx_t_9 = 1;
         }
       }
-      __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       if (__pyx_t_8) {
         PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -6929,21 +7047,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
       __Pyx_GIVEREF(__pyx_t_7);
       __pyx_t_5 = 0;
       __pyx_t_7 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":1221
+      /* "netCDF4/_netCDF4.pyx":1239
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)
  *             groups[name] = Group(group, name, id=grpids[n])             # <<<<<<<<<<<<<<
  *         free(grpids)
  *     return groups
  */
-      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_group);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_group);
@@ -6951,21 +7069,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_10 = __Pyx_PyInt_From_int((__pyx_v_grpids[__pyx_v_n])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyInt_From_int((__pyx_v_grpids[__pyx_v_n])); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_id, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_id, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Group)), __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Group)), __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(PyObject_SetItem(__pyx_v_groups, __pyx_v_name, __pyx_t_10) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_v_groups, __pyx_v_name, __pyx_t_10) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":1222
+    /* "netCDF4/_netCDF4.pyx":1240
  *             name = namstring.decode(default_encoding,unicode_error)
  *             groups[name] = Group(group, name, id=grpids[n])
  *         free(grpids)             # <<<<<<<<<<<<<<
@@ -6977,7 +7095,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
   }
   __pyx_L7:;
 
-  /* "netCDF4/_netCDF4.pyx":1223
+  /* "netCDF4/_netCDF4.pyx":1241
  *             groups[name] = Group(group, name, id=grpids[n])
  *         free(grpids)
  *     return groups             # <<<<<<<<<<<<<<
@@ -6989,12 +7107,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
   __pyx_r = __pyx_v_groups;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1195
+  /* "netCDF4/_netCDF4.pyx":1213
  *     return dimensions
  * 
  * cdef _get_grps(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{Group} instances for all the
- *     # groups in a L{Group} or Dataset
+ *     # Private function to create `netCDF4.Group` instances for all the
+ *     # groups in a `netCDF4.Group` or Dataset
  */
 
   /* function exit code */
@@ -7015,12 +7133,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_grps(PyObject *__pyx_v_group) {
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1225
+/* "netCDF4/_netCDF4.pyx":1243
  *     return groups
  * 
  * cdef _get_vars(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{Variable} instances for all the
- *     # variables in a L{Group} or Dataset
+ *     # Private function to create `netCDF4.Variable` instances for all the
+ *     # variables in a `netCDF4.Group` or Dataset
  */
 
 static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
@@ -7077,20 +7195,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get_vars", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1236
+  /* "netCDF4/_netCDF4.pyx":1254
  *     cdef char namstring_cmp[NC_MAX_NAME+1]
  *     # get number of variables in this Group.
  *     _grpid = group._grpid             # <<<<<<<<<<<<<<
  *     with nogil:
  *         ierr = nc_inq_nvars(_grpid, &numvars)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":1237
+  /* "netCDF4/_netCDF4.pyx":1255
  *     # get number of variables in this Group.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -7104,7 +7222,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1238
+        /* "netCDF4/_netCDF4.pyx":1256
  *     _grpid = group._grpid
  *     with nogil:
  *         ierr = nc_inq_nvars(_grpid, &numvars)             # <<<<<<<<<<<<<<
@@ -7114,7 +7232,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __pyx_v_ierr = nc_inq_nvars(__pyx_v__grpid, (&__pyx_v_numvars));
       }
 
-      /* "netCDF4/_netCDF4.pyx":1237
+      /* "netCDF4/_netCDF4.pyx":1255
  *     # get number of variables in this Group.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -7132,7 +7250,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":1239
+  /* "netCDF4/_netCDF4.pyx":1257
  *     with nogil:
  *         ierr = nc_inq_nvars(_grpid, &numvars)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -7142,7 +7260,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1240
+    /* "netCDF4/_netCDF4.pyx":1258
  *         ierr = nc_inq_nvars(_grpid, &numvars)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -7150,30 +7268,30 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *     variables = OrderedDict()
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1242
+  /* "netCDF4/_netCDF4.pyx":1260
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     # create empty dictionary for variables.
  *     variables = OrderedDict()             # <<<<<<<<<<<<<<
  *     if numvars > 0:
  *         # get variable ids.
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -7186,17 +7304,17 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_variables = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1243
+  /* "netCDF4/_netCDF4.pyx":1261
  *     # create empty dictionary for variables.
  *     variables = OrderedDict()
  *     if numvars > 0:             # <<<<<<<<<<<<<<
@@ -7206,7 +7324,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
   __pyx_t_3 = ((__pyx_v_numvars > 0) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1245
+    /* "netCDF4/_netCDF4.pyx":1263
  *     if numvars > 0:
  *         # get variable ids.
  *         varids = <int *>malloc(sizeof(int) * numvars)             # <<<<<<<<<<<<<<
@@ -7215,20 +7333,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
     __pyx_v_varids = ((int *)malloc(((sizeof(int)) * __pyx_v_numvars)));
 
-    /* "netCDF4/_netCDF4.pyx":1246
+    /* "netCDF4/_netCDF4.pyx":1264
  *         # get variable ids.
  *         varids = <int *>malloc(sizeof(int) * numvars)
  *         if group.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
  *             with nogil:
  *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":1247
+      /* "netCDF4/_netCDF4.pyx":1265
  *         varids = <int *>malloc(sizeof(int) * numvars)
  *         if group.data_model == 'NETCDF4':
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -7242,7 +7360,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1248
+            /* "netCDF4/_netCDF4.pyx":1266
  *         if group.data_model == 'NETCDF4':
  *             with nogil:
  *                 ierr = nc_inq_varids(_grpid, &numvars, varids)             # <<<<<<<<<<<<<<
@@ -7252,7 +7370,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_varids(__pyx_v__grpid, (&__pyx_v_numvars), __pyx_v_varids);
           }
 
-          /* "netCDF4/_netCDF4.pyx":1247
+          /* "netCDF4/_netCDF4.pyx":1265
  *         varids = <int *>malloc(sizeof(int) * numvars)
  *         if group.data_model == 'NETCDF4':
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -7270,7 +7388,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1249
+      /* "netCDF4/_netCDF4.pyx":1267
  *             with nogil:
  *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -7280,7 +7398,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1250
+        /* "netCDF4/_netCDF4.pyx":1268
  *                 ierr = nc_inq_varids(_grpid, &numvars, varids)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -7288,26 +7406,26 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *             for n from 0 <= n < numvars:
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       goto __pyx_L8;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1252
+      /* "netCDF4/_netCDF4.pyx":1270
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         else:
  *             for n from 0 <= n < numvars:             # <<<<<<<<<<<<<<
@@ -7317,7 +7435,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_2 = __pyx_v_numvars;
       for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_2; __pyx_v_n++) {
 
-        /* "netCDF4/_netCDF4.pyx":1253
+        /* "netCDF4/_netCDF4.pyx":1271
  *         else:
  *             for n from 0 <= n < numvars:
  *                 varids[n] = n             # <<<<<<<<<<<<<<
@@ -7329,7 +7447,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
     }
     __pyx_L8:;
 
-    /* "netCDF4/_netCDF4.pyx":1255
+    /* "netCDF4/_netCDF4.pyx":1273
  *                 varids[n] = n
  *         # loop over variables.
  *         for n from 0 <= n < numvars:             # <<<<<<<<<<<<<<
@@ -7339,7 +7457,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
     __pyx_t_2 = __pyx_v_numvars;
     for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_2; __pyx_v_n++) {
 
-      /* "netCDF4/_netCDF4.pyx":1256
+      /* "netCDF4/_netCDF4.pyx":1274
  *         # loop over variables.
  *         for n from 0 <= n < numvars:
  *             varid = varids[n]             # <<<<<<<<<<<<<<
@@ -7348,7 +7466,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
       __pyx_v_varid = (__pyx_v_varids[__pyx_v_n]);
 
-      /* "netCDF4/_netCDF4.pyx":1258
+      /* "netCDF4/_netCDF4.pyx":1276
  *             varid = varids[n]
  *             # get variable name.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -7362,7 +7480,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1259
+            /* "netCDF4/_netCDF4.pyx":1277
  *             # get variable name.
  *             with nogil:
  *                 ierr = nc_inq_varname(_grpid, varid, namstring)             # <<<<<<<<<<<<<<
@@ -7372,7 +7490,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_varname(__pyx_v__grpid, __pyx_v_varid, __pyx_v_namstring);
           }
 
-          /* "netCDF4/_netCDF4.pyx":1258
+          /* "netCDF4/_netCDF4.pyx":1276
  *             varid = varids[n]
  *             # get variable name.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -7390,7 +7508,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1260
+      /* "netCDF4/_netCDF4.pyx":1278
  *             with nogil:
  *                 ierr = nc_inq_varname(_grpid, varid, namstring)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -7400,7 +7518,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1261
+        /* "netCDF4/_netCDF4.pyx":1279
  *                 ierr = nc_inq_varname(_grpid, varid, namstring)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -7408,37 +7526,37 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *             if ierr != NC_NOERR:
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1262
+      /* "netCDF4/_netCDF4.pyx":1280
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-      __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_8 = NULL;
       __pyx_t_9 = 0;
@@ -7452,7 +7570,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           __pyx_t_9 = 1;
         }
       }
-      __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       if (__pyx_t_8) {
         PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -7463,14 +7581,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __Pyx_GIVEREF(__pyx_t_7);
       __pyx_t_5 = 0;
       __pyx_t_7 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":1263
+      /* "netCDF4/_netCDF4.pyx":1281
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -7480,7 +7598,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1264
+        /* "netCDF4/_netCDF4.pyx":1282
  *             name = namstring.decode(default_encoding,unicode_error)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -7488,23 +7606,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *             with nogil:
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1266
+      /* "netCDF4/_netCDF4.pyx":1284
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             # get variable type.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -7518,7 +7636,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1267
+            /* "netCDF4/_netCDF4.pyx":1285
  *             # get variable type.
  *             with nogil:
  *                 ierr = nc_inq_vartype(_grpid, varid, &xtype)             # <<<<<<<<<<<<<<
@@ -7528,7 +7646,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_vartype(__pyx_v__grpid, __pyx_v_varid, (&__pyx_v_xtype));
           }
 
-          /* "netCDF4/_netCDF4.pyx":1266
+          /* "netCDF4/_netCDF4.pyx":1284
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             # get variable type.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -7546,7 +7664,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1268
+      /* "netCDF4/_netCDF4.pyx":1286
  *             with nogil:
  *                 ierr = nc_inq_vartype(_grpid, varid, &xtype)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -7556,7 +7674,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1269
+        /* "netCDF4/_netCDF4.pyx":1287
  *                 ierr = nc_inq_vartype(_grpid, varid, &xtype)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -7564,140 +7682,156 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *             endianness = None
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1271
+      /* "netCDF4/_netCDF4.pyx":1289
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             # get endian-ness of variable.
  *             endianness = None             # <<<<<<<<<<<<<<
- *             with nogil:
- *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
+ *             # assume data returned by HDF4 lib has already been byte-swapped
+ *             # (if needed) so that it is in native endian format (issue #391).
  */
       __Pyx_INCREF(Py_None);
       __Pyx_XDECREF_SET(__pyx_v_endianness, Py_None);
 
-      /* "netCDF4/_netCDF4.pyx":1272
- *             # get endian-ness of variable.
- *             endianness = None
- *             with nogil:             # <<<<<<<<<<<<<<
- *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
- *             if ierr == NC_NOERR:
+      /* "netCDF4/_netCDF4.pyx":1292
+ *             # assume data returned by HDF4 lib has already been byte-swapped
+ *             # (if needed) so that it is in native endian format (issue #391).
+ *             if group.disk_format != 'HDF4':             # <<<<<<<<<<<<<<
+ *                 with nogil:
+ *                     ierr = nc_inq_var_endian(_grpid, varid, &iendian)
  */
-      {
-          #ifdef WITH_THREAD
-          PyThreadState *_save;
-          Py_UNBLOCK_THREADS
-          #endif
-          /*try:*/ {
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_disk_format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_HDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      if (__pyx_t_3) {
 
-            /* "netCDF4/_netCDF4.pyx":1273
- *             endianness = None
- *             with nogil:
- *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)             # <<<<<<<<<<<<<<
- *             if ierr == NC_NOERR:
- *                 if iendian == NC_ENDIAN_LITTLE:
+        /* "netCDF4/_netCDF4.pyx":1293
+ *             # (if needed) so that it is in native endian format (issue #391).
+ *             if group.disk_format != 'HDF4':
+ *                 with nogil:             # <<<<<<<<<<<<<<
+ *                     ierr = nc_inq_var_endian(_grpid, varid, &iendian)
+ *                 if ierr == NC_NOERR:
  */
-            __pyx_v_ierr = nc_inq_var_endian(__pyx_v__grpid, __pyx_v_varid, (&__pyx_v_iendian));
-          }
+        {
+            #ifdef WITH_THREAD
+            PyThreadState *_save;
+            Py_UNBLOCK_THREADS
+            #endif
+            /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":1272
- *             # get endian-ness of variable.
- *             endianness = None
- *             with nogil:             # <<<<<<<<<<<<<<
- *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
- *             if ierr == NC_NOERR:
+              /* "netCDF4/_netCDF4.pyx":1294
+ *             if group.disk_format != 'HDF4':
+ *                 with nogil:
+ *                     ierr = nc_inq_var_endian(_grpid, varid, &iendian)             # <<<<<<<<<<<<<<
+ *                 if ierr == NC_NOERR:
+ *                     if iendian == NC_ENDIAN_LITTLE:
  */
-          /*finally:*/ {
-            /*normal exit:*/{
-              #ifdef WITH_THREAD
-              Py_BLOCK_THREADS
-              #endif
-              goto __pyx_L34;
+              __pyx_v_ierr = nc_inq_var_endian(__pyx_v__grpid, __pyx_v_varid, (&__pyx_v_iendian));
             }
-            __pyx_L34:;
-          }
-      }
 
-      /* "netCDF4/_netCDF4.pyx":1274
- *             with nogil:
- *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
- *             if ierr == NC_NOERR:             # <<<<<<<<<<<<<<
- *                 if iendian == NC_ENDIAN_LITTLE:
- *                     endianness = '<'
+            /* "netCDF4/_netCDF4.pyx":1293
+ *             # (if needed) so that it is in native endian format (issue #391).
+ *             if group.disk_format != 'HDF4':
+ *                 with nogil:             # <<<<<<<<<<<<<<
+ *                     ierr = nc_inq_var_endian(_grpid, varid, &iendian)
+ *                 if ierr == NC_NOERR:
  */
-      __pyx_t_3 = ((__pyx_v_ierr == NC_NOERR) != 0);
-      if (__pyx_t_3) {
+            /*finally:*/ {
+              /*normal exit:*/{
+                #ifdef WITH_THREAD
+                Py_BLOCK_THREADS
+                #endif
+                goto __pyx_L35;
+              }
+              __pyx_L35:;
+            }
+        }
+
+        /* "netCDF4/_netCDF4.pyx":1295
+ *                 with nogil:
+ *                     ierr = nc_inq_var_endian(_grpid, varid, &iendian)
+ *                 if ierr == NC_NOERR:             # <<<<<<<<<<<<<<
+ *                     if iendian == NC_ENDIAN_LITTLE:
+ *                         endianness = '<'
+ */
+        __pyx_t_3 = ((__pyx_v_ierr == NC_NOERR) != 0);
+        if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":1277
- *                 if iendian == NC_ENDIAN_LITTLE:
- *                     endianness = '<'
- *                 elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
- *                     endianness = '>'
+          /* "netCDF4/_netCDF4.pyx":1298
+ *                     if iendian == NC_ENDIAN_LITTLE:
+ *                         endianness = '<'
+ *                     elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
+ *                         endianness = '>'
  *             # check to see if it is a supported user-defined type.
  */
-        switch (__pyx_v_iendian) {
+          switch (__pyx_v_iendian) {
 
-          /* "netCDF4/_netCDF4.pyx":1275
- *                 ierr = nc_inq_var_endian(_grpid, varid, &iendian)
- *             if ierr == NC_NOERR:
- *                 if iendian == NC_ENDIAN_LITTLE:             # <<<<<<<<<<<<<<
- *                     endianness = '<'
- *                 elif iendian == NC_ENDIAN_BIG:
+            /* "netCDF4/_netCDF4.pyx":1296
+ *                     ierr = nc_inq_var_endian(_grpid, varid, &iendian)
+ *                 if ierr == NC_NOERR:
+ *                     if iendian == NC_ENDIAN_LITTLE:             # <<<<<<<<<<<<<<
+ *                         endianness = '<'
+ *                     elif iendian == NC_ENDIAN_BIG:
  */
-          case NC_ENDIAN_LITTLE:
+            case NC_ENDIAN_LITTLE:
 
-          /* "netCDF4/_netCDF4.pyx":1276
- *             if ierr == NC_NOERR:
- *                 if iendian == NC_ENDIAN_LITTLE:
- *                     endianness = '<'             # <<<<<<<<<<<<<<
- *                 elif iendian == NC_ENDIAN_BIG:
- *                     endianness = '>'
- */
-          __Pyx_INCREF(__pyx_kp_s__12);
-          __Pyx_DECREF_SET(__pyx_v_endianness, __pyx_kp_s__12);
-          break;
+            /* "netCDF4/_netCDF4.pyx":1297
+ *                 if ierr == NC_NOERR:
+ *                     if iendian == NC_ENDIAN_LITTLE:
+ *                         endianness = '<'             # <<<<<<<<<<<<<<
+ *                     elif iendian == NC_ENDIAN_BIG:
+ *                         endianness = '>'
+ */
+            __Pyx_INCREF(__pyx_kp_s__12);
+            __Pyx_DECREF_SET(__pyx_v_endianness, __pyx_kp_s__12);
+            break;
 
-          /* "netCDF4/_netCDF4.pyx":1277
- *                 if iendian == NC_ENDIAN_LITTLE:
- *                     endianness = '<'
- *                 elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
- *                     endianness = '>'
+            /* "netCDF4/_netCDF4.pyx":1298
+ *                     if iendian == NC_ENDIAN_LITTLE:
+ *                         endianness = '<'
+ *                     elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
+ *                         endianness = '>'
  *             # check to see if it is a supported user-defined type.
  */
-          case NC_ENDIAN_BIG:
+            case NC_ENDIAN_BIG:
 
-          /* "netCDF4/_netCDF4.pyx":1278
- *                     endianness = '<'
- *                 elif iendian == NC_ENDIAN_BIG:
- *                     endianness = '>'             # <<<<<<<<<<<<<<
+            /* "netCDF4/_netCDF4.pyx":1299
+ *                         endianness = '<'
+ *                     elif iendian == NC_ENDIAN_BIG:
+ *                         endianness = '>'             # <<<<<<<<<<<<<<
  *             # check to see if it is a supported user-defined type.
  *             try:
  */
-          __Pyx_INCREF(__pyx_kp_s__13);
-          __Pyx_DECREF_SET(__pyx_v_endianness, __pyx_kp_s__13);
-          break;
-          default: break;
+            __Pyx_INCREF(__pyx_kp_s__13);
+            __Pyx_DECREF_SET(__pyx_v_endianness, __pyx_kp_s__13);
+            break;
+            default: break;
+          }
+          goto __pyx_L36;
         }
-        goto __pyx_L35;
+        __pyx_L36:;
+        goto __pyx_L30;
       }
-      __pyx_L35:;
+      __pyx_L30:;
 
-      /* "netCDF4/_netCDF4.pyx":1280
- *                     endianness = '>'
+      /* "netCDF4/_netCDF4.pyx":1301
+ *                         endianness = '>'
  *             # check to see if it is a supported user-defined type.
  *             try:             # <<<<<<<<<<<<<<
  *                 datatype = _nctonptype[xtype]
@@ -7710,22 +7844,22 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __Pyx_XGOTREF(__pyx_t_13);
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":1281
+          /* "netCDF4/_netCDF4.pyx":1302
  *             # check to see if it is a supported user-defined type.
  *             try:
  *                 datatype = _nctonptype[xtype]             # <<<<<<<<<<<<<<
  *                 if endianness is not None:
  *                     datatype = endianness + datatype
  */
-          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
+          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L37_error;}
           __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_xtype, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L36_error;};
+          __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_xtype, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L37_error;};
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __Pyx_XDECREF_SET(__pyx_v_datatype, __pyx_t_6);
           __pyx_t_6 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":1282
+          /* "netCDF4/_netCDF4.pyx":1303
  *             try:
  *                 datatype = _nctonptype[xtype]
  *                 if endianness is not None:             # <<<<<<<<<<<<<<
@@ -7736,26 +7870,26 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           __pyx_t_14 = (__pyx_t_3 != 0);
           if (__pyx_t_14) {
 
-            /* "netCDF4/_netCDF4.pyx":1283
+            /* "netCDF4/_netCDF4.pyx":1304
  *                 datatype = _nctonptype[xtype]
  *                 if endianness is not None:
  *                     datatype = endianness + datatype             # <<<<<<<<<<<<<<
  *             except KeyError:
  *                 if xtype == NC_STRING:
  */
-            __pyx_t_6 = PyNumber_Add(__pyx_v_endianness, __pyx_v_datatype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
+            __pyx_t_6 = PyNumber_Add(__pyx_v_endianness, __pyx_v_datatype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L37_error;}
             __Pyx_GOTREF(__pyx_t_6);
             __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_6);
             __pyx_t_6 = 0;
-            goto __pyx_L44;
+            goto __pyx_L45;
           }
-          __pyx_L44:;
+          __pyx_L45:;
         }
         __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
         __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-        goto __pyx_L43_try_end;
-        __pyx_L36_error:;
+        goto __pyx_L44_try_end;
+        __pyx_L37_error:;
         __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -7763,7 +7897,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":1284
+        /* "netCDF4/_netCDF4.pyx":1305
  *                 if endianness is not None:
  *                     datatype = endianness + datatype
  *             except KeyError:             # <<<<<<<<<<<<<<
@@ -7773,12 +7907,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __pyx_t_15 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
         if (__pyx_t_15) {
           __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_1, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L38_except_error;}
+          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_1, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_GOTREF(__pyx_t_10);
 
-          /* "netCDF4/_netCDF4.pyx":1285
+          /* "netCDF4/_netCDF4.pyx":1306
  *                     datatype = endianness + datatype
  *             except KeyError:
  *                 if xtype == NC_STRING:             # <<<<<<<<<<<<<<
@@ -7788,7 +7922,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           __pyx_t_14 = ((__pyx_v_xtype == NC_STRING) != 0);
           if (__pyx_t_14) {
 
-            /* "netCDF4/_netCDF4.pyx":1286
+            /* "netCDF4/_netCDF4.pyx":1307
  *             except KeyError:
  *                 if xtype == NC_STRING:
  *                     datatype = str             # <<<<<<<<<<<<<<
@@ -7797,11 +7931,11 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
             __Pyx_INCREF(((PyObject *)((PyObject*)(&PyString_Type))));
             __Pyx_XDECREF_SET(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))));
-            goto __pyx_L47;
+            goto __pyx_L48;
           }
           /*else*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1288
+            /* "netCDF4/_netCDF4.pyx":1309
  *                     datatype = str
  *                 else:
  *                     with nogil:             # <<<<<<<<<<<<<<
@@ -7815,7 +7949,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 #endif
                 /*try:*/ {
 
-                  /* "netCDF4/_netCDF4.pyx":1289
+                  /* "netCDF4/_netCDF4.pyx":1310
  *                 else:
  *                     with nogil:
  *                         ierr = nc_inq_user_type(_grpid, xtype, namstring_cmp,             # <<<<<<<<<<<<<<
@@ -7825,7 +7959,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                   __pyx_v_ierr = nc_inq_user_type(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_namstring_cmp, NULL, NULL, NULL, (&__pyx_v_classp));
                 }
 
-                /* "netCDF4/_netCDF4.pyx":1288
+                /* "netCDF4/_netCDF4.pyx":1309
  *                     datatype = str
  *                 else:
  *                     with nogil:             # <<<<<<<<<<<<<<
@@ -7837,13 +7971,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                     #ifdef WITH_THREAD
                     Py_BLOCK_THREADS
                     #endif
-                    goto __pyx_L52;
+                    goto __pyx_L53;
                   }
-                  __pyx_L52:;
+                  __pyx_L53:;
                 }
             }
 
-            /* "netCDF4/_netCDF4.pyx":1298
+            /* "netCDF4/_netCDF4.pyx":1319
  *                             #print "WARNING: variable '%s' has unsupported compound datatype, skipping .." % name
  *                             continue
  *                     elif classp == NC_VLEN: # a compound type             # <<<<<<<<<<<<<<
@@ -7852,7 +7986,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
             switch (__pyx_v_classp) {
 
-              /* "netCDF4/_netCDF4.pyx":1291
+              /* "netCDF4/_netCDF4.pyx":1312
  *                         ierr = nc_inq_user_type(_grpid, xtype, namstring_cmp,
  *                                                 NULL, NULL, NULL, &classp)
  *                     if classp == NC_COMPOUND: # a compound type             # <<<<<<<<<<<<<<
@@ -7861,7 +7995,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
               case NC_COMPOUND:
 
-              /* "netCDF4/_netCDF4.pyx":1293
+              /* "netCDF4/_netCDF4.pyx":1314
  *                     if classp == NC_COMPOUND: # a compound type
  *                         # create CompoundType instance describing this compound type.
  *                         try:             # <<<<<<<<<<<<<<
@@ -7875,7 +8009,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 __Pyx_XGOTREF(__pyx_t_18);
                 /*try:*/ {
 
-                  /* "netCDF4/_netCDF4.pyx":1294
+                  /* "netCDF4/_netCDF4.pyx":1315
  *                         # create CompoundType instance describing this compound type.
  *                         try:
  *                             datatype = _read_compound(group, xtype, endian=endianness)             # <<<<<<<<<<<<<<
@@ -7884,7 +8018,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
                   __pyx_t_19.__pyx_n = 1;
                   __pyx_t_19.endian = __pyx_v_endianness;
-                  __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_xtype, &__pyx_t_19); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L53_error;}
+                  __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_xtype, &__pyx_t_19); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L54_error;}
                   __Pyx_GOTREF(__pyx_t_7);
                   __Pyx_XDECREF_SET(__pyx_v_datatype, __pyx_t_7);
                   __pyx_t_7 = 0;
@@ -7892,13 +8026,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
                 __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                 __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
-                goto __pyx_L60_try_end;
-                __pyx_L53_error:;
+                goto __pyx_L61_try_end;
+                __pyx_L54_error:;
                 __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                 __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                 __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-                /* "netCDF4/_netCDF4.pyx":1295
+                /* "netCDF4/_netCDF4.pyx":1316
  *                         try:
  *                             datatype = _read_compound(group, xtype, endian=endianness)
  *                         except KeyError:             # <<<<<<<<<<<<<<
@@ -7908,43 +8042,43 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 __pyx_t_15 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
                 if (__pyx_t_15) {
                   __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
-                  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_5, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L55_except_error;}
+                  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_5, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L56_except_error;}
                   __Pyx_GOTREF(__pyx_t_7);
                   __Pyx_GOTREF(__pyx_t_5);
                   __Pyx_GOTREF(__pyx_t_8);
 
-                  /* "netCDF4/_netCDF4.pyx":1297
+                  /* "netCDF4/_netCDF4.pyx":1318
  *                         except KeyError:
  *                             #print "WARNING: variable '%s' has unsupported compound datatype, skipping .." % name
  *                             continue             # <<<<<<<<<<<<<<
  *                     elif classp == NC_VLEN: # a compound type
  *                         # create VLType instance describing this compound type.
  */
-                  goto __pyx_L62_except_continue;
-                  __pyx_L62_except_continue:;
+                  goto __pyx_L63_except_continue;
+                  __pyx_L63_except_continue:;
                   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-                  goto __pyx_L59_try_continue;
+                  goto __pyx_L60_try_continue;
                 }
-                goto __pyx_L55_except_error;
-                __pyx_L55_except_error:;
+                goto __pyx_L56_except_error;
+                __pyx_L56_except_error:;
                 __Pyx_XGIVEREF(__pyx_t_16);
                 __Pyx_XGIVEREF(__pyx_t_17);
                 __Pyx_XGIVEREF(__pyx_t_18);
                 __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
-                goto __pyx_L38_except_error;
-                __pyx_L59_try_continue:;
+                goto __pyx_L39_except_error;
+                __pyx_L60_try_continue:;
                 __Pyx_XGIVEREF(__pyx_t_16);
                 __Pyx_XGIVEREF(__pyx_t_17);
                 __Pyx_XGIVEREF(__pyx_t_18);
                 __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
-                goto __pyx_L46_except_continue;
-                __pyx_L60_try_end:;
+                goto __pyx_L47_except_continue;
+                __pyx_L61_try_end:;
               }
               break;
 
-              /* "netCDF4/_netCDF4.pyx":1298
+              /* "netCDF4/_netCDF4.pyx":1319
  *                             #print "WARNING: variable '%s' has unsupported compound datatype, skipping .." % name
  *                             continue
  *                     elif classp == NC_VLEN: # a compound type             # <<<<<<<<<<<<<<
@@ -7953,7 +8087,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
               case NC_VLEN:
 
-              /* "netCDF4/_netCDF4.pyx":1300
+              /* "netCDF4/_netCDF4.pyx":1321
  *                     elif classp == NC_VLEN: # a compound type
  *                         # create VLType instance describing this compound type.
  *                         try:             # <<<<<<<<<<<<<<
@@ -7967,7 +8101,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 __Pyx_XGOTREF(__pyx_t_16);
                 /*try:*/ {
 
-                  /* "netCDF4/_netCDF4.pyx":1301
+                  /* "netCDF4/_netCDF4.pyx":1322
  *                         # create VLType instance describing this compound type.
  *                         try:
  *                             datatype = _read_vlen(group, xtype, endian=endianness)             # <<<<<<<<<<<<<<
@@ -7976,7 +8110,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
                   __pyx_t_20.__pyx_n = 1;
                   __pyx_t_20.endian = __pyx_v_endianness;
-                  __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__read_vlen(__pyx_v_group, __pyx_v_xtype, &__pyx_t_20); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L63_error;}
+                  __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__read_vlen(__pyx_v_group, __pyx_v_xtype, &__pyx_t_20); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L64_error;}
                   __Pyx_GOTREF(__pyx_t_8);
                   __Pyx_XDECREF_SET(__pyx_v_datatype, __pyx_t_8);
                   __pyx_t_8 = 0;
@@ -7984,13 +8118,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
                 __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
                 __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
-                goto __pyx_L70_try_end;
-                __pyx_L63_error:;
+                goto __pyx_L71_try_end;
+                __pyx_L64_error:;
                 __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
                 __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                 __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-                /* "netCDF4/_netCDF4.pyx":1302
+                /* "netCDF4/_netCDF4.pyx":1323
  *                         try:
  *                             datatype = _read_vlen(group, xtype, endian=endianness)
  *                         except KeyError:             # <<<<<<<<<<<<<<
@@ -8000,87 +8134,87 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 __pyx_t_15 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
                 if (__pyx_t_15) {
                   __Pyx_AddTraceback("netCDF4._netCDF4._get_vars", __pyx_clineno, __pyx_lineno, __pyx_filename);
-                  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_5, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L65_except_error;}
+                  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_5, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L66_except_error;}
                   __Pyx_GOTREF(__pyx_t_8);
                   __Pyx_GOTREF(__pyx_t_5);
                   __Pyx_GOTREF(__pyx_t_7);
 
-                  /* "netCDF4/_netCDF4.pyx":1304
+                  /* "netCDF4/_netCDF4.pyx":1325
  *                         except KeyError:
  *                             #print "WARNING: variable '%s' has unsupported VLEN datatype, skipping .." % name
  *                             continue             # <<<<<<<<<<<<<<
  *                     else:
  *                         #print "WARNING: variable '%s' has unsupported datatype, skipping .." % name
  */
-                  goto __pyx_L72_except_continue;
-                  __pyx_L72_except_continue:;
+                  goto __pyx_L73_except_continue;
+                  __pyx_L73_except_continue:;
                   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-                  goto __pyx_L69_try_continue;
+                  goto __pyx_L70_try_continue;
                 }
-                goto __pyx_L65_except_error;
-                __pyx_L65_except_error:;
+                goto __pyx_L66_except_error;
+                __pyx_L66_except_error:;
                 __Pyx_XGIVEREF(__pyx_t_18);
                 __Pyx_XGIVEREF(__pyx_t_17);
                 __Pyx_XGIVEREF(__pyx_t_16);
                 __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_17, __pyx_t_16);
-                goto __pyx_L38_except_error;
-                __pyx_L69_try_continue:;
+                goto __pyx_L39_except_error;
+                __pyx_L70_try_continue:;
                 __Pyx_XGIVEREF(__pyx_t_18);
                 __Pyx_XGIVEREF(__pyx_t_17);
                 __Pyx_XGIVEREF(__pyx_t_16);
                 __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_17, __pyx_t_16);
-                goto __pyx_L46_except_continue;
-                __pyx_L70_try_end:;
+                goto __pyx_L47_except_continue;
+                __pyx_L71_try_end:;
               }
               break;
               default:
 
-              /* "netCDF4/_netCDF4.pyx":1307
+              /* "netCDF4/_netCDF4.pyx":1328
  *                     else:
  *                         #print "WARNING: variable '%s' has unsupported datatype, skipping .." % name
  *                         continue             # <<<<<<<<<<<<<<
  *             # get number of dimensions.
  *             with nogil:
  */
-              goto __pyx_L46_except_continue;
+              goto __pyx_L47_except_continue;
               break;
             }
           }
-          __pyx_L47:;
+          __pyx_L48:;
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-          goto __pyx_L37_exception_handled;
-          __pyx_L46_except_continue:;
+          goto __pyx_L38_exception_handled;
+          __pyx_L47_except_continue:;
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-          goto __pyx_L42_try_continue;
+          goto __pyx_L43_try_continue;
         }
-        goto __pyx_L38_except_error;
-        __pyx_L38_except_error:;
+        goto __pyx_L39_except_error;
+        __pyx_L39_except_error:;
         __Pyx_XGIVEREF(__pyx_t_11);
         __Pyx_XGIVEREF(__pyx_t_12);
         __Pyx_XGIVEREF(__pyx_t_13);
         __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
         goto __pyx_L1_error;
-        __pyx_L42_try_continue:;
+        __pyx_L43_try_continue:;
         __Pyx_XGIVEREF(__pyx_t_11);
         __Pyx_XGIVEREF(__pyx_t_12);
         __Pyx_XGIVEREF(__pyx_t_13);
         __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
         goto __pyx_L15_continue;
-        __pyx_L37_exception_handled:;
+        __pyx_L38_exception_handled:;
         __Pyx_XGIVEREF(__pyx_t_11);
         __Pyx_XGIVEREF(__pyx_t_12);
         __Pyx_XGIVEREF(__pyx_t_13);
         __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-        __pyx_L43_try_end:;
+        __pyx_L44_try_end:;
       }
 
-      /* "netCDF4/_netCDF4.pyx":1309
+      /* "netCDF4/_netCDF4.pyx":1330
  *                         continue
  *             # get number of dimensions.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -8094,7 +8228,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1310
+            /* "netCDF4/_netCDF4.pyx":1331
  *             # get number of dimensions.
  *             with nogil:
  *                 ierr = nc_inq_varndims(_grpid, varid, &numdims)             # <<<<<<<<<<<<<<
@@ -8104,7 +8238,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_varndims(__pyx_v__grpid, __pyx_v_varid, (&__pyx_v_numdims));
           }
 
-          /* "netCDF4/_netCDF4.pyx":1309
+          /* "netCDF4/_netCDF4.pyx":1330
  *                         continue
  *             # get number of dimensions.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -8116,13 +8250,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
               #ifdef WITH_THREAD
               Py_BLOCK_THREADS
               #endif
-              goto __pyx_L77;
+              goto __pyx_L78;
             }
-            __pyx_L77:;
+            __pyx_L78:;
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1311
+      /* "netCDF4/_netCDF4.pyx":1332
  *             with nogil:
  *                 ierr = nc_inq_varndims(_grpid, varid, &numdims)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -8132,7 +8266,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_14 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_14) {
 
-        /* "netCDF4/_netCDF4.pyx":1312
+        /* "netCDF4/_netCDF4.pyx":1333
  *                 ierr = nc_inq_varndims(_grpid, varid, &numdims)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -8140,23 +8274,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *             with nogil:
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_10 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_INCREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_Raise(__pyx_t_10, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1314
+      /* "netCDF4/_netCDF4.pyx":1335
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             # get dimension ids.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -8170,7 +8304,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":1315
+            /* "netCDF4/_netCDF4.pyx":1336
  *             # get dimension ids.
  *             with nogil:
  *                 ierr = nc_inq_vardimid(_grpid, varid, dimids)             # <<<<<<<<<<<<<<
@@ -8180,7 +8314,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
             __pyx_v_ierr = nc_inq_vardimid(__pyx_v__grpid, __pyx_v_varid, __pyx_v_dimids);
           }
 
-          /* "netCDF4/_netCDF4.pyx":1314
+          /* "netCDF4/_netCDF4.pyx":1335
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             # get dimension ids.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -8192,13 +8326,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
               #ifdef WITH_THREAD
               Py_BLOCK_THREADS
               #endif
-              goto __pyx_L83;
+              goto __pyx_L84;
             }
-            __pyx_L83:;
+            __pyx_L84:;
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1316
+      /* "netCDF4/_netCDF4.pyx":1337
  *             with nogil:
  *                 ierr = nc_inq_vardimid(_grpid, varid, dimids)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -8208,7 +8342,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_14 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_14) {
 
-        /* "netCDF4/_netCDF4.pyx":1317
+        /* "netCDF4/_netCDF4.pyx":1338
  *                 ierr = nc_inq_vardimid(_grpid, varid, dimids)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -8216,35 +8350,35 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *             # if not found in current group, look in parents.
  */
         __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_10 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_INCREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_Raise(__pyx_t_10, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":1323
+      /* "netCDF4/_netCDF4.pyx":1344
  *             # and so does it's parent - can a variable in grp1
  *             # use the 'foo' dimension from the parent?
  *             dimensions = []             # <<<<<<<<<<<<<<
  *             for nn from 0 <= nn < numdims:
  *                 grp = group
  */
-      __pyx_t_10 = PyList_New(0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyList_New(0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_XDECREF_SET(__pyx_v_dimensions, ((PyObject*)__pyx_t_10));
       __pyx_t_10 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":1324
+      /* "netCDF4/_netCDF4.pyx":1345
  *             # use the 'foo' dimension from the parent?
  *             dimensions = []
  *             for nn from 0 <= nn < numdims:             # <<<<<<<<<<<<<<
@@ -8254,7 +8388,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
       __pyx_t_15 = __pyx_v_numdims;
       for (__pyx_v_nn = 0; __pyx_v_nn < __pyx_t_15; __pyx_v_nn++) {
 
-        /* "netCDF4/_netCDF4.pyx":1325
+        /* "netCDF4/_netCDF4.pyx":1346
  *             dimensions = []
  *             for nn from 0 <= nn < numdims:
  *                 grp = group             # <<<<<<<<<<<<<<
@@ -8264,7 +8398,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __Pyx_INCREF(__pyx_v_group);
         __Pyx_XDECREF_SET(__pyx_v_grp, __pyx_v_group);
 
-        /* "netCDF4/_netCDF4.pyx":1326
+        /* "netCDF4/_netCDF4.pyx":1347
  *             for nn from 0 <= nn < numdims:
  *                 grp = group
  *                 found = False             # <<<<<<<<<<<<<<
@@ -8273,7 +8407,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
         __pyx_v_found = 0;
 
-        /* "netCDF4/_netCDF4.pyx":1327
+        /* "netCDF4/_netCDF4.pyx":1348
  *                 grp = group
  *                 found = False
  *                 while not found:             # <<<<<<<<<<<<<<
@@ -8284,16 +8418,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
           __pyx_t_14 = ((!(__pyx_v_found != 0)) != 0);
           if (!__pyx_t_14) break;
 
-          /* "netCDF4/_netCDF4.pyx":1328
+          /* "netCDF4/_netCDF4.pyx":1349
  *                 found = False
  *                 while not found:
  *                     for key, value in grp.dimensions.items():             # <<<<<<<<<<<<<<
  *                         if value._dimid == dimids[nn]:
  *                             dimensions.append(key)
  */
-          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
-          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __pyx_t_1 = NULL;
@@ -8307,10 +8441,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
             }
           }
           if (__pyx_t_1) {
-            __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           } else {
-            __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -8318,9 +8452,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
             __pyx_t_6 = __pyx_t_10; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
             __pyx_t_21 = NULL;
           } else {
-            __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_6);
-            __pyx_t_21 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_21 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
           for (;;) {
@@ -8328,16 +8462,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
               if (likely(PyList_CheckExact(__pyx_t_6))) {
                 if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break;
                 #if CYTHON_COMPILING_IN_CPYTHON
-                __pyx_t_10 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_10); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_10 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_10); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 #else
-                __pyx_t_10 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_10 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 #endif
               } else {
                 if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
                 #if CYTHON_COMPILING_IN_CPYTHON
-                __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_10); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_10); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 #else
-                __pyx_t_10 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_10 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 #endif
               }
             } else {
@@ -8346,7 +8480,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
                 PyObject* exc_type = PyErr_Occurred();
                 if (exc_type) {
                   if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-                  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 }
                 break;
               }
@@ -8362,7 +8496,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
               if (unlikely(size != 2)) {
                 if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                 else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-                {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               }
               #if CYTHON_COMPILING_IN_CPYTHON
               if (likely(PyTuple_CheckExact(sequence))) {
@@ -8375,66 +8509,66 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
               __Pyx_INCREF(__pyx_t_1);
               __Pyx_INCREF(__pyx_t_7);
               #else
-              __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_GOTREF(__pyx_t_1);
-              __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_GOTREF(__pyx_t_7);
               #endif
               __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
             } else {
               Py_ssize_t index = -1;
-              __pyx_t_5 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_5 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_GOTREF(__pyx_t_5);
               __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
               __pyx_t_22 = Py_TYPE(__pyx_t_5)->tp_iternext;
-              index = 0; __pyx_t_1 = __pyx_t_22(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L91_unpacking_failed;
+              index = 0; __pyx_t_1 = __pyx_t_22(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L92_unpacking_failed;
               __Pyx_GOTREF(__pyx_t_1);
-              index = 1; __pyx_t_7 = __pyx_t_22(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L91_unpacking_failed;
+              index = 1; __pyx_t_7 = __pyx_t_22(__pyx_t_5); if (unlikely(!__pyx_t_7)) goto __pyx_L92_unpacking_failed;
               __Pyx_GOTREF(__pyx_t_7);
-              if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              if (__Pyx_IternextUnpackEndCheck(__pyx_t_22(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __pyx_t_22 = NULL;
               __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-              goto __pyx_L92_unpacking_done;
-              __pyx_L91_unpacking_failed:;
+              goto __pyx_L93_unpacking_done;
+              __pyx_L92_unpacking_failed:;
               __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
               __pyx_t_22 = NULL;
               if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-              __pyx_L92_unpacking_done:;
+              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_L93_unpacking_done:;
             }
             __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1);
             __pyx_t_1 = 0;
             __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
             __pyx_t_7 = 0;
 
-            /* "netCDF4/_netCDF4.pyx":1329
+            /* "netCDF4/_netCDF4.pyx":1350
  *                 while not found:
  *                     for key, value in grp.dimensions.items():
  *                         if value._dimid == dimids[nn]:             # <<<<<<<<<<<<<<
  *                             dimensions.append(key)
  *                             found = True
  */
-            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dimid); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_dimid); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_10);
-            __pyx_t_7 = __Pyx_PyInt_From_int((__pyx_v_dimids[__pyx_v_nn])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = __Pyx_PyInt_From_int((__pyx_v_dimids[__pyx_v_nn])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_7);
-            __pyx_t_1 = PyObject_RichCompare(__pyx_t_10, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyObject_RichCompare(__pyx_t_10, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-            __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
             if (__pyx_t_14) {
 
-              /* "netCDF4/_netCDF4.pyx":1330
+              /* "netCDF4/_netCDF4.pyx":1351
  *                     for key, value in grp.dimensions.items():
  *                         if value._dimid == dimids[nn]:
  *                             dimensions.append(key)             # <<<<<<<<<<<<<<
  *                             found = True
  *                             break
  */
-              __pyx_t_23 = __Pyx_PyList_Append(__pyx_v_dimensions, __pyx_v_key); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_23 = __Pyx_PyList_Append(__pyx_v_dimensions, __pyx_v_key); if (unlikely(__pyx_t_23 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-              /* "netCDF4/_netCDF4.pyx":1331
+              /* "netCDF4/_netCDF4.pyx":1352
  *                         if value._dimid == dimids[nn]:
  *                             dimensions.append(key)
  *                             found = True             # <<<<<<<<<<<<<<
@@ -8443,17 +8577,17 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  */
               __pyx_v_found = 1;
 
-              /* "netCDF4/_netCDF4.pyx":1332
+              /* "netCDF4/_netCDF4.pyx":1353
  *                             dimensions.append(key)
  *                             found = True
  *                             break             # <<<<<<<<<<<<<<
  *                     grp = grp.parent
  *             # create new variable instance.
  */
-              goto __pyx_L90_break;
+              goto __pyx_L91_break;
             }
 
-            /* "netCDF4/_netCDF4.pyx":1328
+            /* "netCDF4/_netCDF4.pyx":1349
  *                 found = False
  *                 while not found:
  *                     for key, value in grp.dimensions.items():             # <<<<<<<<<<<<<<
@@ -8461,41 +8595,41 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
  *                             dimensions.append(key)
  */
           }
-          __pyx_L90_break:;
+          __pyx_L91_break:;
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":1333
+          /* "netCDF4/_netCDF4.pyx":1354
  *                             found = True
  *                             break
  *                     grp = grp.parent             # <<<<<<<<<<<<<<
  *             # create new variable instance.
  *             if endianness == '>':
  */
-          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_parent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_parent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF_SET(__pyx_v_grp, __pyx_t_6);
           __pyx_t_6 = 0;
         }
       }
 
-      /* "netCDF4/_netCDF4.pyx":1335
+      /* "netCDF4/_netCDF4.pyx":1356
  *                     grp = grp.parent
  *             # create new variable instance.
  *             if endianness == '>':             # <<<<<<<<<<<<<<
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='big')
  *             elif endianness == '<':
  */
-      __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_endianness, __pyx_kp_s__13, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_endianness, __pyx_kp_s__13, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_14) {
 
-        /* "netCDF4/_netCDF4.pyx":1336
+        /* "netCDF4/_netCDF4.pyx":1357
  *             # create new variable instance.
  *             if endianness == '>':
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='big')             # <<<<<<<<<<<<<<
  *             elif endianness == '<':
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='little')
  */
-        __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_v_group);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_group);
@@ -8509,40 +8643,40 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __Pyx_INCREF(__pyx_v_dimensions);
         PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_dimensions);
         __Pyx_GIVEREF(__pyx_v_dimensions);
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_varid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_varid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endian, __pyx_n_s_big) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endian, __pyx_n_s_big) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (unlikely(PyObject_SetItem(__pyx_v_variables, __pyx_v_name, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v_variables, __pyx_v_name, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        goto __pyx_L94;
+        goto __pyx_L95;
       }
 
-      /* "netCDF4/_netCDF4.pyx":1337
+      /* "netCDF4/_netCDF4.pyx":1358
  *             if endianness == '>':
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='big')
  *             elif endianness == '<':             # <<<<<<<<<<<<<<
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='little')
  *             else:
  */
-      __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_endianness, __pyx_kp_s__12, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = (__Pyx_PyString_Equals(__pyx_v_endianness, __pyx_kp_s__12, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_14) {
 
-        /* "netCDF4/_netCDF4.pyx":1338
+        /* "netCDF4/_netCDF4.pyx":1359
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='big')
  *             elif endianness == '<':
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='little')             # <<<<<<<<<<<<<<
  *             else:
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid)
  */
-        __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_INCREF(__pyx_v_group);
         PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_group);
@@ -8556,31 +8690,31 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __Pyx_INCREF(__pyx_v_dimensions);
         PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_dimensions);
         __Pyx_GIVEREF(__pyx_v_dimensions);
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_varid); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_varid); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endian, __pyx_n_s_little) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_endian, __pyx_n_s_little) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (unlikely(PyObject_SetItem(__pyx_v_variables, __pyx_v_name, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v_variables, __pyx_v_name, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        goto __pyx_L94;
+        goto __pyx_L95;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1340
+        /* "netCDF4/_netCDF4.pyx":1361
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid, endian='little')
  *             else:
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid)             # <<<<<<<<<<<<<<
  *         free(varids) # free pointer holding variable ids.
  *     return variables
  */
-        __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_v_group);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_group);
@@ -8594,24 +8728,24 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
         __Pyx_INCREF(__pyx_v_dimensions);
         PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_dimensions);
         __Pyx_GIVEREF(__pyx_v_dimensions);
-        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_varid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_varid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (unlikely(PyObject_SetItem(__pyx_v_variables, __pyx_v_name, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v_variables, __pyx_v_name, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       }
-      __pyx_L94:;
+      __pyx_L95:;
       __pyx_L15_continue:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":1341
+    /* "netCDF4/_netCDF4.pyx":1362
  *             else:
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid)
  *         free(varids) # free pointer holding variable ids.             # <<<<<<<<<<<<<<
@@ -8623,7 +8757,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
   }
   __pyx_L7:;
 
-  /* "netCDF4/_netCDF4.pyx":1342
+  /* "netCDF4/_netCDF4.pyx":1363
  *                 variables[name] = Variable(group, name, datatype, dimensions, id=varid)
  *         free(varids) # free pointer holding variable ids.
  *     return variables             # <<<<<<<<<<<<<<
@@ -8635,12 +8769,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
   __pyx_r = __pyx_v_variables;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1225
+  /* "netCDF4/_netCDF4.pyx":1243
  *     return groups
  * 
  * cdef _get_vars(group):             # <<<<<<<<<<<<<<
- *     # Private function to create L{Variable} instances for all the
- *     # variables in a L{Group} or Dataset
+ *     # Private function to create `netCDF4.Variable` instances for all the
+ *     # variables in a `netCDF4.Group` or Dataset
  */
 
   /* function exit code */
@@ -8667,16 +8801,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__get_vars(PyObject *__pyx_v_group) {
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1477
- *     __orthogonal_indexing__
+/* "netCDF4/_netCDF4.pyx":1489
+ *     the parent Dataset or Group."""
  * 
  *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',             # <<<<<<<<<<<<<<
  *                  diskless=False, persist=False, keepweakref=False, **kwargs):
- *         cdef int grpid, ierr, numgrps, numdims, numvars
+ *         """
  */
 
 /* Python wrapper */
 static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset___init__[] = "\n        **`__init__(self, filename, mode=\"r\", clobber=True, diskless=False,\n        persist=False, weakref=False, format='NETCDF4')`**\n\n        `netCDF4.Dataset` constructor.\n\n        **`filename`**: Name of netCDF file to hold dataset.\n        \n        **`mode`**: access mode. `r` means read-only; no data can be\n        modified. `w` means write; a new file is created, an existing file with\n        the same nam [...]
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__;
+#endif
 static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_filename = 0;
   PyObject *__pyx_v_mode = 0;
@@ -8701,12 +8839,12 @@ static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self
     values[2] = ((PyObject *)Py_True);
     values[3] = ((PyObject *)__pyx_n_s_NETCDF4);
 
-    /* "netCDF4/_netCDF4.pyx":1478
+    /* "netCDF4/_netCDF4.pyx":1490
  * 
  *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
  *                  diskless=False, persist=False, keepweakref=False, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef int grpid, ierr, numgrps, numdims, numvars
- *         cdef char *path
+ *         """
+ *         **`__init__(self, filename, mode="r", clobber=True, diskless=False,
  */
     values[4] = ((PyObject *)Py_False);
     values[5] = ((PyObject *)Py_False);
@@ -8762,7 +8900,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -8787,7 +8925,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -8796,12 +8934,12 @@ static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_1__init__(PyObject *__pyx_v_self
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_filename, __pyx_v_mode, __pyx_v_clobber, __pyx_v_format, __pyx_v_diskless, __pyx_v_persist, __pyx_v_keepweakref, __pyx_v_kwargs);
 
-  /* "netCDF4/_netCDF4.pyx":1477
- *     __orthogonal_indexing__
+  /* "netCDF4/_netCDF4.pyx":1489
+ *     the parent Dataset or Group."""
  * 
  *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',             # <<<<<<<<<<<<<<
  *                  diskless=False, persist=False, keepweakref=False, **kwargs):
- *         cdef int grpid, ierr, numgrps, numdims, numvars
+ *         """
  */
 
   /* function exit code */
@@ -8831,7 +8969,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1483
+  /* "netCDF4/_netCDF4.pyx":1552
  *         cdef char namstring[NC_MAX_NAME+1]
  *         # flag to indicate that Variables in this Dataset support orthogonal indexing.
  *         self.__orthogonal_indexing__ = True             # <<<<<<<<<<<<<<
@@ -8844,172 +8982,172 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __Pyx_DECREF(__pyx_v_self->__orthogonal_indexing__);
   __pyx_v_self->__orthogonal_indexing__ = Py_True;
 
-  /* "netCDF4/_netCDF4.pyx":1484
+  /* "netCDF4/_netCDF4.pyx":1553
  *         # flag to indicate that Variables in this Dataset support orthogonal indexing.
  *         self.__orthogonal_indexing__ = True
  *         if diskless and __netcdf4libversion__ < '4.2.1':             # <<<<<<<<<<<<<<
  *             #diskless = False # don't raise error, instead silently ignore
  *             raise ValueError('diskless mode requires netcdf lib >= 4.2.1, you have %s' % __netcdf4libversion__)
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
   } else {
     __pyx_t_1 = __pyx_t_2;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdf4libversion); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdf4libversion); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_kp_s_4_2_1, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_kp_s_4_2_1, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_1 = __pyx_t_2;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1486
+    /* "netCDF4/_netCDF4.pyx":1555
  *         if diskless and __netcdf4libversion__ < '4.2.1':
  *             #diskless = False # don't raise error, instead silently ignore
  *             raise ValueError('diskless mode requires netcdf lib >= 4.2.1, you have %s' % __netcdf4libversion__)             # <<<<<<<<<<<<<<
  *         bytestr = _strencode(filename)
  *         path = bytestr
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdf4libversion); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdf4libversion); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_diskless_mode_requires_netcdf_li, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_diskless_mode_requires_netcdf_li, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1487
+  /* "netCDF4/_netCDF4.pyx":1556
  *             #diskless = False # don't raise error, instead silently ignore
  *             raise ValueError('diskless mode requires netcdf lib >= 4.2.1, you have %s' % __netcdf4libversion__)
  *         bytestr = _strencode(filename)             # <<<<<<<<<<<<<<
  *         path = bytestr
  *         if mode == 'w':
  */
-  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_filename, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_filename, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_bytestr = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1488
+  /* "netCDF4/_netCDF4.pyx":1557
  *             raise ValueError('diskless mode requires netcdf lib >= 4.2.1, you have %s' % __netcdf4libversion__)
  *         bytestr = _strencode(filename)
  *         path = bytestr             # <<<<<<<<<<<<<<
  *         if mode == 'w':
  *             _set_default_format(format=format)
  */
-  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_path = __pyx_t_5;
 
-  /* "netCDF4/_netCDF4.pyx":1489
+  /* "netCDF4/_netCDF4.pyx":1558
  *         bytestr = _strencode(filename)
  *         path = bytestr
  *         if mode == 'w':             # <<<<<<<<<<<<<<
  *             _set_default_format(format=format)
  *             if clobber:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_w, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_w, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1490
+    /* "netCDF4/_netCDF4.pyx":1559
  *         path = bytestr
  *         if mode == 'w':
  *             _set_default_format(format=format)             # <<<<<<<<<<<<<<
  *             if clobber:
  *                 if diskless:
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_default_format); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_default_format); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_format, __pyx_v_format) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_format, __pyx_v_format) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1491
+    /* "netCDF4/_netCDF4.pyx":1560
  *         if mode == 'w':
  *             _set_default_format(format=format)
  *             if clobber:             # <<<<<<<<<<<<<<
  *                 if diskless:
  *                     if persist:
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_clobber); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_clobber); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":1492
+      /* "netCDF4/_netCDF4.pyx":1561
  *             _set_default_format(format=format)
  *             if clobber:
  *                 if diskless:             # <<<<<<<<<<<<<<
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_CLOBBER | NC_DISKLESS , &grpid)
  */
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":1493
+        /* "netCDF4/_netCDF4.pyx":1562
  *             if clobber:
  *                 if diskless:
  *                     if persist:             # <<<<<<<<<<<<<<
  *                         ierr = nc_create(path, NC_WRITE | NC_CLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  */
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_1) {
 
-          /* "netCDF4/_netCDF4.pyx":1494
+          /* "netCDF4/_netCDF4.pyx":1563
  *                 if diskless:
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_CLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                     else:
  *                         ierr = nc_create(path, NC_CLOBBER | NC_DISKLESS , &grpid)
  */
-          __pyx_t_6 = __Pyx_PyInt_From_int((NC_WRITE | NC_CLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyInt_From_int((NC_WRITE | NC_CLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
           goto __pyx_L9;
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":1496
+          /* "netCDF4/_netCDF4.pyx":1565
  *                         ierr = nc_create(path, NC_WRITE | NC_CLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  *                         ierr = nc_create(path, NC_CLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                 else:
  *                     ierr = nc_create(path, NC_CLOBBER, &grpid)
  */
-          __pyx_t_3 = __Pyx_PyInt_From_int(NC_CLOBBER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyInt_From_int(NC_CLOBBER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
         }
@@ -9018,7 +9156,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1498
+        /* "netCDF4/_netCDF4.pyx":1567
  *                         ierr = nc_create(path, NC_CLOBBER | NC_DISKLESS , &grpid)
  *                 else:
  *                     ierr = nc_create(path, NC_CLOBBER, &grpid)             # <<<<<<<<<<<<<<
@@ -9032,64 +9170,64 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1500
+      /* "netCDF4/_netCDF4.pyx":1569
  *                     ierr = nc_create(path, NC_CLOBBER, &grpid)
  *             else:
  *                 if diskless:             # <<<<<<<<<<<<<<
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  */
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":1501
+        /* "netCDF4/_netCDF4.pyx":1570
  *             else:
  *                 if diskless:
  *                     if persist:             # <<<<<<<<<<<<<<
  *                         ierr = nc_create(path, NC_WRITE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  */
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_1) {
 
-          /* "netCDF4/_netCDF4.pyx":1502
+          /* "netCDF4/_netCDF4.pyx":1571
  *                 if diskless:
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_NOCLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                     else:
  *                         ierr = nc_create(path, NC_NOCLOBBER | NC_DISKLESS , &grpid)
  */
-          __pyx_t_6 = __Pyx_PyInt_From_int((NC_WRITE | NC_NOCLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyInt_From_int((NC_WRITE | NC_NOCLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
           goto __pyx_L11;
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":1504
+          /* "netCDF4/_netCDF4.pyx":1573
  *                         ierr = nc_create(path, NC_WRITE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  *                         ierr = nc_create(path, NC_NOCLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                 else:
  *                     ierr = nc_create(path, NC_NOCLOBBER, &grpid)
  */
-          __pyx_t_3 = __Pyx_PyInt_From_int(NC_NOCLOBBER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyInt_From_int(NC_NOCLOBBER); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
         }
@@ -9098,7 +9236,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1506
+        /* "netCDF4/_netCDF4.pyx":1575
  *                         ierr = nc_create(path, NC_NOCLOBBER | NC_DISKLESS , &grpid)
  *                 else:
  *                     ierr = nc_create(path, NC_NOCLOBBER, &grpid)             # <<<<<<<<<<<<<<
@@ -9111,19 +9249,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     }
     __pyx_L7:;
 
-    /* "netCDF4/_netCDF4.pyx":1511
+    /* "netCDF4/_netCDF4.pyx":1580
  *             # format to NETCDF4). This bug should be fixed in version
  *             # 4.3.0 of the netcdf library (add a version check here?).
  *             _set_default_format(format='NETCDF3_64BIT')             # <<<<<<<<<<<<<<
  *         elif mode == 'r':
  *             if diskless:
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_default_format); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_default_format); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_format, __pyx_n_s_NETCDF3_64BIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_format, __pyx_n_s_NETCDF3_64BIT) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -9131,49 +9269,49 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     goto __pyx_L6;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1512
+  /* "netCDF4/_netCDF4.pyx":1581
  *             # 4.3.0 of the netcdf library (add a version check here?).
  *             _set_default_format(format='NETCDF3_64BIT')
  *         elif mode == 'r':             # <<<<<<<<<<<<<<
  *             if diskless:
  *                 ierr = nc_open(path, NC_NOWRITE | NC_DISKLESS, &grpid)
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_r, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_r, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1513
+    /* "netCDF4/_netCDF4.pyx":1582
  *             _set_default_format(format='NETCDF3_64BIT')
  *         elif mode == 'r':
  *             if diskless:             # <<<<<<<<<<<<<<
  *                 ierr = nc_open(path, NC_NOWRITE | NC_DISKLESS, &grpid)
  *             else:
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":1514
+      /* "netCDF4/_netCDF4.pyx":1583
  *         elif mode == 'r':
  *             if diskless:
  *                 ierr = nc_open(path, NC_NOWRITE | NC_DISKLESS, &grpid)             # <<<<<<<<<<<<<<
  *             else:
  *                 ierr = nc_open(path, NC_NOWRITE, &grpid)
  */
-      __pyx_t_3 = __Pyx_PyInt_From_int(NC_NOWRITE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_int(NC_NOWRITE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_ierr = nc_open(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
       goto __pyx_L12;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1516
+      /* "netCDF4/_netCDF4.pyx":1585
  *                 ierr = nc_open(path, NC_NOWRITE | NC_DISKLESS, &grpid)
  *             else:
  *                 ierr = nc_open(path, NC_NOWRITE, &grpid)             # <<<<<<<<<<<<<<
@@ -9186,57 +9324,57 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     goto __pyx_L6;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1517
+  /* "netCDF4/_netCDF4.pyx":1586
  *             else:
  *                 ierr = nc_open(path, NC_NOWRITE, &grpid)
  *         elif mode == 'r+' or mode == 'a':             # <<<<<<<<<<<<<<
  *             if diskless:
  *                 ierr = nc_open(path, NC_WRITE | NC_DISKLESS, &grpid)
  */
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_kp_s_r_2, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_kp_s_r_2, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_2) {
   } else {
     __pyx_t_1 = __pyx_t_2;
     goto __pyx_L13_bool_binop_done;
   }
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_a, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_a, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = __pyx_t_2;
   __pyx_L13_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1518
+    /* "netCDF4/_netCDF4.pyx":1587
  *                 ierr = nc_open(path, NC_NOWRITE, &grpid)
  *         elif mode == 'r+' or mode == 'a':
  *             if diskless:             # <<<<<<<<<<<<<<
  *                 ierr = nc_open(path, NC_WRITE | NC_DISKLESS, &grpid)
  *             else:
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":1519
+      /* "netCDF4/_netCDF4.pyx":1588
  *         elif mode == 'r+' or mode == 'a':
  *             if diskless:
  *                 ierr = nc_open(path, NC_WRITE | NC_DISKLESS, &grpid)             # <<<<<<<<<<<<<<
  *             else:
  *                 ierr = nc_open(path, NC_WRITE, &grpid)
  */
-      __pyx_t_6 = __Pyx_PyInt_From_int(NC_WRITE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyInt_From_int(NC_WRITE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_v_ierr = nc_open(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
       goto __pyx_L15;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1521
+      /* "netCDF4/_netCDF4.pyx":1590
  *                 ierr = nc_open(path, NC_WRITE | NC_DISKLESS, &grpid)
  *             else:
  *                 ierr = nc_open(path, NC_WRITE, &grpid)             # <<<<<<<<<<<<<<
@@ -9249,57 +9387,57 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     goto __pyx_L6;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1522
+  /* "netCDF4/_netCDF4.pyx":1591
  *             else:
  *                 ierr = nc_open(path, NC_WRITE, &grpid)
  *         elif mode == 'as' or mode == 'r+s':             # <<<<<<<<<<<<<<
  *             if diskless:
  *                 ierr = nc_open(path, NC_SHARE | NC_DISKLESS, &grpid)
  */
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_as, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_as, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_2) {
   } else {
     __pyx_t_1 = __pyx_t_2;
     goto __pyx_L16_bool_binop_done;
   }
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_kp_s_r_s, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_kp_s_r_s, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = __pyx_t_2;
   __pyx_L16_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1523
+    /* "netCDF4/_netCDF4.pyx":1592
  *                 ierr = nc_open(path, NC_WRITE, &grpid)
  *         elif mode == 'as' or mode == 'r+s':
  *             if diskless:             # <<<<<<<<<<<<<<
  *                 ierr = nc_open(path, NC_SHARE | NC_DISKLESS, &grpid)
  *             else:
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":1524
+      /* "netCDF4/_netCDF4.pyx":1593
  *         elif mode == 'as' or mode == 'r+s':
  *             if diskless:
  *                 ierr = nc_open(path, NC_SHARE | NC_DISKLESS, &grpid)             # <<<<<<<<<<<<<<
  *             else:
  *                 ierr = nc_open(path, NC_SHARE, &grpid)
  */
-      __pyx_t_3 = __Pyx_PyInt_From_int(NC_SHARE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_int(NC_SHARE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_ierr = nc_open(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
       goto __pyx_L18;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1526
+      /* "netCDF4/_netCDF4.pyx":1595
  *                 ierr = nc_open(path, NC_SHARE | NC_DISKLESS, &grpid)
  *             else:
  *                 ierr = nc_open(path, NC_SHARE, &grpid)             # <<<<<<<<<<<<<<
@@ -9312,84 +9450,84 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     goto __pyx_L6;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1527
+  /* "netCDF4/_netCDF4.pyx":1596
  *             else:
  *                 ierr = nc_open(path, NC_SHARE, &grpid)
  *         elif mode == 'ws':             # <<<<<<<<<<<<<<
  *             if clobber:
  *                 if diskless:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_ws, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_mode, __pyx_n_s_ws, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1528
+    /* "netCDF4/_netCDF4.pyx":1597
  *                 ierr = nc_open(path, NC_SHARE, &grpid)
  *         elif mode == 'ws':
  *             if clobber:             # <<<<<<<<<<<<<<
  *                 if diskless:
  *                     if persist:
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_clobber); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_clobber); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":1529
+      /* "netCDF4/_netCDF4.pyx":1598
  *         elif mode == 'ws':
  *             if clobber:
  *                 if diskless:             # <<<<<<<<<<<<<<
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_CLOBBER | NC_DISKLESS , &grpid)
  */
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":1530
+        /* "netCDF4/_netCDF4.pyx":1599
  *             if clobber:
  *                 if diskless:
  *                     if persist:             # <<<<<<<<<<<<<<
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_CLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  */
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_1) {
 
-          /* "netCDF4/_netCDF4.pyx":1531
+          /* "netCDF4/_netCDF4.pyx":1600
  *                 if diskless:
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_CLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                     else:
  *                         ierr = nc_create(path, NC_SHARE | NC_CLOBBER | NC_DISKLESS , &grpid)
  */
-          __pyx_t_6 = __Pyx_PyInt_From_int(((NC_WRITE | NC_SHARE) | NC_CLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyInt_From_int(((NC_WRITE | NC_SHARE) | NC_CLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
           goto __pyx_L21;
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":1533
+          /* "netCDF4/_netCDF4.pyx":1602
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_CLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  *                         ierr = nc_create(path, NC_SHARE | NC_CLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                 else:
  *                     ierr = nc_create(path, NC_SHARE | NC_CLOBBER, &grpid)
  */
-          __pyx_t_3 = __Pyx_PyInt_From_int((NC_SHARE | NC_CLOBBER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyInt_From_int((NC_SHARE | NC_CLOBBER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
         }
@@ -9398,7 +9536,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1535
+        /* "netCDF4/_netCDF4.pyx":1604
  *                         ierr = nc_create(path, NC_SHARE | NC_CLOBBER | NC_DISKLESS , &grpid)
  *                 else:
  *                     ierr = nc_create(path, NC_SHARE | NC_CLOBBER, &grpid)             # <<<<<<<<<<<<<<
@@ -9412,64 +9550,64 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1537
+      /* "netCDF4/_netCDF4.pyx":1606
  *                     ierr = nc_create(path, NC_SHARE | NC_CLOBBER, &grpid)
  *             else:
  *                 if diskless:             # <<<<<<<<<<<<<<
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  */
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_diskless); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":1538
+        /* "netCDF4/_netCDF4.pyx":1607
  *             else:
  *                 if diskless:
  *                     if persist:             # <<<<<<<<<<<<<<
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  */
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_persist); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_1) {
 
-          /* "netCDF4/_netCDF4.pyx":1539
+          /* "netCDF4/_netCDF4.pyx":1608
  *                 if diskless:
  *                     if persist:
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_NOCLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                     else:
  *                         ierr = nc_create(path, NC_SHARE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  */
-          __pyx_t_6 = __Pyx_PyInt_From_int(((NC_WRITE | NC_SHARE) | NC_NOCLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyInt_From_int(((NC_WRITE | NC_SHARE) | NC_NOCLOBBER)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyNumber_Or(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
           goto __pyx_L23;
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":1541
+          /* "netCDF4/_netCDF4.pyx":1610
  *                         ierr = nc_create(path, NC_WRITE | NC_SHARE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  *                     else:
  *                         ierr = nc_create(path, NC_SHARE | NC_NOCLOBBER | NC_DISKLESS , &grpid)             # <<<<<<<<<<<<<<
  *                 else:
  *                     ierr = nc_create(path, NC_SHARE | NC_NOCLOBBER, &grpid)
  */
-          __pyx_t_3 = __Pyx_PyInt_From_int((NC_SHARE | NC_NOCLOBBER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyInt_From_int((NC_SHARE | NC_NOCLOBBER)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_NC_DISKLESS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyNumber_Or(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __pyx_v_ierr = nc_create(__pyx_v_path, __pyx_t_7, (&__pyx_v_grpid));
         }
@@ -9478,7 +9616,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":1543
+        /* "netCDF4/_netCDF4.pyx":1612
  *                         ierr = nc_create(path, NC_SHARE | NC_NOCLOBBER | NC_DISKLESS , &grpid)
  *                 else:
  *                     ierr = nc_create(path, NC_SHARE | NC_NOCLOBBER, &grpid)             # <<<<<<<<<<<<<<
@@ -9494,30 +9632,30 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1545
+    /* "netCDF4/_netCDF4.pyx":1614
  *                     ierr = nc_create(path, NC_SHARE | NC_NOCLOBBER, &grpid)
  *         else:
  *             raise ValueError("mode must be 'w', 'r', 'a' or 'r+', got '%s'" % mode)             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-    __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_mode_must_be_w_r_a_or_r_got_s, __pyx_v_mode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_mode_must_be_w_r_a_or_r_got_s, __pyx_v_mode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_6, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L6:;
 
-  /* "netCDF4/_netCDF4.pyx":1546
+  /* "netCDF4/_netCDF4.pyx":1615
  *         else:
  *             raise ValueError("mode must be 'w', 'r', 'a' or 'r+', got '%s'" % mode)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -9527,7 +9665,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1547
+    /* "netCDF4/_netCDF4.pyx":1616
  *             raise ValueError("mode must be 'w', 'r', 'a' or 'r+', got '%s'" % mode)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -9535,30 +9673,30 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
  *         self.data_model = _get_format(grpid)
  */
     __pyx_t_5 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_5, 0, strlen(__pyx_t_5), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_5, 0, strlen(__pyx_t_5), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_6, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1549
+  /* "netCDF4/_netCDF4.pyx":1618
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         # data model and file format attributes
  *         self.data_model = _get_format(grpid)             # <<<<<<<<<<<<<<
  *         # data_model attribute used to be file_format (versions < 1.0.8), retain
  *         # file_format for backwards compatibility.
  */
-  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_format(__pyx_v_grpid); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_format(__pyx_v_grpid); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __Pyx_GOTREF(__pyx_v_self->data_model);
@@ -9566,7 +9704,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __pyx_v_self->data_model = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1552
+  /* "netCDF4/_netCDF4.pyx":1621
  *         # data_model attribute used to be file_format (versions < 1.0.8), retain
  *         # file_format for backwards compatibility.
  *         self.file_format = self.data_model             # <<<<<<<<<<<<<<
@@ -9581,14 +9719,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __pyx_v_self->file_format = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1553
+  /* "netCDF4/_netCDF4.pyx":1622
  *         # file_format for backwards compatibility.
  *         self.file_format = self.data_model
  *         self.disk_format = _get_full_format(grpid)             # <<<<<<<<<<<<<<
  *         # diskless read access only works with NETCDF_CLASSIC (for now)
  *         #ncopen = mode.startswith('a') or mode.startswith('r')
  */
-  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_full_format(__pyx_v_grpid); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_full_format(__pyx_v_grpid); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __Pyx_GOTREF(__pyx_v_self->disk_format);
@@ -9596,7 +9734,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __pyx_v_self->disk_format = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1558
+  /* "netCDF4/_netCDF4.pyx":1627
  *         #if diskless and self.data_model != 'NETCDF3_CLASSIC' and ncopen:
  *         #    raise ValueError("diskless access only supported for NETCDF3_CLASSIC format")
  *         self._grpid = grpid             # <<<<<<<<<<<<<<
@@ -9605,7 +9743,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
  */
   __pyx_v_self->_grpid = __pyx_v_grpid;
 
-  /* "netCDF4/_netCDF4.pyx":1559
+  /* "netCDF4/_netCDF4.pyx":1628
  *         #    raise ValueError("diskless access only supported for NETCDF3_CLASSIC format")
  *         self._grpid = grpid
  *         self._isopen = 1             # <<<<<<<<<<<<<<
@@ -9614,7 +9752,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
  */
   __pyx_v_self->_isopen = 1;
 
-  /* "netCDF4/_netCDF4.pyx":1560
+  /* "netCDF4/_netCDF4.pyx":1629
  *         self._grpid = grpid
  *         self._isopen = 1
  *         self.path = '/'             # <<<<<<<<<<<<<<
@@ -9627,7 +9765,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __Pyx_DECREF(__pyx_v_self->path);
   __pyx_v_self->path = __pyx_kp_s__14;
 
-  /* "netCDF4/_netCDF4.pyx":1561
+  /* "netCDF4/_netCDF4.pyx":1630
  *         self._isopen = 1
  *         self.path = '/'
  *         self.parent = None             # <<<<<<<<<<<<<<
@@ -9640,7 +9778,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __Pyx_DECREF(__pyx_v_self->parent);
   __pyx_v_self->parent = Py_None;
 
-  /* "netCDF4/_netCDF4.pyx":1562
+  /* "netCDF4/_netCDF4.pyx":1631
  *         self.path = '/'
  *         self.parent = None
  *         self.keepweakref = keepweakref             # <<<<<<<<<<<<<<
@@ -9653,14 +9791,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __Pyx_DECREF(__pyx_v_self->keepweakref);
   __pyx_v_self->keepweakref = __pyx_v_keepweakref;
 
-  /* "netCDF4/_netCDF4.pyx":1564
+  /* "netCDF4/_netCDF4.pyx":1633
  *         self.keepweakref = keepweakref
  *         # get compound and vlen types in the root Group.
  *         self.cmptypes, self.vltypes = _get_types(self)             # <<<<<<<<<<<<<<
  *         # get dimensions in the root group.
  *         self.dimensions = _get_dims(self)
  */
-  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_types(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_types(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
     PyObject* sequence = __pyx_t_6;
@@ -9672,7 +9810,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     if (unlikely(size != 2)) {
       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -9685,15 +9823,15 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     __Pyx_INCREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     #else
-    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     #endif
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
     Py_ssize_t index = -1;
-    __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -9701,7 +9839,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     __Pyx_GOTREF(__pyx_t_4);
     index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L25_unpacking_failed;
     __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_9 = NULL;
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     goto __pyx_L26_unpacking_done;
@@ -9709,7 +9847,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_9 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L26_unpacking_done:;
   }
   __Pyx_GIVEREF(__pyx_t_4);
@@ -9723,14 +9861,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __pyx_v_self->vltypes = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1566
+  /* "netCDF4/_netCDF4.pyx":1635
  *         self.cmptypes, self.vltypes = _get_types(self)
  *         # get dimensions in the root group.
  *         self.dimensions = _get_dims(self)             # <<<<<<<<<<<<<<
  *         # get variables in the root Group.
  *         self.variables = _get_vars(self)
  */
-  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_dims(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_dims(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __Pyx_GOTREF(__pyx_v_self->dimensions);
@@ -9738,14 +9876,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __pyx_v_self->dimensions = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1568
+  /* "netCDF4/_netCDF4.pyx":1637
  *         self.dimensions = _get_dims(self)
  *         # get variables in the root Group.
  *         self.variables = _get_vars(self)             # <<<<<<<<<<<<<<
  *         # get groups in the root Group.
  *         if self.data_model == 'NETCDF4':
  */
-  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_vars(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_vars(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __Pyx_GOTREF(__pyx_v_self->variables);
@@ -9753,24 +9891,24 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   __pyx_v_self->variables = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1570
+  /* "netCDF4/_netCDF4.pyx":1639
  *         self.variables = _get_vars(self)
  *         # get groups in the root Group.
  *         if self.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
  *             self.groups = _get_grps(self)
  *         else:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1571
+    /* "netCDF4/_netCDF4.pyx":1640
  *         # get groups in the root Group.
  *         if self.data_model == 'NETCDF4':
  *             self.groups = _get_grps(self)             # <<<<<<<<<<<<<<
  *         else:
  *             self.groups = OrderedDict()
  */
-    __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_grps(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __pyx_f_7netCDF4_8_netCDF4__get_grps(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __Pyx_GOTREF(__pyx_v_self->groups);
@@ -9781,14 +9919,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1573
+    /* "netCDF4/_netCDF4.pyx":1642
  *             self.groups = _get_grps(self)
  *         else:
  *             self.groups = OrderedDict()             # <<<<<<<<<<<<<<
  * 
  *     # these allow Dataset objects to be used via a "with" statement.
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -9801,10 +9939,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -9816,12 +9954,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   }
   __pyx_L27:;
 
-  /* "netCDF4/_netCDF4.pyx":1477
- *     __orthogonal_indexing__
+  /* "netCDF4/_netCDF4.pyx":1489
+ *     the parent Dataset or Group."""
  * 
  *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',             # <<<<<<<<<<<<<<
  *                  diskless=False, persist=False, keepweakref=False, **kwargs):
- *         cdef int grpid, ierr, numgrps, numdims, numvars
+ *         """
  */
 
   /* function exit code */
@@ -9840,7 +9978,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset___init__(struct __pyx_obj_7netCD
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1576
+/* "netCDF4/_netCDF4.pyx":1645
  * 
  *     # these allow Dataset objects to be used via a "with" statement.
  *     def __enter__(self):             # <<<<<<<<<<<<<<
@@ -9866,7 +10004,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_2__enter__(struct __pyx_ob
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__enter__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1577
+  /* "netCDF4/_netCDF4.pyx":1646
  *     # these allow Dataset objects to be used via a "with" statement.
  *     def __enter__(self):
  *         return self             # <<<<<<<<<<<<<<
@@ -9878,7 +10016,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_2__enter__(struct __pyx_ob
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1576
+  /* "netCDF4/_netCDF4.pyx":1645
  * 
  *     # these allow Dataset objects to be used via a "with" statement.
  *     def __enter__(self):             # <<<<<<<<<<<<<<
@@ -9893,7 +10031,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_2__enter__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1578
+/* "netCDF4/_netCDF4.pyx":1647
  *     def __enter__(self):
  *         return self
  *     def __exit__(self,atype,value,traceback):             # <<<<<<<<<<<<<<
@@ -9934,16 +10072,16 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_5__exit__(PyObject *__pyx_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1578; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_traceback)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1578; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1578; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -9958,7 +10096,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_5__exit__(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1578; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -9982,14 +10120,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4__exit__(struct __pyx_obj
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1579
+  /* "netCDF4/_netCDF4.pyx":1648
  *         return self
  *     def __exit__(self,atype,value,traceback):
  *         self.close()             # <<<<<<<<<<<<<<
  * 
  *     def __getitem__(self, elem):
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_close); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -10002,16 +10140,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4__exit__(struct __pyx_obj
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1578
+  /* "netCDF4/_netCDF4.pyx":1647
  *     def __enter__(self):
  *         return self
  *     def __exit__(self,atype,value,traceback):             # <<<<<<<<<<<<<<
@@ -10034,7 +10172,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_4__exit__(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1581
+/* "netCDF4/_netCDF4.pyx":1650
  *         self.close()
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -10078,16 +10216,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_elem);
 
-  /* "netCDF4/_netCDF4.pyx":1584
+  /* "netCDF4/_netCDF4.pyx":1653
  *         # return variable or group defined in relative path.
  *         # split out group names in unix path.
  *         elem = posixpath.normpath(elem)             # <<<<<<<<<<<<<<
  *         # last name in path, could be a variable or group
  *         dirname, lastname = posixpath.split(elem)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_normpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_normpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -10101,16 +10239,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_elem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_elem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_elem);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_elem);
     __Pyx_GIVEREF(__pyx_v_elem);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -10118,16 +10256,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
   __Pyx_DECREF_SET(__pyx_v_elem, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1586
+  /* "netCDF4/_netCDF4.pyx":1655
  *         elem = posixpath.normpath(elem)
  *         # last name in path, could be a variable or group
  *         dirname, lastname = posixpath.split(elem)             # <<<<<<<<<<<<<<
  *         nestedgroups = dirname.split('/')
  *         group = self
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -10141,16 +10279,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_elem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_elem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_elem);
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_elem);
     __Pyx_GIVEREF(__pyx_v_elem);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -10165,7 +10303,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     if (unlikely(size != 2)) {
       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -10178,15 +10316,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     __Pyx_INCREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_2);
     #else
-    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     #endif
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
     Py_ssize_t index = -1;
-    __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
@@ -10194,7 +10332,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     __Pyx_GOTREF(__pyx_t_4);
     index = 1; __pyx_t_2 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
     __Pyx_GOTREF(__pyx_t_2);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_5 = NULL;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     goto __pyx_L4_unpacking_done;
@@ -10202,7 +10340,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_5 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L4_unpacking_done:;
   }
   __pyx_v_dirname = __pyx_t_4;
@@ -10210,22 +10348,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
   __pyx_v_lastname = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1587
+  /* "netCDF4/_netCDF4.pyx":1656
  *         # last name in path, could be a variable or group
  *         dirname, lastname = posixpath.split(elem)
  *         nestedgroups = dirname.split('/')             # <<<<<<<<<<<<<<
  *         group = self
  *         # iterate over groups in path.
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dirname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dirname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_nestedgroups = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1588
+  /* "netCDF4/_netCDF4.pyx":1657
  *         dirname, lastname = posixpath.split(elem)
  *         nestedgroups = dirname.split('/')
  *         group = self             # <<<<<<<<<<<<<<
@@ -10235,7 +10373,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_v_group = ((PyObject *)__pyx_v_self);
 
-  /* "netCDF4/_netCDF4.pyx":1590
+  /* "netCDF4/_netCDF4.pyx":1659
  *         group = self
  *         # iterate over groups in path.
  *         for g in nestedgroups:             # <<<<<<<<<<<<<<
@@ -10246,25 +10384,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     __pyx_t_2 = __pyx_v_nestedgroups; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_nestedgroups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_nestedgroups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (likely(!__pyx_t_7)) {
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -10273,7 +10411,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -10282,18 +10420,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1591
+    /* "netCDF4/_netCDF4.pyx":1660
  *         # iterate over groups in path.
  *         for g in nestedgroups:
  *             if g: group = group.groups[g]             # <<<<<<<<<<<<<<
  *         # return last one, either a group or a variable.
  *         if lastname in group.groups:
  */
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_g); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_g); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_8) {
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_v_g); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1591; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_v_g); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF_SET(__pyx_v_group, __pyx_t_4);
@@ -10302,7 +10440,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     }
     __pyx_L7:;
 
-    /* "netCDF4/_netCDF4.pyx":1590
+    /* "netCDF4/_netCDF4.pyx":1659
  *         group = self
  *         # iterate over groups in path.
  *         for g in nestedgroups:             # <<<<<<<<<<<<<<
@@ -10312,21 +10450,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1593
+  /* "netCDF4/_netCDF4.pyx":1662
  *             if g: group = group.groups[g]
  *         # return last one, either a group or a variable.
  *         if lastname in group.groups:             # <<<<<<<<<<<<<<
  *             return group.groups[lastname]
  *         elif lastname in group.variables:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_v_lastname, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_v_lastname, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_9 = (__pyx_t_8 != 0);
   if (__pyx_t_9) {
 
-    /* "netCDF4/_netCDF4.pyx":1594
+    /* "netCDF4/_netCDF4.pyx":1663
  *         # return last one, either a group or a variable.
  *         if lastname in group.groups:
  *             return group.groups[lastname]             # <<<<<<<<<<<<<<
@@ -10334,9 +10472,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
  *             return group.variables[lastname]
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_v_lastname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1594; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_v_lastname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1663; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_r = __pyx_t_4;
@@ -10344,21 +10482,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1595
+  /* "netCDF4/_netCDF4.pyx":1664
  *         if lastname in group.groups:
  *             return group.groups[lastname]
  *         elif lastname in group.variables:             # <<<<<<<<<<<<<<
  *             return group.variables[lastname]
  *         else:
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_v_lastname, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = (__Pyx_PySequence_Contains(__pyx_v_lastname, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_8 = (__pyx_t_9 != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":1596
+    /* "netCDF4/_netCDF4.pyx":1665
  *             return group.groups[lastname]
  *         elif lastname in group.variables:
  *             return group.variables[lastname]             # <<<<<<<<<<<<<<
@@ -10366,9 +10504,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
  *             raise IndexError('%s not found in %s' % (lastname,group.path))
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_2 = PyObject_GetItem(__pyx_t_4, __pyx_v_lastname); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1596; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_2 = PyObject_GetItem(__pyx_t_4, __pyx_v_lastname); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1665; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_r = __pyx_t_2;
@@ -10377,16 +10515,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1598
+    /* "netCDF4/_netCDF4.pyx":1667
  *             return group.variables[lastname]
  *         else:
  *             raise IndexError('%s not found in %s' % (lastname,group.path))             # <<<<<<<<<<<<<<
  * 
  *     def filepath(self):
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_lastname);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_lastname);
@@ -10394,23 +10532,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_not_found_in_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_not_found_in_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1581
+  /* "netCDF4/_netCDF4.pyx":1650
  *         self.close()
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -10438,17 +10576,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6__getitem__(struct __pyx_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1600
+/* "netCDF4/_netCDF4.pyx":1669
  *             raise IndexError('%s not found in %s' % (lastname,group.path))
  * 
  *     def filepath(self):             # <<<<<<<<<<<<<<
  *         """
- * filepath(self)
+ * **`filepath(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9filepath(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_8filepath[] = "\nfilepath(self)\n\nGet the file system path (or the opendap URL) which was used to\nopen/create the Dataset. Requires netcdf >= 4.1.2";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_8filepath[] = "\n**`filepath(self)`**\n\nGet the file system path (or the opendap URL) which was used to\nopen/create the Dataset. Requires netcdf >= 4.1.2";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_9filepath(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -10471,7 +10609,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_8filepath(CYTHON_UNUSED st
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("filepath", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1614
+  /* "netCDF4/_netCDF4.pyx":1683
  *             return path.decode('ascii')
  *         ELSE:
  *             msg = """             # <<<<<<<<<<<<<<
@@ -10481,31 +10619,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_8filepath(CYTHON_UNUSED st
   __Pyx_INCREF(__pyx_kp_s_filepath_method_not_enabled_To);
   __pyx_v_msg = __pyx_kp_s_filepath_method_not_enabled_To;
 
-  /* "netCDF4/_netCDF4.pyx":1617
+  /* "netCDF4/_netCDF4.pyx":1686
  * filepath method not enabled.  To enable, install Cython, make sure you have
  * version 4.1.2 or higher of the netcdf C lib, and rebuild netcdf4-python."""
  *             raise ValueError(msg)             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_msg);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_msg);
   __Pyx_GIVEREF(__pyx_v_msg);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_Raise(__pyx_t_2, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":1600
+  /* "netCDF4/_netCDF4.pyx":1669
  *             raise IndexError('%s not found in %s' % (lastname,group.path))
  * 
  *     def filepath(self):             # <<<<<<<<<<<<<<
  *         """
- * filepath(self)
+ * **`filepath(self)`**
  */
 
   /* function exit code */
@@ -10520,7 +10658,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_8filepath(CYTHON_UNUSED st
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1619
+/* "netCDF4/_netCDF4.pyx":1688
  *             raise ValueError(msg)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -10555,20 +10693,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1620
+  /* "netCDF4/_netCDF4.pyx":1689
  * 
  *     def __repr__(self):
  *         if python3:             # <<<<<<<<<<<<<<
  *             return self.__unicode__()
  *         else:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":1621
+    /* "netCDF4/_netCDF4.pyx":1690
  *     def __repr__(self):
  *         if python3:
  *             return self.__unicode__()             # <<<<<<<<<<<<<<
@@ -10576,7 +10714,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
  *             return unicode(self).encode(default_encoding)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -10589,10 +10727,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -10602,7 +10740,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1623
+    /* "netCDF4/_netCDF4.pyx":1692
  *             return self.__unicode__()
  *         else:
  *             return unicode(self).encode(default_encoding)             # <<<<<<<<<<<<<<
@@ -10610,18 +10748,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
  *     def __unicode__(self):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -10634,17 +10772,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
       __pyx_t_4 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -10654,7 +10792,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1619
+  /* "netCDF4/_netCDF4.pyx":1688
  *             raise ValueError(msg)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -10677,7 +10815,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_10__repr__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1625
+/* "netCDF4/_netCDF4.pyx":1694
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -10728,16 +10866,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__unicode__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1626
+  /* "netCDF4/_netCDF4.pyx":1695
  * 
  *     def __unicode__(self):
  *         ncdump = ['%r\n' % type(self)]             # <<<<<<<<<<<<<<
  *         dimnames = tuple([_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
  *         for dimname in self.dimensions.keys()])
  */
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -10745,24 +10883,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
   __pyx_v_ncdump = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1627
+  /* "netCDF4/_netCDF4.pyx":1696
  *     def __unicode__(self):
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\             # <<<<<<<<<<<<<<
  *         for dimname in self.dimensions.keys()])
  *         varnames = tuple(\
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "netCDF4/_netCDF4.pyx":1628
+  /* "netCDF4/_netCDF4.pyx":1697
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
  *         for dimname in self.dimensions.keys()])             # <<<<<<<<<<<<<<
  *         varnames = tuple(\
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dimensions, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dimensions, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -10775,10 +10913,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -10786,9 +10924,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -10796,16 +10934,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -10814,7 +10952,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -10823,14 +10961,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1627
+    /* "netCDF4/_netCDF4.pyx":1696
  *     def __unicode__(self):
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\             # <<<<<<<<<<<<<<
  *         for dimname in self.dimensions.keys()])
  *         varnames = tuple(\
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_7 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -10843,37 +10981,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_7) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_dimname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_dimname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
       __Pyx_INCREF(__pyx_v_dimname);
       PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_dimname);
       __Pyx_GIVEREF(__pyx_v_dimname);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_dimname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_dimname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_9 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_s, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_s, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1628
+    /* "netCDF4/_netCDF4.pyx":1697
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
  *         for dimname in self.dimensions.keys()])             # <<<<<<<<<<<<<<
@@ -10883,37 +11021,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1627
+  /* "netCDF4/_netCDF4.pyx":1696
  *     def __unicode__(self):
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\             # <<<<<<<<<<<<<<
  *         for dimname in self.dimensions.keys()])
  *         varnames = tuple(\
  */
-  __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_dimnames = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1630
+  /* "netCDF4/_netCDF4.pyx":1699
  *         for dimname in self.dimensions.keys()])
  *         varnames = tuple(\
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+             # <<<<<<<<<<<<<<
  *         (((_tostr(self.variables[varname].dimensions)
  *         .replace("u'",""))\
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
 
-  /* "netCDF4/_netCDF4.pyx":1635
+  /* "netCDF4/_netCDF4.pyx":1704
  *         .replace("'",""))\
  *         .replace(", ",","))\
  *         .replace(",)",")") for varname in self.variables.keys()])             # <<<<<<<<<<<<<<
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])
  *         if self.path == '/':
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_8 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -10926,10 +11064,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     }
   }
   if (__pyx_t_8) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -10937,9 +11075,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -10947,16 +11085,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -10965,7 +11103,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -10974,18 +11112,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     __Pyx_XDECREF_SET(__pyx_v_varname, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1630
+    /* "netCDF4/_netCDF4.pyx":1699
  *         for dimname in self.dimensions.keys()])
  *         varnames = tuple(\
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+             # <<<<<<<<<<<<<<
  *         (((_tostr(self.variables[varname].dimensions)
  *         .replace("u'",""))\
  */
-    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_1 = PyObject_GetItem(__pyx_v_self->variables, __pyx_v_varname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = PyObject_GetItem(__pyx_v_self->variables, __pyx_v_varname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_1 = NULL;
@@ -10999,25 +11137,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_1) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
       PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_7);
       __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_4m); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_4m); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_7 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
@@ -11030,40 +11168,40 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_7) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_varname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_varname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
       __Pyx_INCREF(__pyx_v_varname);
       PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_varname);
       __Pyx_GIVEREF(__pyx_v_varname);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_10 = PyNumber_Add(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyNumber_Add(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyNumber_Add(__pyx_t_10, __pyx_kp_s_0m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_Add(__pyx_t_10, __pyx_kp_s_0m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1631
+    /* "netCDF4/_netCDF4.pyx":1700
  *         varnames = tuple(\
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+
  *         (((_tostr(self.variables[varname].dimensions)             # <<<<<<<<<<<<<<
  *         .replace("u'",""))\
  *         .replace("'",""))\
  */
-    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_1 = PyObject_GetItem(__pyx_v_self->variables, __pyx_v_varname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = PyObject_GetItem(__pyx_v_self->variables, __pyx_v_varname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_1 = NULL;
@@ -11077,93 +11215,93 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_1) {
-      __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_GOTREF(__pyx_t_10);
     } else {
-      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
       PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_7);
       __pyx_t_7 = 0;
-      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     }
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1632
+    /* "netCDF4/_netCDF4.pyx":1701
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+
  *         (((_tostr(self.variables[varname].dimensions)
  *         .replace("u'",""))\             # <<<<<<<<<<<<<<
  *         .replace("'",""))\
  *         .replace(", ",","))\
  */
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1633
+    /* "netCDF4/_netCDF4.pyx":1702
  *         (((_tostr(self.variables[varname].dimensions)
  *         .replace("u'",""))\
  *         .replace("'",""))\             # <<<<<<<<<<<<<<
  *         .replace(", ",","))\
  *         .replace(",)",")") for varname in self.variables.keys()])
  */
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1634
+    /* "netCDF4/_netCDF4.pyx":1703
  *         .replace("u'",""))\
  *         .replace("'",""))\
  *         .replace(", ",","))\             # <<<<<<<<<<<<<<
  *         .replace(",)",")") for varname in self.variables.keys()])
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])
  */
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1635
+    /* "netCDF4/_netCDF4.pyx":1704
  *         .replace("'",""))\
  *         .replace(", ",","))\
  *         .replace(",)",")") for varname in self.variables.keys()])             # <<<<<<<<<<<<<<
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])
  *         if self.path == '/':
  */
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_replace); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1630
+    /* "netCDF4/_netCDF4.pyx":1699
  *         for dimname in self.dimensions.keys()])
  *         varnames = tuple(\
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+             # <<<<<<<<<<<<<<
  *         (((_tostr(self.variables[varname].dimensions)
  *         .replace("u'",""))\
  */
-    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyNumber_Add(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1635
+    /* "netCDF4/_netCDF4.pyx":1704
  *         .replace("'",""))\
  *         .replace(", ",","))\
  *         .replace(",)",")") for varname in self.variables.keys()])             # <<<<<<<<<<<<<<
@@ -11173,29 +11311,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1629
+  /* "netCDF4/_netCDF4.pyx":1698
  *         dimnames = tuple([_tostr(dimname)+'(%s)'%len(self.dimensions[dimname])\
  *         for dimname in self.dimensions.keys()])
  *         varnames = tuple(\             # <<<<<<<<<<<<<<
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+
  *         (((_tostr(self.variables[varname].dimensions)
  */
-  __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_varnames = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1636
+  /* "netCDF4/_netCDF4.pyx":1705
  *         .replace(", ",","))\
  *         .replace(",)",")") for varname in self.variables.keys()])
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])             # <<<<<<<<<<<<<<
  *         if self.path == '/':
  *             ncdump.append('root group (%s data model, file format %s):\n' %
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->groups, __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->groups, __pyx_n_s_keys); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __pyx_t_10 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -11208,10 +11346,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     }
   }
   if (__pyx_t_10) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -11219,9 +11357,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_6 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   for (;;) {
@@ -11229,16 +11367,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       if (likely(PyList_CheckExact(__pyx_t_8))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_8)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_8, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -11247,7 +11385,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -11255,7 +11393,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     }
     __Pyx_XDECREF_SET(__pyx_v_grpname, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
@@ -11268,48 +11406,48 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_2) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_grpname); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_grpname); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
       __Pyx_INCREF(__pyx_v_grpname);
       PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_v_grpname);
       __Pyx_GIVEREF(__pyx_v_grpname);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     }
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  __pyx_t_8 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_grpnames = ((PyObject*)__pyx_t_8);
   __pyx_t_8 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1637
+  /* "netCDF4/_netCDF4.pyx":1706
  *         .replace(",)",")") for varname in self.variables.keys()])
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])
  *         if self.path == '/':             # <<<<<<<<<<<<<<
  *             ncdump.append('root group (%s data model, file format %s):\n' %
  *                     (self.data_model, self.disk_format))
  */
-  __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_v_self->path, __pyx_kp_s__14, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_v_self->path, __pyx_kp_s__14, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_12) {
 
-    /* "netCDF4/_netCDF4.pyx":1639
+    /* "netCDF4/_netCDF4.pyx":1708
  *         if self.path == '/':
  *             ncdump.append('root group (%s data model, file format %s):\n' %
  *                     (self.data_model, self.disk_format))             # <<<<<<<<<<<<<<
  *         else:
  *             ncdump.append('group %s:\n' % self.path)
  */
-    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_INCREF(__pyx_v_self->data_model);
     PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_self->data_model);
@@ -11318,54 +11456,54 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_self->disk_format);
     __Pyx_GIVEREF(__pyx_v_self->disk_format);
 
-    /* "netCDF4/_netCDF4.pyx":1638
+    /* "netCDF4/_netCDF4.pyx":1707
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])
  *         if self.path == '/':
  *             ncdump.append('root group (%s data model, file format %s):\n' %             # <<<<<<<<<<<<<<
  *                     (self.data_model, self.disk_format))
  *         else:
  */
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_root_group_s_data_model_file_for, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_root_group_s_data_model_file_for, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     goto __pyx_L9;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1641
+    /* "netCDF4/_netCDF4.pyx":1710
  *                     (self.data_model, self.disk_format))
  *         else:
  *             ncdump.append('group %s:\n' % self.path)             # <<<<<<<<<<<<<<
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\
  *                 self.ncattrs()]
  */
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_group_s, __pyx_v_self->path); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_group_s, __pyx_v_self->path); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __pyx_L9:;
 
-  /* "netCDF4/_netCDF4.pyx":1642
+  /* "netCDF4/_netCDF4.pyx":1711
  *         else:
  *             ncdump.append('group %s:\n' % self.path)
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
 
-  /* "netCDF4/_netCDF4.pyx":1643
+  /* "netCDF4/_netCDF4.pyx":1712
  *             ncdump.append('group %s:\n' % self.path)
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\
  *                 self.ncattrs()]             # <<<<<<<<<<<<<<
  *         ncdump = ncdump + attrs
  *         ncdump.append('    dimensions(sizes): %s\n' % ', '.join(dimnames))
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_10 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -11378,10 +11516,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     }
   }
   if (__pyx_t_10) {
-    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   } else {
-    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -11389,9 +11527,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     __pyx_t_3 = __pyx_t_8; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   for (;;) {
@@ -11399,16 +11537,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_8); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_8); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_8); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_8); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -11417,7 +11555,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -11426,14 +11564,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_8);
     __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1642
+    /* "netCDF4/_netCDF4.pyx":1711
  *         else:
  *             ncdump.append('group %s:\n' % self.path)
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs
  */
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_11 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
@@ -11446,21 +11584,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_11) {
-      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_name); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_name); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
     } else {
-      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL;
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_name);
@@ -11468,74 +11606,74 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
     PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_8);
     __Pyx_GIVEREF(__pyx_t_8);
     __pyx_t_8 = 0;
-    __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_10); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_attrs = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1644
+  /* "netCDF4/_netCDF4.pyx":1713
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs             # <<<<<<<<<<<<<<
  *         ncdump.append('    dimensions(sizes): %s\n' % ', '.join(dimnames))
  *         ncdump.append('    variables(dimensions): %s\n' % ', '.join(varnames))
  */
-  __pyx_t_4 = PyNumber_Add(__pyx_v_ncdump, __pyx_v_attrs); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyNumber_Add(__pyx_v_ncdump, __pyx_v_attrs); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF_SET(__pyx_v_ncdump, ((PyObject*)__pyx_t_4));
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1645
+  /* "netCDF4/_netCDF4.pyx":1714
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs
  *         ncdump.append('    dimensions(sizes): %s\n' % ', '.join(dimnames))             # <<<<<<<<<<<<<<
  *         ncdump.append('    variables(dimensions): %s\n' % ', '.join(varnames))
  *         ncdump.append('    groups: %s\n' % ', '.join(grpnames))
  */
-  __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_dimensions_sizes_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_dimensions_sizes_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1646
+  /* "netCDF4/_netCDF4.pyx":1715
  *         ncdump = ncdump + attrs
  *         ncdump.append('    dimensions(sizes): %s\n' % ', '.join(dimnames))
  *         ncdump.append('    variables(dimensions): %s\n' % ', '.join(varnames))             # <<<<<<<<<<<<<<
  *         ncdump.append('    groups: %s\n' % ', '.join(grpnames))
  *         return ''.join(ncdump)
  */
-  __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_varnames); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_varnames); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_variables_dimensions_s, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_variables_dimensions_s, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1646; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1647
+  /* "netCDF4/_netCDF4.pyx":1716
  *         ncdump.append('    dimensions(sizes): %s\n' % ', '.join(dimnames))
  *         ncdump.append('    variables(dimensions): %s\n' % ', '.join(varnames))
  *         ncdump.append('    groups: %s\n' % ', '.join(grpnames))             # <<<<<<<<<<<<<<
  *         return ''.join(ncdump)
  * 
  */
-  __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_grpnames); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_grpnames); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_groups_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_groups_s, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_3); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1648
+  /* "netCDF4/_netCDF4.pyx":1717
  *         ncdump.append('    variables(dimensions): %s\n' % ', '.join(varnames))
  *         ncdump.append('    groups: %s\n' % ', '.join(grpnames))
  *         return ''.join(ncdump)             # <<<<<<<<<<<<<<
@@ -11543,13 +11681,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
  *     def close(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1625
+  /* "netCDF4/_netCDF4.pyx":1694
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -11584,17 +11722,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_12__unicode__(struct __pyx
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1650
+/* "netCDF4/_netCDF4.pyx":1719
  *         return ''.join(ncdump)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
  *         """
- * close(self)
+ * **`close(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_15close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_14close[] = "\nclose(self)\n\nClose the Dataset.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_14close[] = "\n**`close(self)`**\n\nClose the Dataset.\n        ";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_15close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -11619,8 +11757,8 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14close(struct __pyx_obj_7
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1656
- * Close the Dataset."""
+  /* "netCDF4/_netCDF4.pyx":1726
+ *         """
  *         cdef int ierr
  *         ierr = nc_close(self._grpid)             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
@@ -11628,7 +11766,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14close(struct __pyx_obj_7
  */
   __pyx_v_ierr = nc_close(__pyx_v_self->_grpid);
 
-  /* "netCDF4/_netCDF4.pyx":1657
+  /* "netCDF4/_netCDF4.pyx":1727
  *         cdef int ierr
  *         ierr = nc_close(self._grpid)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -11638,7 +11776,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14close(struct __pyx_obj_7
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1658
+    /* "netCDF4/_netCDF4.pyx":1728
  *         ierr = nc_close(self._grpid)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -11646,23 +11784,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14close(struct __pyx_obj_7
  * 
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1659
+  /* "netCDF4/_netCDF4.pyx":1729
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         self._isopen = 0 # indicates file already closed, checked by __dealloc__             # <<<<<<<<<<<<<<
@@ -11671,12 +11809,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14close(struct __pyx_obj_7
  */
   __pyx_v_self->_isopen = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1650
+  /* "netCDF4/_netCDF4.pyx":1719
  *         return ''.join(ncdump)
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
  *         """
- * close(self)
+ * **`close(self)`**
  */
 
   /* function exit code */
@@ -11693,7 +11831,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_14close(struct __pyx_obj_7
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1661
+/* "netCDF4/_netCDF4.pyx":1731
  *         self._isopen = 0 # indicates file already closed, checked by __dealloc__
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -11718,7 +11856,7 @@ static void __pyx_pf_7netCDF4_8_netCDF4_7Dataset_16__dealloc__(struct __pyx_obj_
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__dealloc__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1664
+  /* "netCDF4/_netCDF4.pyx":1734
  *         # close file when there are no references to object left
  *         cdef int ierr
  *         if self._isopen:             # <<<<<<<<<<<<<<
@@ -11728,7 +11866,7 @@ static void __pyx_pf_7netCDF4_8_netCDF4_7Dataset_16__dealloc__(struct __pyx_obj_
   __pyx_t_1 = (__pyx_v_self->_isopen != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1665
+    /* "netCDF4/_netCDF4.pyx":1735
  *         cdef int ierr
  *         if self._isopen:
  *             ierr = nc_close(self._grpid)             # <<<<<<<<<<<<<<
@@ -11740,7 +11878,7 @@ static void __pyx_pf_7netCDF4_8_netCDF4_7Dataset_16__dealloc__(struct __pyx_obj_
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":1661
+  /* "netCDF4/_netCDF4.pyx":1731
  *         self._isopen = 0 # indicates file already closed, checked by __dealloc__
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -11752,17 +11890,17 @@ static void __pyx_pf_7netCDF4_8_netCDF4_7Dataset_16__dealloc__(struct __pyx_obj_
   __Pyx_RefNannyFinishContext();
 }
 
-/* "netCDF4/_netCDF4.pyx":1667
+/* "netCDF4/_netCDF4.pyx":1737
  *             ierr = nc_close(self._grpid)
  * 
  *     def sync(self):             # <<<<<<<<<<<<<<
  *         """
- * sync(self)
+ * **`sync(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_19sync(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_18sync[] = "\nsync(self)\n\nWrites all buffered data in the L{Dataset} to the disk file.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_18sync[] = "\n**`sync(self)`**\n\nWrites all buffered data in the `netCDF4.Dataset` to the disk file.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_19sync(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -11787,8 +11925,8 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_18sync(struct __pyx_obj_7n
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("sync", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1673
- * Writes all buffered data in the L{Dataset} to the disk file."""
+  /* "netCDF4/_netCDF4.pyx":1743
+ * Writes all buffered data in the `netCDF4.Dataset` to the disk file."""
  *         cdef int ierr
  *         ierr = nc_sync(self._grpid)             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
@@ -11796,7 +11934,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_18sync(struct __pyx_obj_7n
  */
   __pyx_v_ierr = nc_sync(__pyx_v_self->_grpid);
 
-  /* "netCDF4/_netCDF4.pyx":1674
+  /* "netCDF4/_netCDF4.pyx":1744
  *         cdef int ierr
  *         ierr = nc_sync(self._grpid)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -11806,7 +11944,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_18sync(struct __pyx_obj_7n
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1675
+    /* "netCDF4/_netCDF4.pyx":1745
  *         ierr = nc_sync(self._grpid)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -11814,28 +11952,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_18sync(struct __pyx_obj_7n
  *     def _redef(self):
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1667
+  /* "netCDF4/_netCDF4.pyx":1737
  *             ierr = nc_close(self._grpid)
  * 
  *     def sync(self):             # <<<<<<<<<<<<<<
  *         """
- * sync(self)
+ * **`sync(self)`**
  */
 
   /* function exit code */
@@ -11852,7 +11990,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_18sync(struct __pyx_obj_7n
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1677
+/* "netCDF4/_netCDF4.pyx":1747
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def _redef(self):             # <<<<<<<<<<<<<<
@@ -11879,7 +12017,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_20_redef(struct __pyx_obj_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_redef", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1679
+  /* "netCDF4/_netCDF4.pyx":1749
  *     def _redef(self):
  *         cdef int ierr
  *         ierr = nc_redef(self._grpid)             # <<<<<<<<<<<<<<
@@ -11888,7 +12026,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_20_redef(struct __pyx_obj_
  */
   __pyx_v_ierr = nc_redef(__pyx_v_self->_grpid);
 
-  /* "netCDF4/_netCDF4.pyx":1677
+  /* "netCDF4/_netCDF4.pyx":1747
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def _redef(self):             # <<<<<<<<<<<<<<
@@ -11903,7 +12041,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_20_redef(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1681
+/* "netCDF4/_netCDF4.pyx":1751
  *         ierr = nc_redef(self._grpid)
  * 
  *     def _enddef(self):             # <<<<<<<<<<<<<<
@@ -11930,7 +12068,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_22_enddef(struct __pyx_obj
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_enddef", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1683
+  /* "netCDF4/_netCDF4.pyx":1753
  *     def _enddef(self):
  *         cdef int ierr
  *         ierr = nc_enddef(self._grpid)             # <<<<<<<<<<<<<<
@@ -11939,7 +12077,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_22_enddef(struct __pyx_obj
  */
   __pyx_v_ierr = nc_enddef(__pyx_v_self->_grpid);
 
-  /* "netCDF4/_netCDF4.pyx":1681
+  /* "netCDF4/_netCDF4.pyx":1751
  *         ierr = nc_redef(self._grpid)
  * 
  *     def _enddef(self):             # <<<<<<<<<<<<<<
@@ -11954,17 +12092,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_22_enddef(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1685
+/* "netCDF4/_netCDF4.pyx":1755
  *         ierr = nc_enddef(self._grpid)
  * 
  *     def set_fill_on(self):             # <<<<<<<<<<<<<<
  *         """
- * set_fill_on(self)
+ * **`set_fill_on(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_25set_fill_on(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_24set_fill_on[] = "\nset_fill_on(self)\n\nSets the fill mode for a L{Dataset} open for writing to C{on}.\n\nThis causes data to be pre-filled with fill values. The fill values can be\ncontrolled by the variable's C{_Fill_Value} attribute, but is usually\nsufficient to the use the netCDF default C{_Fill_Value} (defined\nseparately for each variable type). The default behavior of the netCDF\nlibrary correspongs to C{set_fill_on}.  Data whic [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_24set_fill_on[] = "\n**`set_fill_on(self)`**\n\nSets the fill mode for a `netCDF4.Dataset` open for writing to `on`.\n\nThis causes data to be pre-filled with fill values. The fill values can be\ncontrolled by the variable's `_Fill_Value` attribute, but is usually\nsufficient to the use the netCDF default `_Fill_Value` (defined\nseparately for each variable type). The default behavior of the netCDF\nlibrary correspongs to `set_fill_on`.   [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_25set_fill_on(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -11990,7 +12128,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_24set_fill_on(struct __pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_fill_on", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1699
+  /* "netCDF4/_netCDF4.pyx":1769
  * to."""
  *         cdef int ierr, oldmode
  *         ierr = nc_set_fill (self._grpid, NC_FILL, &oldmode)             # <<<<<<<<<<<<<<
@@ -11999,7 +12137,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_24set_fill_on(struct __pyx
  */
   __pyx_v_ierr = nc_set_fill(__pyx_v_self->_grpid, NC_FILL, (&__pyx_v_oldmode));
 
-  /* "netCDF4/_netCDF4.pyx":1700
+  /* "netCDF4/_netCDF4.pyx":1770
  *         cdef int ierr, oldmode
  *         ierr = nc_set_fill (self._grpid, NC_FILL, &oldmode)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -12009,7 +12147,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_24set_fill_on(struct __pyx
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1701
+    /* "netCDF4/_netCDF4.pyx":1771
  *         ierr = nc_set_fill (self._grpid, NC_FILL, &oldmode)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -12017,28 +12155,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_24set_fill_on(struct __pyx
  *     def set_fill_off(self):
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1685
+  /* "netCDF4/_netCDF4.pyx":1755
  *         ierr = nc_enddef(self._grpid)
  * 
  *     def set_fill_on(self):             # <<<<<<<<<<<<<<
  *         """
- * set_fill_on(self)
+ * **`set_fill_on(self)`**
  */
 
   /* function exit code */
@@ -12055,17 +12193,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_24set_fill_on(struct __pyx
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1703
+/* "netCDF4/_netCDF4.pyx":1773
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def set_fill_off(self):             # <<<<<<<<<<<<<<
  *         """
- * set_fill_off(self)
+ * **`set_fill_off(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_27set_fill_off(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_26set_fill_off[] = "\nset_fill_off(self)\n\nSets the fill mode for a L{Dataset} open for writing to C{off}.\n\nThis will prevent the data from being pre-filled with fill values, which\nmay result in some performance improvements. However, you must then make\nsure the data is actually written before being read.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_26set_fill_off[] = "\n**`set_fill_off(self)`**\n\nSets the fill mode for a `netCDF4.Dataset` open for writing to `off`.\n\nThis will prevent the data from being pre-filled with fill values, which\nmay result in some performance improvements. However, you must then make\nsure the data is actually written before being read.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_27set_fill_off(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -12091,7 +12229,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_26set_fill_off(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_fill_off", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1713
+  /* "netCDF4/_netCDF4.pyx":1783
  * sure the data is actually written before being read."""
  *         cdef int ierr, oldmode
  *         ierr = nc_set_fill (self._grpid, NC_NOFILL, &oldmode)             # <<<<<<<<<<<<<<
@@ -12100,7 +12238,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_26set_fill_off(struct __py
  */
   __pyx_v_ierr = nc_set_fill(__pyx_v_self->_grpid, NC_NOFILL, (&__pyx_v_oldmode));
 
-  /* "netCDF4/_netCDF4.pyx":1714
+  /* "netCDF4/_netCDF4.pyx":1784
  *         cdef int ierr, oldmode
  *         ierr = nc_set_fill (self._grpid, NC_NOFILL, &oldmode)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -12110,7 +12248,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_26set_fill_off(struct __py
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":1715
+    /* "netCDF4/_netCDF4.pyx":1785
  *         ierr = nc_set_fill (self._grpid, NC_NOFILL, &oldmode)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -12118,28 +12256,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_26set_fill_off(struct __py
  *     def createDimension(self, dimname, size=None):
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1703
+  /* "netCDF4/_netCDF4.pyx":1773
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def set_fill_off(self):             # <<<<<<<<<<<<<<
  *         """
- * set_fill_off(self)
+ * **`set_fill_off(self)`**
  */
 
   /* function exit code */
@@ -12156,17 +12294,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_26set_fill_off(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1717
+/* "netCDF4/_netCDF4.pyx":1787
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def createDimension(self, dimname, size=None):             # <<<<<<<<<<<<<<
  *         """
- * createDimension(self, dimname, size=None)
+ * **`createDimension(self, dimname, size=None)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29createDimension(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_28createDimension[] = "\ncreateDimension(self, dimname, size=None)\n\nCreates a new dimension with the given C{dimname} and C{size}.\n\nC{size} must be a positive integer or C{None}, which stands for\n\"unlimited\" (default is C{None}). Specifying a size of 0 also\nresults in an unlimited dimension. The return value is the L{Dimension}\nclass instance describing the new dimension.  To determine the current\nmaximum size of the dimension,  [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_28createDimension[] = "\n**`createDimension(self, dimname, size=None)`**\n\nCreates a new dimension with the given `dimname` and `size`.\n\n`size` must be a positive integer or `None`, which stands for\n\"unlimited\" (default is `None`). Specifying a size of 0 also\nresults in an unlimited dimension. The return value is the `netCDF4.Dimension`\nclass instance describing the new dimension.  To determine the current\nmaximum size of the dim [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29createDimension(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_dimname = 0;
   PyObject *__pyx_v_size = 0;
@@ -12201,7 +12339,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29createDimension(PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createDimension") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createDimension") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -12216,7 +12354,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_29createDimension(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("createDimension", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1717; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("createDimension", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12240,14 +12378,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_28createDimension(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("createDimension", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1730
+  /* "netCDF4/_netCDF4.pyx":1800
  * instance. To determine if a dimension is 'unlimited', use the
- * C{isunlimited()} method of the L{Dimension} instance."""
+ * `netCDF4.Dimension.isunlimited` method of the `netCDF4.Dimension` instance."""
  *         self.dimensions[dimname] = Dimension(self, dimname, size=size)             # <<<<<<<<<<<<<<
  *         return self.dimensions[dimname]
  * 
  */
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
@@ -12255,36 +12393,36 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_28createDimension(struct _
   __Pyx_INCREF(__pyx_v_dimname);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_dimname);
   __Pyx_GIVEREF(__pyx_v_dimname);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_v_size) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dimension)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_size, __pyx_v_size) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dimension)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (unlikely(PyObject_SetItem(__pyx_v_self->dimensions, __pyx_v_dimname, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_v_self->dimensions, __pyx_v_dimname, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1731
- * C{isunlimited()} method of the L{Dimension} instance."""
+  /* "netCDF4/_netCDF4.pyx":1801
+ * `netCDF4.Dimension.isunlimited` method of the `netCDF4.Dimension` instance."""
  *         self.dimensions[dimname] = Dimension(self, dimname, size=size)
  *         return self.dimensions[dimname]             # <<<<<<<<<<<<<<
  * 
  *     def renameDimension(self, oldname, newname):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_dimname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_3 = PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_dimname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1801; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1717
+  /* "netCDF4/_netCDF4.pyx":1787
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def createDimension(self, dimname, size=None):             # <<<<<<<<<<<<<<
  *         """
- * createDimension(self, dimname, size=None)
+ * **`createDimension(self, dimname, size=None)`**
  */
 
   /* function exit code */
@@ -12300,17 +12438,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_28createDimension(struct _
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1733
+/* "netCDF4/_netCDF4.pyx":1803
  *         return self.dimensions[dimname]
  * 
  *     def renameDimension(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameDimension(self, oldname, newname)
+ * **`renameDimension(self, oldname, newname)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31renameDimension(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_30renameDimension[] = "\nrenameDimension(self, oldname, newname)\n\nrename a L{Dimension} named C{oldname} to C{newname}.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_30renameDimension[] = "\n**`renameDimension(self, oldname, newname)`**\n\nrename a `netCDF4.Dimension` named `oldname` to `newname`.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31renameDimension(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_oldname = 0;
   PyObject *__pyx_v_newname = 0;
@@ -12340,11 +12478,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31renameDimension(PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("renameDimension", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("renameDimension", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameDimension") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameDimension") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -12357,7 +12495,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_31renameDimension(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("renameDimension", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("renameDimension", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1803; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12393,38 +12531,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("renameDimension", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1739
- * rename a L{Dimension} named C{oldname} to C{newname}."""
+  /* "netCDF4/_netCDF4.pyx":1809
+ * rename a `netCDF4.Dimension` named `oldname` to `newname`."""
  *         cdef char *namstring
  *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
  *         namstring = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1740
+  /* "netCDF4/_netCDF4.pyx":1810
  *         cdef char *namstring
  *         bytestr = _strencode(newname)
  *         namstring = bytestr             # <<<<<<<<<<<<<<
  *         if self.data_model != 'NETCDF4': self._redef()
  *         try:
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_namstring = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":1741
+  /* "netCDF4/_netCDF4.pyx":1811
  *         bytestr = _strencode(newname)
  *         namstring = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
  *         try:
  *             dim = self.dimensions[oldname]
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -12437,10 +12575,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -12449,7 +12587,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":1742
+  /* "netCDF4/_netCDF4.pyx":1812
  *         namstring = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()
  *         try:             # <<<<<<<<<<<<<<
@@ -12463,14 +12601,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
     __Pyx_XGOTREF(__pyx_t_8);
     /*try:*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1743
+      /* "netCDF4/_netCDF4.pyx":1813
  *         if self.data_model != 'NETCDF4': self._redef()
  *         try:
  *             dim = self.dimensions[oldname]             # <<<<<<<<<<<<<<
  *         except KeyError:
  *             raise KeyError('%s not a valid dimension name' % oldname)
  */
-      __pyx_t_1 = PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_oldname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1743; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
+      __pyx_t_1 = PyObject_GetItem(__pyx_v_self->dimensions, __pyx_v_oldname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1813; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_dim = __pyx_t_1;
       __pyx_t_1 = 0;
@@ -12484,7 +12622,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1744
+    /* "netCDF4/_netCDF4.pyx":1814
  *         try:
  *             dim = self.dimensions[oldname]
  *         except KeyError:             # <<<<<<<<<<<<<<
@@ -12494,31 +12632,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
     __pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_9) {
       __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameDimension", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1744; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GOTREF(__pyx_t_5);
 
-      /* "netCDF4/_netCDF4.pyx":1745
+      /* "netCDF4/_netCDF4.pyx":1815
  *             dim = self.dimensions[oldname]
  *         except KeyError:
  *             raise KeyError('%s not a valid dimension name' % oldname)             # <<<<<<<<<<<<<<
  *         ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)
  *         if self.data_model != 'NETCDF4': self._enddef()
  */
-      __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_s_not_a_valid_dimension_name, __pyx_v_oldname); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_s_not_a_valid_dimension_name, __pyx_v_oldname); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_GOTREF(__pyx_t_11);
       PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10);
       __Pyx_GIVEREF(__pyx_t_10);
       __pyx_t_10 = 0;
-      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_Raise(__pyx_t_10, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
     }
     goto __pyx_L6_except_error;
     __pyx_L6_except_error:;
@@ -12530,29 +12668,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
     __pyx_L11_try_end:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1746
+  /* "netCDF4/_netCDF4.pyx":1816
  *         except KeyError:
  *             raise KeyError('%s not a valid dimension name' % oldname)
  *         ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)             # <<<<<<<<<<<<<<
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_dimid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_dimid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_ierr = nc_rename_dim(__pyx_v_self->_grpid, __pyx_t_9, __pyx_v_namstring);
 
-  /* "netCDF4/_netCDF4.pyx":1747
+  /* "netCDF4/_netCDF4.pyx":1817
  *             raise KeyError('%s not a valid dimension name' % oldname)
  *         ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)
  *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_1 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -12565,10 +12703,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
       }
     }
     if (__pyx_t_1) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -12577,7 +12715,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
   }
   __pyx_L14:;
 
-  /* "netCDF4/_netCDF4.pyx":1748
+  /* "netCDF4/_netCDF4.pyx":1818
  *         ierr = nc_rename_dim(self._grpid, dim._dimid, namstring)
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -12587,7 +12725,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":1749
+    /* "netCDF4/_netCDF4.pyx":1819
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -12595,30 +12733,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
  *         self.dimensions.pop(oldname)
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1751
+  /* "netCDF4/_netCDF4.pyx":1821
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         # remove old key from dimensions dict.
  *         self.dimensions.pop(oldname)             # <<<<<<<<<<<<<<
  *         # add new key.
  *         self.dimensions[newname] = dim
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dimensions, __pyx_n_s_pop); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dimensions, __pyx_n_s_pop); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_1 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -12631,37 +12769,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
     }
   }
   if (!__pyx_t_1) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_oldname); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_oldname); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
   } else {
-    __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
     __Pyx_INCREF(__pyx_v_oldname);
     PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_oldname);
     __Pyx_GIVEREF(__pyx_v_oldname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1753
+  /* "netCDF4/_netCDF4.pyx":1823
  *         self.dimensions.pop(oldname)
  *         # add new key.
  *         self.dimensions[newname] = dim             # <<<<<<<<<<<<<<
  *         # Variable.dimensions is determined by a method that
  *         # looks in the file, so no need to manually update.
  */
-  if (unlikely(PyObject_SetItem(__pyx_v_self->dimensions, __pyx_v_newname, __pyx_v_dim) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_v_self->dimensions, __pyx_v_newname, __pyx_v_dim) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":1733
+  /* "netCDF4/_netCDF4.pyx":1803
  *         return self.dimensions[dimname]
  * 
  *     def renameDimension(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameDimension(self, oldname, newname)
+ * **`renameDimension(self, oldname, newname)`**
  */
 
   /* function exit code */
@@ -12683,17 +12821,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_30renameDimension(struct _
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1757
+/* "netCDF4/_netCDF4.pyx":1827
  *         # looks in the file, so no need to manually update.
  * 
  *     def createCompoundType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
  *         """
- * createCompoundType(self, datatype, datatype_name)
+ * **`createCompoundType(self, datatype, datatype_name)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33createCompoundType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_32createCompoundType[] = "\ncreateCompoundType(self, datatype, datatype_name)\n\nCreates a new compound data type named C{datatype_name} from the numpy\ndtype object C{datatype}.\n\n at attention: If the new compound data type contains other compound data types\n(i.e. it is a 'nested' compound type, where not all of the elements\nare homogenous numeric data types), then the 'inner' compound types B{must} be\ncreated first.\n\nThe return valu [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_32createCompoundType[] = "\n**`createCompoundType(self, datatype, datatype_name)`**\n\nCreates a new compound data type named `datatype_name` from the numpy\ndtype object `datatype`.\n\n***Note***: If the new compound data type contains other compound data types\n(i.e. it is a 'nested' compound type, where not all of the elements\nare homogenous numeric data types), then the 'inner' compound types **must** be\ncreated first.\n\nThe return [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33createCompoundType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_datatype = 0;
   PyObject *__pyx_v_datatype_name = 0;
@@ -12723,11 +12861,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33createCompoundType(PyObj
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_datatype_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("createCompoundType", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1757; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("createCompoundType", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1827; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createCompoundType") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1757; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createCompoundType") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1827; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -12740,7 +12878,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_33createCompoundType(PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("createCompoundType", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1757; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("createCompoundType", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1827; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createCompoundType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12763,14 +12901,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_32createCompoundType(struc
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("createCompoundType", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1771
- * The return value is the L{CompoundType} class instance describing the new
+  /* "netCDF4/_netCDF4.pyx":1841
+ * The return value is the `netCDF4.CompoundType` class instance describing the new
  * datatype."""
  *         self.cmptypes[datatype_name] = CompoundType(self, datatype,\             # <<<<<<<<<<<<<<
  *                 datatype_name)
  *         return self.cmptypes[datatype_name]
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
@@ -12781,13 +12919,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_32createCompoundType(struc
   __Pyx_INCREF(__pyx_v_datatype_name);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_datatype_name);
   __Pyx_GIVEREF(__pyx_v_datatype_name);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_CompoundType)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_CompoundType)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(PyObject_SetItem(__pyx_v_self->cmptypes, __pyx_v_datatype_name, __pyx_t_2) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_v_self->cmptypes, __pyx_v_datatype_name, __pyx_t_2) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1773
+  /* "netCDF4/_netCDF4.pyx":1843
  *         self.cmptypes[datatype_name] = CompoundType(self, datatype,\
  *                 datatype_name)
  *         return self.cmptypes[datatype_name]             # <<<<<<<<<<<<<<
@@ -12795,18 +12933,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_32createCompoundType(struc
  *     def createVLType(self, datatype, datatype_name):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->cmptypes, __pyx_v_datatype_name); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1773; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->cmptypes, __pyx_v_datatype_name); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1843; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1757
+  /* "netCDF4/_netCDF4.pyx":1827
  *         # looks in the file, so no need to manually update.
  * 
  *     def createCompoundType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
  *         """
- * createCompoundType(self, datatype, datatype_name)
+ * **`createCompoundType(self, datatype, datatype_name)`**
  */
 
   /* function exit code */
@@ -12821,17 +12959,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_32createCompoundType(struc
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1775
+/* "netCDF4/_netCDF4.pyx":1845
  *         return self.cmptypes[datatype_name]
  * 
  *     def createVLType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
  *         """
- * createVLType(self, datatype, datatype_name)
+ * **`createVLType(self, datatype, datatype_name)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35createVLType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_34createVLType[] = "\ncreateVLType(self, datatype, datatype_name)\n\nCreates a new VLEN data type named C{datatype_name} from a numpy\ndtype object C{datatype}.\n\nThe return value is the L{VLType} class instance describing the new\ndatatype.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_34createVLType[] = "\n**`createVLType(self, datatype, datatype_name)`**\n\nCreates a new VLEN data type named `datatype_name` from a numpy\ndtype object `datatype`.\n\nThe return value is the `netCDF4.VLType` class instance describing the new\ndatatype.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35createVLType(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_datatype = 0;
   PyObject *__pyx_v_datatype_name = 0;
@@ -12861,11 +12999,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35createVLType(PyObject *_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_datatype_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("createVLType", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1775; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("createVLType", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createVLType") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1775; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createVLType") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -12878,7 +13016,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_35createVLType(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("createVLType", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1775; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("createVLType", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createVLType", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12901,14 +13039,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_34createVLType(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("createVLType", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1784
- * The return value is the L{VLType} class instance describing the new
+  /* "netCDF4/_netCDF4.pyx":1854
+ * The return value is the `netCDF4.VLType` class instance describing the new
  * datatype."""
  *         self.vltypes[datatype_name] = VLType(self, datatype, datatype_name)             # <<<<<<<<<<<<<<
  *         return self.vltypes[datatype_name]
  * 
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
@@ -12919,13 +13057,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_34createVLType(struct __py
   __Pyx_INCREF(__pyx_v_datatype_name);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_datatype_name);
   __Pyx_GIVEREF(__pyx_v_datatype_name);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_VLType)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_VLType)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(PyObject_SetItem(__pyx_v_self->vltypes, __pyx_v_datatype_name, __pyx_t_2) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_v_self->vltypes, __pyx_v_datatype_name, __pyx_t_2) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1785
+  /* "netCDF4/_netCDF4.pyx":1855
  * datatype."""
  *         self.vltypes[datatype_name] = VLType(self, datatype, datatype_name)
  *         return self.vltypes[datatype_name]             # <<<<<<<<<<<<<<
@@ -12933,18 +13071,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_34createVLType(struct __py
  *     def createVariable(self, varname, datatype, dimensions=(), zlib=False,
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->vltypes, __pyx_v_datatype_name); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1785; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = PyObject_GetItem(__pyx_v_self->vltypes, __pyx_v_datatype_name); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1855; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1775
+  /* "netCDF4/_netCDF4.pyx":1845
  *         return self.cmptypes[datatype_name]
  * 
  *     def createVLType(self, datatype, datatype_name):             # <<<<<<<<<<<<<<
  *         """
- * createVLType(self, datatype, datatype_name)
+ * **`createVLType(self, datatype, datatype_name)`**
  */
 
   /* function exit code */
@@ -12959,7 +13097,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_34createVLType(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1787
+/* "netCDF4/_netCDF4.pyx":1857
  *         return self.vltypes[datatype_name]
  * 
  *     def createVariable(self, varname, datatype, dimensions=(), zlib=False,             # <<<<<<<<<<<<<<
@@ -12969,7 +13107,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_34createVLType(struct __py
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_36createVariable[] = "\ncreateVariable(self, varname, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None, fill_value=None)\n\nCreates a new variable with the given C{varname}, C{datatype}, and\nC{dimensions}. If dimensions are not given, the variable is assumed to be\na scalar.\n\nIf C{varname} is specified as a path, using forw [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_36createVariable[] = "\n**`createVariable(self, varname, datatype, dimensions=(), zlib=False,\ncomplevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None,\nendian='native', least_significant_digit=None, fill_value=None)`**\n\nCreates a new variable with the given `varname`, `datatype`, and\n`dimensions`. If dimensions are not given, the variable is assumed to be\na scalar.\n\nIf `varname` is specified as a path, using  [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_varname = 0;
   PyObject *__pyx_v_datatype = 0;
@@ -12997,7 +13135,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject
     values[3] = ((PyObject *)Py_False);
     values[4] = ((PyObject *)__pyx_int_4);
 
-    /* "netCDF4/_netCDF4.pyx":1788
+    /* "netCDF4/_netCDF4.pyx":1858
  * 
  *     def createVariable(self, varname, datatype, dimensions=(), zlib=False,
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,             # <<<<<<<<<<<<<<
@@ -13008,7 +13146,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject
     values[6] = ((PyObject *)Py_False);
     values[7] = ((PyObject *)Py_False);
 
-    /* "netCDF4/_netCDF4.pyx":1789
+    /* "netCDF4/_netCDF4.pyx":1859
  *     def createVariable(self, varname, datatype, dimensions=(), zlib=False,
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
  *             chunksizes=None, endian='native', least_significant_digit=None,             # <<<<<<<<<<<<<<
@@ -13019,12 +13157,12 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject
     values[9] = ((PyObject *)__pyx_n_s_native);
     values[10] = ((PyObject *)Py_None);
 
-    /* "netCDF4/_netCDF4.pyx":1790
+    /* "netCDF4/_netCDF4.pyx":1860
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
  *             chunksizes=None, endian='native', least_significant_digit=None,
  *             fill_value=None, chunk_cache=None):             # <<<<<<<<<<<<<<
  *         """
- * createVariable(self, varname, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None, fill_value=None)
+ * **`createVariable(self, varname, datatype, dimensions=(), zlib=False,
  */
     values[11] = ((PyObject *)Py_None);
     values[12] = ((PyObject *)Py_None);
@@ -13056,7 +13194,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_datatype)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("createVariable", 0, 2, 13, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("createVariable", 0, 2, 13, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -13115,7 +13253,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createVariable") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "createVariable") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -13152,7 +13290,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("createVariable", 0, 2, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("createVariable", 0, 2, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1857; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.createVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -13160,7 +13298,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_37createVariable(PyObject
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), __pyx_v_varname, __pyx_v_datatype, __pyx_v_dimensions, __pyx_v_zlib, __pyx_v_complevel, __pyx_v_shuffle, __pyx_v_fletcher32, __pyx_v_contiguous, __pyx_v_chunksizes, __pyx_v_endian, __pyx_v_least_significant_digit, __pyx_v_fill_value, __pyx_v_chunk_cache);
 
-  /* "netCDF4/_netCDF4.pyx":1787
+  /* "netCDF4/_netCDF4.pyx":1857
  *         return self.vltypes[datatype_name]
  * 
  *     def createVariable(self, varname, datatype, dimensions=(), zlib=False,             # <<<<<<<<<<<<<<
@@ -13191,16 +13329,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
   __Pyx_RefNannySetupContext("createVariable", 0);
   __Pyx_INCREF(__pyx_v_varname);
 
-  /* "netCDF4/_netCDF4.pyx":1912
+  /* "netCDF4/_netCDF4.pyx":1984
  * is the number of variable dimensions."""
  *         # if varname specified as a path, split out group names.
  *         varname = posixpath.normpath(varname)             # <<<<<<<<<<<<<<
  *         dirname, varname = posixpath.split(varname) # varname is last.
  *         # create parent groups (like mkdir -p).
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_normpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_normpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -13214,16 +13352,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_varname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_varname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -13231,16 +13369,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
   __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1913
+  /* "netCDF4/_netCDF4.pyx":1985
  *         # if varname specified as a path, split out group names.
  *         varname = posixpath.normpath(varname)
  *         dirname, varname = posixpath.split(varname) # varname is last.             # <<<<<<<<<<<<<<
  *         # create parent groups (like mkdir -p).
  *         if not dirname:
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -13254,16 +13392,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_varname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_varname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -13278,7 +13416,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
     if (unlikely(size != 2)) {
       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -13291,15 +13429,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
     __Pyx_INCREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_2);
     #else
-    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     #endif
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
     Py_ssize_t index = -1;
-    __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
@@ -13307,7 +13445,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
     __Pyx_GOTREF(__pyx_t_4);
     index = 1; __pyx_t_2 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
     __Pyx_GOTREF(__pyx_t_2);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_5 = NULL;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     goto __pyx_L4_unpacking_done;
@@ -13315,7 +13453,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_5 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L4_unpacking_done:;
   }
   __pyx_v_dirname = __pyx_t_4;
@@ -13323,18 +13461,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
   __Pyx_DECREF_SET(__pyx_v_varname, __pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1915
+  /* "netCDF4/_netCDF4.pyx":1987
  *         dirname, varname = posixpath.split(varname) # varname is last.
  *         # create parent groups (like mkdir -p).
  *         if not dirname:             # <<<<<<<<<<<<<<
  *             group = self
  *         else:
  */
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_dirname); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_dirname); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = ((!__pyx_t_6) != 0);
   if (__pyx_t_7) {
 
-    /* "netCDF4/_netCDF4.pyx":1916
+    /* "netCDF4/_netCDF4.pyx":1988
  *         # create parent groups (like mkdir -p).
  *         if not dirname:
  *             group = self             # <<<<<<<<<<<<<<
@@ -13347,14 +13485,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":1918
+    /* "netCDF4/_netCDF4.pyx":1990
  *             group = self
  *         else:
  *             group = self.createGroup(dirname)             # <<<<<<<<<<<<<<
  *         # create variable.
  *         group.variables[varname] = Variable(group, varname, datatype,
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_createGroup); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_createGroup); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -13367,16 +13505,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_dirname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_dirname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_dirname);
       PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_dirname);
       __Pyx_GIVEREF(__pyx_v_dirname);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     }
@@ -13386,14 +13524,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
   }
   __pyx_L5:;
 
-  /* "netCDF4/_netCDF4.pyx":1920
+  /* "netCDF4/_netCDF4.pyx":1992
  *             group = self.createGroup(dirname)
  *         # create variable.
  *         group.variables[varname] = Variable(group, varname, datatype,             # <<<<<<<<<<<<<<
  *         dimensions=dimensions, zlib=zlib, complevel=complevel, shuffle=shuffle,
  *         fletcher32=fletcher32, contiguous=contiguous, chunksizes=chunksizes,
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_group);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_group);
@@ -13404,70 +13542,70 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
   __Pyx_INCREF(__pyx_v_datatype);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_datatype);
   __Pyx_GIVEREF(__pyx_v_datatype);
-  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
 
-  /* "netCDF4/_netCDF4.pyx":1921
+  /* "netCDF4/_netCDF4.pyx":1993
  *         # create variable.
  *         group.variables[varname] = Variable(group, varname, datatype,
  *         dimensions=dimensions, zlib=zlib, complevel=complevel, shuffle=shuffle,             # <<<<<<<<<<<<<<
  *         fletcher32=fletcher32, contiguous=contiguous, chunksizes=chunksizes,
  *         endian=endian, least_significant_digit=least_significant_digit,
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dimensions, __pyx_v_dimensions) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_zlib, __pyx_v_zlib) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_complevel, __pyx_v_complevel) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shuffle, __pyx_v_shuffle) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dimensions, __pyx_v_dimensions) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_zlib, __pyx_v_zlib) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_complevel, __pyx_v_complevel) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shuffle, __pyx_v_shuffle) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":1922
+  /* "netCDF4/_netCDF4.pyx":1994
  *         group.variables[varname] = Variable(group, varname, datatype,
  *         dimensions=dimensions, zlib=zlib, complevel=complevel, shuffle=shuffle,
  *         fletcher32=fletcher32, contiguous=contiguous, chunksizes=chunksizes,             # <<<<<<<<<<<<<<
  *         endian=endian, least_significant_digit=least_significant_digit,
  *         fill_value=fill_value, chunk_cache=chunk_cache)
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fletcher32, __pyx_v_fletcher32) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_contiguous, __pyx_v_contiguous) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunksizes, __pyx_v_chunksizes) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fletcher32, __pyx_v_fletcher32) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_contiguous, __pyx_v_contiguous) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunksizes, __pyx_v_chunksizes) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":1923
+  /* "netCDF4/_netCDF4.pyx":1995
  *         dimensions=dimensions, zlib=zlib, complevel=complevel, shuffle=shuffle,
  *         fletcher32=fletcher32, contiguous=contiguous, chunksizes=chunksizes,
  *         endian=endian, least_significant_digit=least_significant_digit,             # <<<<<<<<<<<<<<
  *         fill_value=fill_value, chunk_cache=chunk_cache)
  *         return group.variables[varname]
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endian, __pyx_v_endian) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_least_significant_digit, __pyx_v_least_significant_digit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_endian, __pyx_v_endian) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_least_significant_digit, __pyx_v_least_significant_digit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":1924
+  /* "netCDF4/_netCDF4.pyx":1996
  *         fletcher32=fletcher32, contiguous=contiguous, chunksizes=chunksizes,
  *         endian=endian, least_significant_digit=least_significant_digit,
  *         fill_value=fill_value, chunk_cache=chunk_cache)             # <<<<<<<<<<<<<<
  *         return group.variables[varname]
  * 
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fill_value, __pyx_v_fill_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_cache, __pyx_v_chunk_cache) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fill_value, __pyx_v_fill_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_cache, __pyx_v_chunk_cache) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":1920
+  /* "netCDF4/_netCDF4.pyx":1992
  *             group = self.createGroup(dirname)
  *         # create variable.
  *         group.variables[varname] = Variable(group, varname, datatype,             # <<<<<<<<<<<<<<
  *         dimensions=dimensions, zlib=zlib, complevel=complevel, shuffle=shuffle,
  *         fletcher32=fletcher32, contiguous=contiguous, chunksizes=chunksizes,
  */
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_varname, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_varname, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1925
+  /* "netCDF4/_netCDF4.pyx":1997
  *         endian=endian, least_significant_digit=least_significant_digit,
  *         fill_value=fill_value, chunk_cache=chunk_cache)
  *         return group.variables[varname]             # <<<<<<<<<<<<<<
@@ -13475,16 +13613,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
  *     def renameVariable(self, oldname, newname):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_v_varname); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_v_varname); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1787
+  /* "netCDF4/_netCDF4.pyx":1857
  *         return self.vltypes[datatype_name]
  * 
  *     def createVariable(self, varname, datatype, dimensions=(), zlib=False,             # <<<<<<<<<<<<<<
@@ -13509,17 +13647,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_36createVariable(struct __
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1927
+/* "netCDF4/_netCDF4.pyx":1999
  *         return group.variables[varname]
  * 
  *     def renameVariable(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameVariable(self, oldname, newname)
+ * **`renameVariable(self, oldname, newname)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameVariable(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_38renameVariable[] = "\nrenameVariable(self, oldname, newname)\n\nrename a L{Variable} named C{oldname} to C{newname}";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_38renameVariable[] = "\n**`renameVariable(self, oldname, newname)`**\n\nrename a `netCDF4.Variable` named `oldname` to `newname`";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameVariable(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_oldname = 0;
   PyObject *__pyx_v_newname = 0;
@@ -13549,11 +13687,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameVariable(PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("renameVariable", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("renameVariable", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameVariable") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameVariable") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -13566,7 +13704,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_39renameVariable(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("renameVariable", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1927; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("renameVariable", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1999; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -13602,8 +13740,8 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("renameVariable", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1933
- * rename a L{Variable} named C{oldname} to C{newname}"""
+  /* "netCDF4/_netCDF4.pyx":2005
+ * rename a `netCDF4.Variable` named `oldname` to `newname`"""
  *         cdef char *namstring
  *         try:             # <<<<<<<<<<<<<<
  *             var = self.variables[oldname]
@@ -13616,14 +13754,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "netCDF4/_netCDF4.pyx":1934
+      /* "netCDF4/_netCDF4.pyx":2006
  *         cdef char *namstring
  *         try:
  *             var = self.variables[oldname]             # <<<<<<<<<<<<<<
  *         except KeyError:
  *             raise KeyError('%s not a valid variable name' % oldname)
  */
-      __pyx_t_4 = PyObject_GetItem(__pyx_v_self->variables, __pyx_v_oldname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1934; __pyx_clineno = __LINE__; goto __pyx_L3_error;};
+      __pyx_t_4 = PyObject_GetItem(__pyx_v_self->variables, __pyx_v_oldname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L3_error;};
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_var = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -13635,7 +13773,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
     __pyx_L3_error:;
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1935
+    /* "netCDF4/_netCDF4.pyx":2007
  *         try:
  *             var = self.variables[oldname]
  *         except KeyError:             # <<<<<<<<<<<<<<
@@ -13645,31 +13783,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
     __pyx_t_5 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_5) {
       __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameVariable", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1935; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GOTREF(__pyx_t_7);
 
-      /* "netCDF4/_netCDF4.pyx":1936
+      /* "netCDF4/_netCDF4.pyx":2008
  *             var = self.variables[oldname]
  *         except KeyError:
  *             raise KeyError('%s not a valid variable name' % oldname)             # <<<<<<<<<<<<<<
  *         bytestr = _strencode(newname)
  *         namstring = bytestr
  */
-      __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_s_not_a_valid_variable_name, __pyx_v_oldname); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_s_not_a_valid_variable_name, __pyx_v_oldname); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
       __Pyx_GOTREF(__pyx_t_9);
       PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
       __Pyx_GIVEREF(__pyx_t_8);
       __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1936; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
     }
     goto __pyx_L5_except_error;
     __pyx_L5_except_error:;
@@ -13681,38 +13819,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
     __pyx_L10_try_end:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":1937
+  /* "netCDF4/_netCDF4.pyx":2009
  *         except KeyError:
  *             raise KeyError('%s not a valid variable name' % oldname)
  *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
  *         namstring = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()
  */
-  __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_v_bytestr = __pyx_t_7;
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1938
+  /* "netCDF4/_netCDF4.pyx":2010
  *             raise KeyError('%s not a valid variable name' % oldname)
  *         bytestr = _strencode(newname)
  *         namstring = bytestr             # <<<<<<<<<<<<<<
  *         if self.data_model != 'NETCDF4': self._redef()
  *         ierr = nc_rename_var(self._grpid, var._varid, namstring)
  */
-  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_namstring = __pyx_t_10;
 
-  /* "netCDF4/_netCDF4.pyx":1939
+  /* "netCDF4/_netCDF4.pyx":2011
  *         bytestr = _strencode(newname)
  *         namstring = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
  *         ierr = nc_rename_var(self._grpid, var._varid, namstring)
  *         if self.data_model != 'NETCDF4': self._enddef()
  */
-  __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_11) {
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -13725,10 +13863,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -13737,29 +13875,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
   }
   __pyx_L13:;
 
-  /* "netCDF4/_netCDF4.pyx":1940
+  /* "netCDF4/_netCDF4.pyx":2012
  *         namstring = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()
  *         ierr = nc_rename_var(self._grpid, var._varid, namstring)             # <<<<<<<<<<<<<<
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_varid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_varid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_v_ierr = nc_rename_var(__pyx_v_self->_grpid, __pyx_t_5, __pyx_v_namstring);
 
-  /* "netCDF4/_netCDF4.pyx":1941
+  /* "netCDF4/_netCDF4.pyx":2013
  *         if self.data_model != 'NETCDF4': self._redef()
  *         ierr = nc_rename_var(self._grpid, var._varid, namstring)
  *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-  __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_11) {
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -13772,10 +13910,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -13784,7 +13922,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
   }
   __pyx_L14:;
 
-  /* "netCDF4/_netCDF4.pyx":1942
+  /* "netCDF4/_netCDF4.pyx":2014
  *         ierr = nc_rename_var(self._grpid, var._varid, namstring)
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -13794,7 +13932,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
   __pyx_t_11 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_11) {
 
-    /* "netCDF4/_netCDF4.pyx":1943
+    /* "netCDF4/_netCDF4.pyx":2015
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -13802,30 +13940,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
  *         self.variables.pop(oldname)
  */
     __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
     __Pyx_GIVEREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_7, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":1945
+  /* "netCDF4/_netCDF4.pyx":2017
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         # remove old key from dimensions dict.
  *         self.variables.pop(oldname)             # <<<<<<<<<<<<<<
  *         # add new key.
  *         self.variables[newname] = var
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_pop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_pop); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -13838,37 +13976,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_oldname); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_oldname); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
   } else {
-    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
     __Pyx_INCREF(__pyx_v_oldname);
     PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_oldname);
     __Pyx_GIVEREF(__pyx_v_oldname);
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1947
+  /* "netCDF4/_netCDF4.pyx":2019
  *         self.variables.pop(oldname)
  *         # add new key.
  *         self.variables[newname] = var             # <<<<<<<<<<<<<<
  * 
  *     def createGroup(self, groupname):
  */
-  if (unlikely(PyObject_SetItem(__pyx_v_self->variables, __pyx_v_newname, __pyx_v_var) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_v_self->variables, __pyx_v_newname, __pyx_v_var) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":1927
+  /* "netCDF4/_netCDF4.pyx":1999
  *         return group.variables[varname]
  * 
  *     def renameVariable(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameVariable(self, oldname, newname)
+ * **`renameVariable(self, oldname, newname)`**
  */
 
   /* function exit code */
@@ -13890,17 +14028,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_38renameVariable(struct __
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1949
+/* "netCDF4/_netCDF4.pyx":2021
  *         self.variables[newname] = var
  * 
  *     def createGroup(self, groupname):             # <<<<<<<<<<<<<<
  *         """
- * createGroup(self, groupname)
+ * **`createGroup(self, groupname)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_41createGroup(PyObject *__pyx_v_self, PyObject *__pyx_v_groupname); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_40createGroup[] = "\ncreateGroup(self, groupname)\n\nCreates a new L{Group} with the given C{groupname}.\n\nIf C{groupname} is specified as a path, using forward slashes as in unix to\nseparate components, then intermediate groups will be created as necessary \n(analagous to C{mkdir -p} in unix).  For example,\nC{createGroup('/GroupA/GroupB/GroupC')} will create C{GroupA},\nC{GroupA/GroupB}, and C{GroupA/GroupB/GroupC}, if they don't alre [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_40createGroup[] = "\n**`createGroup(self, groupname)`**\n\nCreates a new `netCDF4.Group` with the given `groupname`.\n\nIf `groupname` is specified as a path, using forward slashes as in unix to\nseparate components, then intermediate groups will be created as necessary \n(analagous to `mkdir -p` in unix).  For example,\n`createGroup('/GroupA/GroupB/GroupC')` will create `GroupA`,\n`GroupA/GroupB`, and `GroupA/GroupB/GroupC`, if they don' [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_41createGroup(PyObject *__pyx_v_self, PyObject *__pyx_v_groupname) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -13932,16 +14070,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
   __Pyx_RefNannySetupContext("createGroup", 0);
   __Pyx_INCREF(__pyx_v_groupname);
 
-  /* "netCDF4/_netCDF4.pyx":1965
- * The return value is a L{Group} class instance."""
+  /* "netCDF4/_netCDF4.pyx":2037
+ * The return value is a `netCDF4.Group` class instance."""
  *         # if group specified as a path, split out group names
  *         groupname = posixpath.normpath(groupname)             # <<<<<<<<<<<<<<
  *         nestedgroups = groupname.split('/')
  *         group = self
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_normpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_normpath); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -13955,16 +14093,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_groupname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_groupname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_groupname);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_groupname);
     __Pyx_GIVEREF(__pyx_v_groupname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -13972,22 +14110,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
   __Pyx_DECREF_SET(__pyx_v_groupname, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1966
+  /* "netCDF4/_netCDF4.pyx":2038
  *         # if group specified as a path, split out group names
  *         groupname = posixpath.normpath(groupname)
  *         nestedgroups = groupname.split('/')             # <<<<<<<<<<<<<<
  *         group = self
  *         # loop over group names, create parent groups if they do not already
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_groupname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_groupname, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_nestedgroups = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1967
+  /* "netCDF4/_netCDF4.pyx":2039
  *         groupname = posixpath.normpath(groupname)
  *         nestedgroups = groupname.split('/')
  *         group = self             # <<<<<<<<<<<<<<
@@ -13997,7 +14135,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __pyx_v_group = ((PyObject *)__pyx_v_self);
 
-  /* "netCDF4/_netCDF4.pyx":1970
+  /* "netCDF4/_netCDF4.pyx":2042
  *         # loop over group names, create parent groups if they do not already
  *         # exist.
  *         for g in nestedgroups:             # <<<<<<<<<<<<<<
@@ -14008,25 +14146,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
     __pyx_t_3 = __pyx_v_nestedgroups; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nestedgroups); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_nestedgroups); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -14035,7 +14173,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -14044,41 +14182,41 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
     __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1971
+    /* "netCDF4/_netCDF4.pyx":2043
  *         # exist.
  *         for g in nestedgroups:
  *             if not g: continue             # <<<<<<<<<<<<<<
  *             if g not in group.groups:
  *                 group.groups[g] = Group(group, g)
  */
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_g); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_g); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_8 = ((!__pyx_t_7) != 0);
     if (__pyx_t_8) {
       goto __pyx_L3_continue;
     }
 
-    /* "netCDF4/_netCDF4.pyx":1972
+    /* "netCDF4/_netCDF4.pyx":2044
  *         for g in nestedgroups:
  *             if not g: continue
  *             if g not in group.groups:             # <<<<<<<<<<<<<<
  *                 group.groups[g] = Group(group, g)
  *             group = group.groups[g]
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_v_g, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_v_g, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_7 = (__pyx_t_8 != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":1973
+      /* "netCDF4/_netCDF4.pyx":2045
  *             if not g: continue
  *             if g not in group.groups:
  *                 group.groups[g] = Group(group, g)             # <<<<<<<<<<<<<<
  *             group = group.groups[g]
  *         # if group already exists, just return the group
  */
-      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_group);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_group);
@@ -14086,34 +14224,34 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
       __Pyx_INCREF(__pyx_v_g);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_g);
       __Pyx_GIVEREF(__pyx_v_g);
-      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Group)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Group)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_g, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_g, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       goto __pyx_L6;
     }
     __pyx_L6:;
 
-    /* "netCDF4/_netCDF4.pyx":1974
+    /* "netCDF4/_netCDF4.pyx":2046
  *             if g not in group.groups:
  *                 group.groups[g] = Group(group, g)
  *             group = group.groups[g]             # <<<<<<<<<<<<<<
  *         # if group already exists, just return the group
  *         # (prior to 1.1.8, this would have raised an error)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_groups); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_v_g); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1974; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = PyObject_GetItem(__pyx_t_4, __pyx_v_g); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2046; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF_SET(__pyx_v_group, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":1970
+    /* "netCDF4/_netCDF4.pyx":2042
  *         # loop over group names, create parent groups if they do not already
  *         # exist.
  *         for g in nestedgroups:             # <<<<<<<<<<<<<<
@@ -14124,7 +14262,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1977
+  /* "netCDF4/_netCDF4.pyx":2049
  *         # if group already exists, just return the group
  *         # (prior to 1.1.8, this would have raised an error)
  *         return group             # <<<<<<<<<<<<<<
@@ -14136,12 +14274,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
   __pyx_r = __pyx_v_group;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1949
+  /* "netCDF4/_netCDF4.pyx":2021
  *         self.variables[newname] = var
  * 
  *     def createGroup(self, groupname):             # <<<<<<<<<<<<<<
  *         """
- * createGroup(self, groupname)
+ * **`createGroup(self, groupname)`**
  */
 
   /* function exit code */
@@ -14162,17 +14300,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_40createGroup(struct __pyx
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1979
+/* "netCDF4/_netCDF4.pyx":2051
  *         return group
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
  *         """
- * ncattrs(self)
+ * **`ncattrs(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_43ncattrs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_42ncattrs[] = "\nncattrs(self)\n\nreturn netCDF global attribute names for this L{Dataset} or L{Group} in a list.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_42ncattrs[] = "\n**`ncattrs(self)`**\n\nreturn netCDF global attribute names for this `netCDF4.Dataset` or `netCDF4.Group` in a list.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_43ncattrs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -14193,26 +14331,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_42ncattrs(struct __pyx_obj
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("ncattrs", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1984
+  /* "netCDF4/_netCDF4.pyx":2056
  * 
- * return netCDF global attribute names for this L{Dataset} or L{Group} in a list."""
+ * return netCDF global attribute names for this `netCDF4.Dataset` or `netCDF4.Group` in a list."""
  *         return _get_att_names(self._grpid, NC_GLOBAL)             # <<<<<<<<<<<<<<
  * 
  *     def setncattr(self,name,value):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att_names(__pyx_v_self->_grpid, NC_GLOBAL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att_names(__pyx_v_self->_grpid, NC_GLOBAL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":1979
+  /* "netCDF4/_netCDF4.pyx":2051
  *         return group
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
  *         """
- * ncattrs(self)
+ * **`ncattrs(self)`**
  */
 
   /* function exit code */
@@ -14226,17 +14364,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_42ncattrs(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1986
+/* "netCDF4/_netCDF4.pyx":2058
  *         return _get_att_names(self._grpid, NC_GLOBAL)
  * 
  *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
  *         """
- * setncattr(self,name,value)
+ * **`setncattr(self,name,value)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45setncattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_44setncattr[] = "\nsetncattr(self,name,value)\n\nset a netCDF dataset or group attribute using name,value pair.  Only use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_44setncattr[] = "\n**`setncattr(self,name,value)`**\n\nset a netCDF dataset or group attribute using name,value pair.\nUse if you need to set a netCDF attribute with the\nwith the same name as one of the reserved python attributes.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45setncattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_value = 0;
@@ -14266,11 +14404,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45setncattr(PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setncattr") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setncattr") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -14283,7 +14421,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_45setncattr(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.setncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -14308,16 +14446,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44setncattr(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("setncattr", 0);
 
-  /* "netCDF4/_netCDF4.pyx":1993
- * netCDF attribute with the same name as one of the reserved python
- * attributes."""
+  /* "netCDF4/_netCDF4.pyx":2065
+ * Use if you need to set a netCDF attribute with the
+ * with the same name as one of the reserved python attributes."""
  *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
  *         _set_att(self, NC_GLOBAL, name, value)
  *         if self.data_model !=  'NETCDF4': self._enddef()
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14330,10 +14468,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44setncattr(struct __pyx_o
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14342,27 +14480,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44setncattr(struct __pyx_o
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":1994
- * attributes."""
+  /* "netCDF4/_netCDF4.pyx":2066
+ * with the same name as one of the reserved python attributes."""
  *         if self.data_model != 'NETCDF4': self._redef()
  *         _set_att(self, NC_GLOBAL, name, value)             # <<<<<<<<<<<<<<
  *         if self.data_model !=  'NETCDF4': self._enddef()
  * 
  */
-  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__set_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__set_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1995
+  /* "netCDF4/_netCDF4.pyx":2067
  *         if self.data_model != 'NETCDF4': self._redef()
  *         _set_att(self, NC_GLOBAL, name, value)
  *         if self.data_model !=  'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
  * 
  *     def setncatts(self,attdict):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14375,10 +14513,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44setncattr(struct __pyx_o
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14387,12 +14525,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44setncattr(struct __pyx_o
   }
   __pyx_L4:;
 
-  /* "netCDF4/_netCDF4.pyx":1986
+  /* "netCDF4/_netCDF4.pyx":2058
  *         return _get_att_names(self._grpid, NC_GLOBAL)
  * 
  *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
  *         """
- * setncattr(self,name,value)
+ * **`setncattr(self,name,value)`**
  */
 
   /* function exit code */
@@ -14410,17 +14548,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_44setncattr(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1997
+/* "netCDF4/_netCDF4.pyx":2069
  *         if self.data_model !=  'NETCDF4': self._enddef()
  * 
  *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
  *         """
- * setncatts(self,attdict)
+ * **`setncatts(self,attdict)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_47setncatts(PyObject *__pyx_v_self, PyObject *__pyx_v_attdict); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_46setncatts[] = "\nsetncatts(self,attdict)\n\nset a bunch of netCDF dataset or group attributes at once using a python dictionary.\nThis may be faster when setting a lot of attributes for a NETCDF3\nformatted file, since nc_redef/nc_enddef is not called in between setting\neach attribute";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_46setncatts[] = "\n**`setncatts(self,attdict)`**\n\nset a bunch of netCDF dataset or group attributes at once using a python dictionary.\nThis may be faster when setting a lot of attributes for a `NETCDF3`\nformatted file, since nc_redef/nc_enddef is not called in between setting\neach attribute";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_47setncatts(PyObject *__pyx_v_self, PyObject *__pyx_v_attdict) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -14451,16 +14589,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("setncatts", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2005
+  /* "netCDF4/_netCDF4.pyx":2077
  * formatted file, since nc_redef/nc_enddef is not called in between setting
  * each attribute"""
  *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
  *         for name, value in attdict.items():
  *             _set_att(self, NC_GLOBAL, name, value)
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14473,10 +14611,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14485,14 +14623,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2006
+  /* "netCDF4/_netCDF4.pyx":2078
  * each attribute"""
  *         if self.data_model != 'NETCDF4': self._redef()
  *         for name, value in attdict.items():             # <<<<<<<<<<<<<<
  *             _set_att(self, NC_GLOBAL, name, value)
  *         if self.data_model != 'NETCDF4': self._enddef()
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_attdict, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_attdict, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -14505,10 +14643,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -14516,9 +14654,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
     __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -14526,16 +14664,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -14544,7 +14682,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -14560,7 +14698,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -14573,15 +14711,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -14589,7 +14727,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
       __Pyx_GOTREF(__pyx_t_4);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L7_unpacking_done;
@@ -14597,7 +14735,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L7_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
@@ -14605,18 +14743,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
     __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2007
+    /* "netCDF4/_netCDF4.pyx":2079
  *         if self.data_model != 'NETCDF4': self._redef()
  *         for name, value in attdict.items():
  *             _set_att(self, NC_GLOBAL, name, value)             # <<<<<<<<<<<<<<
  *         if self.data_model != 'NETCDF4': self._enddef()
  * 
  */
-    __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__set_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__set_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2006
+    /* "netCDF4/_netCDF4.pyx":2078
  * each attribute"""
  *         if self.data_model != 'NETCDF4': self._redef()
  *         for name, value in attdict.items():             # <<<<<<<<<<<<<<
@@ -14626,16 +14764,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2008
+  /* "netCDF4/_netCDF4.pyx":2080
  *         for name, value in attdict.items():
  *             _set_att(self, NC_GLOBAL, name, value)
  *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
  * 
  *     def getncattr(self,name):
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_7 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -14648,10 +14786,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
       }
     }
     if (__pyx_t_7) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -14660,12 +14798,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
   }
   __pyx_L8:;
 
-  /* "netCDF4/_netCDF4.pyx":1997
+  /* "netCDF4/_netCDF4.pyx":2069
  *         if self.data_model !=  'NETCDF4': self._enddef()
  * 
  *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
  *         """
- * setncatts(self,attdict)
+ * **`setncatts(self,attdict)`**
  */
 
   /* function exit code */
@@ -14687,17 +14825,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_46setncatts(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2010
+/* "netCDF4/_netCDF4.pyx":2082
  *         if self.data_model != 'NETCDF4': self._enddef()
  * 
  *     def getncattr(self,name):             # <<<<<<<<<<<<<<
  *         """
- * getncattr(self,name)
+ * **`getncattr(self,name)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_49getncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_48getncattr[] = "\ngetncattr(self,name)\n\nretrievel a netCDF dataset or group attribute.  Only use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_48getncattr[] = "\n**`getncattr(self,name)`**\n\nretrievel a netCDF dataset or group attribute.\nUse if you need to get a netCDF attribute with the same \nname as one of the reserved python attributes.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_49getncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -14718,26 +14856,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_48getncattr(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("getncattr", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2017
- * netCDF attribute with the same name as one of the reserved python
- * attributes."""
+  /* "netCDF4/_netCDF4.pyx":2089
+ * Use if you need to get a netCDF attribute with the same
+ * name as one of the reserved python attributes."""
  *         return _get_att(self, NC_GLOBAL, name)             # <<<<<<<<<<<<<<
  * 
  *     def __delattr__(self,name):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2010
+  /* "netCDF4/_netCDF4.pyx":2082
  *         if self.data_model != 'NETCDF4': self._enddef()
  * 
  *     def getncattr(self,name):             # <<<<<<<<<<<<<<
  *         """
- * getncattr(self,name)
+ * **`getncattr(self,name)`**
  */
 
   /* function exit code */
@@ -14751,7 +14889,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_48getncattr(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2019
+/* "netCDF4/_netCDF4.pyx":2091
  *         return _get_att(self, NC_GLOBAL, name)
  * 
  *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
@@ -14786,28 +14924,28 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_50__delattr__(struct __pyx_obj_7
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__delattr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2021
+  /* "netCDF4/_netCDF4.pyx":2093
  *     def __delattr__(self,name):
  *         # if it's a netCDF attribute, remove it
  *         if name not in _private_atts:             # <<<<<<<<<<<<<<
  *             self.delncattr(name)
  *         else:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":2022
+    /* "netCDF4/_netCDF4.pyx":2094
  *         # if it's a netCDF attribute, remove it
  *         if name not in _private_atts:
  *             self.delncattr(name)             # <<<<<<<<<<<<<<
  *         else:
  *             raise AttributeError(
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_delncattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_delncattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -14820,16 +14958,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_50__delattr__(struct __pyx_obj_7
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -14839,19 +14977,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_50__delattr__(struct __pyx_obj_7
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2025
+    /* "netCDF4/_netCDF4.pyx":2097
  *         else:
  *             raise AttributeError(
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
  * 
  *     def delncattr(self, name):
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_name);
@@ -14859,32 +14997,32 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_50__delattr__(struct __pyx_obj_7
     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2024
+    /* "netCDF4/_netCDF4.pyx":2096
  *             self.delncattr(name)
  *         else:
  *             raise AttributeError(             # <<<<<<<<<<<<<<
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
  * 
  */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2019
+  /* "netCDF4/_netCDF4.pyx":2091
  *         return _get_att(self, NC_GLOBAL, name)
  * 
  *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
@@ -14907,17 +15045,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_50__delattr__(struct __pyx_obj_7
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2027
+/* "netCDF4/_netCDF4.pyx":2099
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
  * 
  *     def delncattr(self, name):             # <<<<<<<<<<<<<<
  *         """
- * delncattr(self,name,value)
+ * **`delncattr(self,name,value)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_53delncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_52delncattr[] = "\ndelncattr(self,name,value)\n\ndelete a netCDF dataset or group attribute.  Only use if you need to delete a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_52delncattr[] = "\n**`delncattr(self,name,value)`**\n\ndelete a netCDF dataset or group attribute.  Use if you need to delete a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_53delncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -14945,38 +15083,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("delncattr", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2036
+  /* "netCDF4/_netCDF4.pyx":2108
  *         cdef char *attname
  *         cdef int ierr
  *         bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *         attname = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2037
+  /* "netCDF4/_netCDF4.pyx":2109
  *         cdef int ierr
  *         bytestr = _strencode(name)
  *         attname = bytestr             # <<<<<<<<<<<<<<
  *         if self.data_model != 'NETCDF4': self._redef()
  *         ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_attname = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":2038
+  /* "netCDF4/_netCDF4.pyx":2110
  *         bytestr = _strencode(name)
  *         attname = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()             # <<<<<<<<<<<<<<
  *         ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
  *         if self.data_model != 'NETCDF4': self._enddef()
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_redef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -14989,10 +15127,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -15001,7 +15139,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2039
+  /* "netCDF4/_netCDF4.pyx":2111
  *         attname = bytestr
  *         if self.data_model != 'NETCDF4': self._redef()
  *         ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)             # <<<<<<<<<<<<<<
@@ -15010,16 +15148,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
  */
   __pyx_v_ierr = nc_del_att(__pyx_v_self->_grpid, NC_GLOBAL, __pyx_v_attname);
 
-  /* "netCDF4/_netCDF4.pyx":2040
+  /* "netCDF4/_netCDF4.pyx":2112
  *         if self.data_model != 'NETCDF4': self._redef()
  *         ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
  *         if self.data_model != 'NETCDF4': self._enddef()             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_self->data_model, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_enddef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -15032,10 +15170,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -15044,7 +15182,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
   }
   __pyx_L4:;
 
-  /* "netCDF4/_netCDF4.pyx":2041
+  /* "netCDF4/_netCDF4.pyx":2113
  *         ierr = nc_del_att(self._grpid, NC_GLOBAL, attname)
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -15054,7 +15192,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":2042
+    /* "netCDF4/_netCDF4.pyx":2114
  *         if self.data_model != 'NETCDF4': self._enddef()
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -15062,28 +15200,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
  *     def __setattr__(self,name,value):
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2027
+  /* "netCDF4/_netCDF4.pyx":2099
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
  * 
  *     def delncattr(self, name):             # <<<<<<<<<<<<<<
  *         """
- * delncattr(self,name,value)
+ * **`delncattr(self,name,value)`**
  */
 
   /* function exit code */
@@ -15102,7 +15240,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_52delncattr(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2044
+/* "netCDF4/_netCDF4.pyx":2116
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
@@ -15138,28 +15276,28 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_54__setattr__(struct __pyx_obj_7
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__setattr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2047
+  /* "netCDF4/_netCDF4.pyx":2119
  *         # if name in _private_atts, it is stored at the python
  *         # level and not in the netCDF file.
  *         if name not in _private_atts:             # <<<<<<<<<<<<<<
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":2048
+    /* "netCDF4/_netCDF4.pyx":2120
  *         # level and not in the netCDF file.
  *         if name not in _private_atts:
  *             self.setncattr(name, value)             # <<<<<<<<<<<<<<
  *         elif not name.endswith('__'):
  *             if hasattr(self,name):
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setncattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setncattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     __pyx_t_6 = 0;
@@ -15173,7 +15311,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_54__setattr__(struct __pyx_obj_7
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -15184,7 +15322,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_54__setattr__(struct __pyx_obj_7
     __Pyx_INCREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -15192,47 +15330,47 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_54__setattr__(struct __pyx_obj_7
     goto __pyx_L3;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2049
+  /* "netCDF4/_netCDF4.pyx":2121
  *         if name not in _private_atts:
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
  *             if hasattr(self,name):
  *                 raise AttributeError(
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_2 = ((!__pyx_t_3) != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2050
+    /* "netCDF4/_netCDF4.pyx":2122
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):
  *             if hasattr(self,name):             # <<<<<<<<<<<<<<
  *                 raise AttributeError(
  *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
  */
-    __pyx_t_2 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":2052
+      /* "netCDF4/_netCDF4.pyx":2124
  *             if hasattr(self,name):
  *                 raise AttributeError(
  *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
  *             else:
  *                 self.__dict__[name]=value
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_1 = PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PySequence_Tuple(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_name);
@@ -15240,48 +15378,48 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_54__setattr__(struct __pyx_obj_7
       PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2051
+      /* "netCDF4/_netCDF4.pyx":2123
  *         elif not name.endswith('__'):
  *             if hasattr(self,name):
  *                 raise AttributeError(             # <<<<<<<<<<<<<<
  *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
  *             else:
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2054
+      /* "netCDF4/_netCDF4.pyx":2126
  *             "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
  *             else:
  *                 self.__dict__[name]=value             # <<<<<<<<<<<<<<
  * 
  *     def __getattr__(self,name):
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
     goto __pyx_L3;
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2044
+  /* "netCDF4/_netCDF4.pyx":2116
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
@@ -15304,7 +15442,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_54__setattr__(struct __pyx_obj_7
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2056
+/* "netCDF4/_netCDF4.pyx":2128
  *                 self.__dict__[name]=value
  * 
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
@@ -15347,54 +15485,54 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
   __Pyx_RefNannySetupContext("__getattr__", 0);
   __Pyx_INCREF(__pyx_v_name);
 
-  /* "netCDF4/_netCDF4.pyx":2059
+  /* "netCDF4/_netCDF4.pyx":2131
  *         # if name in _private_atts, it is stored at the python
  *         # level and not in the netCDF file.
  *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_4) {
   } else {
     __pyx_t_1 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_1 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2061
+    /* "netCDF4/_netCDF4.pyx":2133
  *         if name.startswith('__') and name.endswith('__'):
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':             # <<<<<<<<<<<<<<
  *                 names = self.ncattrs()
  *                 values = []
  */
-    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2062
+      /* "netCDF4/_netCDF4.pyx":2134
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':
  *                 names = self.ncattrs()             # <<<<<<<<<<<<<<
  *                 values = []
  *                 for name in names:
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -15407,29 +15545,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
         }
       }
       if (__pyx_t_5) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_v_names = __pyx_t_2;
       __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2063
+      /* "netCDF4/_netCDF4.pyx":2135
  *             if name == '__dict__':
  *                 names = self.ncattrs()
  *                 values = []             # <<<<<<<<<<<<<<
  *                 for name in names:
  *                     values.append(_get_att(self, NC_GLOBAL, name))
  */
-      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_v_values = ((PyObject*)__pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2064
+      /* "netCDF4/_netCDF4.pyx":2136
  *                 names = self.ncattrs()
  *                 values = []
  *                 for name in names:             # <<<<<<<<<<<<<<
@@ -15440,25 +15578,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
         __pyx_t_2 = __pyx_v_names; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
         __pyx_t_7 = NULL;
       } else {
-        __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       for (;;) {
         if (likely(!__pyx_t_7)) {
           if (likely(PyList_CheckExact(__pyx_t_2))) {
             if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -15467,7 +15605,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -15476,19 +15614,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
         __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2065
+        /* "netCDF4/_netCDF4.pyx":2137
  *                 values = []
  *                 for name in names:
  *                     values.append(_get_att(self, NC_GLOBAL, name))             # <<<<<<<<<<<<<<
  *                 return OrderedDict(zip(names,values))
  *             else:
  */
-        __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__get_att(((PyObject *)__pyx_v_self), NC_GLOBAL, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_values, __pyx_t_3); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_values, __pyx_t_3); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2064
+        /* "netCDF4/_netCDF4.pyx":2136
  *                 names = self.ncattrs()
  *                 values = []
  *                 for name in names:             # <<<<<<<<<<<<<<
@@ -15498,7 +15636,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
       }
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2066
+      /* "netCDF4/_netCDF4.pyx":2138
  *                 for name in names:
  *                     values.append(_get_att(self, NC_GLOBAL, name))
  *                 return OrderedDict(zip(names,values))             # <<<<<<<<<<<<<<
@@ -15506,9 +15644,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
  *                 raise AttributeError
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_10 = NULL;
       __pyx_t_6 = 0;
@@ -15522,7 +15660,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_10) {
         PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL;
@@ -15533,7 +15671,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
       __Pyx_INCREF(__pyx_v_values);
       PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_v_values);
       __Pyx_GIVEREF(__pyx_v_values);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -15548,17 +15686,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_11);
         PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
         PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_5);
         __pyx_t_5 = 0;
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
@@ -15569,7 +15707,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2068
+      /* "netCDF4/_netCDF4.pyx":2140
  *                 return OrderedDict(zip(names,values))
  *             else:
  *                 raise AttributeError             # <<<<<<<<<<<<<<
@@ -15577,25 +15715,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
  *             return self.__dict__[name]
  */
       __Pyx_Raise(__pyx_builtin_AttributeError, 0, 0, 0);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2069
+  /* "netCDF4/_netCDF4.pyx":2141
  *             else:
  *                 raise AttributeError
  *         elif name in _private_atts:             # <<<<<<<<<<<<<<
  *             return self.__dict__[name]
  *         else:
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2070
+    /* "netCDF4/_netCDF4.pyx":2142
  *                 raise AttributeError
  *         elif name in _private_atts:
  *             return self.__dict__[name]             # <<<<<<<<<<<<<<
@@ -15603,9 +15741,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
  *             return self.getncattr(name)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2070; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2142; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_r = __pyx_t_3;
@@ -15614,7 +15752,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2072
+    /* "netCDF4/_netCDF4.pyx":2144
  *             return self.__dict__[name]
  *         else:
  *             return self.getncattr(name)             # <<<<<<<<<<<<<<
@@ -15622,7 +15760,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
  *     def renameAttribute(self, oldname, newname):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_11 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -15635,16 +15773,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
       }
     }
     if (!__pyx_t_11) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL;
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -15654,7 +15792,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2056
+  /* "netCDF4/_netCDF4.pyx":2128
  *                 self.__dict__[name]=value
  * 
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
@@ -15681,17 +15819,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_56__getattr__(struct __pyx
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2074
+/* "netCDF4/_netCDF4.pyx":2146
  *             return self.getncattr(name)
  * 
  *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameAttribute(self, oldname, newname)
+ * **`renameAttribute(self, oldname, newname)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59renameAttribute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_58renameAttribute[] = "\nrenameAttribute(self, oldname, newname)\n\nrename a L{Dataset} or L{Group} attribute named C{oldname} to C{newname}.";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_58renameAttribute[] = "\n**`renameAttribute(self, oldname, newname)`**\n\nrename a `netCDF4.Dataset` or `netCDF4.Group` attribute named `oldname` to `newname`.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59renameAttribute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_oldname = 0;
   PyObject *__pyx_v_newname = 0;
@@ -15721,11 +15859,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59renameAttribute(PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameAttribute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameAttribute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -15738,7 +15876,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_59renameAttribute(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2074; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -15767,51 +15905,51 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_58renameAttribute(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("renameAttribute", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2082
+  /* "netCDF4/_netCDF4.pyx":2154
  *         cdef char *oldnamec
  *         cdef char *newnamec
  *         bytestr = _strencode(oldname)             # <<<<<<<<<<<<<<
  *         oldnamec = bytestr
  *         bytestr = _strencode(newname)
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_oldname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_oldname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2083
+  /* "netCDF4/_netCDF4.pyx":2155
  *         cdef char *newnamec
  *         bytestr = _strencode(oldname)
  *         oldnamec = bytestr             # <<<<<<<<<<<<<<
  *         bytestr = _strencode(newname)
  *         newnamec = bytestr
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_oldnamec = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":2084
+  /* "netCDF4/_netCDF4.pyx":2156
  *         bytestr = _strencode(oldname)
  *         oldnamec = bytestr
  *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
  *         newnamec = bytestr
  *         ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2085
+  /* "netCDF4/_netCDF4.pyx":2157
  *         oldnamec = bytestr
  *         bytestr = _strencode(newname)
  *         newnamec = bytestr             # <<<<<<<<<<<<<<
  *         ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
  *         if ierr != NC_NOERR:
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_newnamec = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":2086
+  /* "netCDF4/_netCDF4.pyx":2158
  *         bytestr = _strencode(newname)
  *         newnamec = bytestr
  *         ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)             # <<<<<<<<<<<<<<
@@ -15820,7 +15958,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_58renameAttribute(struct _
  */
   __pyx_v_ierr = nc_rename_att(__pyx_v_self->_grpid, NC_GLOBAL, __pyx_v_oldnamec, __pyx_v_newnamec);
 
-  /* "netCDF4/_netCDF4.pyx":2087
+  /* "netCDF4/_netCDF4.pyx":2159
  *         newnamec = bytestr
  *         ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -15830,7 +15968,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_58renameAttribute(struct _
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":2088
+    /* "netCDF4/_netCDF4.pyx":2160
  *         ierr = nc_rename_att(self._grpid, NC_GLOBAL, oldnamec, newnamec)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -15838,28 +15976,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_58renameAttribute(struct _
  *     def renameGroup(self, oldname, newname):
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2074
+  /* "netCDF4/_netCDF4.pyx":2146
  *             return self.getncattr(name)
  * 
  *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameAttribute(self, oldname, newname)
+ * **`renameAttribute(self, oldname, newname)`**
  */
 
   /* function exit code */
@@ -15877,17 +16015,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_58renameAttribute(struct _
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2090
+/* "netCDF4/_netCDF4.pyx":2162
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def renameGroup(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameGroup(self, oldname, newname)
+ * **`renameGroup(self, oldname, newname)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61renameGroup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_60renameGroup[] = "\nrenameGroup(self, oldname, newname)\n\nrename a L{Group} named C{oldname} to C{newname} (requires netcdf >= 4.3.1).";
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_60renameGroup[] = "\n**`renameGroup(self, oldname, newname)`**\n\nrename a `netCDF4.Group` named `oldname` to `newname` (requires netcdf >= 4.3.1).";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61renameGroup(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   CYTHON_UNUSED PyObject *__pyx_v_oldname = 0;
   CYTHON_UNUSED PyObject *__pyx_v_newname = 0;
@@ -15917,11 +16055,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61renameGroup(PyObject *__
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("renameGroup", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("renameGroup", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameGroup") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameGroup") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -15934,7 +16072,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_61renameGroup(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("renameGroup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("renameGroup", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dataset.renameGroup", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -15958,7 +16096,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_60renameGroup(CYTHON_UNUSE
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("renameGroup", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2112
+  /* "netCDF4/_netCDF4.pyx":2184
  *             self.groups[newname] = grp
  *         ELSE:
  *             msg = """             # <<<<<<<<<<<<<<
@@ -15968,31 +16106,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_60renameGroup(CYTHON_UNUSE
   __Pyx_INCREF(__pyx_kp_s_renameGroup_method_not_enabled);
   __pyx_v_msg = __pyx_kp_s_renameGroup_method_not_enabled;
 
-  /* "netCDF4/_netCDF4.pyx":2115
+  /* "netCDF4/_netCDF4.pyx":2187
  * renameGroup method not enabled.  To enable, install Cython, make sure you have
  * version 4.3.1 or higher of the netcdf C lib, and rebuild netcdf4-python."""
  *             raise ValueError(msg)             # <<<<<<<<<<<<<<
  * 
  *     def set_auto_maskandscale(self, value):
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_msg);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_msg);
   __Pyx_GIVEREF(__pyx_v_msg);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_Raise(__pyx_t_2, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":2090
+  /* "netCDF4/_netCDF4.pyx":2162
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def renameGroup(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameGroup(self, oldname, newname)
+ * **`renameGroup(self, oldname, newname)`**
  */
 
   /* function exit code */
@@ -16007,17 +16145,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_60renameGroup(CYTHON_UNUSE
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2117
+/* "netCDF4/_netCDF4.pyx":2189
  *             raise ValueError(msg)
  * 
  *     def set_auto_maskandscale(self, value):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_maskandscale(self, True_or_False)
+ * **`set_auto_maskandscale(self, True_or_False)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_63set_auto_maskandscale(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale[] = "\nset_auto_maskandscale(self, True_or_False)\n\nCall L{set_auto_maskandscale} for all variables contained in this L{Dataset} or\nL{Group}, as well as for all variables in all its subgroups.\n\nB{Parameters}:\n\nB{C{True_or_False}} - Boolean determining if automatic conversion to masked arrays\nand variable scaling shall be applied for all variables.\n\nB{Notes}:\n\nCalling this function only affects existing v [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale[] = "\n**`set_auto_maskandscale(self, True_or_False)`**\n\nCall `netCDF4.Variable.set_auto_maskandscale` for all variables contained in this `netCDF4.Dataset` or\n`netCDF4.Group`, as well as for all variables in all its subgroups.\n\n**`True_or_False`**: Boolean determining if automatic conversion to masked arrays\nand variable scaling shall be applied for all variables.\n\n***Note***: Calling this function only af [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_63set_auto_maskandscale(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -16053,14 +16191,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_auto_maskandscale", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2135
+  /* "netCDF4/_netCDF4.pyx":2203
  *         """
  * 
  *         for var in self.variables.values():             # <<<<<<<<<<<<<<
  *             var.set_auto_maskandscale(value)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16073,10 +16211,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -16084,9 +16222,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -16094,16 +16232,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -16112,7 +16250,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -16121,14 +16259,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
     __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2136
+    /* "netCDF4/_netCDF4.pyx":2204
  * 
  *         for var in self.variables.values():
  *             var.set_auto_maskandscale(value)             # <<<<<<<<<<<<<<
  * 
  *         for groups in _walk_grps(self):
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_maskandscale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_maskandscale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -16141,23 +16279,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_value);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_value);
       __Pyx_GIVEREF(__pyx_v_value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2135
+    /* "netCDF4/_netCDF4.pyx":2203
  *         """
  * 
  *         for var in self.variables.values():             # <<<<<<<<<<<<<<
@@ -16167,14 +16305,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2138
+  /* "netCDF4/_netCDF4.pyx":2206
  *             var.set_auto_maskandscale(value)
  * 
  *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
  *             for group in groups:
  *                 for var in group.variables.values():
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
@@ -16187,16 +16325,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -16205,9 +16343,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -16215,16 +16353,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -16233,7 +16371,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -16242,7 +16380,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
     __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2139
+    /* "netCDF4/_netCDF4.pyx":2207
  * 
  *         for groups in _walk_grps(self):
  *             for group in groups:             # <<<<<<<<<<<<<<
@@ -16253,25 +16391,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
       __pyx_t_2 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
     } else {
-      __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_9)) {
         if (likely(PyList_CheckExact(__pyx_t_2))) {
           if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -16280,7 +16418,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -16289,16 +16427,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
       __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2140
+      /* "netCDF4/_netCDF4.pyx":2208
  *         for groups in _walk_grps(self):
  *             for group in groups:
  *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
  *                     var.set_auto_maskandscale(value)
  * 
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -16312,10 +16450,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -16323,9 +16461,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
         __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
         __pyx_t_11 = NULL;
       } else {
-        __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       for (;;) {
@@ -16333,16 +16471,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
           if (likely(PyList_CheckExact(__pyx_t_6))) {
             if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -16351,7 +16489,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -16360,14 +16498,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
         __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2141
+        /* "netCDF4/_netCDF4.pyx":2209
  *             for group in groups:
  *                 for var in group.variables.values():
  *                     var.set_auto_maskandscale(value)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_maskandscale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_maskandscale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_12 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -16380,23 +16518,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
           }
         }
         if (!__pyx_t_12) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
         } else {
-          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_13);
           PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
           __Pyx_INCREF(__pyx_v_value);
           PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_value);
           __Pyx_GIVEREF(__pyx_v_value);
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
         }
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2140
+        /* "netCDF4/_netCDF4.pyx":2208
  *         for groups in _walk_grps(self):
  *             for group in groups:
  *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
@@ -16406,7 +16544,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
       }
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2139
+      /* "netCDF4/_netCDF4.pyx":2207
  * 
  *         for groups in _walk_grps(self):
  *             for group in groups:             # <<<<<<<<<<<<<<
@@ -16416,7 +16554,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2138
+    /* "netCDF4/_netCDF4.pyx":2206
  *             var.set_auto_maskandscale(value)
  * 
  *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
@@ -16426,12 +16564,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2117
+  /* "netCDF4/_netCDF4.pyx":2189
  *             raise ValueError(msg)
  * 
  *     def set_auto_maskandscale(self, value):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_maskandscale(self, True_or_False)
+ * **`set_auto_maskandscale(self, True_or_False)`**
  */
 
   /* function exit code */
@@ -16456,17 +16594,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_62set_auto_maskandscale(st
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2144
+/* "netCDF4/_netCDF4.pyx":2212
  * 
  * 
  *     def set_auto_mask(self, value):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_mask(self, True_or_False)
+ * **`set_auto_mask(self, True_or_False)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_65set_auto_mask(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask[] = "\nset_auto_mask(self, True_or_False)\n\nCall L{set_auto_mask} for all variables contained in this L{Dataset} or\nL{Group}, as well as for all variables in all its subgroups.\n\nB{Parameters}:\n\nB{C{True_or_False}} - Boolean determining if automatic conversion to masked arrays\nshall be applied for all variables.\n\nB{Notes}:\n\nCalling this function only affects existing variables. Variables created\nafter calling th [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask[] = "\n**`set_auto_mask(self, True_or_False)`**\n\nCall `netCDF4.Variable.set_auto_mask` for all variables contained in this `netCDF4.Dataset` or\n`netCDF4.Group`, as well as for all variables in all its subgroups.\n\n**`True_or_False`**: Boolean determining if automatic conversion to masked arrays\nshall be applied for all variables.\n\n***Note***: Calling this function only affects existing variables. Variables created\n [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_65set_auto_mask(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -16502,14 +16640,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_auto_mask", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2162
+  /* "netCDF4/_netCDF4.pyx":2226
  *         """
  * 
  *         for var in self.variables.values():             # <<<<<<<<<<<<<<
  *             var.set_auto_mask(value)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16522,10 +16660,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -16533,9 +16671,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -16543,16 +16681,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -16561,7 +16699,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -16570,14 +16708,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
     __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2163
+    /* "netCDF4/_netCDF4.pyx":2227
  * 
  *         for var in self.variables.values():
  *             var.set_auto_mask(value)             # <<<<<<<<<<<<<<
  * 
  *         for groups in _walk_grps(self):
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_mask); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_mask); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -16590,23 +16728,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_value);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_value);
       __Pyx_GIVEREF(__pyx_v_value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2162
+    /* "netCDF4/_netCDF4.pyx":2226
  *         """
  * 
  *         for var in self.variables.values():             # <<<<<<<<<<<<<<
@@ -16616,14 +16754,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2165
+  /* "netCDF4/_netCDF4.pyx":2229
  *             var.set_auto_mask(value)
  * 
  *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
  *             for group in groups:
  *                 for var in group.variables.values():
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
@@ -16636,16 +16774,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -16654,9 +16792,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -16664,16 +16802,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -16682,7 +16820,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -16691,7 +16829,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
     __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2166
+    /* "netCDF4/_netCDF4.pyx":2230
  * 
  *         for groups in _walk_grps(self):
  *             for group in groups:             # <<<<<<<<<<<<<<
@@ -16702,25 +16840,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
       __pyx_t_2 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
     } else {
-      __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_9)) {
         if (likely(PyList_CheckExact(__pyx_t_2))) {
           if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -16729,7 +16867,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -16738,16 +16876,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
       __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2167
+      /* "netCDF4/_netCDF4.pyx":2231
  *         for groups in _walk_grps(self):
  *             for group in groups:
  *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
  *                     var.set_auto_mask(value)
  * 
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -16761,10 +16899,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -16772,9 +16910,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
         __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
         __pyx_t_11 = NULL;
       } else {
-        __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       for (;;) {
@@ -16782,16 +16920,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
           if (likely(PyList_CheckExact(__pyx_t_6))) {
             if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -16800,7 +16938,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -16809,14 +16947,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
         __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2168
+        /* "netCDF4/_netCDF4.pyx":2232
  *             for group in groups:
  *                 for var in group.variables.values():
  *                     var.set_auto_mask(value)             # <<<<<<<<<<<<<<
  * 
  *     def set_auto_scale(self, value):
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_mask); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_mask); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_12 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -16829,23 +16967,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
           }
         }
         if (!__pyx_t_12) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
         } else {
-          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_13);
           PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
           __Pyx_INCREF(__pyx_v_value);
           PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_value);
           __Pyx_GIVEREF(__pyx_v_value);
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
         }
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2167
+        /* "netCDF4/_netCDF4.pyx":2231
  *         for groups in _walk_grps(self):
  *             for group in groups:
  *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
@@ -16855,7 +16993,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
       }
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2166
+      /* "netCDF4/_netCDF4.pyx":2230
  * 
  *         for groups in _walk_grps(self):
  *             for group in groups:             # <<<<<<<<<<<<<<
@@ -16865,7 +17003,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2165
+    /* "netCDF4/_netCDF4.pyx":2229
  *             var.set_auto_mask(value)
  * 
  *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
@@ -16875,12 +17013,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2144
+  /* "netCDF4/_netCDF4.pyx":2212
  * 
  * 
  *     def set_auto_mask(self, value):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_mask(self, True_or_False)
+ * **`set_auto_mask(self, True_or_False)`**
  */
 
   /* function exit code */
@@ -16905,17 +17043,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_64set_auto_mask(struct __p
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2170
+/* "netCDF4/_netCDF4.pyx":2234
  *                     var.set_auto_mask(value)
  * 
  *     def set_auto_scale(self, value):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_scale(self, True_or_False)
+ * **`set_auto_scale(self, True_or_False)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_67set_auto_scale(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale[] = "\nset_auto_scale(self, True_or_False)\n\nCall L{set_auto_scale} for all variables contained in this L{Dataset} or\nL{Group}, as well as for all variables in all its subgroups.\n\nB{Parameters}:\n\nB{C{True_or_False}} - Boolean determining if automatic variable scaling\nshall be applied for all variables.\n\nB{Notes}:\n\nCalling this function only affects existing variables. Variables created\nafter calling this funct [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale[] = "\n**`set_auto_scale(self, True_or_False)`**\n\nCall `netCDF4.Variable.set_auto_scale` for all variables contained in this `netCDF4.Dataset` or\n`netCDF4.Group`, as well as for all variables in all its subgroups.\n\n**`True_or_False`**: Boolean determining if automatic variable scaling\nshall be applied for all variables.\n\n***Note***: Calling this function only affects existing variables. Variables created\nafter ca [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_67set_auto_scale(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -16951,14 +17089,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_auto_scale", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2188
+  /* "netCDF4/_netCDF4.pyx":2248
  *         """
  * 
  *         for var in self.variables.values():             # <<<<<<<<<<<<<<
  *             var.set_auto_scale(value)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->variables, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16971,10 +17109,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -16982,9 +17120,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -16992,16 +17130,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -17010,7 +17148,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -17019,14 +17157,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
     __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2189
+    /* "netCDF4/_netCDF4.pyx":2249
  * 
  *         for var in self.variables.values():
  *             var.set_auto_scale(value)             # <<<<<<<<<<<<<<
  * 
  *         for groups in _walk_grps(self):
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_scale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_scale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -17039,23 +17177,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_value);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_value);
       __Pyx_GIVEREF(__pyx_v_value);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2188
+    /* "netCDF4/_netCDF4.pyx":2248
  *         """
  * 
  *         for var in self.variables.values():             # <<<<<<<<<<<<<<
@@ -17065,14 +17203,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2191
+  /* "netCDF4/_netCDF4.pyx":2251
  *             var.set_auto_scale(value)
  * 
  *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
  *             for group in groups:
  *                 for var in group.variables.values():
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
@@ -17085,16 +17223,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -17103,9 +17241,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -17113,16 +17251,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -17131,7 +17269,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -17140,7 +17278,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
     __Pyx_XDECREF_SET(__pyx_v_groups, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2192
+    /* "netCDF4/_netCDF4.pyx":2252
  * 
  *         for groups in _walk_grps(self):
  *             for group in groups:             # <<<<<<<<<<<<<<
@@ -17151,25 +17289,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
       __pyx_t_2 = __pyx_v_groups; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
     } else {
-      __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_groups); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_9)) {
         if (likely(PyList_CheckExact(__pyx_t_2))) {
           if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -17178,7 +17316,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -17187,16 +17325,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
       __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2193
+      /* "netCDF4/_netCDF4.pyx":2253
  *         for groups in _walk_grps(self):
  *             for group in groups:
  *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
  *                     var.set_auto_scale(value)
  * 
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -17210,10 +17348,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -17221,9 +17359,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
         __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
         __pyx_t_11 = NULL;
       } else {
-        __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       for (;;) {
@@ -17231,16 +17369,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
           if (likely(PyList_CheckExact(__pyx_t_6))) {
             if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -17249,7 +17387,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -17258,14 +17396,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
         __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2194
+        /* "netCDF4/_netCDF4.pyx":2254
  *             for group in groups:
  *                 for var in group.variables.values():
  *                     var.set_auto_scale(value)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_scale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_set_auto_scale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_12 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -17278,23 +17416,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
           }
         }
         if (!__pyx_t_12) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
         } else {
-          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_13);
           PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
           __Pyx_INCREF(__pyx_v_value);
           PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_value);
           __Pyx_GIVEREF(__pyx_v_value);
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
         }
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2193
+        /* "netCDF4/_netCDF4.pyx":2253
  *         for groups in _walk_grps(self):
  *             for group in groups:
  *                 for var in group.variables.values():             # <<<<<<<<<<<<<<
@@ -17304,7 +17442,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
       }
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2192
+      /* "netCDF4/_netCDF4.pyx":2252
  * 
  *         for groups in _walk_grps(self):
  *             for group in groups:             # <<<<<<<<<<<<<<
@@ -17314,7 +17452,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2191
+    /* "netCDF4/_netCDF4.pyx":2251
  *             var.set_auto_scale(value)
  * 
  *         for groups in _walk_grps(self):             # <<<<<<<<<<<<<<
@@ -17324,12 +17462,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2170
+  /* "netCDF4/_netCDF4.pyx":2234
  *                     var.set_auto_mask(value)
  * 
  *     def set_auto_scale(self, value):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_scale(self, True_or_False)
+ * **`set_auto_scale(self, True_or_False)`**
  */
 
   /* function exit code */
@@ -17354,8 +17492,8 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_66set_auto_scale(struct __
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1471
- * L{Group} instance. C{None} for a the root group or L{Dataset} instance"""
+/* "netCDF4/_netCDF4.pyx":1438
+ * """
  *     cdef object __weakref__
  *     cdef public int _grpid             # <<<<<<<<<<<<<<
  *     cdef public int _isopen
@@ -17384,7 +17522,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_6_grpid___get__(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -17422,7 +17560,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6_grpid_2__set__(struct __pyx_ob
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_grpid = __pyx_t_1;
 
   /* function exit code */
@@ -17436,12 +17574,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6_grpid_2__set__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1472
+/* "netCDF4/_netCDF4.pyx":1439
  *     cdef object __weakref__
  *     cdef public int _grpid
  *     cdef public int _isopen             # <<<<<<<<<<<<<<
  *     cdef public groups, dimensions, variables, disk_format, path, parent,\
- *     file_format, data_model, cmptypes, vltypes, keepweakref, \
+ *     file_format, data_model, cmptypes, vltypes, __orthogonal_indexing__, \
  */
 
 /* Python wrapper */
@@ -17466,7 +17604,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_7_isopen___get__(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_isopen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_isopen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -17504,7 +17642,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7_isopen_2__set__(struct __pyx_o
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_isopen = __pyx_t_1;
 
   /* function exit code */
@@ -17518,12 +17656,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7_isopen_2__set__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1473
+/* "netCDF4/_netCDF4.pyx":1440
  *     cdef public int _grpid
  *     cdef public int _isopen
  *     cdef public groups, dimensions, variables, disk_format, path, parent,\             # <<<<<<<<<<<<<<
- *     file_format, data_model, cmptypes, vltypes, keepweakref, \
- *     __orthogonal_indexing__
+ *     file_format, data_model, cmptypes, vltypes, __orthogonal_indexing__, \
+ *     keepweakref
  */
 
 /* Python wrapper */
@@ -18048,12 +18186,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_6parent_4__del__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1474
+/* "netCDF4/_netCDF4.pyx":1441
  *     cdef public int _isopen
  *     cdef public groups, dimensions, variables, disk_format, path, parent,\
- *     file_format, data_model, cmptypes, vltypes, keepweakref, \             # <<<<<<<<<<<<<<
- *     __orthogonal_indexing__
- * 
+ *     file_format, data_model, cmptypes, vltypes, __orthogonal_indexing__, \             # <<<<<<<<<<<<<<
+ *     keepweakref
+ *     # Docstrings for class variables (used by pdoc).
  */
 
 /* Python wrapper */
@@ -18405,25 +18543,25 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_7vltypes_4__del__(struct __pyx_o
 }
 
 /* Python wrapper */
-static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
+  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
+static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->keepweakref);
-  __pyx_r = __pyx_v_self->keepweakref;
+  __Pyx_INCREF(__pyx_v_self->__orthogonal_indexing__);
+  __pyx_r = __pyx_v_self->__orthogonal_indexing__;
   goto __pyx_L0;
 
   /* function exit code */
@@ -18434,27 +18572,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(stru
 }
 
 /* Python wrapper */
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
+static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__set__", 0);
   __Pyx_INCREF(__pyx_v_value);
   __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->keepweakref);
-  __Pyx_DECREF(__pyx_v_self->keepweakref);
-  __pyx_v_self->keepweakref = __pyx_v_value;
+  __Pyx_GOTREF(__pyx_v_self->__orthogonal_indexing__);
+  __Pyx_DECREF(__pyx_v_self->__orthogonal_indexing__);
+  __pyx_v_self->__orthogonal_indexing__ = __pyx_v_value;
 
   /* function exit code */
   __pyx_r = 0;
@@ -18463,27 +18601,27 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(struct __
 }
 
 /* Python wrapper */
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(PyObject *__pyx_v_self) {
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(PyObject *__pyx_v_self) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
+  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
+static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__del__", 0);
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->keepweakref);
-  __Pyx_DECREF(__pyx_v_self->keepweakref);
-  __pyx_v_self->keepweakref = Py_None;
+  __Pyx_GOTREF(__pyx_v_self->__orthogonal_indexing__);
+  __Pyx_DECREF(__pyx_v_self->__orthogonal_indexing__);
+  __pyx_v_self->__orthogonal_indexing__ = Py_None;
 
   /* function exit code */
   __pyx_r = 0;
@@ -18491,34 +18629,34 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(struct __
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":1475
+/* "netCDF4/_netCDF4.pyx":1442
  *     cdef public groups, dimensions, variables, disk_format, path, parent,\
- *     file_format, data_model, cmptypes, vltypes, keepweakref, \
- *     __orthogonal_indexing__             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
+ *     file_format, data_model, cmptypes, vltypes, __orthogonal_indexing__, \
+ *     keepweakref             # <<<<<<<<<<<<<<
+ *     # Docstrings for class variables (used by pdoc).
+ *     __pdoc__['Dataset.dimensions']=\
  */
 
 /* Python wrapper */
-static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(PyObject *__pyx_v_self) {
+static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
+  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing_____get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
+static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref___get__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_self->__orthogonal_indexing__);
-  __pyx_r = __pyx_v_self->__orthogonal_indexing__;
+  __Pyx_INCREF(__pyx_v_self->keepweakref);
+  __pyx_r = __pyx_v_self->keepweakref;
   goto __pyx_L0;
 
   /* function exit code */
@@ -18529,27 +18667,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___
 }
 
 /* Python wrapper */
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self), ((PyObject *)__pyx_v_value));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
+static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_2__set__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self, PyObject *__pyx_v_value) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__set__", 0);
   __Pyx_INCREF(__pyx_v_value);
   __Pyx_GIVEREF(__pyx_v_value);
-  __Pyx_GOTREF(__pyx_v_self->__orthogonal_indexing__);
-  __Pyx_DECREF(__pyx_v_self->__orthogonal_indexing__);
-  __pyx_v_self->__orthogonal_indexing__ = __pyx_v_value;
+  __Pyx_GOTREF(__pyx_v_self->keepweakref);
+  __Pyx_DECREF(__pyx_v_self->keepweakref);
+  __pyx_v_self->keepweakref = __pyx_v_value;
 
   /* function exit code */
   __pyx_r = 0;
@@ -18558,27 +18696,27 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___2__set
 }
 
 /* Python wrapper */
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(PyObject *__pyx_v_self); /*proto*/
-static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(PyObject *__pyx_v_self) {
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(PyObject *__pyx_v_self) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
+  __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_v_self));
 
   /* function exit code */
   __Pyx_RefNannyFinishContext();
   return __pyx_r;
 }
 
-static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
+static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_11keepweakref_4__del__(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *__pyx_v_self) {
   int __pyx_r;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__del__", 0);
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
-  __Pyx_GOTREF(__pyx_v_self->__orthogonal_indexing__);
-  __Pyx_DECREF(__pyx_v_self->__orthogonal_indexing__);
-  __pyx_v_self->__orthogonal_indexing__ = Py_None;
+  __Pyx_GOTREF(__pyx_v_self->keepweakref);
+  __Pyx_DECREF(__pyx_v_self->keepweakref);
+  __pyx_v_self->keepweakref = Py_None;
 
   /* function exit code */
   __pyx_r = 0;
@@ -18586,16 +18724,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___4__del
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2225
- * variables are available to a L{Group} instance (except the C{close}
- * method)."""
+/* "netCDF4/_netCDF4.pyx":2276
+ *     __pdoc__['Group.name']=\
+ *     """A string describing the name of the `netCDF4.Group`."""
  *     def __init__(self, parent, name, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef int ierr
- *         cdef char *groupname
+ *         """
+ *         **`__init__(self, parent, name)`**
  */
 
 /* Python wrapper */
 static int __pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_7netCDF4_8_netCDF4_5Group___init__[] = "\n        **`__init__(self, parent, name)`**\n        `netCDF4.Group` constructor.\n        \n        **`parent`**: `netCDF4.Group` instance for the parent group.  If being created\n        in the root group, use a `netCDF4.Dataset` instance.\n        \n        **`name`**: - Name of the group.\n\n        ***Note***: `netCDF4.Group` instances should be created using the\n        `netCDF4.Dataset.createGroup` method of a `netCDF [...]
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__;
+#endif
 static int __pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_parent = 0;
   PyObject *__pyx_v_name = 0;
@@ -18628,11 +18770,11 @@ static int __pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__(PyObject *__pyx_v_self,
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2225; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2225; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -18645,7 +18787,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_5Group_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2225; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("netCDF4._netCDF4.Group.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -18682,7 +18824,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2229
+  /* "netCDF4/_netCDF4.pyx":2293
  *         cdef char *groupname
  *         # flag to indicate that Variables in this Group support orthogonal indexing.
  *         self.__orthogonal_indexing__ = True             # <<<<<<<<<<<<<<
@@ -18695,14 +18837,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   __Pyx_DECREF(__pyx_v_self->__pyx_base.__orthogonal_indexing__);
   __pyx_v_self->__pyx_base.__orthogonal_indexing__ = Py_True;
 
-  /* "netCDF4/_netCDF4.pyx":2231
+  /* "netCDF4/_netCDF4.pyx":2295
  *         self.__orthogonal_indexing__ = True
  *         # set data_model and file_format attributes.
  *         self.data_model = parent.data_model             # <<<<<<<<<<<<<<
  *         self.file_format = parent.file_format
  *         # full path to Group.
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->__pyx_base.data_model);
@@ -18710,14 +18852,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   __pyx_v_self->__pyx_base.data_model = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2232
+  /* "netCDF4/_netCDF4.pyx":2296
  *         # set data_model and file_format attributes.
  *         self.data_model = parent.data_model
  *         self.file_format = parent.file_format             # <<<<<<<<<<<<<<
  *         # full path to Group.
  *         self.path = posixpath.join(parent.path, name)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_file_format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_file_format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->__pyx_base.file_format);
@@ -18725,19 +18867,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   __pyx_v_self->__pyx_base.file_format = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2234
+  /* "netCDF4/_netCDF4.pyx":2298
  *         self.file_format = parent.file_format
  *         # full path to Group.
  *         self.path = posixpath.join(parent.path, name)             # <<<<<<<<<<<<<<
  *         # parent group.
  *         self.parent = parent
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_posixpath); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = NULL;
   __pyx_t_5 = 0;
@@ -18751,7 +18893,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       __pyx_t_5 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_4) {
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -18762,7 +18904,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_name);
   __Pyx_GIVEREF(__pyx_v_name);
   __pyx_t_2 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -18772,7 +18914,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   __pyx_v_self->__pyx_base.path = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2236
+  /* "netCDF4/_netCDF4.pyx":2300
  *         self.path = posixpath.join(parent.path, name)
  *         # parent group.
  *         self.parent = parent             # <<<<<<<<<<<<<<
@@ -18785,14 +18927,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   __Pyx_DECREF(__pyx_v_self->__pyx_base.parent);
   __pyx_v_self->__pyx_base.parent = __pyx_v_parent;
 
-  /* "netCDF4/_netCDF4.pyx":2238
+  /* "netCDF4/_netCDF4.pyx":2302
  *         self.parent = parent
  *         # propagate weak reference setting from parent.
  *         self.keepweakref = parent.keepweakref             # <<<<<<<<<<<<<<
  *         if 'id' in kwargs:
  *             self._grpid = kwargs['id']
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_keepweakref); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_keepweakref); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->__pyx_base.keepweakref);
@@ -18800,38 +18942,38 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   __pyx_v_self->__pyx_base.keepweakref = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2239
+  /* "netCDF4/_netCDF4.pyx":2303
  *         # propagate weak reference setting from parent.
  *         self.keepweakref = parent.keepweakref
  *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
  *             self._grpid = kwargs['id']
  *             # get compound and vlen types in this Group.
  */
-  __pyx_t_7 = (__Pyx_PyDict_Contains(__pyx_n_s_id, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__Pyx_PyDict_Contains(__pyx_n_s_id, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":2240
+    /* "netCDF4/_netCDF4.pyx":2304
  *         self.keepweakref = parent.keepweakref
  *         if 'id' in kwargs:
  *             self._grpid = kwargs['id']             # <<<<<<<<<<<<<<
  *             # get compound and vlen types in this Group.
  *             self.cmptypes, self.vltypes = _get_types(self)
  */
-    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_id); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_id); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2304; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_v_self->__pyx_base._grpid = __pyx_t_9;
 
-    /* "netCDF4/_netCDF4.pyx":2242
+    /* "netCDF4/_netCDF4.pyx":2306
  *             self._grpid = kwargs['id']
  *             # get compound and vlen types in this Group.
  *             self.cmptypes, self.vltypes = _get_types(self)             # <<<<<<<<<<<<<<
  *             # get dimensions in this Group.
  *             self.dimensions = _get_dims(self)
  */
-    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_types(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_types(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
       PyObject* sequence = __pyx_t_1;
@@ -18843,7 +18985,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -18856,15 +18998,15 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       __Pyx_INCREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_6);
       #else
-      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_10 = Py_TYPE(__pyx_t_2)->tp_iternext;
@@ -18872,7 +19014,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       __Pyx_GOTREF(__pyx_t_3);
       index = 1; __pyx_t_6 = __pyx_t_10(__pyx_t_2); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_6);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_2), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_2), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_10 = NULL;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       goto __pyx_L5_unpacking_done;
@@ -18880,7 +19022,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_10 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L5_unpacking_done:;
     }
     __Pyx_GIVEREF(__pyx_t_3);
@@ -18894,14 +19036,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_v_self->__pyx_base.vltypes = __pyx_t_6;
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2244
+    /* "netCDF4/_netCDF4.pyx":2308
  *             self.cmptypes, self.vltypes = _get_types(self)
  *             # get dimensions in this Group.
  *             self.dimensions = _get_dims(self)             # <<<<<<<<<<<<<<
  *             # get variables in this Group.
  *             self.variables = _get_vars(self)
  */
-    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_dims(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_dims(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->__pyx_base.dimensions);
@@ -18909,14 +19051,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_v_self->__pyx_base.dimensions = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2246
+    /* "netCDF4/_netCDF4.pyx":2310
  *             self.dimensions = _get_dims(self)
  *             # get variables in this Group.
  *             self.variables = _get_vars(self)             # <<<<<<<<<<<<<<
  *             # get groups in this Group.
  *             self.groups = _get_grps(self)
  */
-    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_vars(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_vars(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->__pyx_base.variables);
@@ -18924,14 +19066,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_v_self->__pyx_base.variables = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2248
+    /* "netCDF4/_netCDF4.pyx":2312
  *             self.variables = _get_vars(self)
  *             # get groups in this Group.
  *             self.groups = _get_grps(self)             # <<<<<<<<<<<<<<
  *         else:
  *             bytestr = _strencode(name)
  */
-    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_grps(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_grps(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_self->__pyx_base.groups);
@@ -18942,42 +19084,42 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2250
+    /* "netCDF4/_netCDF4.pyx":2314
  *             self.groups = _get_grps(self)
  *         else:
  *             bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *             groupname = bytestr
  *             ierr = nc_def_grp(parent._grpid, groupname, &self._grpid)
  */
-    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_bytestr = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2251
+    /* "netCDF4/_netCDF4.pyx":2315
  *         else:
  *             bytestr = _strencode(name)
  *             groupname = bytestr             # <<<<<<<<<<<<<<
  *             ierr = nc_def_grp(parent._grpid, groupname, &self._grpid)
  *             if ierr != NC_NOERR:
  */
-    __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_groupname = __pyx_t_11;
 
-    /* "netCDF4/_netCDF4.pyx":2252
+    /* "netCDF4/_netCDF4.pyx":2316
  *             bytestr = _strencode(name)
  *             groupname = bytestr
  *             ierr = nc_def_grp(parent._grpid, groupname, &self._grpid)             # <<<<<<<<<<<<<<
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_parent, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_v_ierr = nc_def_grp(__pyx_t_9, __pyx_v_groupname, (&__pyx_v_self->__pyx_base._grpid));
 
-    /* "netCDF4/_netCDF4.pyx":2253
+    /* "netCDF4/_netCDF4.pyx":2317
  *             groupname = bytestr
  *             ierr = nc_def_grp(parent._grpid, groupname, &self._grpid)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -18987,7 +19129,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_t_8 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":2254
+      /* "netCDF4/_netCDF4.pyx":2318
  *             ierr = nc_def_grp(parent._grpid, groupname, &self._grpid)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -18995,30 +19137,30 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
  *             self.vltypes = OrderedDict()
  */
       __pyx_t_11 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":2255
+    /* "netCDF4/_netCDF4.pyx":2319
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             self.cmptypes = OrderedDict()             # <<<<<<<<<<<<<<
  *             self.vltypes = OrderedDict()
  *             self.dimensions = OrderedDict()
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_3 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
@@ -19031,10 +19173,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       }
     }
     if (__pyx_t_3) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -19044,14 +19186,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_v_self->__pyx_base.cmptypes = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2256
+    /* "netCDF4/_netCDF4.pyx":2320
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             self.cmptypes = OrderedDict()
  *             self.vltypes = OrderedDict()             # <<<<<<<<<<<<<<
  *             self.dimensions = OrderedDict()
  *             self.variables = OrderedDict()
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_3 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
@@ -19064,10 +19206,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       }
     }
     if (__pyx_t_3) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -19077,14 +19219,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_v_self->__pyx_base.vltypes = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2257
+    /* "netCDF4/_netCDF4.pyx":2321
  *             self.cmptypes = OrderedDict()
  *             self.vltypes = OrderedDict()
  *             self.dimensions = OrderedDict()             # <<<<<<<<<<<<<<
  *             self.variables = OrderedDict()
  *             self.groups = OrderedDict()
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_3 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
@@ -19097,10 +19239,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       }
     }
     if (__pyx_t_3) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -19110,14 +19252,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_v_self->__pyx_base.dimensions = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2258
+    /* "netCDF4/_netCDF4.pyx":2322
  *             self.vltypes = OrderedDict()
  *             self.dimensions = OrderedDict()
  *             self.variables = OrderedDict()             # <<<<<<<<<<<<<<
  *             self.groups = OrderedDict()
  * 
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_3 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
@@ -19130,10 +19272,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       }
     }
     if (__pyx_t_3) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -19143,14 +19285,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
     __pyx_v_self->__pyx_base.variables = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2259
+    /* "netCDF4/_netCDF4.pyx":2323
  *             self.dimensions = OrderedDict()
  *             self.variables = OrderedDict()
  *             self.groups = OrderedDict()             # <<<<<<<<<<<<<<
  * 
  *     def close(self):
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_3 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
@@ -19163,10 +19305,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
       }
     }
     if (__pyx_t_3) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -19178,12 +19320,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2225
- * variables are available to a L{Group} instance (except the C{close}
- * method)."""
+  /* "netCDF4/_netCDF4.pyx":2276
+ *     __pdoc__['Group.name']=\
+ *     """A string describing the name of the `netCDF4.Group`."""
  *     def __init__(self, parent, name, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef int ierr
- *         cdef char *groupname
+ *         """
+ *         **`__init__(self, parent, name)`**
  */
 
   /* function exit code */
@@ -19203,17 +19345,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group___init__(struct __pyx_obj_7netCDF4
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2261
+/* "netCDF4/_netCDF4.pyx":2325
  *             self.groups = OrderedDict()
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
  *         """
- * close(self)
+ * **`close(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5Group_3close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_5Group_2close[] = "\nclose(self)\n\noverrides L{Dataset} close method which does not apply to L{Group}\ninstances, raises IOError.";
+static char __pyx_doc_7netCDF4_8_netCDF4_5Group_2close[] = "\n**`close(self)`**\n\noverrides `netCDF4.Dataset` close method which does not apply to `netCDF4.Group`\ninstances, raises IOError.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_5Group_3close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -19234,25 +19376,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_2close(CYTHON_UNUSED struct
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2267
- * overrides L{Dataset} close method which does not apply to L{Group}
+  /* "netCDF4/_netCDF4.pyx":2331
+ * overrides `netCDF4.Dataset` close method which does not apply to `netCDF4.Group`
  * instances, raises IOError."""
- *         raise IOError('cannot close a L{Group} (only applies to Dataset)')             # <<<<<<<<<<<<<<
+ *         raise IOError('cannot close a `netCDF4.Group` (only applies to Dataset)')             # <<<<<<<<<<<<<<
  * 
  *     def _getname(self):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":2261
+  /* "netCDF4/_netCDF4.pyx":2325
  *             self.groups = OrderedDict()
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
  *         """
- * close(self)
+ * **`close(self)`**
  */
 
   /* function exit code */
@@ -19265,8 +19407,8 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_2close(CYTHON_UNUSED struct
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2269
- *         raise IOError('cannot close a L{Group} (only applies to Dataset)')
+/* "netCDF4/_netCDF4.pyx":2333
+ *         raise IOError('cannot close a `netCDF4.Group` (only applies to Dataset)')
  * 
  *     def _getname(self):             # <<<<<<<<<<<<<<
  *         # private method to get name associated with instance.
@@ -19305,7 +19447,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_getname", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2273
+  /* "netCDF4/_netCDF4.pyx":2337
  *         cdef int err
  *         cdef char namstring[NC_MAX_NAME+1]
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -19319,7 +19461,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2274
+        /* "netCDF4/_netCDF4.pyx":2338
  *         cdef char namstring[NC_MAX_NAME+1]
  *         with nogil:
  *             ierr = nc_inq_grpname(self._grpid, namstring)             # <<<<<<<<<<<<<<
@@ -19329,7 +19471,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
         __pyx_v_ierr = nc_inq_grpname(__pyx_v_self->__pyx_base._grpid, __pyx_v_namstring);
       }
 
-      /* "netCDF4/_netCDF4.pyx":2273
+      /* "netCDF4/_netCDF4.pyx":2337
  *         cdef int err
  *         cdef char namstring[NC_MAX_NAME+1]
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -19347,7 +19489,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2275
+  /* "netCDF4/_netCDF4.pyx":2339
  *         with nogil:
  *             ierr = nc_inq_grpname(self._grpid, namstring)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -19357,7 +19499,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2276
+    /* "netCDF4/_netCDF4.pyx":2340
  *             ierr = nc_inq_grpname(self._grpid, namstring)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -19365,23 +19507,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
  * 
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2277
+  /* "netCDF4/_netCDF4.pyx":2341
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         return namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
@@ -19389,14 +19531,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
  *     property name:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_7 = NULL;
   __pyx_t_8 = 0;
@@ -19410,7 +19552,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
       __pyx_t_8 = 1;
     }
   }
-  __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   if (__pyx_t_7) {
     PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -19421,7 +19563,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
   __Pyx_GIVEREF(__pyx_t_6);
   __pyx_t_4 = 0;
   __pyx_t_6 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -19429,8 +19571,8 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2269
- *         raise IOError('cannot close a L{Group} (only applies to Dataset)')
+  /* "netCDF4/_netCDF4.pyx":2333
+ *         raise IOError('cannot close a `netCDF4.Group` (only applies to Dataset)')
  * 
  *     def _getname(self):             # <<<<<<<<<<<<<<
  *         # private method to get name associated with instance.
@@ -19453,7 +19595,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4_getname(struct __pyx_obj_7
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2281
+/* "netCDF4/_netCDF4.pyx":2345
  *     property name:
  *         """string name of Group instance"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -19485,7 +19627,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4name___get__(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2282
+  /* "netCDF4/_netCDF4.pyx":2346
  *         """string name of Group instance"""
  *         def __get__(self):
  *             return self._getname()             # <<<<<<<<<<<<<<
@@ -19493,7 +19635,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4name___get__(struct __pyx_o
  *             raise AttributeError("name cannot be altered")
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -19506,10 +19648,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4name___get__(struct __pyx_o
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -19517,7 +19659,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4name___get__(struct __pyx_o
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2281
+  /* "netCDF4/_netCDF4.pyx":2345
  *     property name:
  *         """string name of Group instance"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -19538,7 +19680,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_5Group_4name___get__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2283
+/* "netCDF4/_netCDF4.pyx":2347
  *         def __get__(self):
  *             return self._getname()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -19568,20 +19710,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group_4name_2__set__(CYTHON_UNUSED struc
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2284
+  /* "netCDF4/_netCDF4.pyx":2348
  *             return self._getname()
  *         def __set__(self,value):
  *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":2283
+  /* "netCDF4/_netCDF4.pyx":2347
  *         def __get__(self):
  *             return self._getname()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -19598,16 +19740,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_5Group_4name_2__set__(CYTHON_UNUSED struc
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2319
- *     cdef public _data_model, _name, _grp
+/* "netCDF4/_netCDF4.pyx":2373
+ *     `netCDF4.Variable` instance with `netCDF4.Dataset.createVariable`."""
  * 
  *     def __init__(self, grp, name, size=None, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef int ierr
- *         cdef char *dimname
+ *         """
+ *         **`__init__(self, group, name, size=None)`**
  */
 
 /* Python wrapper */
 static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_7netCDF4_8_netCDF4_9Dimension___init__[] = "\n        **`__init__(self, group, name, size=None)`**\n\n        `netCDF4.Dimension` constructor.\n\n        **`group`**: `netCDF4.Group` instance to associate with dimension.\n        \n        **`name`**: Name of the dimension.\n        \n        **`size`**: Size of the dimension. `None` or 0 means unlimited. (Default `None`).\n\n        ***Note***: `netCDF4.Dimension` instances should be created using the\n        `net [...]
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__;
+#endif
 static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_grp = 0;
   PyObject *__pyx_v_name = 0;
@@ -19643,7 +19789,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__(PyObject *__pyx_v_se
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2373; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -19652,7 +19798,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2373; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -19669,7 +19815,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_9Dimension_1__init__(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2373; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("netCDF4._netCDF4.Dimension.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -19705,42 +19851,42 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2323
+  /* "netCDF4/_netCDF4.pyx":2392
  *         cdef char *dimname
  *         cdef size_t lendim
  *         self._grpid = grp._grpid             # <<<<<<<<<<<<<<
  *         # make a weakref to group to avoid circular ref (issue 218)
  *         # keep strong reference the default behaviour (issue 251)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_self->_grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":2326
+  /* "netCDF4/_netCDF4.pyx":2395
  *         # make a weakref to group to avoid circular ref (issue 218)
  *         # keep strong reference the default behaviour (issue 251)
  *         if grp.keepweakref:             # <<<<<<<<<<<<<<
  *             self._grp = weakref.proxy(grp)
  *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_keepweakref); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_keepweakref); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":2327
+    /* "netCDF4/_netCDF4.pyx":2396
  *         # keep strong reference the default behaviour (issue 251)
  *         if grp.keepweakref:
  *             self._grp = weakref.proxy(grp)             # <<<<<<<<<<<<<<
  *         else:
  *             self._grp = grp
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_weakref); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_weakref); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_proxy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_proxy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -19754,16 +19900,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_grp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_grp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_grp);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_grp);
       __Pyx_GIVEREF(__pyx_v_grp);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -19777,7 +19923,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2329
+    /* "netCDF4/_netCDF4.pyx":2398
  *             self._grp = weakref.proxy(grp)
  *         else:
  *             self._grp = grp             # <<<<<<<<<<<<<<
@@ -19792,14 +19938,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2330
+  /* "netCDF4/_netCDF4.pyx":2399
  *         else:
  *             self._grp = grp
  *         self._data_model = grp.data_model             # <<<<<<<<<<<<<<
  *         self._name = name
  *         if 'id' in kwargs:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_data_model);
@@ -19807,7 +19953,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
   __pyx_v_self->_data_model = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2331
+  /* "netCDF4/_netCDF4.pyx":2400
  *             self._grp = grp
  *         self._data_model = grp.data_model
  *         self._name = name             # <<<<<<<<<<<<<<
@@ -19820,56 +19966,56 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
   __Pyx_DECREF(__pyx_v_self->_name);
   __pyx_v_self->_name = __pyx_v_name;
 
-  /* "netCDF4/_netCDF4.pyx":2332
+  /* "netCDF4/_netCDF4.pyx":2401
  *         self._data_model = grp.data_model
  *         self._name = name
  *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
  *             self._dimid = kwargs['id']
  *         else:
  */
-  __pyx_t_3 = (__Pyx_PyDict_Contains(__pyx_n_s_id, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyDict_Contains(__pyx_n_s_id, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = (__pyx_t_3 != 0);
   if (__pyx_t_7) {
 
-    /* "netCDF4/_netCDF4.pyx":2333
+    /* "netCDF4/_netCDF4.pyx":2402
  *         self._name = name
  *         if 'id' in kwargs:
  *             self._dimid = kwargs['id']             # <<<<<<<<<<<<<<
  *         else:
  *             bytestr = _strencode(name)
  */
-    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_id); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2333; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_id); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2402; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_v_self->_dimid = __pyx_t_2;
     goto __pyx_L4;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2335
+    /* "netCDF4/_netCDF4.pyx":2404
  *             self._dimid = kwargs['id']
  *         else:
  *             bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *             dimname = bytestr
  *             if size is not None:
  */
-    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_bytestr = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2336
+    /* "netCDF4/_netCDF4.pyx":2405
  *         else:
  *             bytestr = _strencode(name)
  *             dimname = bytestr             # <<<<<<<<<<<<<<
  *             if size is not None:
  *                 lendim = size
  */
-    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_dimname = __pyx_t_8;
 
-    /* "netCDF4/_netCDF4.pyx":2337
+    /* "netCDF4/_netCDF4.pyx":2406
  *             bytestr = _strencode(name)
  *             dimname = bytestr
  *             if size is not None:             # <<<<<<<<<<<<<<
@@ -19880,20 +20026,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
     __pyx_t_3 = (__pyx_t_7 != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":2338
+      /* "netCDF4/_netCDF4.pyx":2407
  *             dimname = bytestr
  *             if size is not None:
  *                 lendim = size             # <<<<<<<<<<<<<<
  *             else:
  *                 lendim = NC_UNLIMITED
  */
-      __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_v_lendim = __pyx_t_9;
       goto __pyx_L5;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2340
+      /* "netCDF4/_netCDF4.pyx":2409
  *                 lendim = size
  *             else:
  *                 lendim = NC_UNLIMITED             # <<<<<<<<<<<<<<
@@ -19904,19 +20050,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
     }
     __pyx_L5:;
 
-    /* "netCDF4/_netCDF4.pyx":2341
+    /* "netCDF4/_netCDF4.pyx":2410
  *             else:
  *                 lendim = NC_UNLIMITED
  *             if grp.data_model != 'NETCDF4': grp._redef()             # <<<<<<<<<<<<<<
  *             ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
  *             if grp.data_model != 'NETCDF4': grp._enddef()
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_3) {
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -19929,10 +20075,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
         }
       }
       if (__pyx_t_6) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -19941,7 +20087,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
     }
     __pyx_L6:;
 
-    /* "netCDF4/_netCDF4.pyx":2342
+    /* "netCDF4/_netCDF4.pyx":2411
  *                 lendim = NC_UNLIMITED
  *             if grp.data_model != 'NETCDF4': grp._redef()
  *             ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)             # <<<<<<<<<<<<<<
@@ -19950,19 +20096,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
  */
     __pyx_v_ierr = nc_def_dim(__pyx_v_self->_grpid, __pyx_v_dimname, __pyx_v_lendim, (&__pyx_v_self->_dimid));
 
-    /* "netCDF4/_netCDF4.pyx":2343
+    /* "netCDF4/_netCDF4.pyx":2412
  *             if grp.data_model != 'NETCDF4': grp._redef()
  *             ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
  *             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_3) {
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -19975,10 +20121,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
         }
       }
       if (__pyx_t_6) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -19987,7 +20133,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
     }
     __pyx_L7:;
 
-    /* "netCDF4/_netCDF4.pyx":2344
+    /* "netCDF4/_netCDF4.pyx":2413
  *             ierr = nc_def_dim(self._grpid, dimname, lendim, &self._dimid)
  *             if grp.data_model != 'NETCDF4': grp._enddef()
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -19997,7 +20143,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
     __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":2345
+      /* "netCDF4/_netCDF4.pyx":2414
  *             if grp.data_model != 'NETCDF4': grp._enddef()
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -20005,30 +20151,30 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
  *     def _getname(self):
  */
       __pyx_t_8 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_8, 0, strlen(__pyx_t_8), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_8, 0, strlen(__pyx_t_8), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
   }
   __pyx_L4:;
 
-  /* "netCDF4/_netCDF4.pyx":2319
- *     cdef public _data_model, _name, _grp
+  /* "netCDF4/_netCDF4.pyx":2373
+ *     `netCDF4.Variable` instance with `netCDF4.Dataset.createVariable`."""
  * 
  *     def __init__(self, grp, name, size=None, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef int ierr
- *         cdef char *dimname
+ *         """
+ *         **`__init__(self, group, name, size=None)`**
  */
 
   /* function exit code */
@@ -20047,7 +20193,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension___init__(struct __pyx_obj_7net
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2347
+/* "netCDF4/_netCDF4.pyx":2416
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def _getname(self):             # <<<<<<<<<<<<<<
@@ -20089,20 +20235,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_getname", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2351
+  /* "netCDF4/_netCDF4.pyx":2420
  *         cdef int err, _grpid
  *         cdef char namstring[NC_MAX_NAME+1]
  *         _grpid = self._grp._grpid             # <<<<<<<<<<<<<<
  *         with nogil:
  *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":2352
+  /* "netCDF4/_netCDF4.pyx":2421
  *         cdef char namstring[NC_MAX_NAME+1]
  *         _grpid = self._grp._grpid
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -20116,7 +20262,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2353
+        /* "netCDF4/_netCDF4.pyx":2422
  *         _grpid = self._grp._grpid
  *         with nogil:
  *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)             # <<<<<<<<<<<<<<
@@ -20126,7 +20272,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
         __pyx_v_ierr = nc_inq_dimname(__pyx_v__grpid, __pyx_v_self->_dimid, __pyx_v_namstring);
       }
 
-      /* "netCDF4/_netCDF4.pyx":2352
+      /* "netCDF4/_netCDF4.pyx":2421
  *         cdef char namstring[NC_MAX_NAME+1]
  *         _grpid = self._grp._grpid
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -20144,7 +20290,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2354
+  /* "netCDF4/_netCDF4.pyx":2423
  *         with nogil:
  *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -20154,7 +20300,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":2355
+    /* "netCDF4/_netCDF4.pyx":2424
  *             ierr = nc_inq_dimname(_grpid, self._dimid, namstring)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -20162,23 +20308,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
  * 
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2356
+  /* "netCDF4/_netCDF4.pyx":2425
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         return namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
@@ -20186,14 +20332,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
  *     property name:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_8 = NULL;
   __pyx_t_9 = 0;
@@ -20207,7 +20353,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   if (__pyx_t_8) {
     PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -20218,7 +20364,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
   __Pyx_GIVEREF(__pyx_t_7);
   __pyx_t_5 = 0;
   __pyx_t_7 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -20226,7 +20372,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2347
+  /* "netCDF4/_netCDF4.pyx":2416
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def _getname(self):             # <<<<<<<<<<<<<<
@@ -20250,7 +20396,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_2_getname(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2360
+/* "netCDF4/_netCDF4.pyx":2429
  *     property name:
  *         """string name of Dimension instance"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -20282,7 +20428,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name___get__(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2361
+  /* "netCDF4/_netCDF4.pyx":2430
  *         """string name of Dimension instance"""
  *         def __get__(self):
  *             return self._getname()             # <<<<<<<<<<<<<<
@@ -20290,7 +20436,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name___get__(struct __p
  *             raise AttributeError("name cannot be altered")
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -20303,10 +20449,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name___get__(struct __p
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -20314,7 +20460,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name___get__(struct __p
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2360
+  /* "netCDF4/_netCDF4.pyx":2429
  *     property name:
  *         """string name of Dimension instance"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -20335,7 +20481,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name___get__(struct __p
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2362
+/* "netCDF4/_netCDF4.pyx":2431
  *         def __get__(self):
  *             return self._getname()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -20365,20 +20511,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name_2__set__(CYTHON_UNUSED s
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2363
+  /* "netCDF4/_netCDF4.pyx":2432
  *             return self._getname()
  *         def __set__(self,value):
  *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":2362
+  /* "netCDF4/_netCDF4.pyx":2431
  *         def __get__(self):
  *             return self._getname()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -20395,7 +20541,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4name_2__set__(CYTHON_UNUSED s
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2365
+/* "netCDF4/_netCDF4.pyx":2434
  *             raise AttributeError("name cannot be altered")
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -20430,20 +20576,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2366
+  /* "netCDF4/_netCDF4.pyx":2435
  * 
  *     def __repr__(self):
  *         if python3:             # <<<<<<<<<<<<<<
  *             return self.__unicode__()
  *         else:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2367
+    /* "netCDF4/_netCDF4.pyx":2436
  *     def __repr__(self):
  *         if python3:
  *             return self.__unicode__()             # <<<<<<<<<<<<<<
@@ -20451,7 +20597,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
  *             return unicode(self).encode(default_encoding)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -20464,10 +20610,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -20477,7 +20623,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2369
+    /* "netCDF4/_netCDF4.pyx":2438
  *             return self.__unicode__()
  *         else:
  *             return unicode(self).encode(default_encoding)             # <<<<<<<<<<<<<<
@@ -20485,18 +20631,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
  *     def __unicode__(self):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -20509,17 +20655,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
       __pyx_t_4 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -20529,7 +20675,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2365
+  /* "netCDF4/_netCDF4.pyx":2434
  *             raise AttributeError("name cannot be altered")
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -20552,7 +20698,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_4__repr__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2371
+/* "netCDF4/_netCDF4.pyx":2440
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -20587,7 +20733,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__unicode__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2372
+  /* "netCDF4/_netCDF4.pyx":2441
  * 
  *     def __unicode__(self):
  *         if not dir(self._grp):             # <<<<<<<<<<<<<<
@@ -20596,15 +20742,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
  */
   __pyx_t_1 = __pyx_v_self->_grp;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_Dir(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Dir(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = ((!__pyx_t_3) != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2373
+    /* "netCDF4/_netCDF4.pyx":2442
  *     def __unicode__(self):
  *         if not dir(self._grp):
  *             return 'Dimension object no longer valid'             # <<<<<<<<<<<<<<
@@ -20617,14 +20763,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2374
+  /* "netCDF4/_netCDF4.pyx":2443
  *         if not dir(self._grp):
  *             return 'Dimension object no longer valid'
  *         if self.isunlimited():             # <<<<<<<<<<<<<<
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))
  *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -20637,18 +20783,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2375
+    /* "netCDF4/_netCDF4.pyx":2444
  *             return 'Dimension object no longer valid'
  *         if self.isunlimited():
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))             # <<<<<<<<<<<<<<
@@ -20656,12 +20802,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_v_self->_name);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self->_name);
@@ -20669,10 +20815,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
     PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_name_s_size_s, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_name_s_size_s, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20682,7 +20828,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2377
+    /* "netCDF4/_netCDF4.pyx":2446
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))
  *         else:
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))             # <<<<<<<<<<<<<<
@@ -20690,12 +20836,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
  *     def __len__(self):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_5 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyObject_Length(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_self->_name);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_name);
@@ -20703,10 +20849,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_name_s_size_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_name_s_size_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyNumber_Add(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_Add(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -20715,7 +20861,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2371
+  /* "netCDF4/_netCDF4.pyx":2440
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -20736,11 +20882,11 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6__unicode__(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2379
+/* "netCDF4/_netCDF4.pyx":2448
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
- *         # len(L{Dimension} instance) returns current size of dimension
+ *         # len(`netCDF4.Dimension` instance) returns current size of dimension
  *         cdef int ierr
  */
 
@@ -20771,7 +20917,7 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__len__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2383
+  /* "netCDF4/_netCDF4.pyx":2452
  *         cdef int ierr
  *         cdef size_t lengthp
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -20785,7 +20931,7 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2384
+        /* "netCDF4/_netCDF4.pyx":2453
  *         cdef size_t lengthp
  *         with nogil:
  *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)             # <<<<<<<<<<<<<<
@@ -20795,7 +20941,7 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
         __pyx_v_ierr = nc_inq_dimlen(__pyx_v_self->_grpid, __pyx_v_self->_dimid, (&__pyx_v_lengthp));
       }
 
-      /* "netCDF4/_netCDF4.pyx":2383
+      /* "netCDF4/_netCDF4.pyx":2452
  *         cdef int ierr
  *         cdef size_t lengthp
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -20813,7 +20959,7 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2385
+  /* "netCDF4/_netCDF4.pyx":2454
  *         with nogil:
  *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -20823,7 +20969,7 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2386
+    /* "netCDF4/_netCDF4.pyx":2455
  *             ierr = nc_inq_dimlen(self._grpid, self._dimid, &lengthp)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -20831,23 +20977,23 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
  * 
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2387
+  /* "netCDF4/_netCDF4.pyx":2456
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         return lengthp             # <<<<<<<<<<<<<<
@@ -20857,11 +21003,11 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
   __pyx_r = __pyx_v_lengthp;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2379
+  /* "netCDF4/_netCDF4.pyx":2448
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
- *         # len(L{Dimension} instance) returns current size of dimension
+ *         # len(`netCDF4.Dimension` instance) returns current size of dimension
  *         cdef int ierr
  */
 
@@ -20876,17 +21022,17 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_9Dimension_8__len__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2389
+/* "netCDF4/_netCDF4.pyx":2458
  *         return lengthp
  * 
  *     def group(self):             # <<<<<<<<<<<<<<
  *         """
- * group(self)
+ * **`group(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_9Dimension_10group[] = "\ngroup(self)\n\nreturn the group that this L{Dimension} is a member of.";
+static char __pyx_doc_7netCDF4_8_netCDF4_9Dimension_10group[] = "\n**`group(self)`**\n\nreturn the group that this `netCDF4.Dimension` is a member of.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_11group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -20903,9 +21049,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_10group(struct __pyx_obj
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("group", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2394
+  /* "netCDF4/_netCDF4.pyx":2463
  * 
- * return the group that this L{Dimension} is a member of."""
+ * return the group that this `netCDF4.Dimension` is a member of."""
  *         return self._grp             # <<<<<<<<<<<<<<
  * 
  *     def isunlimited(self):
@@ -20915,12 +21061,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_10group(struct __pyx_obj
   __pyx_r = __pyx_v_self->_grp;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2389
+  /* "netCDF4/_netCDF4.pyx":2458
  *         return lengthp
  * 
  *     def group(self):             # <<<<<<<<<<<<<<
  *         """
- * group(self)
+ * **`group(self)`**
  */
 
   /* function exit code */
@@ -20930,17 +21076,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_10group(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2396
+/* "netCDF4/_netCDF4.pyx":2465
  *         return self._grp
  * 
  *     def isunlimited(self):             # <<<<<<<<<<<<<<
  *         """
- * isunlimited(self)
+ * **`isunlimited(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_13isunlimited(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_9Dimension_12isunlimited[] = "\nisunlimited(self)\n\nreturns C{True} if the L{Dimension} instance is unlimited, C{False} otherwise.";
+static char __pyx_doc_7netCDF4_8_netCDF4_9Dimension_12isunlimited[] = "\n**`isunlimited(self)`**\n\nreturns `True` if the `netCDF4.Dimension` instance is unlimited, `False` otherwise.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9Dimension_13isunlimited(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -20977,17 +21123,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("isunlimited", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2403
+  /* "netCDF4/_netCDF4.pyx":2472
  *         cdef int ierr, n, numunlimdims, ndims, nvars, ngatts, xdimid
  *         cdef int unlimdimids[NC_MAX_DIMS]
  *         if self._data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
  *             ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
  *             if ierr != NC_NOERR:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_data_model, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_self->_data_model, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2404
+    /* "netCDF4/_netCDF4.pyx":2473
  *         cdef int unlimdimids[NC_MAX_DIMS]
  *         if self._data_model == 'NETCDF4':
  *             ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)             # <<<<<<<<<<<<<<
@@ -20996,7 +21142,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
  */
     __pyx_v_ierr = nc_inq_unlimdims(__pyx_v_self->_grpid, (&__pyx_v_numunlimdims), NULL);
 
-    /* "netCDF4/_netCDF4.pyx":2405
+    /* "netCDF4/_netCDF4.pyx":2474
  *         if self._data_model == 'NETCDF4':
  *             ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -21006,7 +21152,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
     __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2406
+      /* "netCDF4/_netCDF4.pyx":2475
  *             ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, NULL)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -21014,23 +21160,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
  *                 return False
  */
       __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":2407
+    /* "netCDF4/_netCDF4.pyx":2476
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             if numunlimdims == 0:             # <<<<<<<<<<<<<<
@@ -21040,7 +21186,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
     __pyx_t_1 = ((__pyx_v_numunlimdims == 0) != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2408
+      /* "netCDF4/_netCDF4.pyx":2477
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             if numunlimdims == 0:
  *                 return False             # <<<<<<<<<<<<<<
@@ -21054,7 +21200,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2410
+      /* "netCDF4/_netCDF4.pyx":2479
  *                 return False
  *             else:
  *                 dimid = self._dimid             # <<<<<<<<<<<<<<
@@ -21064,7 +21210,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
       __pyx_t_5 = __pyx_v_self->_dimid;
       __pyx_v_dimid = __pyx_t_5;
 
-      /* "netCDF4/_netCDF4.pyx":2411
+      /* "netCDF4/_netCDF4.pyx":2480
  *             else:
  *                 dimid = self._dimid
  *                 with nogil:             # <<<<<<<<<<<<<<
@@ -21078,7 +21224,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":2412
+            /* "netCDF4/_netCDF4.pyx":2481
  *                 dimid = self._dimid
  *                 with nogil:
  *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)             # <<<<<<<<<<<<<<
@@ -21088,7 +21234,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
             __pyx_v_ierr = nc_inq_unlimdims(__pyx_v_self->_grpid, (&__pyx_v_numunlimdims), __pyx_v_unlimdimids);
           }
 
-          /* "netCDF4/_netCDF4.pyx":2411
+          /* "netCDF4/_netCDF4.pyx":2480
  *             else:
  *                 dimid = self._dimid
  *                 with nogil:             # <<<<<<<<<<<<<<
@@ -21106,7 +21252,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
           }
       }
 
-      /* "netCDF4/_netCDF4.pyx":2413
+      /* "netCDF4/_netCDF4.pyx":2482
  *                 with nogil:
  *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)
  *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -21116,7 +21262,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
       __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":2414
+        /* "netCDF4/_netCDF4.pyx":2483
  *                     ierr = nc_inq_unlimdims(self._grpid, &numunlimdims, unlimdimids)
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -21124,35 +21270,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
  *                 for n from 0 <= n < numunlimdims:
  */
         __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_t_3);
         PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":2415
+      /* "netCDF4/_netCDF4.pyx":2484
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 unlimdim_ids = []             # <<<<<<<<<<<<<<
  *                 for n from 0 <= n < numunlimdims:
  *                     unlimdim_ids.append(unlimdimids[n])
  */
-      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_unlimdim_ids = ((PyObject*)__pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2416
+      /* "netCDF4/_netCDF4.pyx":2485
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 unlimdim_ids = []
  *                 for n from 0 <= n < numunlimdims:             # <<<<<<<<<<<<<<
@@ -21162,34 +21308,34 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
       __pyx_t_5 = __pyx_v_numunlimdims;
       for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_5; __pyx_v_n++) {
 
-        /* "netCDF4/_netCDF4.pyx":2417
+        /* "netCDF4/_netCDF4.pyx":2486
  *                 unlimdim_ids = []
  *                 for n from 0 <= n < numunlimdims:
  *                     unlimdim_ids.append(unlimdimids[n])             # <<<<<<<<<<<<<<
  *                 if dimid in unlimdim_ids:
  *                     return True
  */
-        __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_unlimdimids[__pyx_v_n])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_unlimdimids[__pyx_v_n])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_unlimdim_ids, __pyx_t_3); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_unlimdim_ids, __pyx_t_3); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
 
-      /* "netCDF4/_netCDF4.pyx":2418
+      /* "netCDF4/_netCDF4.pyx":2487
  *                 for n from 0 <= n < numunlimdims:
  *                     unlimdim_ids.append(unlimdimids[n])
  *                 if dimid in unlimdim_ids:             # <<<<<<<<<<<<<<
  *                     return True
  *                 else:
  */
-      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dimid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dimid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_t_3, __pyx_v_unlimdim_ids, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_t_3, __pyx_v_unlimdim_ids, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_7 = (__pyx_t_1 != 0);
       if (__pyx_t_7) {
 
-        /* "netCDF4/_netCDF4.pyx":2419
+        /* "netCDF4/_netCDF4.pyx":2488
  *                     unlimdim_ids.append(unlimdimids[n])
  *                 if dimid in unlimdim_ids:
  *                     return True             # <<<<<<<<<<<<<<
@@ -21203,7 +21349,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2421
+        /* "netCDF4/_netCDF4.pyx":2490
  *                     return True
  *                 else:
  *                     return False             # <<<<<<<<<<<<<<
@@ -21219,7 +21365,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2424
+    /* "netCDF4/_netCDF4.pyx":2493
  *         else: # if not NETCDF4, there is only one unlimited dimension.
  *             # nc_inq_unlimdims only works for NETCDF4.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -21233,7 +21379,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2425
+          /* "netCDF4/_netCDF4.pyx":2494
  *             # nc_inq_unlimdims only works for NETCDF4.
  *             with nogil:
  *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)             # <<<<<<<<<<<<<<
@@ -21243,7 +21389,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
           __pyx_v_ierr = nc_inq(__pyx_v_self->_grpid, (&__pyx_v_ndims), (&__pyx_v_nvars), (&__pyx_v_ngatts), (&__pyx_v_xdimid));
         }
 
-        /* "netCDF4/_netCDF4.pyx":2424
+        /* "netCDF4/_netCDF4.pyx":2493
  *         else: # if not NETCDF4, there is only one unlimited dimension.
  *             # nc_inq_unlimdims only works for NETCDF4.
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -21261,7 +21407,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":2426
+    /* "netCDF4/_netCDF4.pyx":2495
  *             with nogil:
  *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)
  *             if self._dimid == xdimid:             # <<<<<<<<<<<<<<
@@ -21271,7 +21417,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
     __pyx_t_7 = ((__pyx_v_self->_dimid == __pyx_v_xdimid) != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":2427
+      /* "netCDF4/_netCDF4.pyx":2496
  *                 ierr = nc_inq(self._grpid, &ndims, &nvars, &ngatts, &xdimid)
  *             if self._dimid == xdimid:
  *                 return True             # <<<<<<<<<<<<<<
@@ -21285,7 +21431,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2429
+      /* "netCDF4/_netCDF4.pyx":2498
  *                 return True
  *             else:
  *                 return False             # <<<<<<<<<<<<<<
@@ -21299,12 +21445,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
     }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2396
+  /* "netCDF4/_netCDF4.pyx":2465
  *         return self._grp
  * 
  *     def isunlimited(self):             # <<<<<<<<<<<<<<
  *         """
- * isunlimited(self)
+ * **`isunlimited(self)`**
  */
 
   /* function exit code */
@@ -21320,12 +21466,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_12isunlimited(struct __p
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2316
- * C{isunlimited()} method of a L{Dimension} instance can be used to
- * determine if the dimension is unlimited"""
+/* "netCDF4/_netCDF4.pyx":2366
+ * `netCDF4.Dataset.createVariable`.
+ * """
  *     cdef public int _dimid, _grpid             # <<<<<<<<<<<<<<
  *     cdef public _data_model, _name, _grp
- * 
+ *     # Docstrings for class variables (used by pdoc).
  */
 
 /* Python wrapper */
@@ -21350,7 +21496,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_dimid___get__(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_dimid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_dimid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -21388,7 +21534,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_dimid_2__set__(struct __pyx_
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_dimid = __pyx_t_1;
 
   /* function exit code */
@@ -21424,7 +21570,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_grpid___get__(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -21462,7 +21608,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_grpid_2__set__(struct __pyx_
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_grpid = __pyx_t_1;
 
   /* function exit code */
@@ -21476,12 +21622,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_6_grpid_2__set__(struct __pyx_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2317
- * determine if the dimension is unlimited"""
+/* "netCDF4/_netCDF4.pyx":2367
+ * """
  *     cdef public int _dimid, _grpid
  *     cdef public _data_model, _name, _grp             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self, grp, name, size=None, **kwargs):
+ *     # Docstrings for class variables (used by pdoc).
+ *     __pdoc__['Dimension.name']=\
  */
 
 /* Python wrapper */
@@ -21745,8 +21891,8 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp_4__del__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2571
- *     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__
+/* "netCDF4/_netCDF4.pyx":2592
+ *     """The number of stored elements."""
  * 
  *     def __init__(self, grp, name, datatype, dimensions=(), zlib=False,             # <<<<<<<<<<<<<<
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
@@ -21755,6 +21901,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_9Dimension_4_grp_4__del__(struct __pyx_ob
 
 /* Python wrapper */
 static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable___init__[] = "\n        **`__init__(self, group, name, datatype, dimensions=(), zlib=False,\n        complevel=4, shuffle=True, fletcher32=False, contiguous=False,\n        chunksizes=None, endian='native',\n        least_significant_digit=None,fill_value=None)`**\n\n        `netCDF4.Variable` constructor.\n\n        **`group`**: `netCDF4.Group` or `netCDF4.Dataset` instance to associate with variable.\n        \n        **`name`**: Name [...]
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__;
+#endif
 static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_grp = 0;
   PyObject *__pyx_v_name = 0;
@@ -21786,7 +21936,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_sel
     values[4] = ((PyObject *)Py_False);
     values[5] = ((PyObject *)__pyx_int_4);
 
-    /* "netCDF4/_netCDF4.pyx":2572
+    /* "netCDF4/_netCDF4.pyx":2593
  * 
  *     def __init__(self, grp, name, datatype, dimensions=(), zlib=False,
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,             # <<<<<<<<<<<<<<
@@ -21797,23 +21947,23 @@ static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_sel
     values[7] = ((PyObject *)Py_False);
     values[8] = ((PyObject *)Py_False);
 
-    /* "netCDF4/_netCDF4.pyx":2573
+    /* "netCDF4/_netCDF4.pyx":2594
  *     def __init__(self, grp, name, datatype, dimensions=(), zlib=False,
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
  *             chunksizes=None, endian='native', least_significant_digit=None,             # <<<<<<<<<<<<<<
  *             fill_value=None, chunk_cache=None, **kwargs):
- *         cdef int ierr, ndims, icontiguous, ideflate_level, numdims, _grpid
+ *         """
  */
     values[9] = ((PyObject *)Py_None);
     values[10] = ((PyObject *)__pyx_n_s_native);
     values[11] = ((PyObject *)Py_None);
 
-    /* "netCDF4/_netCDF4.pyx":2574
+    /* "netCDF4/_netCDF4.pyx":2595
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
  *             chunksizes=None, endian='native', least_significant_digit=None,
  *             fill_value=None, chunk_cache=None, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef int ierr, ndims, icontiguous, ideflate_level, numdims, _grpid
- *         cdef char *varname
+ *         """
+ *         **`__init__(self, group, name, datatype, dimensions=(), zlib=False,
  */
     values[12] = ((PyObject *)Py_None);
     values[13] = ((PyObject *)Py_None);
@@ -21846,12 +21996,12 @@ static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_sel
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 14, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2571; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 14, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_datatype)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 14, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2571; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 14, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (kw_args > 0) {
@@ -21910,7 +22060,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_sel
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2571; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -21949,7 +22099,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 14, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2571; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 14, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -21958,8 +22108,8 @@ static int __pyx_pw_7netCDF4_8_netCDF4_8Variable_1__init__(PyObject *__pyx_v_sel
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_grp, __pyx_v_name, __pyx_v_datatype, __pyx_v_dimensions, __pyx_v_zlib, __pyx_v_complevel, __pyx_v_shuffle, __pyx_v_fletcher32, __pyx_v_contiguous, __pyx_v_chunksizes, __pyx_v_endian, __pyx_v_least_significant_digit, __pyx_v_fill_value, __pyx_v_chunk_cache, __pyx_v_kwargs);
 
-  /* "netCDF4/_netCDF4.pyx":2571
- *     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__
+  /* "netCDF4/_netCDF4.pyx":2592
+ *     """The number of stored elements."""
  * 
  *     def __init__(self, grp, name, datatype, dimensions=(), zlib=False,             # <<<<<<<<<<<<<<
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
@@ -22018,7 +22168,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_INCREF(__pyx_v_dimensions);
   __Pyx_INCREF(__pyx_v_zlib);
 
-  /* "netCDF4/_netCDF4.pyx":2583
+  /* "netCDF4/_netCDF4.pyx":2694
  *         cdef float preemptionp
  *         # flag to indicate that orthogonal indexing is supported
  *         self.__orthogonal_indexing__ = True             # <<<<<<<<<<<<<<
@@ -22031,18 +22181,18 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_DECREF(__pyx_v_self->__orthogonal_indexing__);
   __pyx_v_self->__orthogonal_indexing__ = Py_True;
 
-  /* "netCDF4/_netCDF4.pyx":2585
+  /* "netCDF4/_netCDF4.pyx":2696
  *         self.__orthogonal_indexing__ = True
  *         # if complevel is set to zero, set zlib to False.
  *         if not complevel:             # <<<<<<<<<<<<<<
  *             zlib = False
  *         # if dimensions is a string, convert to a tuple
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_complevel); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_complevel); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2586
+    /* "netCDF4/_netCDF4.pyx":2697
  *         # if complevel is set to zero, set zlib to False.
  *         if not complevel:
  *             zlib = False             # <<<<<<<<<<<<<<
@@ -22055,44 +22205,44 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2590
+  /* "netCDF4/_netCDF4.pyx":2701
  *         # this prevents a common error that occurs when
  *         # dimensions = 'lat' instead of ('lat',)
  *         if type(dimensions) == str or type(dimensions) == bytes or type(dimensions) == unicode:             # <<<<<<<<<<<<<<
  *             dimensions = dimensions,
  *         self._grpid = grp._grpid
  */
-  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dimensions)), ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dimensions)), ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (!__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dimensions)), ((PyObject *)((PyObject*)(&PyBytes_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dimensions)), ((PyObject *)((PyObject*)(&PyBytes_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (!__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dimensions)), ((PyObject *)((PyObject*)(&PyUnicode_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_dimensions)), ((PyObject *)((PyObject*)(&PyUnicode_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = __pyx_t_1;
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2591
+    /* "netCDF4/_netCDF4.pyx":2702
  *         # dimensions = 'lat' instead of ('lat',)
  *         if type(dimensions) == str or type(dimensions) == bytes or type(dimensions) == unicode:
  *             dimensions = dimensions,             # <<<<<<<<<<<<<<
  *         self._grpid = grp._grpid
  *         # make a weakref to group to avoid circular ref (issue 218)
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_dimensions);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_dimensions);
@@ -22103,42 +22253,42 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L4:;
 
-  /* "netCDF4/_netCDF4.pyx":2592
+  /* "netCDF4/_netCDF4.pyx":2703
  *         if type(dimensions) == str or type(dimensions) == bytes or type(dimensions) == unicode:
  *             dimensions = dimensions,
  *         self._grpid = grp._grpid             # <<<<<<<<<<<<<<
  *         # make a weakref to group to avoid circular ref (issue 218)
  *         # keep strong reference the default behaviour (issue 251)
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_self->_grpid = __pyx_t_4;
 
-  /* "netCDF4/_netCDF4.pyx":2595
+  /* "netCDF4/_netCDF4.pyx":2706
  *         # make a weakref to group to avoid circular ref (issue 218)
  *         # keep strong reference the default behaviour (issue 251)
  *         if grp.keepweakref:             # <<<<<<<<<<<<<<
  *             self._grp = weakref.proxy(grp)
  *         else:
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_keepweakref); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_keepweakref); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2596
+    /* "netCDF4/_netCDF4.pyx":2707
  *         # keep strong reference the default behaviour (issue 251)
  *         if grp.keepweakref:
  *             self._grp = weakref.proxy(grp)             # <<<<<<<<<<<<<<
  *         else:
  *             self._grp = grp
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_weakref); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_weakref); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_proxy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_proxy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_5 = NULL;
@@ -22152,16 +22302,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_grp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_grp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_grp);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_grp);
       __Pyx_GIVEREF(__pyx_v_grp);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
@@ -22175,7 +22325,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2598
+    /* "netCDF4/_netCDF4.pyx":2709
  *             self._grp = weakref.proxy(grp)
  *         else:
  *             self._grp = grp             # <<<<<<<<<<<<<<
@@ -22190,7 +22340,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L8:;
 
-  /* "netCDF4/_netCDF4.pyx":2600
+  /* "netCDF4/_netCDF4.pyx":2711
  *             self._grp = grp
  *         # convert to a real numpy datatype object if necessary.
  *         if (not isinstance(datatype, CompoundType) and \             # <<<<<<<<<<<<<<
@@ -22205,7 +22355,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     goto __pyx_L10_bool_binop_done;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2601
+  /* "netCDF4/_netCDF4.pyx":2712
  *         # convert to a real numpy datatype object if necessary.
  *         if (not isinstance(datatype, CompoundType) and \
  *             not isinstance(datatype, VLType)) and \             # <<<<<<<<<<<<<<
@@ -22220,15 +22370,15 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     goto __pyx_L10_bool_binop_done;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2602
+  /* "netCDF4/_netCDF4.pyx":2713
  *         if (not isinstance(datatype, CompoundType) and \
  *             not isinstance(datatype, VLType)) and \
  *             datatype != str and \             # <<<<<<<<<<<<<<
  *             type(datatype) != numpy.dtype:
  *             datatype = numpy.dtype(datatype)
  */
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_1) {
   } else {
@@ -22236,36 +22386,36 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     goto __pyx_L10_bool_binop_done;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2603
+  /* "netCDF4/_netCDF4.pyx":2714
  *             not isinstance(datatype, VLType)) and \
  *             datatype != str and \
  *             type(datatype) != numpy.dtype:             # <<<<<<<<<<<<<<
  *             datatype = numpy.dtype(datatype)
  *         # convert numpy string dtype with length > 1
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_datatype)), __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_datatype)), __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = __pyx_t_1;
   __pyx_L10_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2604
+    /* "netCDF4/_netCDF4.pyx":2715
  *             datatype != str and \
  *             type(datatype) != numpy.dtype:
  *             datatype = numpy.dtype(datatype)             # <<<<<<<<<<<<<<
  *         # convert numpy string dtype with length > 1
  *         # or any numpy unicode dtype into str
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -22279,16 +22429,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_datatype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_datatype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_datatype);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_datatype);
       __Pyx_GIVEREF(__pyx_v_datatype);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
@@ -22299,19 +22449,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L9:;
 
-  /* "netCDF4/_netCDF4.pyx":2607
+  /* "netCDF4/_netCDF4.pyx":2718
  *         # convert numpy string dtype with length > 1
  *         # or any numpy unicode dtype into str
  *         if (isinstance(datatype, numpy.dtype) and             # <<<<<<<<<<<<<<
  *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
  *               datatype.kind == 'U')):
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_1 = PyObject_IsInstance(__pyx_v_datatype, __pyx_t_7); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_IsInstance(__pyx_v_datatype, __pyx_t_7); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_t_8 = (__pyx_t_1 != 0);
   if (__pyx_t_8) {
@@ -22320,26 +22470,26 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     goto __pyx_L15_bool_binop_done;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2608
+  /* "netCDF4/_netCDF4.pyx":2719
  *         # or any numpy unicode dtype into str
  *         if (isinstance(datatype, numpy.dtype) and
  *             ((datatype.kind == 'S' and datatype.itemsize > 1) or             # <<<<<<<<<<<<<<
  *               datatype.kind == 'U')):
  *             datatype = str
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_kind); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_kind); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   if (!__pyx_t_8) {
     goto __pyx_L17_next_or;
   } else {
   }
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_int_1, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (!__pyx_t_8) {
   } else {
@@ -22348,22 +22498,22 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L17_next_or:;
 
-  /* "netCDF4/_netCDF4.pyx":2609
+  /* "netCDF4/_netCDF4.pyx":2720
  *         if (isinstance(datatype, numpy.dtype) and
  *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
  *               datatype.kind == 'U')):             # <<<<<<<<<<<<<<
  *             datatype = str
  *         # check if endian keyword consistent with datatype specification.
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_kind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_kind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = __pyx_t_8;
   __pyx_L15_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2610
+    /* "netCDF4/_netCDF4.pyx":2721
  *             ((datatype.kind == 'S' and datatype.itemsize > 1) or
  *               datatype.kind == 'U')):
  *             datatype = str             # <<<<<<<<<<<<<<
@@ -22376,26 +22526,26 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L14:;
 
-  /* "netCDF4/_netCDF4.pyx":2612
+  /* "netCDF4/_netCDF4.pyx":2723
  *             datatype = str
  *         # check if endian keyword consistent with datatype specification.
  *         dtype_endian = getattr(datatype,'byteorder',None)             # <<<<<<<<<<<<<<
  *         if dtype_endian == '=': dtype_endian='native'
  *         if dtype_endian == '>': dtype_endian='big'
  */
-  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_datatype, __pyx_n_s_byteorder, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetAttr3(__pyx_v_datatype, __pyx_n_s_byteorder, Py_None); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_dtype_endian = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2613
+  /* "netCDF4/_netCDF4.pyx":2724
  *         # check if endian keyword consistent with datatype specification.
  *         dtype_endian = getattr(datatype,'byteorder',None)
  *         if dtype_endian == '=': dtype_endian='native'             # <<<<<<<<<<<<<<
  *         if dtype_endian == '>': dtype_endian='big'
  *         if dtype_endian == '<': dtype_endian='little'
  */
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
     __Pyx_INCREF(__pyx_n_s_native);
     __Pyx_DECREF_SET(__pyx_v_dtype_endian, __pyx_n_s_native);
@@ -22403,14 +22553,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L19:;
 
-  /* "netCDF4/_netCDF4.pyx":2614
+  /* "netCDF4/_netCDF4.pyx":2725
  *         dtype_endian = getattr(datatype,'byteorder',None)
  *         if dtype_endian == '=': dtype_endian='native'
  *         if dtype_endian == '>': dtype_endian='big'             # <<<<<<<<<<<<<<
  *         if dtype_endian == '<': dtype_endian='little'
  *         if dtype_endian == '|': dtype_endian=None
  */
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__13, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__13, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
     __Pyx_INCREF(__pyx_n_s_big);
     __Pyx_DECREF_SET(__pyx_v_dtype_endian, __pyx_n_s_big);
@@ -22418,14 +22568,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L20:;
 
-  /* "netCDF4/_netCDF4.pyx":2615
+  /* "netCDF4/_netCDF4.pyx":2726
  *         if dtype_endian == '=': dtype_endian='native'
  *         if dtype_endian == '>': dtype_endian='big'
  *         if dtype_endian == '<': dtype_endian='little'             # <<<<<<<<<<<<<<
  *         if dtype_endian == '|': dtype_endian=None
  *         if dtype_endian is not None and dtype_endian != endian:
  */
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__12, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__12, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
     __Pyx_INCREF(__pyx_n_s_little);
     __Pyx_DECREF_SET(__pyx_v_dtype_endian, __pyx_n_s_little);
@@ -22433,14 +22583,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L21:;
 
-  /* "netCDF4/_netCDF4.pyx":2616
+  /* "netCDF4/_netCDF4.pyx":2727
  *         if dtype_endian == '>': dtype_endian='big'
  *         if dtype_endian == '<': dtype_endian='little'
  *         if dtype_endian == '|': dtype_endian=None             # <<<<<<<<<<<<<<
  *         if dtype_endian is not None and dtype_endian != endian:
  *             if dtype_endian == 'native' and endian == sys.byteorder:
  */
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__34, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_kp_s__34, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
     __Pyx_INCREF(Py_None);
     __Pyx_DECREF_SET(__pyx_v_dtype_endian, Py_None);
@@ -22448,7 +22598,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L22:;
 
-  /* "netCDF4/_netCDF4.pyx":2617
+  /* "netCDF4/_netCDF4.pyx":2728
  *         if dtype_endian == '<': dtype_endian='little'
  *         if dtype_endian == '|': dtype_endian=None
  *         if dtype_endian is not None and dtype_endian != endian:             # <<<<<<<<<<<<<<
@@ -22462,34 +22612,34 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L24_bool_binop_done;
   }
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_dtype_endian, __pyx_v_endian, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(__pyx_v_dtype_endian, __pyx_v_endian, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = __pyx_t_1;
   __pyx_L24_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2618
+    /* "netCDF4/_netCDF4.pyx":2729
  *         if dtype_endian == '|': dtype_endian=None
  *         if dtype_endian is not None and dtype_endian != endian:
  *             if dtype_endian == 'native' and endian == sys.byteorder:             # <<<<<<<<<<<<<<
  *                 pass
  *             else:
  */
-    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_n_s_native, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_dtype_endian, __pyx_n_s_native, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
     } else {
       __pyx_t_2 = __pyx_t_1;
       goto __pyx_L27_bool_binop_done;
     }
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyObject_RichCompare(__pyx_v_endian, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_v_endian, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = __pyx_t_1;
     __pyx_L27_bool_binop_done:;
@@ -22498,7 +22648,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2622
+      /* "netCDF4/_netCDF4.pyx":2733
  *             else:
  *                 # endian keyword prevails, issue warning
  *                 msg = 'endian-ness of dtype and endian kwarg do not match, using endian kwarg'             # <<<<<<<<<<<<<<
@@ -22508,16 +22658,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __Pyx_INCREF(__pyx_kp_s_endian_ness_of_dtype_and_endian);
       __pyx_v_msg = __pyx_kp_s_endian_ness_of_dtype_and_endian;
 
-      /* "netCDF4/_netCDF4.pyx":2624
+      /* "netCDF4/_netCDF4.pyx":2735
  *                 msg = 'endian-ness of dtype and endian kwarg do not match, using endian kwarg'
  *                 #msg = 'endian-ness of dtype and endian kwarg do not match, dtype over-riding endian kwarg'
  *                 warnings.warn(msg)             # <<<<<<<<<<<<<<
  *                 #endian = dtype_endian # dtype prevails
  *         # check validity of datatype.
  */
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_warn); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_warn); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_7 = NULL;
@@ -22531,16 +22681,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
       }
       if (!__pyx_t_7) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_msg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_msg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
         __Pyx_INCREF(__pyx_v_msg);
         PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_msg);
         __Pyx_GIVEREF(__pyx_v_msg);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       }
@@ -22552,7 +22702,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L23:;
 
-  /* "netCDF4/_netCDF4.pyx":2627
+  /* "netCDF4/_netCDF4.pyx":2738
  *                 #endian = dtype_endian # dtype prevails
  *         # check validity of datatype.
  *         self._isprimitive = False             # <<<<<<<<<<<<<<
@@ -22565,7 +22715,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_DECREF(__pyx_v_self->_isprimitive);
   __pyx_v_self->_isprimitive = Py_False;
 
-  /* "netCDF4/_netCDF4.pyx":2628
+  /* "netCDF4/_netCDF4.pyx":2739
  *         # check validity of datatype.
  *         self._isprimitive = False
  *         self._iscompound = False             # <<<<<<<<<<<<<<
@@ -22578,7 +22728,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_DECREF(__pyx_v_self->_iscompound);
   __pyx_v_self->_iscompound = Py_False;
 
-  /* "netCDF4/_netCDF4.pyx":2629
+  /* "netCDF4/_netCDF4.pyx":2740
  *         self._isprimitive = False
  *         self._iscompound = False
  *         self._isvlen = False             # <<<<<<<<<<<<<<
@@ -22591,7 +22741,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_DECREF(__pyx_v_self->_isvlen);
   __pyx_v_self->_isvlen = Py_False;
 
-  /* "netCDF4/_netCDF4.pyx":2630
+  /* "netCDF4/_netCDF4.pyx":2741
  *         self._iscompound = False
  *         self._isvlen = False
  *         if isinstance(datatype, CompoundType) or isinstance(datatype, VLType)\             # <<<<<<<<<<<<<<
@@ -22606,7 +22756,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     goto __pyx_L30_bool_binop_done;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2631
+  /* "netCDF4/_netCDF4.pyx":2742
  *         self._isvlen = False
  *         if isinstance(datatype, CompoundType) or isinstance(datatype, VLType)\
  *                       or datatype == str:             # <<<<<<<<<<<<<<
@@ -22615,7 +22765,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
   __pyx_t_8 = __Pyx_TypeCheck(__pyx_v_datatype, ((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_VLType)); 
 
-  /* "netCDF4/_netCDF4.pyx":2630
+  /* "netCDF4/_netCDF4.pyx":2741
  *         self._iscompound = False
  *         self._isvlen = False
  *         if isinstance(datatype, CompoundType) or isinstance(datatype, VLType)\             # <<<<<<<<<<<<<<
@@ -22629,21 +22779,21 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     goto __pyx_L30_bool_binop_done;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2631
+  /* "netCDF4/_netCDF4.pyx":2742
  *         self._isvlen = False
  *         if isinstance(datatype, CompoundType) or isinstance(datatype, VLType)\
  *                       or datatype == str:             # <<<<<<<<<<<<<<
  *             if isinstance(datatype, CompoundType):
  *                 self._iscompound = True
  */
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = __pyx_t_1;
   __pyx_L30_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2632
+    /* "netCDF4/_netCDF4.pyx":2743
  *         if isinstance(datatype, CompoundType) or isinstance(datatype, VLType)\
  *                       or datatype == str:
  *             if isinstance(datatype, CompoundType):             # <<<<<<<<<<<<<<
@@ -22654,7 +22804,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2633
+      /* "netCDF4/_netCDF4.pyx":2744
  *                       or datatype == str:
  *             if isinstance(datatype, CompoundType):
  *                 self._iscompound = True             # <<<<<<<<<<<<<<
@@ -22667,7 +22817,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __Pyx_DECREF(__pyx_v_self->_iscompound);
       __pyx_v_self->_iscompound = Py_True;
 
-      /* "netCDF4/_netCDF4.pyx":2634
+      /* "netCDF4/_netCDF4.pyx":2745
  *             if isinstance(datatype, CompoundType):
  *                 self._iscompound = True
  *                 self._cmptype = datatype             # <<<<<<<<<<<<<<
@@ -22683,7 +22833,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L33:;
 
-    /* "netCDF4/_netCDF4.pyx":2635
+    /* "netCDF4/_netCDF4.pyx":2746
  *                 self._iscompound = True
  *                 self._cmptype = datatype
  *             if isinstance(datatype, VLType) or datatype==str:             # <<<<<<<<<<<<<<
@@ -22697,14 +22847,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_t_1 = __pyx_t_8;
       goto __pyx_L35_bool_binop_done;
     }
-    __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_1 = __pyx_t_8;
     __pyx_L35_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2636
+      /* "netCDF4/_netCDF4.pyx":2747
  *                 self._cmptype = datatype
  *             if isinstance(datatype, VLType) or datatype==str:
  *                 self._isvlen = True             # <<<<<<<<<<<<<<
@@ -22717,7 +22867,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __Pyx_DECREF(__pyx_v_self->_isvlen);
       __pyx_v_self->_isvlen = Py_True;
 
-      /* "netCDF4/_netCDF4.pyx":2637
+      /* "netCDF4/_netCDF4.pyx":2748
  *             if isinstance(datatype, VLType) or datatype==str:
  *                 self._isvlen = True
  *                 self._vltype = datatype             # <<<<<<<<<<<<<<
@@ -22733,53 +22883,53 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L34:;
 
-    /* "netCDF4/_netCDF4.pyx":2638
+    /* "netCDF4/_netCDF4.pyx":2749
  *                 self._isvlen = True
  *                 self._vltype = datatype
  *             if datatype==str:             # <<<<<<<<<<<<<<
  *                 if grp.data_model != 'NETCDF4':
  *                     raise ValueError(
  */
-    __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_v_datatype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2639
+      /* "netCDF4/_netCDF4.pyx":2750
  *                 self._vltype = datatype
  *             if datatype==str:
  *                 if grp.data_model != 'NETCDF4':             # <<<<<<<<<<<<<<
  *                     raise ValueError(
  *                         'Variable length strings are only supported for the '
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":2640
+        /* "netCDF4/_netCDF4.pyx":2751
  *             if datatype==str:
  *                 if grp.data_model != 'NETCDF4':
  *                     raise ValueError(             # <<<<<<<<<<<<<<
  *                         'Variable length strings are only supported for the '
  *                         'NETCDF4 format. For other formats, consider using '
  */
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":2645
+      /* "netCDF4/_netCDF4.pyx":2756
  *                         'netCDF4.stringtochar to convert string arrays into '
  *                         'character arrays with an additional dimension.')
  *                 datatype = VLType(self._grp, str, None)             # <<<<<<<<<<<<<<
  *                 self._vltype = datatype
  *             xtype = datatype._nc_type
  */
-      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_self->_grp);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->_grp);
@@ -22790,13 +22940,13 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __Pyx_INCREF(Py_None);
       PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None);
       __Pyx_GIVEREF(Py_None);
-      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_VLType)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_VLType)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":2646
+      /* "netCDF4/_netCDF4.pyx":2757
  *                         'character arrays with an additional dimension.')
  *                 datatype = VLType(self._grp, str, None)
  *                 self._vltype = datatype             # <<<<<<<<<<<<<<
@@ -22812,27 +22962,27 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L37:;
 
-    /* "netCDF4/_netCDF4.pyx":2647
+    /* "netCDF4/_netCDF4.pyx":2758
  *                 datatype = VLType(self._grp, str, None)
  *                 self._vltype = datatype
  *             xtype = datatype._nc_type             # <<<<<<<<<<<<<<
  *             # dtype variable attribute is a numpy datatype object.
  *             self.dtype = datatype.dtype
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_nc_type); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_nc_type); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_v_xtype = __pyx_t_9;
 
-    /* "netCDF4/_netCDF4.pyx":2649
+    /* "netCDF4/_netCDF4.pyx":2760
  *             xtype = datatype._nc_type
  *             # dtype variable attribute is a numpy datatype object.
  *             self.dtype = datatype.dtype             # <<<<<<<<<<<<<<
  *         elif datatype.str[1:] in _supportedtypes:
  *             self._isprimitive = True
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
     __Pyx_GOTREF(__pyx_v_self->dtype);
@@ -22842,27 +22992,27 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     goto __pyx_L29;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2650
+  /* "netCDF4/_netCDF4.pyx":2761
  *             # dtype variable attribute is a numpy datatype object.
  *             self.dtype = datatype.dtype
  *         elif datatype.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
  *             self._isprimitive = True
  *             # find netCDF primitive data type corresponding to
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__36, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__36, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_t_3, __pyx_t_5, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_t_3, __pyx_t_5, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_8 = (__pyx_t_1 != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":2651
+    /* "netCDF4/_netCDF4.pyx":2762
  *             self.dtype = datatype.dtype
  *         elif datatype.str[1:] in _supportedtypes:
  *             self._isprimitive = True             # <<<<<<<<<<<<<<
@@ -22875,29 +23025,29 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __Pyx_DECREF(__pyx_v_self->_isprimitive);
     __pyx_v_self->_isprimitive = Py_True;
 
-    /* "netCDF4/_netCDF4.pyx":2654
+    /* "netCDF4/_netCDF4.pyx":2765
  *             # find netCDF primitive data type corresponding to
  *             # specified numpy data type.
  *             xtype = _nptonctype[datatype.str[1:]]             # <<<<<<<<<<<<<<
  *             # dtype variable attribute is a numpy datatype object.
  *             self.dtype = datatype
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_str); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_datatype, __pyx_n_s_str); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, 0, NULL, NULL, &__pyx_slice__37, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_3, 1, 0, NULL, NULL, &__pyx_slice__37, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyObject_GetItem(__pyx_t_5, __pyx_t_6); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2654; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_3 = PyObject_GetItem(__pyx_t_5, __pyx_t_6); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_3); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_3); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_xtype = __pyx_t_9;
 
-    /* "netCDF4/_netCDF4.pyx":2656
+    /* "netCDF4/_netCDF4.pyx":2767
  *             xtype = _nptonctype[datatype.str[1:]]
  *             # dtype variable attribute is a numpy datatype object.
  *             self.dtype = datatype             # <<<<<<<<<<<<<<
@@ -22913,16 +23063,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2658
+    /* "netCDF4/_netCDF4.pyx":2769
  *             self.dtype = datatype
  *         else:
  *             raise TypeError('illegal primitive data type, must be one of %s, got %s' % (_supportedtypes,datatype))             # <<<<<<<<<<<<<<
  *         if 'id' in kwargs:
  *             self._varid = kwargs['id']
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -22930,83 +23080,83 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_datatype);
     __Pyx_GIVEREF(__pyx_v_datatype);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_illegal_primitive_data_type_must, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_illegal_primitive_data_type_must, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L29:;
 
-  /* "netCDF4/_netCDF4.pyx":2659
+  /* "netCDF4/_netCDF4.pyx":2770
  *         else:
  *             raise TypeError('illegal primitive data type, must be one of %s, got %s' % (_supportedtypes,datatype))
  *         if 'id' in kwargs:             # <<<<<<<<<<<<<<
  *             self._varid = kwargs['id']
  *         else:
  */
-  __pyx_t_8 = (__Pyx_PyDict_Contains(__pyx_n_s_id, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PyDict_Contains(__pyx_n_s_id, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = (__pyx_t_8 != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2660
+    /* "netCDF4/_netCDF4.pyx":2771
  *             raise TypeError('illegal primitive data type, must be one of %s, got %s' % (_supportedtypes,datatype))
  *         if 'id' in kwargs:
  *             self._varid = kwargs['id']             # <<<<<<<<<<<<<<
  *         else:
  *             bytestr = _strencode(name)
  */
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_id); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_id); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_self->_varid = __pyx_t_4;
     goto __pyx_L39;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2662
+    /* "netCDF4/_netCDF4.pyx":2773
  *             self._varid = kwargs['id']
  *         else:
  *             bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *             varname = bytestr
  *             ndims = len(dimensions)
  */
-    __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_bytestr = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2663
+    /* "netCDF4/_netCDF4.pyx":2774
  *         else:
  *             bytestr = _strencode(name)
  *             varname = bytestr             # <<<<<<<<<<<<<<
  *             ndims = len(dimensions)
  *             # find dimension ids.
  */
-    __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_varname = __pyx_t_10;
 
-    /* "netCDF4/_netCDF4.pyx":2664
+    /* "netCDF4/_netCDF4.pyx":2775
  *             bytestr = _strencode(name)
  *             varname = bytestr
  *             ndims = len(dimensions)             # <<<<<<<<<<<<<<
  *             # find dimension ids.
  *             if ndims:
  */
-    __pyx_t_11 = PyObject_Length(__pyx_v_dimensions); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_Length(__pyx_v_dimensions); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_ndims = __pyx_t_11;
 
-    /* "netCDF4/_netCDF4.pyx":2666
+    /* "netCDF4/_netCDF4.pyx":2777
  *             ndims = len(dimensions)
  *             # find dimension ids.
  *             if ndims:             # <<<<<<<<<<<<<<
@@ -23016,7 +23166,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_1 = (__pyx_v_ndims != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2667
+      /* "netCDF4/_netCDF4.pyx":2778
  *             # find dimension ids.
  *             if ndims:
  *                 for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
@@ -23026,26 +23176,26 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_t_4 = __pyx_v_ndims;
       for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_4; __pyx_v_n++) {
 
-        /* "netCDF4/_netCDF4.pyx":2668
+        /* "netCDF4/_netCDF4.pyx":2779
  *             if ndims:
  *                 for n from 0 <= n < ndims:
  *                     dimname = dimensions[n]             # <<<<<<<<<<<<<<
  *                     # look for dimension in this group, and if not
  *                     # found there, look in parent (and it's parent, etc, back to root).
  */
-        __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_dimensions, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2668; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_dimensions, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2779; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2671
+        /* "netCDF4/_netCDF4.pyx":2782
  *                     # look for dimension in this group, and if not
  *                     # found there, look in parent (and it's parent, etc, back to root).
  *                     dim = _find_dim(grp, dimname)             # <<<<<<<<<<<<<<
  *                     if dim is None:
  *                         raise KeyError("dimension %s not defined in group %s or any group in it's family tree" % (dimname, grp.path))
  */
-        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_5 = NULL;
         __pyx_t_11 = 0;
@@ -23059,7 +23209,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
             __pyx_t_11 = 1;
           }
         }
-        __pyx_t_7 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         if (__pyx_t_5) {
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -23070,14 +23220,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __Pyx_INCREF(__pyx_v_dimname);
         PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_11, __pyx_v_dimname);
         __Pyx_GIVEREF(__pyx_v_dimname);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2672
+        /* "netCDF4/_netCDF4.pyx":2783
  *                     # found there, look in parent (and it's parent, etc, back to root).
  *                     dim = _find_dim(grp, dimname)
  *                     if dim is None:             # <<<<<<<<<<<<<<
@@ -23088,16 +23238,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __pyx_t_8 = (__pyx_t_1 != 0);
         if (__pyx_t_8) {
 
-          /* "netCDF4/_netCDF4.pyx":2673
+          /* "netCDF4/_netCDF4.pyx":2784
  *                     dim = _find_dim(grp, dimname)
  *                     if dim is None:
  *                         raise KeyError("dimension %s not defined in group %s or any group in it's family tree" % (dimname, grp.path))             # <<<<<<<<<<<<<<
  *                     dimids[n] = dim._dimid
  *             # go into define mode if it's a netCDF 3 compatible
  */
-          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_v_dimname);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_dimname);
@@ -23105,32 +23255,32 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
           __Pyx_GIVEREF(__pyx_t_3);
           __pyx_t_3 = 0;
-          __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_dimension_s_not_defined_in_group, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_dimension_s_not_defined_in_group, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
           __Pyx_GIVEREF(__pyx_t_3);
           __pyx_t_3 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_Raise(__pyx_t_3, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
 
-        /* "netCDF4/_netCDF4.pyx":2674
+        /* "netCDF4/_netCDF4.pyx":2785
  *                     if dim is None:
  *                         raise KeyError("dimension %s not defined in group %s or any group in it's family tree" % (dimname, grp.path))
  *                     dimids[n] = dim._dimid             # <<<<<<<<<<<<<<
  *             # go into define mode if it's a netCDF 3 compatible
  *             # file format.  Be careful to exit define mode before
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_dimid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_dimid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         (__pyx_v_dimids[__pyx_v_n]) = __pyx_t_12;
       }
@@ -23138,19 +23288,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L40:;
 
-    /* "netCDF4/_netCDF4.pyx":2678
+    /* "netCDF4/_netCDF4.pyx":2789
  *             # file format.  Be careful to exit define mode before
  *             # any exceptions are raised.
  *             if grp.data_model != 'NETCDF4': grp._redef()             # <<<<<<<<<<<<<<
  *             # define variable.
  *             if ndims:
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_8) {
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -23163,10 +23313,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
       }
       if (__pyx_t_7) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       } else {
-        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -23175,7 +23325,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L44:;
 
-    /* "netCDF4/_netCDF4.pyx":2680
+    /* "netCDF4/_netCDF4.pyx":2791
  *             if grp.data_model != 'NETCDF4': grp._redef()
  *             # define variable.
  *             if ndims:             # <<<<<<<<<<<<<<
@@ -23185,7 +23335,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_8 = (__pyx_v_ndims != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":2681
+      /* "netCDF4/_netCDF4.pyx":2792
  *             # define variable.
  *             if ndims:
  *                 ierr = nc_def_var(self._grpid, varname, xtype, ndims,             # <<<<<<<<<<<<<<
@@ -23197,7 +23347,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2684
+      /* "netCDF4/_netCDF4.pyx":2795
  *                                   dimids, &self._varid)
  *             else: # a scalar variable.
  *                 ierr = nc_def_var(self._grpid, varname, xtype, ndims,             # <<<<<<<<<<<<<<
@@ -23208,22 +23358,22 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L45:;
 
-    /* "netCDF4/_netCDF4.pyx":2690
+    /* "netCDF4/_netCDF4.pyx":2801
  *             # of vars are created.  This change only lasts as long as file is
  *             # open.
  *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:             # <<<<<<<<<<<<<<
  *                 ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
  *                         &nelemsp, &preemptionp)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_startswith); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_startswith); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_1) {
     } else {
@@ -23236,7 +23386,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_L47_bool_binop_done:;
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":2691
+      /* "netCDF4/_netCDF4.pyx":2802
  *             # open.
  *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:
  *                 ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,             # <<<<<<<<<<<<<<
@@ -23245,7 +23395,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
       __pyx_v_ierr = nc_get_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_sizep), (&__pyx_v_nelemsp), (&__pyx_v_preemptionp));
 
-      /* "netCDF4/_netCDF4.pyx":2693
+      /* "netCDF4/_netCDF4.pyx":2804
  *                 ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
  *                         &nelemsp, &preemptionp)
  *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -23255,7 +23405,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_t_8 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_8) {
 
-        /* "netCDF4/_netCDF4.pyx":2694
+        /* "netCDF4/_netCDF4.pyx":2805
  *                         &nelemsp, &preemptionp)
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -23263,33 +23413,33 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *                 sizep = chunk_cache
  */
         __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_3);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":2696
+      /* "netCDF4/_netCDF4.pyx":2807
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # reset chunk cache size, leave other parameters unchanged.
  *                 sizep = chunk_cache             # <<<<<<<<<<<<<<
  *                 ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
  *                         nelemsp, preemptionp)
  */
-      __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_v_chunk_cache); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_v_chunk_cache); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_v_sizep = __pyx_t_13;
 
-      /* "netCDF4/_netCDF4.pyx":2697
+      /* "netCDF4/_netCDF4.pyx":2808
  *                 # reset chunk cache size, leave other parameters unchanged.
  *                 sizep = chunk_cache
  *                 ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,             # <<<<<<<<<<<<<<
@@ -23298,7 +23448,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
       __pyx_v_ierr = nc_set_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_sizep, __pyx_v_nelemsp, __pyx_v_preemptionp);
 
-      /* "netCDF4/_netCDF4.pyx":2699
+      /* "netCDF4/_netCDF4.pyx":2810
  *                 ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
  *                         nelemsp, preemptionp)
  *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -23308,7 +23458,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_t_8 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_8) {
 
-        /* "netCDF4/_netCDF4.pyx":2700
+        /* "netCDF4/_netCDF4.pyx":2811
  *                         nelemsp, preemptionp)
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -23316,26 +23466,26 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *                 if grp.data_model != 'NETCDF4': grp._enddef()
  */
         __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_3);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2700; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       goto __pyx_L46;
     }
     __pyx_L46:;
 
-    /* "netCDF4/_netCDF4.pyx":2701
+    /* "netCDF4/_netCDF4.pyx":2812
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -23345,19 +23495,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_8 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":2702
+      /* "netCDF4/_netCDF4.pyx":2813
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             if ierr != NC_NOERR:
  *                 if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             # set zlib, shuffle, chunking, fletcher32 and endian
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_8) {
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_7 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -23370,10 +23520,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -23382,7 +23532,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       }
       __pyx_L52:;
 
-      /* "netCDF4/_netCDF4.pyx":2703
+      /* "netCDF4/_netCDF4.pyx":2814
  *             if ierr != NC_NOERR:
  *                 if grp.data_model != 'NETCDF4': grp._enddef()
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -23390,52 +23540,52 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *             # variable settings.
  */
       __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":2710
+    /* "netCDF4/_netCDF4.pyx":2821
  *             # and fletcher32 are silently ignored. Only
  *             # endian='native' allowed for NETCDF3.
  *             if grp.data_model in ['NETCDF4','NETCDF4_CLASSIC']:             # <<<<<<<<<<<<<<
  *                 # set zlib and shuffle parameters.
  *                 if zlib and ndims: # don't bother for scalar variable
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (!__pyx_t_2) {
     } else {
       __pyx_t_8 = __pyx_t_2;
       goto __pyx_L54_bool_binop_done;
     }
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4_CLASSIC, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4_CLASSIC, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_8 = __pyx_t_2;
     __pyx_L54_bool_binop_done:;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = (__pyx_t_8 != 0);
     if (__pyx_t_2) {
 
-      /* "netCDF4/_netCDF4.pyx":2712
+      /* "netCDF4/_netCDF4.pyx":2823
  *             if grp.data_model in ['NETCDF4','NETCDF4_CLASSIC']:
  *                 # set zlib and shuffle parameters.
  *                 if zlib and ndims: # don't bother for scalar variable             # <<<<<<<<<<<<<<
  *                     ideflate_level = complevel
  *                     if shuffle:
  */
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_zlib); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_zlib); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_8) {
       } else {
         __pyx_t_2 = __pyx_t_8;
@@ -23446,27 +23596,27 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_L57_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "netCDF4/_netCDF4.pyx":2713
+        /* "netCDF4/_netCDF4.pyx":2824
  *                 # set zlib and shuffle parameters.
  *                 if zlib and ndims: # don't bother for scalar variable
  *                     ideflate_level = complevel             # <<<<<<<<<<<<<<
  *                     if shuffle:
  *                         ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, ideflate_level)
  */
-        __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_complevel); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_complevel); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_v_ideflate_level = __pyx_t_4;
 
-        /* "netCDF4/_netCDF4.pyx":2714
+        /* "netCDF4/_netCDF4.pyx":2825
  *                 if zlib and ndims: # don't bother for scalar variable
  *                     ideflate_level = complevel
  *                     if shuffle:             # <<<<<<<<<<<<<<
  *                         ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, ideflate_level)
  *                     else:
  */
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_shuffle); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_shuffle); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2715
+          /* "netCDF4/_netCDF4.pyx":2826
  *                     ideflate_level = complevel
  *                     if shuffle:
  *                         ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, ideflate_level)             # <<<<<<<<<<<<<<
@@ -23478,7 +23628,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2717
+          /* "netCDF4/_netCDF4.pyx":2828
  *                         ierr = nc_def_var_deflate(self._grpid, self._varid, 1, 1, ideflate_level)
  *                     else:
  *                         ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, ideflate_level)             # <<<<<<<<<<<<<<
@@ -23489,7 +23639,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         __pyx_L59:;
 
-        /* "netCDF4/_netCDF4.pyx":2718
+        /* "netCDF4/_netCDF4.pyx":2829
  *                     else:
  *                         ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, ideflate_level)
  *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -23499,19 +23649,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __pyx_t_2 = ((__pyx_v_ierr != NC_NOERR) != 0);
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2719
+          /* "netCDF4/_netCDF4.pyx":2830
  *                         ierr = nc_def_var_deflate(self._grpid, self._varid, 0, 1, ideflate_level)
  *                     if ierr != NC_NOERR:
  *                         if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # set checksum.
  */
-          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           if (__pyx_t_2) {
-            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_6);
             __pyx_t_7 = NULL;
             if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -23524,10 +23674,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
               }
             }
             if (__pyx_t_7) {
-              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             } else {
-              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -23536,7 +23686,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           }
           __pyx_L61:;
 
-          /* "netCDF4/_netCDF4.pyx":2720
+          /* "netCDF4/_netCDF4.pyx":2831
  *                     if ierr != NC_NOERR:
  *                         if grp.data_model != 'NETCDF4': grp._enddef()
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -23544,33 +23694,33 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *                 if fletcher32 and ndims: # don't bother for scalar variable
  */
           __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-          __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_t_3);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
           __Pyx_GIVEREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_Raise(__pyx_t_3, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         goto __pyx_L56;
       }
       __pyx_L56:;
 
-      /* "netCDF4/_netCDF4.pyx":2722
+      /* "netCDF4/_netCDF4.pyx":2833
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # set checksum.
  *                 if fletcher32 and ndims: # don't bother for scalar variable             # <<<<<<<<<<<<<<
  *                     ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
  *                     if ierr != NC_NOERR:
  */
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_fletcher32); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_fletcher32); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_8) {
       } else {
         __pyx_t_2 = __pyx_t_8;
@@ -23581,7 +23731,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_L63_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "netCDF4/_netCDF4.pyx":2723
+        /* "netCDF4/_netCDF4.pyx":2834
  *                 # set checksum.
  *                 if fletcher32 and ndims: # don't bother for scalar variable
  *                     ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)             # <<<<<<<<<<<<<<
@@ -23590,7 +23740,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
         __pyx_v_ierr = nc_def_var_fletcher32(__pyx_v_self->_grpid, __pyx_v_self->_varid, 1);
 
-        /* "netCDF4/_netCDF4.pyx":2724
+        /* "netCDF4/_netCDF4.pyx":2835
  *                 if fletcher32 and ndims: # don't bother for scalar variable
  *                     ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
  *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -23600,19 +23750,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __pyx_t_2 = ((__pyx_v_ierr != NC_NOERR) != 0);
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2725
+          /* "netCDF4/_netCDF4.pyx":2836
  *                     ierr = nc_def_var_fletcher32(self._grpid, self._varid, 1)
  *                     if ierr != NC_NOERR:
  *                         if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # set chunking stuff.
  */
-          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           if (__pyx_t_2) {
-            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_6);
             __pyx_t_7 = NULL;
             if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -23625,10 +23775,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
               }
             }
             if (__pyx_t_7) {
-              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             } else {
-              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -23637,7 +23787,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           }
           __pyx_L66:;
 
-          /* "netCDF4/_netCDF4.pyx":2726
+          /* "netCDF4/_netCDF4.pyx":2837
  *                     if ierr != NC_NOERR:
  *                         if grp.data_model != 'NETCDF4': grp._enddef()
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -23645,26 +23795,26 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *                 if ndims: # don't bother for scalar variable.
  */
           __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-          __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_t_3);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
           __Pyx_GIVEREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_Raise(__pyx_t_3, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         goto __pyx_L62;
       }
       __pyx_L62:;
 
-      /* "netCDF4/_netCDF4.pyx":2728
+      /* "netCDF4/_netCDF4.pyx":2839
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # set chunking stuff.
  *                 if ndims: # don't bother for scalar variable.             # <<<<<<<<<<<<<<
@@ -23674,17 +23824,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_t_2 = (__pyx_v_ndims != 0);
       if (__pyx_t_2) {
 
-        /* "netCDF4/_netCDF4.pyx":2729
+        /* "netCDF4/_netCDF4.pyx":2840
  *                 # set chunking stuff.
  *                 if ndims: # don't bother for scalar variable.
  *                     if contiguous:             # <<<<<<<<<<<<<<
  *                         icontiguous = NC_CONTIGUOUS
  *                         if chunksizes is not None:
  */
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_contiguous); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_contiguous); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2730
+          /* "netCDF4/_netCDF4.pyx":2841
  *                 if ndims: # don't bother for scalar variable.
  *                     if contiguous:
  *                         icontiguous = NC_CONTIGUOUS             # <<<<<<<<<<<<<<
@@ -23693,7 +23843,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
           __pyx_v_icontiguous = NC_CONTIGUOUS;
 
-          /* "netCDF4/_netCDF4.pyx":2731
+          /* "netCDF4/_netCDF4.pyx":2842
  *                     if contiguous:
  *                         icontiguous = NC_CONTIGUOUS
  *                         if chunksizes is not None:             # <<<<<<<<<<<<<<
@@ -23704,24 +23854,24 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           __pyx_t_8 = (__pyx_t_2 != 0);
           if (__pyx_t_8) {
 
-            /* "netCDF4/_netCDF4.pyx":2732
+            /* "netCDF4/_netCDF4.pyx":2843
  *                         icontiguous = NC_CONTIGUOUS
  *                         if chunksizes is not None:
  *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')             # <<<<<<<<<<<<<<
  *                     else:
  *                         icontiguous = NC_CHUNKED
  */
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_Raise(__pyx_t_3, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           goto __pyx_L68;
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2734
+          /* "netCDF4/_netCDF4.pyx":2845
  *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')
  *                     else:
  *                         icontiguous = NC_CHUNKED             # <<<<<<<<<<<<<<
@@ -23732,7 +23882,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         __pyx_L68:;
 
-        /* "netCDF4/_netCDF4.pyx":2735
+        /* "netCDF4/_netCDF4.pyx":2846
  *                     else:
  *                         icontiguous = NC_CHUNKED
  *                     if chunksizes is None:             # <<<<<<<<<<<<<<
@@ -23743,7 +23893,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __pyx_t_2 = (__pyx_t_8 != 0);
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2736
+          /* "netCDF4/_netCDF4.pyx":2847
  *                         icontiguous = NC_CHUNKED
  *                     if chunksizes is None:
  *                         chunksizesp = NULL             # <<<<<<<<<<<<<<
@@ -23755,31 +23905,31 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2738
+          /* "netCDF4/_netCDF4.pyx":2849
  *                         chunksizesp = NULL
  *                     else:
  *                         if len(chunksizes) != len(dimensions):             # <<<<<<<<<<<<<<
  *                             if grp.data_model != 'NETCDF4': grp._enddef()
  *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
  */
-          __pyx_t_11 = PyObject_Length(__pyx_v_chunksizes); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_14 = PyObject_Length(__pyx_v_dimensions); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_11 = PyObject_Length(__pyx_v_chunksizes); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = PyObject_Length(__pyx_v_dimensions); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_2 = ((__pyx_t_11 != __pyx_t_14) != 0);
           if (__pyx_t_2) {
 
-            /* "netCDF4/_netCDF4.pyx":2739
+            /* "netCDF4/_netCDF4.pyx":2850
  *                     else:
  *                         if len(chunksizes) != len(dimensions):
  *                             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
  *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  */
-            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
-            __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
             if (__pyx_t_2) {
-              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_GOTREF(__pyx_t_6);
               __pyx_t_7 = NULL;
               if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -23792,10 +23942,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
                 }
               }
               if (__pyx_t_7) {
-                __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
               } else {
-                __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               }
               __Pyx_GOTREF(__pyx_t_3);
               __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -23804,21 +23954,21 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
             }
             __pyx_L72:;
 
-            /* "netCDF4/_netCDF4.pyx":2740
+            /* "netCDF4/_netCDF4.pyx":2851
  *                         if len(chunksizes) != len(dimensions):
  *                             if grp.data_model != 'NETCDF4': grp._enddef()
  *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')             # <<<<<<<<<<<<<<
  *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *                         for n from 0 <= n < ndims:
  */
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_Raise(__pyx_t_3, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
 
-          /* "netCDF4/_netCDF4.pyx":2741
+          /* "netCDF4/_netCDF4.pyx":2852
  *                             if grp.data_model != 'NETCDF4': grp._enddef()
  *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
  *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
@@ -23827,7 +23977,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
           __pyx_v_chunksizesp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));
 
-          /* "netCDF4/_netCDF4.pyx":2742
+          /* "netCDF4/_netCDF4.pyx":2853
  *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')
  *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *                         for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
@@ -23837,23 +23987,23 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           __pyx_t_4 = __pyx_v_ndims;
           for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_4; __pyx_v_n++) {
 
-            /* "netCDF4/_netCDF4.pyx":2743
+            /* "netCDF4/_netCDF4.pyx":2854
  *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *                         for n from 0 <= n < ndims:
  *                             chunksizesp[n] = chunksizes[n]             # <<<<<<<<<<<<<<
  *                     if chunksizes is not None or contiguous:
  *                         ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
  */
-            __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_chunksizes, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2743; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+            __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_chunksizes, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2854; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
             __Pyx_GOTREF(__pyx_t_3);
-            __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
             (__pyx_v_chunksizesp[__pyx_v_n]) = __pyx_t_13;
           }
         }
         __pyx_L70:;
 
-        /* "netCDF4/_netCDF4.pyx":2744
+        /* "netCDF4/_netCDF4.pyx":2855
  *                         for n from 0 <= n < ndims:
  *                             chunksizesp[n] = chunksizes[n]
  *                     if chunksizes is not None or contiguous:             # <<<<<<<<<<<<<<
@@ -23867,12 +24017,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           __pyx_t_2 = __pyx_t_1;
           goto __pyx_L76_bool_binop_done;
         }
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_contiguous); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_contiguous); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_2 = __pyx_t_1;
         __pyx_L76_bool_binop_done:;
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2745
+          /* "netCDF4/_netCDF4.pyx":2856
  *                             chunksizesp[n] = chunksizes[n]
  *                     if chunksizes is not None or contiguous:
  *                         ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)             # <<<<<<<<<<<<<<
@@ -23881,7 +24031,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
           __pyx_v_ierr = nc_def_var_chunking(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_icontiguous, __pyx_v_chunksizesp);
 
-          /* "netCDF4/_netCDF4.pyx":2746
+          /* "netCDF4/_netCDF4.pyx":2857
  *                     if chunksizes is not None or contiguous:
  *                         ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
  *                         free(chunksizesp)             # <<<<<<<<<<<<<<
@@ -23890,7 +24040,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
           free(__pyx_v_chunksizesp);
 
-          /* "netCDF4/_netCDF4.pyx":2747
+          /* "netCDF4/_netCDF4.pyx":2858
  *                         ierr = nc_def_var_chunking(self._grpid, self._varid, icontiguous, chunksizesp)
  *                         free(chunksizesp)
  *                         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -23900,19 +24050,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           __pyx_t_2 = ((__pyx_v_ierr != NC_NOERR) != 0);
           if (__pyx_t_2) {
 
-            /* "netCDF4/_netCDF4.pyx":2748
+            /* "netCDF4/_netCDF4.pyx":2859
  *                         free(chunksizesp)
  *                         if ierr != NC_NOERR:
  *                             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *                             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # set endian-ness of variable
  */
-            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
-            __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
             if (__pyx_t_2) {
-              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_GOTREF(__pyx_t_6);
               __pyx_t_7 = NULL;
               if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -23925,10 +24075,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
                 }
               }
               if (__pyx_t_7) {
-                __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
                 __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
               } else {
-                __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+                __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               }
               __Pyx_GOTREF(__pyx_t_3);
               __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -23937,7 +24087,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
             }
             __pyx_L79:;
 
-            /* "netCDF4/_netCDF4.pyx":2749
+            /* "netCDF4/_netCDF4.pyx":2860
  *                         if ierr != NC_NOERR:
  *                             if grp.data_model != 'NETCDF4': grp._enddef()
  *                             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -23945,20 +24095,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *                 if endian == 'little':
  */
             __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-            __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
-            __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_6);
             __Pyx_INCREF(__pyx_t_3);
             PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
             __Pyx_GIVEREF(__pyx_t_3);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
             __Pyx_Raise(__pyx_t_3, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           goto __pyx_L75;
         }
@@ -23967,17 +24117,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       }
       __pyx_L67:;
 
-      /* "netCDF4/_netCDF4.pyx":2751
+      /* "netCDF4/_netCDF4.pyx":2862
  *                             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # set endian-ness of variable
  *                 if endian == 'little':             # <<<<<<<<<<<<<<
  *                     ierr = nc_def_var_endian(self._grpid, self._varid, NC_ENDIAN_LITTLE)
  *                 elif endian == 'big':
  */
-      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_2) {
 
-        /* "netCDF4/_netCDF4.pyx":2752
+        /* "netCDF4/_netCDF4.pyx":2863
  *                 # set endian-ness of variable
  *                 if endian == 'little':
  *                     ierr = nc_def_var_endian(self._grpid, self._varid, NC_ENDIAN_LITTLE)             # <<<<<<<<<<<<<<
@@ -23988,17 +24138,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         goto __pyx_L80;
       }
 
-      /* "netCDF4/_netCDF4.pyx":2753
+      /* "netCDF4/_netCDF4.pyx":2864
  *                 if endian == 'little':
  *                     ierr = nc_def_var_endian(self._grpid, self._varid, NC_ENDIAN_LITTLE)
  *                 elif endian == 'big':             # <<<<<<<<<<<<<<
  *                     ierr = nc_def_var_endian(self._grpid, self._varid, NC_ENDIAN_BIG)
  *                 elif endian == 'native':
  */
-      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_2) {
 
-        /* "netCDF4/_netCDF4.pyx":2754
+        /* "netCDF4/_netCDF4.pyx":2865
  *                     ierr = nc_def_var_endian(self._grpid, self._varid, NC_ENDIAN_LITTLE)
  *                 elif endian == 'big':
  *                     ierr = nc_def_var_endian(self._grpid, self._varid, NC_ENDIAN_BIG)             # <<<<<<<<<<<<<<
@@ -24009,43 +24159,43 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         goto __pyx_L80;
       }
 
-      /* "netCDF4/_netCDF4.pyx":2755
+      /* "netCDF4/_netCDF4.pyx":2866
  *                 elif endian == 'big':
  *                     ierr = nc_def_var_endian(self._grpid, self._varid, NC_ENDIAN_BIG)
  *                 elif endian == 'native':             # <<<<<<<<<<<<<<
  *                     pass # this is the default format.
  *                 else:
  */
-      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_native, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_native, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_2) {
         goto __pyx_L80;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2758
+        /* "netCDF4/_netCDF4.pyx":2869
  *                     pass # this is the default format.
  *                 else:
  *                     raise ValueError("'endian' keyword argument must be 'little','big' or 'native', got '%s'" % endian)             # <<<<<<<<<<<<<<
  *                 if ierr != NC_NOERR:
  *                     if grp.data_model != 'NETCDF4': grp._enddef()
  */
-        __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_endian_keyword_argument_must_be, __pyx_v_endian); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_endian_keyword_argument_must_be, __pyx_v_endian); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_3);
         __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L80:;
 
-      /* "netCDF4/_netCDF4.pyx":2759
+      /* "netCDF4/_netCDF4.pyx":2870
  *                 else:
  *                     raise ValueError("'endian' keyword argument must be 'little','big' or 'native', got '%s'" % endian)
  *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -24055,19 +24205,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       __pyx_t_2 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_2) {
 
-        /* "netCDF4/_netCDF4.pyx":2760
+        /* "netCDF4/_netCDF4.pyx":2871
  *                     raise ValueError("'endian' keyword argument must be 'little','big' or 'native', got '%s'" % endian)
  *                 if ierr != NC_NOERR:
  *                     if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             else:
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         if (__pyx_t_2) {
-          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __pyx_t_7 = NULL;
           if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -24080,10 +24230,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
             }
           }
           if (__pyx_t_7) {
-            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           } else {
-            __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -24092,7 +24242,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         __pyx_L82:;
 
-        /* "netCDF4/_netCDF4.pyx":2761
+        /* "netCDF4/_netCDF4.pyx":2872
  *                 if ierr != NC_NOERR:
  *                     if grp.data_model != 'NETCDF4': grp._enddef()
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -24100,36 +24250,36 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *                 if endian != 'native':
  */
         __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_3);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       goto __pyx_L53;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2763
+      /* "netCDF4/_netCDF4.pyx":2874
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             else:
  *                 if endian != 'native':             # <<<<<<<<<<<<<<
  *                     msg="only endian='native' allowed for NETCDF3 files"
  *                     raise RuntimeError(msg)
  */
-      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_native, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_endian, __pyx_n_s_native, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_2) {
 
-        /* "netCDF4/_netCDF4.pyx":2764
+        /* "netCDF4/_netCDF4.pyx":2875
  *             else:
  *                 if endian != 'native':
  *                     msg="only endian='native' allowed for NETCDF3 files"             # <<<<<<<<<<<<<<
@@ -24139,29 +24289,29 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __Pyx_INCREF(__pyx_kp_s_only_endian_native_allowed_for_N);
         __Pyx_XDECREF_SET(__pyx_v_msg, __pyx_kp_s_only_endian_native_allowed_for_N);
 
-        /* "netCDF4/_netCDF4.pyx":2765
+        /* "netCDF4/_netCDF4.pyx":2876
  *                 if endian != 'native':
  *                     msg="only endian='native' allowed for NETCDF3 files"
  *                     raise RuntimeError(msg)             # <<<<<<<<<<<<<<
  *             # set a fill value for this variable if fill_value keyword
  *             # given.  This avoids the HDF5 overhead of deleting and
  */
-        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(__pyx_v_msg);
         PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_msg);
         __Pyx_GIVEREF(__pyx_v_msg);
-        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_Raise(__pyx_t_6, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
     }
     __pyx_L53:;
 
-    /* "netCDF4/_netCDF4.pyx":2769
+    /* "netCDF4/_netCDF4.pyx":2880
  *             # given.  This avoids the HDF5 overhead of deleting and
  *             # recreating the dataset if it is set later (after the enddef).
  *             if fill_value is not None:             # <<<<<<<<<<<<<<
@@ -24172,14 +24322,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2770
+      /* "netCDF4/_netCDF4.pyx":2881
  *             # recreating the dataset if it is set later (after the enddef).
  *             if fill_value is not None:
  *                 if not fill_value and isinstance(fill_value,bool):             # <<<<<<<<<<<<<<
  *                     # no filling for this variable if fill_value==False.
  *                     if not self._isprimitive:
  */
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fill_value); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_fill_value); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = ((!__pyx_t_2) != 0);
       if (__pyx_t_8) {
       } else {
@@ -24188,25 +24338,25 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       }
       __pyx_t_6 = ((PyObject*)&PyBool_Type);
       __Pyx_INCREF(__pyx_t_6);
-      __pyx_t_8 = PyObject_IsInstance(__pyx_v_fill_value, __pyx_t_6); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_IsInstance(__pyx_v_fill_value, __pyx_t_6); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_2 = (__pyx_t_8 != 0);
       __pyx_t_1 = __pyx_t_2;
       __pyx_L86_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":2772
+        /* "netCDF4/_netCDF4.pyx":2883
  *                 if not fill_value and isinstance(fill_value,bool):
  *                     # no filling for this variable if fill_value==False.
  *                     if not self._isprimitive:             # <<<<<<<<<<<<<<
  *                         # no fill values for VLEN and compound variables
  *                         # anyway.
  */
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_2 = ((!__pyx_t_1) != 0);
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2775
+          /* "netCDF4/_netCDF4.pyx":2886
  *                         # no fill values for VLEN and compound variables
  *                         # anyway.
  *                         ierr = 0             # <<<<<<<<<<<<<<
@@ -24218,7 +24368,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2777
+          /* "netCDF4/_netCDF4.pyx":2888
  *                         ierr = 0
  *                     else:
  *                         ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)             # <<<<<<<<<<<<<<
@@ -24229,7 +24379,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         __pyx_L88:;
 
-        /* "netCDF4/_netCDF4.pyx":2778
+        /* "netCDF4/_netCDF4.pyx":2889
  *                     else:
  *                         ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
  *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -24239,19 +24389,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __pyx_t_2 = ((__pyx_v_ierr != NC_NOERR) != 0);
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2779
+          /* "netCDF4/_netCDF4.pyx":2890
  *                         ierr = nc_def_var_fill(self._grpid, self._varid, 1, NULL)
  *                     if ierr != NC_NOERR:
  *                         if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 else:
  */
-          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           if (__pyx_t_2) {
-            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             __pyx_t_7 = NULL;
             if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -24264,10 +24414,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
               }
             }
             if (__pyx_t_7) {
-              __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             } else {
-              __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             __Pyx_GOTREF(__pyx_t_6);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -24276,7 +24426,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           }
           __pyx_L90:;
 
-          /* "netCDF4/_netCDF4.pyx":2780
+          /* "netCDF4/_netCDF4.pyx":2891
  *                     if ierr != NC_NOERR:
  *                         if grp.data_model != 'NETCDF4': grp._enddef()
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -24284,45 +24434,45 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *                     # cast fill_value to type of variable.
  */
           __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-          __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_INCREF(__pyx_t_6);
           PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
           __Pyx_GIVEREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __Pyx_Raise(__pyx_t_6, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         goto __pyx_L85;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2783
+        /* "netCDF4/_netCDF4.pyx":2894
  *                 else:
  *                     # cast fill_value to type of variable.
  *                     if self._isprimitive:             # <<<<<<<<<<<<<<
  *                         fillval = numpy.array(fill_value, self.dtype)
  *                         _set_att(self._grp, self._varid, '_FillValue', fillval)
  */
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":2784
+          /* "netCDF4/_netCDF4.pyx":2895
  *                     # cast fill_value to type of variable.
  *                     if self._isprimitive:
  *                         fillval = numpy.array(fill_value, self.dtype)             # <<<<<<<<<<<<<<
  *                         _set_att(self._grp, self._varid, '_FillValue', fillval)
  *                     else:
  */
-          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_t_3 = NULL;
@@ -24337,7 +24487,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
               __pyx_t_14 = 1;
             }
           }
-          __pyx_t_5 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           if (__pyx_t_3) {
             PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -24348,14 +24498,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
           __Pyx_INCREF(__pyx_v_self->dtype);
           PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_14, __pyx_v_self->dtype);
           __Pyx_GIVEREF(__pyx_v_self->dtype);
-          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_v_fillval = __pyx_t_6;
           __pyx_t_6 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":2785
+          /* "netCDF4/_netCDF4.pyx":2896
  *                     if self._isprimitive:
  *                         fillval = numpy.array(fill_value, self.dtype)
  *                         _set_att(self._grp, self._varid, '_FillValue', fillval)             # <<<<<<<<<<<<<<
@@ -24364,7 +24514,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
           __pyx_t_6 = __pyx_v_self->_grp;
           __Pyx_INCREF(__pyx_t_6);
-          __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_6, __pyx_v_self->_varid, __pyx_n_s_FillValue, __pyx_v_fillval); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_6, __pyx_v_self->_varid, __pyx_n_s_FillValue, __pyx_v_fillval); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -24372,18 +24522,18 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2787
+          /* "netCDF4/_netCDF4.pyx":2898
  *                         _set_att(self._grp, self._varid, '_FillValue', fillval)
  *                     else:
  *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")             # <<<<<<<<<<<<<<
  *             if least_significant_digit is not None:
  *                 self.least_significant_digit = least_significant_digit
  */
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_Raise(__pyx_t_7, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         __pyx_L91:;
       }
@@ -24392,7 +24542,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L84:;
 
-    /* "netCDF4/_netCDF4.pyx":2788
+    /* "netCDF4/_netCDF4.pyx":2899
  *                     else:
  *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")
  *             if least_significant_digit is not None:             # <<<<<<<<<<<<<<
@@ -24403,31 +24553,31 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2789
+      /* "netCDF4/_netCDF4.pyx":2900
  *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")
  *             if least_significant_digit is not None:
  *                 self.least_significant_digit = least_significant_digit             # <<<<<<<<<<<<<<
  *             # leave define mode if not a NETCDF4 format file.
  *             if grp.data_model != 'NETCDF4': grp._enddef()
  */
-      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_least_significant_digit, __pyx_v_least_significant_digit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_least_significant_digit, __pyx_v_least_significant_digit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L92;
     }
     __pyx_L92:;
 
-    /* "netCDF4/_netCDF4.pyx":2791
+    /* "netCDF4/_netCDF4.pyx":2902
  *                 self.least_significant_digit = least_significant_digit
  *             # leave define mode if not a NETCDF4 format file.
  *             if grp.data_model != 'NETCDF4': grp._enddef()             # <<<<<<<<<<<<<<
  *         # count how many unlimited dimensions there are.
  *         self._nunlimdim = 0
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_1) {
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -24440,10 +24590,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         }
       }
       if (__pyx_t_5) {
-        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
-        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -24454,7 +24604,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __pyx_L39:;
 
-  /* "netCDF4/_netCDF4.pyx":2793
+  /* "netCDF4/_netCDF4.pyx":2904
  *             if grp.data_model != 'NETCDF4': grp._enddef()
  *         # count how many unlimited dimensions there are.
  *         self._nunlimdim = 0             # <<<<<<<<<<<<<<
@@ -24463,7 +24613,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  */
   __pyx_v_self->_nunlimdim = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2794
+  /* "netCDF4/_netCDF4.pyx":2905
  *         # count how many unlimited dimensions there are.
  *         self._nunlimdim = 0
  *         for dimname in dimensions:             # <<<<<<<<<<<<<<
@@ -24474,25 +24624,25 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __pyx_t_7 = __pyx_v_dimensions; __Pyx_INCREF(__pyx_t_7); __pyx_t_14 = 0;
     __pyx_t_15 = NULL;
   } else {
-    __pyx_t_14 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_dimensions); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_dimensions); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (likely(!__pyx_t_15)) {
       if (likely(PyList_CheckExact(__pyx_t_7))) {
         if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_6); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_6); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_6); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_6); __pyx_t_14++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -24501,7 +24651,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -24510,14 +24660,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2796
+    /* "netCDF4/_netCDF4.pyx":2907
  *         for dimname in dimensions:
  *             # look in current group, and parents for dim.
  *             dim = _find_dim(self._grp, dimname)             # <<<<<<<<<<<<<<
  *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1
  *         # set ndim attribute (number of dimensions).
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_3 = NULL;
     __pyx_t_11 = 0;
@@ -24531,7 +24681,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __pyx_t_11 = 1;
       }
     }
-    __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_16);
     if (__pyx_t_3) {
       PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -24542,21 +24692,21 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     __Pyx_INCREF(__pyx_v_dimname);
     PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_v_dimname);
     __Pyx_GIVEREF(__pyx_v_dimname);
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_16, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_16, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2797
+    /* "netCDF4/_netCDF4.pyx":2908
  *             # look in current group, and parents for dim.
  *             dim = _find_dim(self._grp, dimname)
  *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1             # <<<<<<<<<<<<<<
  *         # set ndim attribute (number of dimensions).
  *         with nogil:
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_16 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -24569,14 +24719,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       }
     }
     if (__pyx_t_16) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_16); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_16); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
     } else {
-      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (__pyx_t_1) {
       __pyx_v_self->_nunlimdim = (__pyx_v_self->_nunlimdim + 1);
@@ -24584,7 +24734,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
     }
     __pyx_L96:;
 
-    /* "netCDF4/_netCDF4.pyx":2794
+    /* "netCDF4/_netCDF4.pyx":2905
  *         # count how many unlimited dimensions there are.
  *         self._nunlimdim = 0
  *         for dimname in dimensions:             # <<<<<<<<<<<<<<
@@ -24594,7 +24744,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2799
+  /* "netCDF4/_netCDF4.pyx":2910
  *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1
  *         # set ndim attribute (number of dimensions).
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -24608,7 +24758,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2800
+        /* "netCDF4/_netCDF4.pyx":2911
  *         # set ndim attribute (number of dimensions).
  *         with nogil:
  *             ierr = nc_inq_varndims(self._grpid, self._varid, &numdims)             # <<<<<<<<<<<<<<
@@ -24618,7 +24768,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
         __pyx_v_ierr = nc_inq_varndims(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_numdims));
       }
 
-      /* "netCDF4/_netCDF4.pyx":2799
+      /* "netCDF4/_netCDF4.pyx":2910
  *             if dim.isunlimited(): self._nunlimdim = self._nunlimdim + 1
  *         # set ndim attribute (number of dimensions).
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -24636,7 +24786,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2801
+  /* "netCDF4/_netCDF4.pyx":2912
  *         with nogil:
  *             ierr = nc_inq_varndims(self._grpid, self._varid, &numdims)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -24646,7 +24796,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2802
+    /* "netCDF4/_netCDF4.pyx":2913
  *             ierr = nc_inq_varndims(self._grpid, self._varid, &numdims)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -24654,30 +24804,30 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
  *         self._name = name
  */
     __pyx_t_10 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_10, 0, strlen(__pyx_t_10), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
     __Pyx_GIVEREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_7, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2803
+  /* "netCDF4/_netCDF4.pyx":2914
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         self.ndim = numdims             # <<<<<<<<<<<<<<
  *         self._name = name
  *         # default for automatically applying scale_factor and
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_numdims); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_numdims); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_GIVEREF(__pyx_t_7);
   __Pyx_GOTREF(__pyx_v_self->ndim);
@@ -24685,7 +24835,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __pyx_v_self->ndim = __pyx_t_7;
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2804
+  /* "netCDF4/_netCDF4.pyx":2915
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         self.ndim = numdims
  *         self._name = name             # <<<<<<<<<<<<<<
@@ -24698,7 +24848,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_DECREF(__pyx_v_self->_name);
   __pyx_v_self->_name = __pyx_v_name;
 
-  /* "netCDF4/_netCDF4.pyx":2807
+  /* "netCDF4/_netCDF4.pyx":2918
  *         # default for automatically applying scale_factor and
  *         # add_offset, and converting to/from masked arrays is True.
  *         self.scale = True             # <<<<<<<<<<<<<<
@@ -24711,7 +24861,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_DECREF(__pyx_v_self->scale);
   __pyx_v_self->scale = Py_True;
 
-  /* "netCDF4/_netCDF4.pyx":2808
+  /* "netCDF4/_netCDF4.pyx":2919
  *         # add_offset, and converting to/from masked arrays is True.
  *         self.scale = True
  *         self.mask = True             # <<<<<<<<<<<<<<
@@ -24724,8 +24874,8 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   __Pyx_DECREF(__pyx_v_self->mask);
   __pyx_v_self->mask = Py_True;
 
-  /* "netCDF4/_netCDF4.pyx":2571
- *     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__
+  /* "netCDF4/_netCDF4.pyx":2592
+ *     """The number of stored elements."""
  * 
  *     def __init__(self, grp, name, datatype, dimensions=(), zlib=False,             # <<<<<<<<<<<<<<
  *             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
@@ -24757,7 +24907,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable___init__(struct __pyx_obj_7netC
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2810
+/* "netCDF4/_netCDF4.pyx":2921
  *         self.mask = True
  * 
  *     def __array__(self):             # <<<<<<<<<<<<<<
@@ -24787,7 +24937,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_2__array__(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__array__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2814
+  /* "netCDF4/_netCDF4.pyx":2925
  *         # allows numpy ufuncs to work faster on Variable objects
  *         # (issue 216).
  *         return self[...]             # <<<<<<<<<<<<<<
@@ -24795,13 +24945,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_2__array__(struct __pyx_o
  *     def __repr__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self), Py_Ellipsis); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2814; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self), Py_Ellipsis); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2810
+  /* "netCDF4/_netCDF4.pyx":2921
  *         self.mask = True
  * 
  *     def __array__(self):             # <<<<<<<<<<<<<<
@@ -24820,7 +24970,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_2__array__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2816
+/* "netCDF4/_netCDF4.pyx":2927
  *         return self[...]
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -24855,20 +25005,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2817
+  /* "netCDF4/_netCDF4.pyx":2928
  * 
  *     def __repr__(self):
  *         if python3:             # <<<<<<<<<<<<<<
  *             return self.__unicode__()
  *         else:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":2818
+    /* "netCDF4/_netCDF4.pyx":2929
  *     def __repr__(self):
  *         if python3:
  *             return self.__unicode__()             # <<<<<<<<<<<<<<
@@ -24876,7 +25026,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
  *             return unicode(self).encode(default_encoding)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -24889,10 +25039,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -24902,7 +25052,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2820
+    /* "netCDF4/_netCDF4.pyx":2931
  *             return self.__unicode__()
  *         else:
  *             return unicode(self).encode(default_encoding)             # <<<<<<<<<<<<<<
@@ -24910,18 +25060,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
  *     def __unicode__(self):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -24934,17 +25084,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
       __pyx_t_4 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -24954,7 +25104,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2816
+  /* "netCDF4/_netCDF4.pyx":2927
  *         return self[...]
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -24977,7 +25127,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4__repr__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2822
+/* "netCDF4/_netCDF4.pyx":2933
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -25034,7 +25184,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__unicode__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2824
+  /* "netCDF4/_netCDF4.pyx":2935
  *     def __unicode__(self):
  *         cdef int ierr, no_fill
  *         if not dir(self._grp):             # <<<<<<<<<<<<<<
@@ -25043,15 +25193,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
  */
   __pyx_t_1 = __pyx_v_self->_grp;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_Dir(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Dir(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = ((!__pyx_t_3) != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2825
+    /* "netCDF4/_netCDF4.pyx":2936
  *         cdef int ierr, no_fill
  *         if not dir(self._grp):
  *             return 'Variable object no longer valid'             # <<<<<<<<<<<<<<
@@ -25064,16 +25214,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2826
+  /* "netCDF4/_netCDF4.pyx":2937
  *         if not dir(self._grp):
  *             return 'Variable object no longer valid'
  *         ncdump_var = ['%r\n' % type(self)]             # <<<<<<<<<<<<<<
  *         dimnames = tuple([_tostr(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\
  */
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
@@ -25081,24 +25231,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
   __pyx_v_ncdump_var = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2827
+  /* "netCDF4/_netCDF4.pyx":2938
  *             return 'Variable object no longer valid'
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname) for dimname in self.dimensions])             # <<<<<<<<<<<<<<
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\
  *                 self.ncattrs()]
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
     __pyx_t_5 = __pyx_t_2; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -25106,16 +25256,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -25124,7 +25274,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -25132,7 +25282,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     }
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tostr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
@@ -25145,48 +25295,48 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_9) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_dimname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_dimname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
       __Pyx_INCREF(__pyx_v_dimname);
       PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_v_dimname);
       __Pyx_GIVEREF(__pyx_v_dimname);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_dimnames = ((PyObject*)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2828
+  /* "netCDF4/_netCDF4.pyx":2939
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         if self._iscompound:
  */
-  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
 
-  /* "netCDF4/_netCDF4.pyx":2829
+  /* "netCDF4/_netCDF4.pyx":2940
  *         dimnames = tuple([_tostr(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\
  *                 self.ncattrs()]             # <<<<<<<<<<<<<<
  *         if self._iscompound:
  *             ncdump_var.append('%s %s(%s)\n' %\
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_8 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -25199,10 +25349,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     }
   }
   if (__pyx_t_8) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -25210,9 +25360,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -25220,16 +25370,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -25238,7 +25388,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -25247,14 +25397,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2828
+    /* "netCDF4/_netCDF4.pyx":2939
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([_tostr(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         if self._iscompound:
  */
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_10 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -25267,21 +25417,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       }
     }
     if (!__pyx_t_10) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL;
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     }
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_name);
@@ -25289,36 +25439,36 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_attrs = ((PyObject*)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2830
+  /* "netCDF4/_netCDF4.pyx":2941
  *         attrs = ['    %s: %s\n' % (name,self.getncattr(name)) for name in\
  *                 self.ncattrs()]
  *         if self._iscompound:             # <<<<<<<<<<<<<<
  *             ncdump_var.append('%s %s(%s)\n' %\
  *             ('compound',self._name,', '.join(dimnames)))
  */
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2832
+    /* "netCDF4/_netCDF4.pyx":2943
  *         if self._iscompound:
  *             ncdump_var.append('%s %s(%s)\n' %\
  *             ('compound',self._name,', '.join(dimnames)))             # <<<<<<<<<<<<<<
  *         elif self._isvlen:
  *             ncdump_var.append('%s %s(%s)\n' %\
  */
-    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_n_s_compound);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_compound);
@@ -25330,41 +25480,41 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __Pyx_GIVEREF(__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2831
+    /* "netCDF4/_netCDF4.pyx":2942
  *                 self.ncattrs()]
  *         if self._iscompound:
  *             ncdump_var.append('%s %s(%s)\n' %\             # <<<<<<<<<<<<<<
  *             ('compound',self._name,', '.join(dimnames)))
  *         elif self._isvlen:
  */
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     goto __pyx_L8;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2833
+  /* "netCDF4/_netCDF4.pyx":2944
  *             ncdump_var.append('%s %s(%s)\n' %\
  *             ('compound',self._name,', '.join(dimnames)))
  *         elif self._isvlen:             # <<<<<<<<<<<<<<
  *             ncdump_var.append('%s %s(%s)\n' %\
  *             ('vlen',self._name,', '.join(dimnames)))
  */
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2835
+    /* "netCDF4/_netCDF4.pyx":2946
  *         elif self._isvlen:
  *             ncdump_var.append('%s %s(%s)\n' %\
  *             ('vlen',self._name,', '.join(dimnames)))             # <<<<<<<<<<<<<<
  *         else:
  *             ncdump_var.append('%s %s(%s)\n' %\
  */
-    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_n_s_vlen);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_vlen);
@@ -25376,32 +25526,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __Pyx_GIVEREF(__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2834
+    /* "netCDF4/_netCDF4.pyx":2945
  *             ('compound',self._name,', '.join(dimnames)))
  *         elif self._isvlen:
  *             ncdump_var.append('%s %s(%s)\n' %\             # <<<<<<<<<<<<<<
  *             ('vlen',self._name,', '.join(dimnames)))
  *         else:
  */
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     goto __pyx_L8;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":2838
+    /* "netCDF4/_netCDF4.pyx":2949
  *         else:
  *             ncdump_var.append('%s %s(%s)\n' %\
  *             (self.dtype,self._name,', '.join(dimnames)))             # <<<<<<<<<<<<<<
  *         ncdump_var = ncdump_var + attrs
  *         if self._iscompound:
  */
-    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_dimnames); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_self->dtype);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->dtype);
@@ -25413,110 +25563,110 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __Pyx_GIVEREF(__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2837
+    /* "netCDF4/_netCDF4.pyx":2948
  *             ('vlen',self._name,', '.join(dimnames)))
  *         else:
  *             ncdump_var.append('%s %s(%s)\n' %\             # <<<<<<<<<<<<<<
  *             (self.dtype,self._name,', '.join(dimnames)))
  *         ncdump_var = ncdump_var + attrs
  */
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __pyx_L8:;
 
-  /* "netCDF4/_netCDF4.pyx":2839
+  /* "netCDF4/_netCDF4.pyx":2950
  *             ncdump_var.append('%s %s(%s)\n' %\
  *             (self.dtype,self._name,', '.join(dimnames)))
  *         ncdump_var = ncdump_var + attrs             # <<<<<<<<<<<<<<
  *         if self._iscompound:
  *             ncdump_var.append('compound data type: %s\n' % self.dtype)
  */
-  __pyx_t_5 = PyNumber_Add(__pyx_v_ncdump_var, __pyx_v_attrs); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyNumber_Add(__pyx_v_ncdump_var, __pyx_v_attrs); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF_SET(__pyx_v_ncdump_var, ((PyObject*)__pyx_t_5));
   __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2840
+  /* "netCDF4/_netCDF4.pyx":2951
  *             (self.dtype,self._name,', '.join(dimnames)))
  *         ncdump_var = ncdump_var + attrs
  *         if self._iscompound:             # <<<<<<<<<<<<<<
  *             ncdump_var.append('compound data type: %s\n' % self.dtype)
  *         elif self._isvlen:
  */
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2841
+    /* "netCDF4/_netCDF4.pyx":2952
  *         ncdump_var = ncdump_var + attrs
  *         if self._iscompound:
  *             ncdump_var.append('compound data type: %s\n' % self.dtype)             # <<<<<<<<<<<<<<
  *         elif self._isvlen:
  *             ncdump_var.append('vlen data type: %s\n' % self.dtype)
  */
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_compound_data_type_s, __pyx_v_self->dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_compound_data_type_s, __pyx_v_self->dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     goto __pyx_L9;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2842
+  /* "netCDF4/_netCDF4.pyx":2953
  *         if self._iscompound:
  *             ncdump_var.append('compound data type: %s\n' % self.dtype)
  *         elif self._isvlen:             # <<<<<<<<<<<<<<
  *             ncdump_var.append('vlen data type: %s\n' % self.dtype)
  *         unlimdims = []
  */
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2843
+    /* "netCDF4/_netCDF4.pyx":2954
  *             ncdump_var.append('compound data type: %s\n' % self.dtype)
  *         elif self._isvlen:
  *             ncdump_var.append('vlen data type: %s\n' % self.dtype)             # <<<<<<<<<<<<<<
  *         unlimdims = []
  *         for dimname in self.dimensions:
  */
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_vlen_data_type_s, __pyx_v_self->dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_vlen_data_type_s, __pyx_v_self->dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     goto __pyx_L9;
   }
   __pyx_L9:;
 
-  /* "netCDF4/_netCDF4.pyx":2844
+  /* "netCDF4/_netCDF4.pyx":2955
  *         elif self._isvlen:
  *             ncdump_var.append('vlen data type: %s\n' % self.dtype)
  *         unlimdims = []             # <<<<<<<<<<<<<<
  *         for dimname in self.dimensions:
  *             dim = _find_dim(self._grp, dimname)
  */
-  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_v_unlimdims = ((PyObject*)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2845
+  /* "netCDF4/_netCDF4.pyx":2956
  *             ncdump_var.append('vlen data type: %s\n' % self.dtype)
  *         unlimdims = []
  *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
  *             dim = _find_dim(self._grp, dimname)
  *             if dim.isunlimited():
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
     __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
     __pyx_t_7 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   for (;;) {
@@ -25524,16 +25674,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -25542,7 +25692,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -25551,14 +25701,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2846
+    /* "netCDF4/_netCDF4.pyx":2957
  *         unlimdims = []
  *         for dimname in self.dimensions:
  *             dim = _find_dim(self._grp, dimname)             # <<<<<<<<<<<<<<
  *             if dim.isunlimited():
  *                 unlimdims.append(dimname)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_8 = NULL;
     __pyx_t_12 = 0;
@@ -25572,7 +25722,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         __pyx_t_12 = 1;
       }
     }
-    __pyx_t_9 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
     if (__pyx_t_8) {
       PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -25583,21 +25733,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __Pyx_INCREF(__pyx_v_dimname);
     PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_12, __pyx_v_dimname);
     __Pyx_GIVEREF(__pyx_v_dimname);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2847
+    /* "netCDF4/_netCDF4.pyx":2958
  *         for dimname in self.dimensions:
  *             dim = _find_dim(self._grp, dimname)
  *             if dim.isunlimited():             # <<<<<<<<<<<<<<
  *                 unlimdims.append(dimname)
  *         if (self._grp.path != '/'): ncdump_var.append('path = %s\n' % self._grp.path)
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_9 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -25610,30 +25760,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       }
     }
     if (__pyx_t_9) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     } else {
-      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":2848
+      /* "netCDF4/_netCDF4.pyx":2959
  *             dim = _find_dim(self._grp, dimname)
  *             if dim.isunlimited():
  *                 unlimdims.append(dimname)             # <<<<<<<<<<<<<<
  *         if (self._grp.path != '/'): ncdump_var.append('path = %s\n' % self._grp.path)
  *         ncdump_var.append('unlimited dimensions: %s\n' % ', '.join(unlimdims))
  */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_unlimdims, __pyx_v_dimname); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_unlimdims, __pyx_v_dimname); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L12;
     }
     __pyx_L12:;
 
-    /* "netCDF4/_netCDF4.pyx":2845
+    /* "netCDF4/_netCDF4.pyx":2956
  *             ncdump_var.append('vlen data type: %s\n' % self.dtype)
  *         unlimdims = []
  *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
@@ -25643,63 +25793,63 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2849
+  /* "netCDF4/_netCDF4.pyx":2960
  *             if dim.isunlimited():
  *                 unlimdims.append(dimname)
  *         if (self._grp.path != '/'): ncdump_var.append('path = %s\n' % self._grp.path)             # <<<<<<<<<<<<<<
  *         ncdump_var.append('unlimited dimensions: %s\n' % ', '.join(unlimdims))
  *         ncdump_var.append('current shape = %s\n' % repr(self.shape))
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__14, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__14, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_path_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_path_s, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_5); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     goto __pyx_L13;
   }
   __pyx_L13:;
 
-  /* "netCDF4/_netCDF4.pyx":2850
+  /* "netCDF4/_netCDF4.pyx":2961
  *                 unlimdims.append(dimname)
  *         if (self._grp.path != '/'): ncdump_var.append('path = %s\n' % self._grp.path)
  *         ncdump_var.append('unlimited dimensions: %s\n' % ', '.join(unlimdims))             # <<<<<<<<<<<<<<
  *         ncdump_var.append('current shape = %s\n' % repr(self.shape))
  *         with nogil:
  */
-  __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_unlimdims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyString_Join(__pyx_kp_s__19, __pyx_v_unlimdims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_dimensions_s, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_dimensions_s, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_2); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_2); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2851
+  /* "netCDF4/_netCDF4.pyx":2962
  *         if (self._grp.path != '/'): ncdump_var.append('path = %s\n' % self._grp.path)
  *         ncdump_var.append('unlimited dimensions: %s\n' % ', '.join(unlimdims))
  *         ncdump_var.append('current shape = %s\n' % repr(self.shape))             # <<<<<<<<<<<<<<
  *         with nogil:
  *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = PyObject_Repr(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyObject_Repr(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_current_shape_s, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_current_shape_s, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_2); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_2); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2852
+  /* "netCDF4/_netCDF4.pyx":2963
  *         ncdump_var.append('unlimited dimensions: %s\n' % ', '.join(unlimdims))
  *         ncdump_var.append('current shape = %s\n' % repr(self.shape))
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -25713,7 +25863,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2853
+        /* "netCDF4/_netCDF4.pyx":2964
  *         ncdump_var.append('current shape = %s\n' % repr(self.shape))
  *         with nogil:
  *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)             # <<<<<<<<<<<<<<
@@ -25723,7 +25873,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         __pyx_v_ierr = nc_inq_var_fill(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_no_fill), NULL);
       }
 
-      /* "netCDF4/_netCDF4.pyx":2852
+      /* "netCDF4/_netCDF4.pyx":2963
  *         ncdump_var.append('unlimited dimensions: %s\n' % ', '.join(unlimdims))
  *         ncdump_var.append('current shape = %s\n' % repr(self.shape))
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -25741,7 +25891,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2854
+  /* "netCDF4/_netCDF4.pyx":2965
  *         with nogil:
  *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -25751,7 +25901,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
   __pyx_t_4 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2855
+    /* "netCDF4/_netCDF4.pyx":2966
  *             ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -25759,33 +25909,33 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
  *             if no_fill != 1:
  */
     __pyx_t_13 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2856
+  /* "netCDF4/_netCDF4.pyx":2967
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if self._isprimitive:             # <<<<<<<<<<<<<<
  *             if no_fill != 1:
  *                 try:
  */
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":2857
+    /* "netCDF4/_netCDF4.pyx":2968
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if self._isprimitive:
  *             if no_fill != 1:             # <<<<<<<<<<<<<<
@@ -25795,7 +25945,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
     __pyx_t_4 = ((__pyx_v_no_fill != 1) != 0);
     if (__pyx_t_4) {
 
-      /* "netCDF4/_netCDF4.pyx":2858
+      /* "netCDF4/_netCDF4.pyx":2969
  *         if self._isprimitive:
  *             if no_fill != 1:
  *                 try:             # <<<<<<<<<<<<<<
@@ -25809,19 +25959,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         __Pyx_XGOTREF(__pyx_t_16);
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2859
+          /* "netCDF4/_netCDF4.pyx":2970
  *             if no_fill != 1:
  *                 try:
  *                     fillval = self._FillValue             # <<<<<<<<<<<<<<
  *                     msg = 'filling on'
  *                 except AttributeError:
  */
-          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2970; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __pyx_v_fillval = __pyx_t_2;
           __pyx_t_2 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":2860
+          /* "netCDF4/_netCDF4.pyx":2971
  *                 try:
  *                     fillval = self._FillValue
  *                     msg = 'filling on'             # <<<<<<<<<<<<<<
@@ -25843,7 +25993,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":2861
+        /* "netCDF4/_netCDF4.pyx":2972
  *                     fillval = self._FillValue
  *                     msg = 'filling on'
  *                 except AttributeError:             # <<<<<<<<<<<<<<
@@ -25853,65 +26003,65 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         __pyx_t_17 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
         if (__pyx_t_17) {
           __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__unicode__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2861; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2972; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_GOTREF(__pyx_t_1);
 
-          /* "netCDF4/_netCDF4.pyx":2862
+          /* "netCDF4/_netCDF4.pyx":2973
  *                     msg = 'filling on'
  *                 except AttributeError:
  *                     fillval = default_fillvals[self.dtype.str[1:]]             # <<<<<<<<<<<<<<
  *                     if self.dtype.str[1:] in ['u1','i1']:
  *                         msg = 'filling on, default _FillValue of %s ignored\n' % fillval
  */
-          __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_fillvals); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_fillvals); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2973; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           __Pyx_GOTREF(__pyx_t_9);
-          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2973; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_t_8, 1, 0, NULL, NULL, &__pyx_slice__42, 1, 0, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_t_8, 1, 0, NULL, NULL, &__pyx_slice__42, 1, 0, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2973; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __pyx_t_8 = PyObject_GetItem(__pyx_t_9, __pyx_t_10); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;};
+          __pyx_t_8 = PyObject_GetItem(__pyx_t_9, __pyx_t_10); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2973; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;};
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
           __Pyx_XDECREF_SET(__pyx_v_fillval, __pyx_t_8);
           __pyx_t_8 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":2863
+          /* "netCDF4/_netCDF4.pyx":2974
  *                 except AttributeError:
  *                     fillval = default_fillvals[self.dtype.str[1:]]
  *                     if self.dtype.str[1:] in ['u1','i1']:             # <<<<<<<<<<<<<<
  *                         msg = 'filling on, default _FillValue of %s ignored\n' % fillval
  *                     else:
  */
-          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2863; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_t_8, 1, 0, NULL, NULL, &__pyx_slice__43, 1, 0, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2863; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_t_8, 1, 0, NULL, NULL, &__pyx_slice__43, 1, 0, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_u1, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2863; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_u1, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           if (!__pyx_t_3) {
           } else {
             __pyx_t_4 = __pyx_t_3;
             goto __pyx_L31_bool_binop_done;
           }
-          __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_i1, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2863; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+          __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_10, __pyx_n_s_i1, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
           __pyx_t_4 = __pyx_t_3;
           __pyx_L31_bool_binop_done:;
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
           __pyx_t_3 = (__pyx_t_4 != 0);
           if (__pyx_t_3) {
 
-            /* "netCDF4/_netCDF4.pyx":2864
+            /* "netCDF4/_netCDF4.pyx":2975
  *                     fillval = default_fillvals[self.dtype.str[1:]]
  *                     if self.dtype.str[1:] in ['u1','i1']:
  *                         msg = 'filling on, default _FillValue of %s ignored\n' % fillval             # <<<<<<<<<<<<<<
  *                     else:
  *                         msg = 'filling on, default _FillValue of %s used\n' % fillval
  */
-            __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_filling_on_default__FillValue_of, __pyx_v_fillval); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2864; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+            __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_filling_on_default__FillValue_of, __pyx_v_fillval); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
             __Pyx_GOTREF(__pyx_t_10);
             __Pyx_XDECREF_SET(__pyx_v_msg, __pyx_t_10);
             __pyx_t_10 = 0;
@@ -25919,14 +26069,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
           }
           /*else*/ {
 
-            /* "netCDF4/_netCDF4.pyx":2866
+            /* "netCDF4/_netCDF4.pyx":2977
  *                         msg = 'filling on, default _FillValue of %s ignored\n' % fillval
  *                     else:
  *                         msg = 'filling on, default _FillValue of %s used\n' % fillval             # <<<<<<<<<<<<<<
  *                 ncdump_var.append(msg)
  *             else:
  */
-            __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_filling_on_default__FillValue_of_2, __pyx_v_fillval); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2866; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
+            __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_filling_on_default__FillValue_of_2, __pyx_v_fillval); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2977; __pyx_clineno = __LINE__; goto __pyx_L22_except_error;}
             __Pyx_GOTREF(__pyx_t_10);
             __Pyx_XDECREF_SET(__pyx_v_msg, __pyx_t_10);
             __pyx_t_10 = 0;
@@ -25952,33 +26102,33 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
         __pyx_L27_try_end:;
       }
 
-      /* "netCDF4/_netCDF4.pyx":2867
+      /* "netCDF4/_netCDF4.pyx":2978
  *                     else:
  *                         msg = 'filling on, default _FillValue of %s used\n' % fillval
  *                 ncdump_var.append(msg)             # <<<<<<<<<<<<<<
  *             else:
  *                 ncdump_var.append('filling off\n')
  */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_v_msg); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_v_msg); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L19;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":2869
+      /* "netCDF4/_netCDF4.pyx":2980
  *                 ncdump_var.append(msg)
  *             else:
  *                 ncdump_var.append('filling off\n')             # <<<<<<<<<<<<<<
  * 
  * 
  */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_kp_s_filling_off); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_kp_s_filling_off); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L19:;
     goto __pyx_L18;
   }
   __pyx_L18:;
 
-  /* "netCDF4/_netCDF4.pyx":2872
+  /* "netCDF4/_netCDF4.pyx":2983
  * 
  * 
  *         return ''.join(ncdump_var)             # <<<<<<<<<<<<<<
@@ -25986,13 +26136,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
  *     def _getdims(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump_var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump_var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2822
+  /* "netCDF4/_netCDF4.pyx":2933
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -26025,7 +26175,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6__unicode__(struct __pyx
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2874
+/* "netCDF4/_netCDF4.pyx":2985
  *         return ''.join(ncdump_var)
  * 
  *     def _getdims(self):             # <<<<<<<<<<<<<<
@@ -26071,7 +26221,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_getdims", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2880
+  /* "netCDF4/_netCDF4.pyx":2991
  *         cdef int dimids[NC_MAX_DIMS]
  *         # get number of dimensions for this variable.
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -26085,7 +26235,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2881
+        /* "netCDF4/_netCDF4.pyx":2992
  *         # get number of dimensions for this variable.
  *         with nogil:
  *             ierr = nc_inq_varndims(self._grpid, self._varid, &numdims)             # <<<<<<<<<<<<<<
@@ -26095,7 +26245,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
         __pyx_v_ierr = nc_inq_varndims(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_numdims));
       }
 
-      /* "netCDF4/_netCDF4.pyx":2880
+      /* "netCDF4/_netCDF4.pyx":2991
  *         cdef int dimids[NC_MAX_DIMS]
  *         # get number of dimensions for this variable.
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -26113,7 +26263,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2882
+  /* "netCDF4/_netCDF4.pyx":2993
  *         with nogil:
  *             ierr = nc_inq_varndims(self._grpid, self._varid, &numdims)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -26123,7 +26273,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2883
+    /* "netCDF4/_netCDF4.pyx":2994
  *             ierr = nc_inq_varndims(self._grpid, self._varid, &numdims)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -26131,23 +26281,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
  *         with nogil:
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2885
+  /* "netCDF4/_netCDF4.pyx":2996
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         # get dimension ids.
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -26161,7 +26311,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2886
+        /* "netCDF4/_netCDF4.pyx":2997
  *         # get dimension ids.
  *         with nogil:
  *             ierr = nc_inq_vardimid(self._grpid, self._varid, dimids)             # <<<<<<<<<<<<<<
@@ -26171,7 +26321,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
         __pyx_v_ierr = nc_inq_vardimid(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_dimids);
       }
 
-      /* "netCDF4/_netCDF4.pyx":2885
+      /* "netCDF4/_netCDF4.pyx":2996
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         # get dimension ids.
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -26189,7 +26339,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2887
+  /* "netCDF4/_netCDF4.pyx":2998
  *         with nogil:
  *             ierr = nc_inq_vardimid(self._grpid, self._varid, dimids)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -26199,7 +26349,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2888
+    /* "netCDF4/_netCDF4.pyx":2999
  *             ierr = nc_inq_vardimid(self._grpid, self._varid, dimids)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -26207,23 +26357,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
  *         dimensions = ()
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2890
+  /* "netCDF4/_netCDF4.pyx":3001
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         # loop over dimensions, retrieve names.
  *         dimensions = ()             # <<<<<<<<<<<<<<
@@ -26233,7 +26383,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
   __Pyx_INCREF(__pyx_empty_tuple);
   __pyx_v_dimensions = __pyx_empty_tuple;
 
-  /* "netCDF4/_netCDF4.pyx":2891
+  /* "netCDF4/_netCDF4.pyx":3002
  *         # loop over dimensions, retrieve names.
  *         dimensions = ()
  *         for nn from 0 <= nn < numdims:             # <<<<<<<<<<<<<<
@@ -26243,7 +26393,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
   __pyx_t_5 = __pyx_v_numdims;
   for (__pyx_v_nn = 0; __pyx_v_nn < __pyx_t_5; __pyx_v_nn++) {
 
-    /* "netCDF4/_netCDF4.pyx":2892
+    /* "netCDF4/_netCDF4.pyx":3003
  *         dimensions = ()
  *         for nn from 0 <= nn < numdims:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -26257,7 +26407,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":2893
+          /* "netCDF4/_netCDF4.pyx":3004
  *         for nn from 0 <= nn < numdims:
  *             with nogil:
  *                 ierr = nc_inq_dimname(self._grpid, dimids[nn], namstring)             # <<<<<<<<<<<<<<
@@ -26267,7 +26417,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
           __pyx_v_ierr = nc_inq_dimname(__pyx_v_self->_grpid, (__pyx_v_dimids[__pyx_v_nn]), __pyx_v_namstring);
         }
 
-        /* "netCDF4/_netCDF4.pyx":2892
+        /* "netCDF4/_netCDF4.pyx":3003
  *         dimensions = ()
  *         for nn from 0 <= nn < numdims:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -26285,7 +26435,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":2894
+    /* "netCDF4/_netCDF4.pyx":3005
  *             with nogil:
  *                 ierr = nc_inq_dimname(self._grpid, dimids[nn], namstring)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -26295,7 +26445,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
     __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":2895
+      /* "netCDF4/_netCDF4.pyx":3006
  *                 ierr = nc_inq_dimname(self._grpid, dimids[nn], namstring)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -26303,37 +26453,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
  *             dimensions = dimensions + (name,)
  */
       __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":2896
+    /* "netCDF4/_netCDF4.pyx":3007
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *             dimensions = dimensions + (name,)
  *         return dimensions
  */
-    __pyx_t_4 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_8 = NULL;
     __pyx_t_9 = 0;
@@ -26347,7 +26497,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
         __pyx_t_9 = 1;
       }
     }
-    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     if (__pyx_t_8) {
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -26358,33 +26508,33 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
     __Pyx_GIVEREF(__pyx_t_7);
     __pyx_t_4 = 0;
     __pyx_t_7 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2897
+    /* "netCDF4/_netCDF4.pyx":3008
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             name = namstring.decode(default_encoding,unicode_error)
  *             dimensions = dimensions + (name,)             # <<<<<<<<<<<<<<
  *         return dimensions
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
     __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_6 = PyNumber_Add(__pyx_v_dimensions, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyNumber_Add(__pyx_v_dimensions, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_dimensions, ((PyObject*)__pyx_t_6));
     __pyx_t_6 = 0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2898
+  /* "netCDF4/_netCDF4.pyx":3009
  *             name = namstring.decode(default_encoding,unicode_error)
  *             dimensions = dimensions + (name,)
  *         return dimensions             # <<<<<<<<<<<<<<
@@ -26396,7 +26546,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
   __pyx_r = __pyx_v_dimensions;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2874
+  /* "netCDF4/_netCDF4.pyx":2985
  *         return ''.join(ncdump_var)
  * 
  *     def _getdims(self):             # <<<<<<<<<<<<<<
@@ -26422,7 +26572,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8_getdims(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2900
+/* "netCDF4/_netCDF4.pyx":3011
  *         return dimensions
  * 
  *     def _getname(self):             # <<<<<<<<<<<<<<
@@ -26464,20 +26614,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_getname", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2904
+  /* "netCDF4/_netCDF4.pyx":3015
  *         cdef int err, _grpid
  *         cdef char namstring[NC_MAX_NAME+1]
  *         _grpid = self._grp._grpid             # <<<<<<<<<<<<<<
  *         with nogil:
  *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":2905
+  /* "netCDF4/_netCDF4.pyx":3016
  *         cdef char namstring[NC_MAX_NAME+1]
  *         _grpid = self._grp._grpid
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -26491,7 +26641,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":2906
+        /* "netCDF4/_netCDF4.pyx":3017
  *         _grpid = self._grp._grpid
  *         with nogil:
  *             ierr = nc_inq_varname(_grpid, self._varid, namstring)             # <<<<<<<<<<<<<<
@@ -26501,7 +26651,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
         __pyx_v_ierr = nc_inq_varname(__pyx_v__grpid, __pyx_v_self->_varid, __pyx_v_namstring);
       }
 
-      /* "netCDF4/_netCDF4.pyx":2905
+      /* "netCDF4/_netCDF4.pyx":3016
  *         cdef char namstring[NC_MAX_NAME+1]
  *         _grpid = self._grp._grpid
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -26519,7 +26669,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":2907
+  /* "netCDF4/_netCDF4.pyx":3018
  *         with nogil:
  *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -26529,7 +26679,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":2908
+    /* "netCDF4/_netCDF4.pyx":3019
  *             ierr = nc_inq_varname(_grpid, self._varid, namstring)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -26537,23 +26687,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
  * 
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":2909
+  /* "netCDF4/_netCDF4.pyx":3020
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         return namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
@@ -26561,14 +26711,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
  *     property name:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_8 = NULL;
   __pyx_t_9 = 0;
@@ -26582,7 +26732,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   if (__pyx_t_8) {
     PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -26593,7 +26743,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
   __Pyx_GIVEREF(__pyx_t_7);
   __pyx_t_5 = 0;
   __pyx_t_7 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -26601,7 +26751,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2900
+  /* "netCDF4/_netCDF4.pyx":3011
  *         return dimensions
  * 
  *     def _getname(self):             # <<<<<<<<<<<<<<
@@ -26625,7 +26775,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_getname(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2913
+/* "netCDF4/_netCDF4.pyx":3024
  *     property name:
  *         """string name of Variable instance"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -26657,7 +26807,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4name___get__(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2914
+  /* "netCDF4/_netCDF4.pyx":3025
  *         """string name of Variable instance"""
  *         def __get__(self):
  *             return self._getname()             # <<<<<<<<<<<<<<
@@ -26665,7 +26815,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4name___get__(struct __py
  *             raise AttributeError("name cannot be altered")
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26678,10 +26828,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4name___get__(struct __py
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -26689,7 +26839,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4name___get__(struct __py
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2913
+  /* "netCDF4/_netCDF4.pyx":3024
  *     property name:
  *         """string name of Variable instance"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -26710,7 +26860,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4name___get__(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2915
+/* "netCDF4/_netCDF4.pyx":3026
  *         def __get__(self):
  *             return self._getname()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -26740,20 +26890,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4name_2__set__(CYTHON_UNUSED st
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2916
+  /* "netCDF4/_netCDF4.pyx":3027
  *             return self._getname()
  *         def __set__(self,value):
  *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
  * 
  *     property datatype:
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":2915
+  /* "netCDF4/_netCDF4.pyx":3026
  *         def __get__(self):
  *             return self._getname()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -26770,7 +26920,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_4name_2__set__(CYTHON_UNUSED st
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2920
+/* "netCDF4/_netCDF4.pyx":3031
  *     property datatype:
  *         """numpy data type (for primitive data types) or VLType/CompoundType instance (for compound or vlen data types)"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -26800,17 +26950,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8datatype___get__(struct
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2921
+  /* "netCDF4/_netCDF4.pyx":3032
  *         """numpy data type (for primitive data types) or VLType/CompoundType instance (for compound or vlen data types)"""
  *         def __get__(self):
  *             if self._iscompound:             # <<<<<<<<<<<<<<
  *                 return self._cmptype
  *             elif self._isvlen:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2922
+    /* "netCDF4/_netCDF4.pyx":3033
  *         def __get__(self):
  *             if self._iscompound:
  *                 return self._cmptype             # <<<<<<<<<<<<<<
@@ -26823,17 +26973,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8datatype___get__(struct
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2923
+  /* "netCDF4/_netCDF4.pyx":3034
  *             if self._iscompound:
  *                 return self._cmptype
  *             elif self._isvlen:             # <<<<<<<<<<<<<<
  *                 return self._vltype
  *             elif self._isprimitive:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2924
+    /* "netCDF4/_netCDF4.pyx":3035
  *                 return self._cmptype
  *             elif self._isvlen:
  *                 return self._vltype             # <<<<<<<<<<<<<<
@@ -26846,17 +26996,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8datatype___get__(struct
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2925
+  /* "netCDF4/_netCDF4.pyx":3036
  *             elif self._isvlen:
  *                 return self._vltype
  *             elif self._isprimitive:             # <<<<<<<<<<<<<<
  *                 return self.dtype
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":2926
+    /* "netCDF4/_netCDF4.pyx":3037
  *                 return self._vltype
  *             elif self._isprimitive:
  *                 return self.dtype             # <<<<<<<<<<<<<<
@@ -26869,7 +27019,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8datatype___get__(struct
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":2920
+  /* "netCDF4/_netCDF4.pyx":3031
  *     property datatype:
  *         """numpy data type (for primitive data types) or VLType/CompoundType instance (for compound or vlen data types)"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -26889,7 +27039,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_8datatype___get__(struct
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2930
+/* "netCDF4/_netCDF4.pyx":3041
  *     property shape:
  *         """find current sizes of all variable dimensions"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -26929,7 +27079,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2931
+  /* "netCDF4/_netCDF4.pyx":3042
  *         """find current sizes of all variable dimensions"""
  *         def __get__(self):
  *             shape = ()             # <<<<<<<<<<<<<<
@@ -26939,14 +27089,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
   __Pyx_INCREF(__pyx_empty_tuple);
   __pyx_v_shape = __pyx_empty_tuple;
 
-  /* "netCDF4/_netCDF4.pyx":2932
+  /* "netCDF4/_netCDF4.pyx":3043
  *         def __get__(self):
  *             shape = ()
  *             for dimname in self._getdims():             # <<<<<<<<<<<<<<
  *                 # look in current group, and parents for dim.
  *                 dim = _find_dim(self._grp,dimname)
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getdims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getdims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -26959,10 +27109,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -26970,9 +27120,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -26980,16 +27130,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -26998,7 +27148,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -27007,14 +27157,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2934
+    /* "netCDF4/_netCDF4.pyx":3045
  *             for dimname in self._getdims():
  *                 # look in current group, and parents for dim.
  *                 dim = _find_dim(self._grp,dimname)             # <<<<<<<<<<<<<<
  *                 shape = shape + (len(dim),)
  *             return shape
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = NULL;
     __pyx_t_7 = 0;
@@ -27028,7 +27178,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
         __pyx_t_7 = 1;
       }
     }
-    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     if (__pyx_t_6) {
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
@@ -27039,35 +27189,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
     __Pyx_INCREF(__pyx_v_dimname);
     PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_dimname);
     __Pyx_GIVEREF(__pyx_v_dimname);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2935
+    /* "netCDF4/_netCDF4.pyx":3046
  *                 # look in current group, and parents for dim.
  *                 dim = _find_dim(self._grp,dimname)
  *                 shape = shape + (len(dim),)             # <<<<<<<<<<<<<<
  *             return shape
  *         def __set__(self,value):
  */
-    __pyx_t_7 = PyObject_Length(__pyx_v_dim); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyObject_Length(__pyx_v_dim); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_v_shape, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(__pyx_v_shape, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_shape, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2932
+    /* "netCDF4/_netCDF4.pyx":3043
  *         def __get__(self):
  *             shape = ()
  *             for dimname in self._getdims():             # <<<<<<<<<<<<<<
@@ -27077,7 +27227,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2936
+  /* "netCDF4/_netCDF4.pyx":3047
  *                 dim = _find_dim(self._grp,dimname)
  *                 shape = shape + (len(dim),)
  *             return shape             # <<<<<<<<<<<<<<
@@ -27089,7 +27239,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
   __pyx_r = __pyx_v_shape;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2930
+  /* "netCDF4/_netCDF4.pyx":3041
  *     property shape:
  *         """find current sizes of all variable dimensions"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27115,7 +27265,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape___get__(struct __p
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2937
+/* "netCDF4/_netCDF4.pyx":3048
  *                 shape = shape + (len(dim),)
  *             return shape
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -27145,20 +27295,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape_2__set__(CYTHON_UNUSED s
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2938
+  /* "netCDF4/_netCDF4.pyx":3049
  *             return shape
  *         def __set__(self,value):
  *             raise AttributeError("shape cannot be altered")             # <<<<<<<<<<<<<<
  * 
  *     property size:
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":2937
+  /* "netCDF4/_netCDF4.pyx":3048
  *                 shape = shape + (len(dim),)
  *             return shape
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -27175,7 +27325,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_5shape_2__set__(CYTHON_UNUSED s
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2942
+/* "netCDF4/_netCDF4.pyx":3053
  *     property size:
  *         """Return the number of stored elements."""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27209,7 +27359,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4size___get__(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2943
+  /* "netCDF4/_netCDF4.pyx":3054
  *         """Return the number of stored elements."""
  *         def __get__(self):
  *             return numpy.prod(self.shape)             # <<<<<<<<<<<<<<
@@ -27217,12 +27367,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4size___get__(struct __py
  *     property dimensions:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_prod); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_prod); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -27235,17 +27385,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4size___get__(struct __py
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -27254,7 +27404,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4size___get__(struct __py
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2942
+  /* "netCDF4/_netCDF4.pyx":3053
  *     property size:
  *         """Return the number of stored elements."""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27277,7 +27427,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_4size___get__(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2947
+/* "netCDF4/_netCDF4.pyx":3058
  *     property dimensions:
  *         """get variables's dimension names"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27309,7 +27459,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(stru
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2948
+  /* "netCDF4/_netCDF4.pyx":3059
  *         """get variables's dimension names"""
  *         def __get__(self):
  *             return self._getdims()             # <<<<<<<<<<<<<<
@@ -27317,7 +27467,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(stru
  *             raise AttributeError("dimensions cannot be altered")
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getdims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getdims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -27330,10 +27480,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(stru
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -27341,7 +27491,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(stru
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2947
+  /* "netCDF4/_netCDF4.pyx":3058
  *     property dimensions:
  *         """get variables's dimension names"""
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -27362,7 +27512,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions___get__(stru
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2949
+/* "netCDF4/_netCDF4.pyx":3060
  *         def __get__(self):
  *             return self._getdims()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -27392,20 +27542,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions_2__set__(CYTHON_UN
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2950
+  /* "netCDF4/_netCDF4.pyx":3061
  *             return self._getdims()
  *         def __set__(self,value):
  *             raise AttributeError("dimensions cannot be altered")             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_Raise(__pyx_t_1, 0, 0, 0);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":2949
+  /* "netCDF4/_netCDF4.pyx":3060
  *         def __get__(self):
  *             return self._getdims()
  *         def __set__(self,value):             # <<<<<<<<<<<<<<
@@ -27422,17 +27572,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10dimensions_2__set__(CYTHON_UN
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2953
+/* "netCDF4/_netCDF4.pyx":3064
  * 
  * 
  *     def group(self):             # <<<<<<<<<<<<<<
  *         """
- * group(self)
+ * **`group(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_13group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_12group[] = "\ngroup(self)\n\nreturn the group that this L{Variable} is a member of.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_12group[] = "\n**`group(self)`**\n\nreturn the group that this `netCDF4.Variable` is a member of.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_13group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -27449,9 +27599,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12group(struct __pyx_obj_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("group", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2958
+  /* "netCDF4/_netCDF4.pyx":3069
  * 
- * return the group that this L{Variable} is a member of."""
+ * return the group that this `netCDF4.Variable` is a member of."""
  *         return self._grp             # <<<<<<<<<<<<<<
  * 
  *     def ncattrs(self):
@@ -27461,12 +27611,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12group(struct __pyx_obj_
   __pyx_r = __pyx_v_self->_grp;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2953
+  /* "netCDF4/_netCDF4.pyx":3064
  * 
  * 
  *     def group(self):             # <<<<<<<<<<<<<<
  *         """
- * group(self)
+ * **`group(self)`**
  */
 
   /* function exit code */
@@ -27476,17 +27626,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_12group(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2960
+/* "netCDF4/_netCDF4.pyx":3071
  *         return self._grp
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
  *         """
- * ncattrs(self)
+ * **`ncattrs(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_15ncattrs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_14ncattrs[] = "\nncattrs(self)\n\nreturn netCDF attribute names for this L{Variable} in a list.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_14ncattrs[] = "\n**`ncattrs(self)`**\n\nreturn netCDF attribute names for this `netCDF4.Variable` in a list.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_15ncattrs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -27507,26 +27657,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_14ncattrs(struct __pyx_ob
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("ncattrs", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2965
+  /* "netCDF4/_netCDF4.pyx":3076
  * 
- * return netCDF attribute names for this L{Variable} in a list."""
+ * return netCDF attribute names for this `netCDF4.Variable` in a list."""
  *         return _get_att_names(self._grpid, self._varid)             # <<<<<<<<<<<<<<
  * 
  *     def setncattr(self,name,value):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att_names(__pyx_v_self->_grpid, __pyx_v_self->_varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__get_att_names(__pyx_v_self->_grpid, __pyx_v_self->_varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2960
+  /* "netCDF4/_netCDF4.pyx":3071
  *         return self._grp
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
  *         """
- * ncattrs(self)
+ * **`ncattrs(self)`**
  */
 
   /* function exit code */
@@ -27540,17 +27690,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_14ncattrs(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2967
+/* "netCDF4/_netCDF4.pyx":3078
  *         return _get_att_names(self._grpid, self._varid)
  * 
  *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
  *         """
- * setncattr(self,name,value)
+ * **`setncattr(self,name,value)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17setncattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_16setncattr[] = "\nsetncattr(self,name,value)\n\nset a netCDF variable attribute using name,value pair.  Only use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_16setncattr[] = "\n**`setncattr(self,name,value)`**\n\nset a netCDF variable attribute using name,value pair.  Use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17setncattr(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_name = 0;
   PyObject *__pyx_v_value = 0;
@@ -27580,11 +27730,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17setncattr(PyObject *__p
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2967; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setncattr") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2967; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setncattr") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -27597,7 +27747,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_17setncattr(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2967; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("setncattr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable.setncattr", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -27622,19 +27772,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16setncattr(struct __pyx_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("setncattr", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2974
+  /* "netCDF4/_netCDF4.pyx":3085
  * netCDF attribute with the same name as one of the reserved python
  * attributes."""
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()             # <<<<<<<<<<<<<<
  *         _set_att(self._grp, self._varid, name, value)
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -27647,10 +27797,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16setncattr(struct __pyx_
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -27659,7 +27809,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16setncattr(struct __pyx_
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2975
+  /* "netCDF4/_netCDF4.pyx":3086
  * attributes."""
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         _set_att(self._grp, self._varid, name, value)             # <<<<<<<<<<<<<<
@@ -27668,24 +27818,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16setncattr(struct __pyx_
  */
   __pyx_t_1 = __pyx_v_self->_grp;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2976
+  /* "netCDF4/_netCDF4.pyx":3087
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         _set_att(self._grp, self._varid, name, value)
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()             # <<<<<<<<<<<<<<
  * 
  *     def setncatts(self,attdict):
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -27698,10 +27848,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16setncattr(struct __pyx_
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -27710,12 +27860,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16setncattr(struct __pyx_
   }
   __pyx_L4:;
 
-  /* "netCDF4/_netCDF4.pyx":2967
+  /* "netCDF4/_netCDF4.pyx":3078
  *         return _get_att_names(self._grpid, self._varid)
  * 
  *     def setncattr(self,name,value):             # <<<<<<<<<<<<<<
  *         """
- * setncattr(self,name,value)
+ * **`setncattr(self,name,value)`**
  */
 
   /* function exit code */
@@ -27733,17 +27883,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_16setncattr(struct __pyx_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2978
+/* "netCDF4/_netCDF4.pyx":3089
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  * 
  *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
  *         """
- * setncatts(self,attdict)
+ * **`setncatts(self,attdict)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_19setncatts(PyObject *__pyx_v_self, PyObject *__pyx_v_attdict); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_18setncatts[] = "\nsetncatts(self,attdict)\n\nset a bunch of netCDF variable attributes at once using a python dictionary.\nThis may be faster when setting a lot of attributes for a NETCDF3\nformatted file, since nc_redef/nc_enddef is not called in between setting\neach attribute";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_18setncatts[] = "\n**`setncatts(self,attdict)`**\n\nset a bunch of netCDF variable attributes at once using a python dictionary.\nThis may be faster when setting a lot of attributes for a `NETCDF3`\nformatted file, since nc_redef/nc_enddef is not called in between setting\neach attribute";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_19setncatts(PyObject *__pyx_v_self, PyObject *__pyx_v_attdict) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -27774,19 +27924,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("setncatts", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2986
+  /* "netCDF4/_netCDF4.pyx":3097
  * formatted file, since nc_redef/nc_enddef is not called in between setting
  * each attribute"""
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()             # <<<<<<<<<<<<<<
  *         for name, value in attdict.items():
  *             _set_att(self._grp, self._varid, name, value)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -27799,10 +27949,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -27811,14 +27961,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":2987
+  /* "netCDF4/_netCDF4.pyx":3098
  * each attribute"""
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         for name, value in attdict.items():             # <<<<<<<<<<<<<<
  *             _set_att(self._grp, self._varid, name, value)
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_attdict, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_attdict, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -27831,10 +27981,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -27842,9 +27992,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -27852,16 +28002,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -27870,7 +28020,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -27886,7 +28036,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -27899,15 +28049,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -27915,7 +28065,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
       __Pyx_GOTREF(__pyx_t_4);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L7_unpacking_done;
@@ -27923,7 +28073,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L7_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
@@ -27931,7 +28081,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
     __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2988
+    /* "netCDF4/_netCDF4.pyx":3099
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         for name, value in attdict.items():
  *             _set_att(self._grp, self._varid, name, value)             # <<<<<<<<<<<<<<
@@ -27940,12 +28090,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
  */
     __pyx_t_1 = __pyx_v_self->_grp;
     __Pyx_INCREF(__pyx_t_1);
-    __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__set_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name, __pyx_v_value); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":2987
+    /* "netCDF4/_netCDF4.pyx":3098
  * each attribute"""
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         for name, value in attdict.items():             # <<<<<<<<<<<<<<
@@ -27955,19 +28105,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":2989
+  /* "netCDF4/_netCDF4.pyx":3100
  *         for name, value in attdict.items():
  *             _set_att(self._grp, self._varid, name, value)
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()             # <<<<<<<<<<<<<<
  * 
  *     def getncattr(self,name):
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_2) {
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_1 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -27980,10 +28130,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
       }
     }
     if (__pyx_t_1) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -27992,12 +28142,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
   }
   __pyx_L8:;
 
-  /* "netCDF4/_netCDF4.pyx":2978
+  /* "netCDF4/_netCDF4.pyx":3089
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  * 
  *     def setncatts(self,attdict):             # <<<<<<<<<<<<<<
  *         """
- * setncatts(self,attdict)
+ * **`setncatts(self,attdict)`**
  */
 
   /* function exit code */
@@ -28019,17 +28169,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_18setncatts(struct __pyx_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2991
+/* "netCDF4/_netCDF4.pyx":3102
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  * 
  *     def getncattr(self,name):             # <<<<<<<<<<<<<<
  *         """
- * getncattr(self,name)
+ * **`getncattr(self,name)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_21getncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_20getncattr[] = "\ngetncattr(self,name)\n\nretrievel a netCDF variable attribute.  Only use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_20getncattr[] = "\n**`getncattr(self,name)`**\n\nretrievel a netCDF variable attribute.  Use if you need to set a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_21getncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28051,7 +28201,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_20getncattr(struct __pyx_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("getncattr", 0);
 
-  /* "netCDF4/_netCDF4.pyx":2998
+  /* "netCDF4/_netCDF4.pyx":3109
  * netCDF attribute with the same name as one of the reserved python
  * attributes."""
  *         return _get_att(self._grp, self._varid, name)             # <<<<<<<<<<<<<<
@@ -28061,19 +28211,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_20getncattr(struct __pyx_
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __pyx_v_self->_grp;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__get_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_7netCDF4_8_netCDF4__get_att(__pyx_t_1, __pyx_v_self->_varid, __pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":2991
+  /* "netCDF4/_netCDF4.pyx":3102
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  * 
  *     def getncattr(self,name):             # <<<<<<<<<<<<<<
  *         """
- * getncattr(self,name)
+ * **`getncattr(self,name)`**
  */
 
   /* function exit code */
@@ -28088,17 +28238,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_20getncattr(struct __pyx_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3000
+/* "netCDF4/_netCDF4.pyx":3111
  *         return _get_att(self._grp, self._varid, name)
  * 
  *     def delncattr(self, name):             # <<<<<<<<<<<<<<
  *         """
- * delncattr(self,name,value)
+ * **`delncattr(self,name,value)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_23delncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_22delncattr[] = "\ndelncattr(self,name,value)\n\ndelete a netCDF variable attribute.  Only use if you need to delete a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_22delncattr[] = "\n**`delncattr(self,name,value)`**\n\ndelete a netCDF variable attribute.  Use if you need to delete a\nnetCDF attribute with the same name as one of the reserved python\nattributes.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_23delncattr(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28126,41 +28276,41 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("delncattr", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3008
+  /* "netCDF4/_netCDF4.pyx":3119
  * attributes."""
  *         cdef char *attname
  *         bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *         attname = bytestr
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3009
+  /* "netCDF4/_netCDF4.pyx":3120
  *         cdef char *attname
  *         bytestr = _strencode(name)
  *         attname = bytestr             # <<<<<<<<<<<<<<
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         ierr = nc_del_att(self._grpid, self._varid, attname)
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_attname = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":3010
+  /* "netCDF4/_netCDF4.pyx":3121
  *         bytestr = _strencode(name)
  *         attname = bytestr
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()             # <<<<<<<<<<<<<<
  *         ierr = nc_del_att(self._grpid, self._varid, attname)
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_redef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -28173,10 +28323,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -28185,7 +28335,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3011
+  /* "netCDF4/_netCDF4.pyx":3122
  *         attname = bytestr
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         ierr = nc_del_att(self._grpid, self._varid, attname)             # <<<<<<<<<<<<<<
@@ -28194,19 +28344,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
  */
   __pyx_v_ierr = nc_del_att(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_attname);
 
-  /* "netCDF4/_netCDF4.pyx":3012
+  /* "netCDF4/_netCDF4.pyx":3123
  *         if self._grp.data_model != 'NETCDF4': self._grp._redef()
  *         ierr = nc_del_att(self._grpid, self._varid, attname)
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()             # <<<<<<<<<<<<<<
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_3) {
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_enddef); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -28219,10 +28369,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -28231,7 +28381,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
   }
   __pyx_L4:;
 
-  /* "netCDF4/_netCDF4.pyx":3013
+  /* "netCDF4/_netCDF4.pyx":3124
  *         ierr = nc_del_att(self._grpid, self._varid, attname)
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -28241,7 +28391,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3014
+    /* "netCDF4/_netCDF4.pyx":3125
  *         if self._grp.data_model != 'NETCDF4': self._grp._enddef()
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -28249,28 +28399,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
  *     def filters(self):
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3000
+  /* "netCDF4/_netCDF4.pyx":3111
  *         return _get_att(self._grp, self._varid, name)
  * 
  *     def delncattr(self, name):             # <<<<<<<<<<<<<<
  *         """
- * delncattr(self,name,value)
+ * **`delncattr(self,name,value)`**
  */
 
   /* function exit code */
@@ -28289,17 +28439,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_22delncattr(struct __pyx_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3016
+/* "netCDF4/_netCDF4.pyx":3127
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def filters(self):             # <<<<<<<<<<<<<<
  *         """
- * filters(self)
+ * **`filters(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_25filters(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_24filters[] = "\nfilters(self)\n\nreturn dictionary containing HDF5 filter parameters.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_24filters[] = "\n**`filters(self)`**\n\nreturn dictionary containing HDF5 filter parameters.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_25filters(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28330,38 +28480,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("filters", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3022
+  /* "netCDF4/_netCDF4.pyx":3133
  * return dictionary containing HDF5 filter parameters."""
  *         cdef int ierr,ideflate,ishuffle,ideflate_level,ifletcher32
  *         filtdict = {'zlib':False,'shuffle':False,'complevel':0,'fletcher32':False}             # <<<<<<<<<<<<<<
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
  *         with nogil:
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_zlib, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shuffle, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_complevel, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_fletcher32, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_zlib, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shuffle, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_complevel, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_fletcher32, Py_False) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_filtdict = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3023
+  /* "netCDF4/_netCDF4.pyx":3134
  *         cdef int ierr,ideflate,ishuffle,ideflate_level,ifletcher32
  *         filtdict = {'zlib':False,'shuffle':False,'complevel':0,'fletcher32':False}
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return             # <<<<<<<<<<<<<<
  *         with nogil:
  *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &ideflate_level)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4_CLASSIC, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4_CLASSIC, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -28372,7 +28522,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3024
+  /* "netCDF4/_netCDF4.pyx":3135
  *         filtdict = {'zlib':False,'shuffle':False,'complevel':0,'fletcher32':False}
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -28386,7 +28536,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3025
+        /* "netCDF4/_netCDF4.pyx":3136
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
  *         with nogil:
  *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &ideflate_level)             # <<<<<<<<<<<<<<
@@ -28396,7 +28546,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
         __pyx_v_ierr = nc_inq_var_deflate(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_ishuffle), (&__pyx_v_ideflate), (&__pyx_v_ideflate_level));
       }
 
-      /* "netCDF4/_netCDF4.pyx":3024
+      /* "netCDF4/_netCDF4.pyx":3135
  *         filtdict = {'zlib':False,'shuffle':False,'complevel':0,'fletcher32':False}
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -28414,7 +28564,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":3026
+  /* "netCDF4/_netCDF4.pyx":3137
  *         with nogil:
  *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &ideflate_level)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -28424,7 +28574,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3027
+    /* "netCDF4/_netCDF4.pyx":3138
  *             ierr = nc_inq_var_deflate(self._grpid, self._varid, &ishuffle, &ideflate, &ideflate_level)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -28432,23 +28582,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
  *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3028
+  /* "netCDF4/_netCDF4.pyx":3139
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -28462,7 +28612,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3029
+        /* "netCDF4/_netCDF4.pyx":3140
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         with nogil:
  *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)             # <<<<<<<<<<<<<<
@@ -28472,7 +28622,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
         __pyx_v_ierr = nc_inq_var_fletcher32(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_ifletcher32));
       }
 
-      /* "netCDF4/_netCDF4.pyx":3028
+      /* "netCDF4/_netCDF4.pyx":3139
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -28490,7 +28640,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":3030
+  /* "netCDF4/_netCDF4.pyx":3141
  *         with nogil:
  *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -28500,7 +28650,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3031
+    /* "netCDF4/_netCDF4.pyx":3142
  *             ierr = nc_inq_var_fletcher32(self._grpid, self._varid, &ifletcher32)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -28508,23 +28658,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
  *             filtdict['zlib']=True
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3032
+  /* "netCDF4/_netCDF4.pyx":3143
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if ideflate:             # <<<<<<<<<<<<<<
@@ -28534,31 +28684,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   __pyx_t_3 = (__pyx_v_ideflate != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3033
+    /* "netCDF4/_netCDF4.pyx":3144
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if ideflate:
  *             filtdict['zlib']=True             # <<<<<<<<<<<<<<
  *             filtdict['complevel']=ideflate_level
  *         if ishuffle:
  */
-    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_zlib, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_zlib, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "netCDF4/_netCDF4.pyx":3034
+    /* "netCDF4/_netCDF4.pyx":3145
  *         if ideflate:
  *             filtdict['zlib']=True
  *             filtdict['complevel']=ideflate_level             # <<<<<<<<<<<<<<
  *         if ishuffle:
  *             filtdict['shuffle']=True
  */
-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ideflate_level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ideflate_level); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_complevel, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_complevel, __pyx_t_1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     goto __pyx_L14;
   }
   __pyx_L14:;
 
-  /* "netCDF4/_netCDF4.pyx":3035
+  /* "netCDF4/_netCDF4.pyx":3146
  *             filtdict['zlib']=True
  *             filtdict['complevel']=ideflate_level
  *         if ishuffle:             # <<<<<<<<<<<<<<
@@ -28568,19 +28718,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   __pyx_t_3 = (__pyx_v_ishuffle != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3036
+    /* "netCDF4/_netCDF4.pyx":3147
  *             filtdict['complevel']=ideflate_level
  *         if ishuffle:
  *             filtdict['shuffle']=True             # <<<<<<<<<<<<<<
  *         if ifletcher32:
  *             filtdict['fletcher32']=True
  */
-    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_shuffle, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_shuffle, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L15;
   }
   __pyx_L15:;
 
-  /* "netCDF4/_netCDF4.pyx":3037
+  /* "netCDF4/_netCDF4.pyx":3148
  *         if ishuffle:
  *             filtdict['shuffle']=True
  *         if ifletcher32:             # <<<<<<<<<<<<<<
@@ -28590,19 +28740,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   __pyx_t_3 = (__pyx_v_ifletcher32 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3038
+    /* "netCDF4/_netCDF4.pyx":3149
  *             filtdict['shuffle']=True
  *         if ifletcher32:
  *             filtdict['fletcher32']=True             # <<<<<<<<<<<<<<
  *         return filtdict
  * 
  */
-    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_fletcher32, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_filtdict, __pyx_n_s_fletcher32, Py_True) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     goto __pyx_L16;
   }
   __pyx_L16:;
 
-  /* "netCDF4/_netCDF4.pyx":3039
+  /* "netCDF4/_netCDF4.pyx":3150
  *         if ifletcher32:
  *             filtdict['fletcher32']=True
  *         return filtdict             # <<<<<<<<<<<<<<
@@ -28614,12 +28764,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   __pyx_r = __pyx_v_filtdict;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":3016
+  /* "netCDF4/_netCDF4.pyx":3127
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def filters(self):             # <<<<<<<<<<<<<<
  *         """
- * filters(self)
+ * **`filters(self)`**
  */
 
   /* function exit code */
@@ -28635,17 +28785,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_24filters(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3041
+/* "netCDF4/_netCDF4.pyx":3152
  *         return filtdict
  * 
  *     def endian(self):             # <<<<<<<<<<<<<<
  *         """
- * endian(self)
+ * **`endian(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_27endian(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_26endian[] = "\nendian(self)\n\nreturn endian-ness (little,big,native) of variable (as stored in HDF5 file).";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_26endian[] = "\n**`endian(self)`**\n\nreturn endian-ness (`little,big,native`) of variable (as stored in HDF5 file).";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_27endian(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28672,29 +28822,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("endian", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3047
- * return endian-ness (little,big,native) of variable (as stored in HDF5 file)."""
+  /* "netCDF4/_netCDF4.pyx":3158
+ * return endian-ness (`little,big,native`) of variable (as stored in HDF5 file)."""
  *         cdef int ierr, iendian
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:             # <<<<<<<<<<<<<<
  *             return 'native'
  *         with nogil:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4_CLASSIC, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4_CLASSIC, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3048
+    /* "netCDF4/_netCDF4.pyx":3159
  *         cdef int ierr, iendian
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
  *             return 'native'             # <<<<<<<<<<<<<<
@@ -28707,7 +28857,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3049
+  /* "netCDF4/_netCDF4.pyx":3160
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
  *             return 'native'
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -28721,7 +28871,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3050
+        /* "netCDF4/_netCDF4.pyx":3161
  *             return 'native'
  *         with nogil:
  *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)             # <<<<<<<<<<<<<<
@@ -28731,7 +28881,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
         __pyx_v_ierr = nc_inq_var_endian(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_iendian));
       }
 
-      /* "netCDF4/_netCDF4.pyx":3049
+      /* "netCDF4/_netCDF4.pyx":3160
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
  *             return 'native'
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -28749,7 +28899,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":3051
+  /* "netCDF4/_netCDF4.pyx":3162
  *         with nogil:
  *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -28759,7 +28909,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3052
+    /* "netCDF4/_netCDF4.pyx":3163
  *             ierr = nc_inq_var_endian(self._grpid, self._varid, &iendian)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -28767,23 +28917,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
  *             return 'little'
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3055
+  /* "netCDF4/_netCDF4.pyx":3166
  *         if iendian == NC_ENDIAN_LITTLE:
  *             return 'little'
  *         elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
@@ -28792,7 +28942,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
  */
   switch (__pyx_v_iendian) {
 
-    /* "netCDF4/_netCDF4.pyx":3053
+    /* "netCDF4/_netCDF4.pyx":3164
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if iendian == NC_ENDIAN_LITTLE:             # <<<<<<<<<<<<<<
@@ -28801,7 +28951,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
  */
     case NC_ENDIAN_LITTLE:
 
-    /* "netCDF4/_netCDF4.pyx":3054
+    /* "netCDF4/_netCDF4.pyx":3165
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         if iendian == NC_ENDIAN_LITTLE:
  *             return 'little'             # <<<<<<<<<<<<<<
@@ -28814,7 +28964,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
     goto __pyx_L0;
     break;
 
-    /* "netCDF4/_netCDF4.pyx":3055
+    /* "netCDF4/_netCDF4.pyx":3166
  *         if iendian == NC_ENDIAN_LITTLE:
  *             return 'little'
  *         elif iendian == NC_ENDIAN_BIG:             # <<<<<<<<<<<<<<
@@ -28823,7 +28973,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
  */
     case NC_ENDIAN_BIG:
 
-    /* "netCDF4/_netCDF4.pyx":3056
+    /* "netCDF4/_netCDF4.pyx":3167
  *             return 'little'
  *         elif iendian == NC_ENDIAN_BIG:
  *             return 'big'             # <<<<<<<<<<<<<<
@@ -28837,7 +28987,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
     break;
     default:
 
-    /* "netCDF4/_netCDF4.pyx":3058
+    /* "netCDF4/_netCDF4.pyx":3169
  *             return 'big'
  *         else:
  *             return 'native'             # <<<<<<<<<<<<<<
@@ -28851,12 +29001,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
     break;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3041
+  /* "netCDF4/_netCDF4.pyx":3152
  *         return filtdict
  * 
  *     def endian(self):             # <<<<<<<<<<<<<<
  *         """
- * endian(self)
+ * **`endian(self)`**
  */
 
   /* function exit code */
@@ -28871,17 +29021,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_26endian(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3060
+/* "netCDF4/_netCDF4.pyx":3171
  *             return 'native'
  * 
  *     def chunking(self):             # <<<<<<<<<<<<<<
  *         """
- * chunking(self)
+ * **`chunking(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_29chunking(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_28chunking[] = "\nchunking(self)\n\nreturn variable chunking information.  If the dataset is\ndefined to be contiguous (and hence there is no chunking) the word 'contiguous'\nis returned.  Otherwise, a sequence with the chunksize for\neach dimension is returned.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_28chunking[] = "\n**`chunking(self)`**\n\nreturn variable chunking information.  If the dataset is\ndefined to be contiguous (and hence there is no chunking) the word 'contiguous'\nis returned.  Otherwise, a sequence with the chunksize for\neach dimension is returned.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_29chunking(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -28914,22 +29064,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("chunking", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3070
+  /* "netCDF4/_netCDF4.pyx":3181
  *         cdef int ierr, icontiguous, ndims
  *         cdef size_t *chunksizesp
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return None             # <<<<<<<<<<<<<<
  *         ndims = self.ndim
  *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_grp, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4_CLASSIC, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4_CLASSIC, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_NETCDF4, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -28941,17 +29091,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3071
+  /* "netCDF4/_netCDF4.pyx":3182
  *         cdef size_t *chunksizesp
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return None
  *         ndims = self.ndim             # <<<<<<<<<<<<<<
  *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *         with nogil:
  */
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_self->ndim); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_self->ndim); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_ndims = __pyx_t_4;
 
-  /* "netCDF4/_netCDF4.pyx":3072
+  /* "netCDF4/_netCDF4.pyx":3183
  *         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']: return None
  *         ndims = self.ndim
  *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)             # <<<<<<<<<<<<<<
@@ -28960,7 +29110,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
  */
   __pyx_v_chunksizesp = ((size_t *)malloc(((sizeof(size_t)) * __pyx_v_ndims)));
 
-  /* "netCDF4/_netCDF4.pyx":3073
+  /* "netCDF4/_netCDF4.pyx":3184
  *         ndims = self.ndim
  *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -28974,7 +29124,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3074
+        /* "netCDF4/_netCDF4.pyx":3185
  *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *         with nogil:
  *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)             # <<<<<<<<<<<<<<
@@ -28984,7 +29134,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
         __pyx_v_ierr = nc_inq_var_chunking(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_icontiguous), __pyx_v_chunksizesp);
       }
 
-      /* "netCDF4/_netCDF4.pyx":3073
+      /* "netCDF4/_netCDF4.pyx":3184
  *         ndims = self.ndim
  *         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -29002,7 +29152,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":3075
+  /* "netCDF4/_netCDF4.pyx":3186
  *         with nogil:
  *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -29012,7 +29162,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3076
+    /* "netCDF4/_netCDF4.pyx":3187
  *             ierr = nc_inq_var_chunking(self._grpid, self._varid, &icontiguous, chunksizesp)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -29020,35 +29170,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
  *         for n from 0 <= n < ndims:
  */
     __pyx_t_5 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_5, 0, strlen(__pyx_t_5), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_5, 0, strlen(__pyx_t_5), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3077
+  /* "netCDF4/_netCDF4.pyx":3188
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         chunksizes=[]             # <<<<<<<<<<<<<<
  *         for n from 0 <= n < ndims:
  *             chunksizes.append(chunksizesp[n])
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_chunksizes = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3078
+  /* "netCDF4/_netCDF4.pyx":3189
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         chunksizes=[]
  *         for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
@@ -29058,20 +29208,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
   __pyx_t_4 = __pyx_v_ndims;
   for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_4; __pyx_v_n++) {
 
-    /* "netCDF4/_netCDF4.pyx":3079
+    /* "netCDF4/_netCDF4.pyx":3190
  *         chunksizes=[]
  *         for n from 0 <= n < ndims:
  *             chunksizes.append(chunksizesp[n])             # <<<<<<<<<<<<<<
  *         free(chunksizesp)
  *         if icontiguous:
  */
-    __pyx_t_1 = __Pyx_PyInt_FromSize_t((__pyx_v_chunksizesp[__pyx_v_n])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyInt_FromSize_t((__pyx_v_chunksizesp[__pyx_v_n])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_chunksizes, __pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_chunksizes, __pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3080
+  /* "netCDF4/_netCDF4.pyx":3191
  *         for n from 0 <= n < ndims:
  *             chunksizes.append(chunksizesp[n])
  *         free(chunksizesp)             # <<<<<<<<<<<<<<
@@ -29080,7 +29230,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
  */
   free(__pyx_v_chunksizesp);
 
-  /* "netCDF4/_netCDF4.pyx":3081
+  /* "netCDF4/_netCDF4.pyx":3192
  *             chunksizes.append(chunksizesp[n])
  *         free(chunksizesp)
  *         if icontiguous:             # <<<<<<<<<<<<<<
@@ -29090,7 +29240,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
   __pyx_t_3 = (__pyx_v_icontiguous != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3082
+    /* "netCDF4/_netCDF4.pyx":3193
  *         free(chunksizesp)
  *         if icontiguous:
  *             return 'contiguous'             # <<<<<<<<<<<<<<
@@ -29104,7 +29254,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3084
+    /* "netCDF4/_netCDF4.pyx":3195
  *             return 'contiguous'
  *         else:
  *             return chunksizes             # <<<<<<<<<<<<<<
@@ -29117,12 +29267,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3060
+  /* "netCDF4/_netCDF4.pyx":3171
  *             return 'native'
  * 
  *     def chunking(self):             # <<<<<<<<<<<<<<
  *         """
- * chunking(self)
+ * **`chunking(self)`**
  */
 
   /* function exit code */
@@ -29138,17 +29288,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_28chunking(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3086
+/* "netCDF4/_netCDF4.pyx":3197
  *             return chunksizes
  * 
  *     def get_var_chunk_cache(self):             # <<<<<<<<<<<<<<
  *         """
- * get_var_chunk_cache(self)
+ * **`get_var_chunk_cache(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_31get_var_chunk_cache(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache[] = "\nget_var_chunk_cache(self)\n\nreturn variable chunk cache information in a tuple (size,nelems,preemption).\nSee netcdf C library documentation for C{nc_get_var_chunk_cache} for\ndetails.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache[] = "\n**`get_var_chunk_cache(self)`**\n\nreturn variable chunk cache information in a tuple (size,nelems,preemption).\nSee netcdf C library documentation for `nc_get_var_chunk_cache` for\ndetails.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_31get_var_chunk_cache(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -29180,7 +29330,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("get_var_chunk_cache", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3096
+  /* "netCDF4/_netCDF4.pyx":3207
  *         cdef size_t sizep, nelemsp
  *         cdef float preemptionp
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -29194,7 +29344,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3097
+        /* "netCDF4/_netCDF4.pyx":3208
  *         cdef float preemptionp
  *         with nogil:
  *             ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,             # <<<<<<<<<<<<<<
@@ -29204,7 +29354,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
         __pyx_v_ierr = nc_get_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_sizep), (&__pyx_v_nelemsp), (&__pyx_v_preemptionp));
       }
 
-      /* "netCDF4/_netCDF4.pyx":3096
+      /* "netCDF4/_netCDF4.pyx":3207
  *         cdef size_t sizep, nelemsp
  *         cdef float preemptionp
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -29222,7 +29372,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":3099
+  /* "netCDF4/_netCDF4.pyx":3210
  *             ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
  *                    &nelemsp, &preemptionp)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -29232,7 +29382,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
   __pyx_t_1 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":3100
+    /* "netCDF4/_netCDF4.pyx":3211
  *                    &nelemsp, &preemptionp)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -29240,23 +29390,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
  *         return (size,nelems,preemption)
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3101
+  /* "netCDF4/_netCDF4.pyx":3212
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         size = sizep; nelems = nelemsp; preemption = preemptionp             # <<<<<<<<<<<<<<
@@ -29265,12 +29415,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
  */
   __pyx_v_size = __pyx_v_sizep;
   __pyx_v_nelems = __pyx_v_nelemsp;
-  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_preemptionp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_preemptionp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_preemption = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3102
+  /* "netCDF4/_netCDF4.pyx":3213
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         size = sizep; nelems = nelemsp; preemption = preemptionp
  *         return (size,nelems,preemption)             # <<<<<<<<<<<<<<
@@ -29278,11 +29428,11 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
  *     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_nelems); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_nelems); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -29297,12 +29447,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":3086
+  /* "netCDF4/_netCDF4.pyx":3197
  *             return chunksizes
  * 
  *     def get_var_chunk_cache(self):             # <<<<<<<<<<<<<<
  *         """
- * get_var_chunk_cache(self)
+ * **`get_var_chunk_cache(self)`**
  */
 
   /* function exit code */
@@ -29319,17 +29469,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_30get_var_chunk_cache(str
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3104
+/* "netCDF4/_netCDF4.pyx":3215
  *         return (size,nelems,preemption)
  * 
  *     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
  *         """
- * set_var_chunk_cache(self,size=None,nelems=None,preemption=None)
+ * **`set_var_chunk_cache(self,size=None,nelems=None,preemption=None)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_33set_var_chunk_cache(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache[] = "\nset_var_chunk_cache(self,size=None,nelems=None,preemption=None)\n\nchange variable chunk cache settings.\nSee netcdf C library documentation for C{nc_set_var_chunk_cache} for\ndetails.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache[] = "\n**`set_var_chunk_cache(self,size=None,nelems=None,preemption=None)`**\n\nchange variable chunk cache settings.\nSee netcdf C library documentation for `nc_set_var_chunk_cache` for\ndetails.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_33set_var_chunk_cache(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_size = 0;
   PyObject *__pyx_v_nelems = 0;
@@ -29375,7 +29525,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_33set_var_chunk_cache(PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_var_chunk_cache") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_var_chunk_cache") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -29392,7 +29542,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_33set_var_chunk_cache(PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_var_chunk_cache", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("set_var_chunk_cache", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable.set_var_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -29431,14 +29581,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_var_chunk_cache", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3115
+  /* "netCDF4/_netCDF4.pyx":3226
  *         cdef float preemptionp
  *         # reset chunk cache size, leave other parameters unchanged.
  *         size_orig, nelems_orig, preemption_orig = self.get_var_chunk_cache()             # <<<<<<<<<<<<<<
  *         if size is not None:
  *             sizep = size
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_var_chunk_cache); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_var_chunk_cache); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -29451,10 +29601,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -29468,7 +29618,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
     if (unlikely(size != 3)) {
       if (size > 3) __Pyx_RaiseTooManyValuesError(3);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -29484,17 +29634,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_t_4);
     #else
-    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
     Py_ssize_t index = -1;
-    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
@@ -29504,7 +29654,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
     __Pyx_GOTREF(__pyx_t_3);
     index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
     __Pyx_GOTREF(__pyx_t_4);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_6 = NULL;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     goto __pyx_L4_unpacking_done;
@@ -29512,7 +29662,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L4_unpacking_done:;
   }
   __pyx_v_size_orig = __pyx_t_2;
@@ -29522,7 +29672,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
   __pyx_v_preemption_orig = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3116
+  /* "netCDF4/_netCDF4.pyx":3227
  *         # reset chunk cache size, leave other parameters unchanged.
  *         size_orig, nelems_orig, preemption_orig = self.get_var_chunk_cache()
  *         if size is not None:             # <<<<<<<<<<<<<<
@@ -29533,32 +29683,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":3117
+    /* "netCDF4/_netCDF4.pyx":3228
  *         size_orig, nelems_orig, preemption_orig = self.get_var_chunk_cache()
  *         if size is not None:
  *             sizep = size             # <<<<<<<<<<<<<<
  *         else:
  *             sizep = size_orig
  */
-    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_sizep = __pyx_t_9;
     goto __pyx_L5;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3119
+    /* "netCDF4/_netCDF4.pyx":3230
  *             sizep = size
  *         else:
  *             sizep = size_orig             # <<<<<<<<<<<<<<
  *         if nelems is not None:
  *             nelemsp = nelems
  */
-    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_size_orig); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_size_orig); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_sizep = __pyx_t_9;
   }
   __pyx_L5:;
 
-  /* "netCDF4/_netCDF4.pyx":3120
+  /* "netCDF4/_netCDF4.pyx":3231
  *         else:
  *             sizep = size_orig
  *         if nelems is not None:             # <<<<<<<<<<<<<<
@@ -29569,32 +29719,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
   __pyx_t_7 = (__pyx_t_8 != 0);
   if (__pyx_t_7) {
 
-    /* "netCDF4/_netCDF4.pyx":3121
+    /* "netCDF4/_netCDF4.pyx":3232
  *             sizep = size_orig
  *         if nelems is not None:
  *             nelemsp = nelems             # <<<<<<<<<<<<<<
  *         else:
  *             nelemsp = nelems_orig
  */
-    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_nelems); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_nelems); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_nelemsp = __pyx_t_9;
     goto __pyx_L6;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3123
+    /* "netCDF4/_netCDF4.pyx":3234
  *             nelemsp = nelems
  *         else:
  *             nelemsp = nelems_orig             # <<<<<<<<<<<<<<
  *         if preemption is not None:
  *             preemptionp = preemption
  */
-    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_nelems_orig); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_nelems_orig); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_nelemsp = __pyx_t_9;
   }
   __pyx_L6:;
 
-  /* "netCDF4/_netCDF4.pyx":3124
+  /* "netCDF4/_netCDF4.pyx":3235
  *         else:
  *             nelemsp = nelems_orig
  *         if preemption is not None:             # <<<<<<<<<<<<<<
@@ -29605,32 +29755,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
   __pyx_t_8 = (__pyx_t_7 != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":3125
+    /* "netCDF4/_netCDF4.pyx":3236
  *             nelemsp = nelems_orig
  *         if preemption is not None:
  *             preemptionp = preemption             # <<<<<<<<<<<<<<
  *         else:
  *             preemptionp = preemption_orig
  */
-    __pyx_t_10 = __pyx_PyFloat_AsFloat(__pyx_v_preemption); if (unlikely((__pyx_t_10 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __pyx_PyFloat_AsFloat(__pyx_v_preemption); if (unlikely((__pyx_t_10 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_preemptionp = __pyx_t_10;
     goto __pyx_L7;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3127
+    /* "netCDF4/_netCDF4.pyx":3238
  *             preemptionp = preemption
  *         else:
  *             preemptionp = preemption_orig             # <<<<<<<<<<<<<<
  *         ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
  *                nelemsp, preemptionp)
  */
-    __pyx_t_10 = __pyx_PyFloat_AsFloat(__pyx_v_preemption_orig); if (unlikely((__pyx_t_10 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __pyx_PyFloat_AsFloat(__pyx_v_preemption_orig); if (unlikely((__pyx_t_10 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_preemptionp = __pyx_t_10;
   }
   __pyx_L7:;
 
-  /* "netCDF4/_netCDF4.pyx":3128
+  /* "netCDF4/_netCDF4.pyx":3239
  *         else:
  *             preemptionp = preemption_orig
  *         ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,             # <<<<<<<<<<<<<<
@@ -29639,7 +29789,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
  */
   __pyx_v_ierr = nc_set_var_chunk_cache(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_sizep, __pyx_v_nelemsp, __pyx_v_preemptionp);
 
-  /* "netCDF4/_netCDF4.pyx":3130
+  /* "netCDF4/_netCDF4.pyx":3241
  *         ierr = nc_set_var_chunk_cache(self._grpid, self._varid, sizep,
  *                nelemsp, preemptionp)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -29649,7 +29799,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
   __pyx_t_8 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":3131
+    /* "netCDF4/_netCDF4.pyx":3242
  *                nelemsp, preemptionp)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -29657,28 +29807,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
  *     def __delattr__(self,name):
  */
     __pyx_t_11 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3104
+  /* "netCDF4/_netCDF4.pyx":3215
  *         return (size,nelems,preemption)
  * 
  *     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):             # <<<<<<<<<<<<<<
  *         """
- * set_var_chunk_cache(self,size=None,nelems=None,preemption=None)
+ * **`set_var_chunk_cache(self,size=None,nelems=None,preemption=None)`**
  */
 
   /* function exit code */
@@ -29701,7 +29851,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_32set_var_chunk_cache(str
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3133
+/* "netCDF4/_netCDF4.pyx":3244
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
@@ -29736,28 +29886,28 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_34__delattr__(struct __pyx_obj_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__delattr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3135
+  /* "netCDF4/_netCDF4.pyx":3246
  *     def __delattr__(self,name):
  *         # if it's a netCDF attribute, remove it
  *         if name not in _private_atts:             # <<<<<<<<<<<<<<
  *             self.delncattr(name)
  *         else:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3136
+    /* "netCDF4/_netCDF4.pyx":3247
  *         # if it's a netCDF attribute, remove it
  *         if name not in _private_atts:
  *             self.delncattr(name)             # <<<<<<<<<<<<<<
  *         else:
  *             raise AttributeError(
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_delncattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_delncattr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -29770,16 +29920,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_34__delattr__(struct __pyx_obj_
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -29789,19 +29939,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_34__delattr__(struct __pyx_obj_
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3139
+    /* "netCDF4/_netCDF4.pyx":3250
  *         else:
  *             raise AttributeError(
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
  * 
  *     def __setattr__(self,name,value):
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_name);
@@ -29809,32 +29959,32 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_34__delattr__(struct __pyx_obj_
     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3138
+    /* "netCDF4/_netCDF4.pyx":3249
  *             self.delncattr(name)
  *         else:
  *             raise AttributeError(             # <<<<<<<<<<<<<<
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
  * 
  */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3133
+  /* "netCDF4/_netCDF4.pyx":3244
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def __delattr__(self,name):             # <<<<<<<<<<<<<<
@@ -29857,7 +30007,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_34__delattr__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3141
+/* "netCDF4/_netCDF4.pyx":3252
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
  * 
  *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
@@ -29895,90 +30045,90 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
   __Pyx_RefNannySetupContext("__setattr__", 0);
   __Pyx_INCREF(__pyx_v_value);
 
-  /* "netCDF4/_netCDF4.pyx":3144
+  /* "netCDF4/_netCDF4.pyx":3255
  *         # if name in _private_atts, it is stored at the python
  *         # level and not in the netCDF file.
  *         if name not in _private_atts:             # <<<<<<<<<<<<<<
  *             # if setting _FillValue or missing_value, make sure value
  *             # has same type as variable.
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3147
+    /* "netCDF4/_netCDF4.pyx":3258
  *             # if setting _FillValue or missing_value, make sure value
  *             # has same type as variable.
  *             if name == '_FillValue':             # <<<<<<<<<<<<<<
  *                 msg='_FillValue attribute must be set when variable is '+\
  *                 'created (using fill_value keyword to createVariable)'
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FillValue, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_FillValue, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3148
+      /* "netCDF4/_netCDF4.pyx":3259
  *             # has same type as variable.
  *             if name == '_FillValue':
  *                 msg='_FillValue attribute must be set when variable is '+\             # <<<<<<<<<<<<<<
  *                 'created (using fill_value keyword to createVariable)'
  *                 raise AttributeError(msg)
  */
-      __pyx_t_1 = PyNumber_Add(__pyx_kp_s_FillValue_attribute_must_be_set, __pyx_kp_s_created_using_fill_value_keyword); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyNumber_Add(__pyx_kp_s_FillValue_attribute_must_be_set, __pyx_kp_s_created_using_fill_value_keyword); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_msg = __pyx_t_1;
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3150
+      /* "netCDF4/_netCDF4.pyx":3261
  *                 msg='_FillValue attribute must be set when variable is '+\
  *                 'created (using fill_value keyword to createVariable)'
  *                 raise AttributeError(msg)             # <<<<<<<<<<<<<<
  *                 #if self._isprimitive:
  *                 #    value = numpy.array(value, self.dtype)
  */
-      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_msg);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_msg);
       __Pyx_GIVEREF(__pyx_v_msg);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_Raise(__pyx_t_4, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3157
+    /* "netCDF4/_netCDF4.pyx":3268
  *                 #    "VLEN or compound variable"
  *                 #    raise AttributeError(msg)
  *             elif name == 'missing_value' and self._isprimitive:             # <<<<<<<<<<<<<<
  *                 value = numpy.array(value, self.dtype)
  *             self.setncattr(name, value)
  */
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_missing_value, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_missing_value, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_2) {
     } else {
       __pyx_t_3 = __pyx_t_2;
       goto __pyx_L5_bool_binop_done;
     }
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_3 = __pyx_t_2;
     __pyx_L5_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3158
+      /* "netCDF4/_netCDF4.pyx":3269
  *                 #    raise AttributeError(msg)
  *             elif name == 'missing_value' and self._isprimitive:
  *                 value = numpy.array(value, self.dtype)             # <<<<<<<<<<<<<<
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_1 = NULL;
@@ -29993,7 +30143,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_1) {
         PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -30004,7 +30154,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
       __Pyx_INCREF(__pyx_v_self->dtype);
       PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_self->dtype);
       __Pyx_GIVEREF(__pyx_v_self->dtype);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -30014,14 +30164,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
     }
     __pyx_L4:;
 
-    /* "netCDF4/_netCDF4.pyx":3159
+    /* "netCDF4/_netCDF4.pyx":3270
  *             elif name == 'missing_value' and self._isprimitive:
  *                 value = numpy.array(value, self.dtype)
  *             self.setncattr(name, value)             # <<<<<<<<<<<<<<
  *         elif not name.endswith('__'):
  *             if hasattr(self,name):
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setncattr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setncattr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_7 = NULL;
     __pyx_t_6 = 0;
@@ -30035,7 +30185,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (__pyx_t_7) {
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -30046,7 +30196,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
     __Pyx_INCREF(__pyx_v_value);
     PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_value);
     __Pyx_GIVEREF(__pyx_v_value);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -30054,47 +30204,47 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
     goto __pyx_L3;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3160
+  /* "netCDF4/_netCDF4.pyx":3271
  *                 value = numpy.array(value, self.dtype)
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
  *             if hasattr(self,name):
  *                 raise AttributeError(
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_2 = ((!__pyx_t_3) != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":3161
+    /* "netCDF4/_netCDF4.pyx":3272
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):
  *             if hasattr(self,name):             # <<<<<<<<<<<<<<
  *                 raise AttributeError(
  *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
  */
-    __pyx_t_2 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_v_name); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3163
+      /* "netCDF4/_netCDF4.pyx":3274
  *             if hasattr(self,name):
  *                 raise AttributeError(
  *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))             # <<<<<<<<<<<<<<
  *             else:
  *                 self.__dict__[name]=value
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_4 = PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_Tuple(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_name);
@@ -30102,48 +30252,48 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
       PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
       __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_is_one_of_the_reserved_attrib_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3162
+      /* "netCDF4/_netCDF4.pyx":3273
  *         elif not name.endswith('__'):
  *             if hasattr(self,name):
  *                 raise AttributeError(             # <<<<<<<<<<<<<<
  *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
  *             else:
  */
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
       __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_4, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3165
+      /* "netCDF4/_netCDF4.pyx":3276
  *                 "'%s' is one of the reserved attributes %s, cannot rebind. Use setncattr instead." % (name, tuple(_private_atts)))
  *             else:
  *                 self.__dict__[name]=value             # <<<<<<<<<<<<<<
  * 
  *     def __getattr__(self,name):
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
     goto __pyx_L3;
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3141
+  /* "netCDF4/_netCDF4.pyx":3252
  *             "'%s' is one of the reserved attributes %s, cannot delete. Use delncattr instead." % (name, tuple(_private_atts)))
  * 
  *     def __setattr__(self,name,value):             # <<<<<<<<<<<<<<
@@ -30168,7 +30318,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_36__setattr__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3167
+/* "netCDF4/_netCDF4.pyx":3278
  *                 self.__dict__[name]=value
  * 
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
@@ -30211,54 +30361,54 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
   __Pyx_RefNannySetupContext("__getattr__", 0);
   __Pyx_INCREF(__pyx_v_name);
 
-  /* "netCDF4/_netCDF4.pyx":3170
+  /* "netCDF4/_netCDF4.pyx":3281
  *         # if name in _private_atts, it is stored at the python
  *         # level and not in the netCDF file.
  *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_4) {
   } else {
     __pyx_t_1 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_endswith); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_1 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":3172
+    /* "netCDF4/_netCDF4.pyx":3283
  *         if name.startswith('__') and name.endswith('__'):
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':             # <<<<<<<<<<<<<<
  *                 names = self.ncattrs()
  *                 values = []
  */
-    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dict, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":3173
+      /* "netCDF4/_netCDF4.pyx":3284
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':
  *                 names = self.ncattrs()             # <<<<<<<<<<<<<<
  *                 values = []
  *                 for name in names:
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -30271,29 +30421,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
         }
       }
       if (__pyx_t_5) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_v_names = __pyx_t_2;
       __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3174
+      /* "netCDF4/_netCDF4.pyx":3285
  *             if name == '__dict__':
  *                 names = self.ncattrs()
  *                 values = []             # <<<<<<<<<<<<<<
  *                 for name in names:
  *                     values.append(_get_att(self._grp, self._varid, name))
  */
-      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_v_values = ((PyObject*)__pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3175
+      /* "netCDF4/_netCDF4.pyx":3286
  *                 names = self.ncattrs()
  *                 values = []
  *                 for name in names:             # <<<<<<<<<<<<<<
@@ -30304,25 +30454,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
         __pyx_t_2 = __pyx_v_names; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
         __pyx_t_7 = NULL;
       } else {
-        __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_names); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       for (;;) {
         if (likely(!__pyx_t_7)) {
           if (likely(PyList_CheckExact(__pyx_t_2))) {
             if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -30331,7 +30481,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -30340,7 +30490,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
         __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3176
+        /* "netCDF4/_netCDF4.pyx":3287
  *                 values = []
  *                 for name in names:
  *                     values.append(_get_att(self._grp, self._varid, name))             # <<<<<<<<<<<<<<
@@ -30349,13 +30499,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
  */
         __pyx_t_3 = __pyx_v_self->_grp;
         __Pyx_INCREF(__pyx_t_3);
-        __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__get_att(__pyx_t_3, __pyx_v_self->_varid, __pyx_v_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__get_att(__pyx_t_3, __pyx_v_self->_varid, __pyx_v_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_values, __pyx_t_5); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_values, __pyx_t_5); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3175
+        /* "netCDF4/_netCDF4.pyx":3286
  *                 names = self.ncattrs()
  *                 values = []
  *                 for name in names:             # <<<<<<<<<<<<<<
@@ -30365,7 +30515,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
       }
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3177
+      /* "netCDF4/_netCDF4.pyx":3288
  *                 for name in names:
  *                     values.append(_get_att(self._grp, self._varid, name))
  *                 return OrderedDict(zip(names,values))             # <<<<<<<<<<<<<<
@@ -30373,9 +30523,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
  *                 raise AttributeError
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_10 = NULL;
       __pyx_t_6 = 0;
@@ -30389,7 +30539,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_10) {
         PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL;
@@ -30400,7 +30550,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
       __Pyx_INCREF(__pyx_v_values);
       PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_v_values);
       __Pyx_GIVEREF(__pyx_v_values);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -30415,17 +30565,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_11);
         PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
         PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_3);
         __Pyx_GIVEREF(__pyx_t_3);
         __pyx_t_3 = 0;
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
@@ -30436,7 +30586,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3179
+      /* "netCDF4/_netCDF4.pyx":3290
  *                 return OrderedDict(zip(names,values))
  *             else:
  *                 raise AttributeError             # <<<<<<<<<<<<<<
@@ -30444,25 +30594,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
  *             return self.__dict__[name]
  */
       __Pyx_Raise(__pyx_builtin_AttributeError, 0, 0, 0);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
   }
 
-  /* "netCDF4/_netCDF4.pyx":3180
+  /* "netCDF4/_netCDF4.pyx":3291
  *             else:
  *                 raise AttributeError
  *         elif name in _private_atts:             # <<<<<<<<<<<<<<
  *             return self.__dict__[name]
  *         else:
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_private_atts); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":3181
+    /* "netCDF4/_netCDF4.pyx":3292
  *                 raise AttributeError
  *         elif name in _private_atts:
  *             return self.__dict__[name]             # <<<<<<<<<<<<<<
@@ -30470,9 +30620,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
  *             return self.getncattr(name)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3181; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_5 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3292; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_r = __pyx_t_5;
@@ -30481,7 +30631,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3183
+    /* "netCDF4/_netCDF4.pyx":3294
  *             return self.__dict__[name]
  *         else:
  *             return self.getncattr(name)             # <<<<<<<<<<<<<<
@@ -30489,7 +30639,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
  *     def renameAttribute(self, oldname, newname):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getncattr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_11 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -30502,16 +30652,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
       }
     }
     if (!__pyx_t_11) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
     } else {
-      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL;
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     }
@@ -30521,7 +30671,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3167
+  /* "netCDF4/_netCDF4.pyx":3278
  *                 self.__dict__[name]=value
  * 
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
@@ -30548,17 +30698,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_38__getattr__(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3185
+/* "netCDF4/_netCDF4.pyx":3296
  *             return self.getncattr(name)
  * 
  *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameAttribute(self, oldname, newname)
+ * **`renameAttribute(self, oldname, newname)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_41renameAttribute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_40renameAttribute[] = "\nrenameAttribute(self, oldname, newname)\n\nrename a L{Variable} attribute named C{oldname} to C{newname}.";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_40renameAttribute[] = "\n**`renameAttribute(self, oldname, newname)`**\n\nrename a `netCDF4.Variable` attribute named `oldname` to `newname`.";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_41renameAttribute(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_oldname = 0;
   PyObject *__pyx_v_newname = 0;
@@ -30588,11 +30738,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_41renameAttribute(PyObjec
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameAttribute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "renameAttribute") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -30605,7 +30755,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_41renameAttribute(PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("renameAttribute", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable.renameAttribute", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -30634,51 +30784,51 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_40renameAttribute(struct
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("renameAttribute", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3193
+  /* "netCDF4/_netCDF4.pyx":3304
  *         cdef char *oldnamec
  *         cdef char *newnamec
  *         bytestr = _strencode(oldname)             # <<<<<<<<<<<<<<
  *         oldnamec = bytestr
  *         bytestr = _strencode(newname)
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_oldname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_oldname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3194
+  /* "netCDF4/_netCDF4.pyx":3305
  *         cdef char *newnamec
  *         bytestr = _strencode(oldname)
  *         oldnamec = bytestr             # <<<<<<<<<<<<<<
  *         bytestr = _strencode(newname)
  *         newnamec = bytestr
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_oldnamec = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":3195
+  /* "netCDF4/_netCDF4.pyx":3306
  *         bytestr = _strencode(oldname)
  *         oldnamec = bytestr
  *         bytestr = _strencode(newname)             # <<<<<<<<<<<<<<
  *         newnamec = bytestr
  *         ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_newname, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3196
+  /* "netCDF4/_netCDF4.pyx":3307
  *         oldnamec = bytestr
  *         bytestr = _strencode(newname)
  *         newnamec = bytestr             # <<<<<<<<<<<<<<
  *         ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
  *         if ierr != NC_NOERR:
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_newnamec = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":3197
+  /* "netCDF4/_netCDF4.pyx":3308
  *         bytestr = _strencode(newname)
  *         newnamec = bytestr
  *         ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)             # <<<<<<<<<<<<<<
@@ -30687,7 +30837,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_40renameAttribute(struct
  */
   __pyx_v_ierr = nc_rename_att(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_oldnamec, __pyx_v_newnamec);
 
-  /* "netCDF4/_netCDF4.pyx":3198
+  /* "netCDF4/_netCDF4.pyx":3309
  *         newnamec = bytestr
  *         ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -30697,7 +30847,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_40renameAttribute(struct
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3199
+    /* "netCDF4/_netCDF4.pyx":3310
  *         ierr = nc_rename_att(self._grpid, self._varid, oldnamec, newnamec)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -30705,28 +30855,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_40renameAttribute(struct
  *     def __getitem__(self, elem):
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3185
+  /* "netCDF4/_netCDF4.pyx":3296
  *             return self.getncattr(name)
  * 
  *     def renameAttribute(self, oldname, newname):             # <<<<<<<<<<<<<<
  *         """
- * renameAttribute(self, oldname, newname)
+ * **`renameAttribute(self, oldname, newname)`**
  */
 
   /* function exit code */
@@ -30744,7 +30894,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_40renameAttribute(struct
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3201
+/* "netCDF4/_netCDF4.pyx":3312
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -30807,16 +30957,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3207
+  /* "netCDF4/_netCDF4.pyx":3318
  *         # arguments to the nc_get_var() function, and is much more easy
  *         # to use.
  *         start, count, stride, put_ind = _StartCountStride(elem,self.shape)             # <<<<<<<<<<<<<<
  *         datashape = _out_array_shape(count)
  *         if self._isvlen:
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_5 = 0;
@@ -30830,7 +30980,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       __pyx_t_5 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_4) {
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -30841,7 +30991,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -30855,7 +31005,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     if (unlikely(size != 4)) {
       if (size > 4) __Pyx_RaiseTooManyValuesError(4);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -30878,7 +31028,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       Py_ssize_t i;
       PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_4};
       for (i=0; i < 4; i++) {
-        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(item);
         *(temps[i]) = item;
       }
@@ -30888,7 +31038,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   } else {
     Py_ssize_t index = -1;
     PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_4};
-    __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -30897,7 +31047,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       __Pyx_GOTREF(item);
       *(temps[index]) = item;
     }
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_8 = NULL;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     goto __pyx_L4_unpacking_done;
@@ -30905,7 +31055,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_8 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L4_unpacking_done:;
   }
   __pyx_v_start = __pyx_t_2;
@@ -30917,14 +31067,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __pyx_v_put_ind = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3208
+  /* "netCDF4/_netCDF4.pyx":3319
  *         # to use.
  *         start, count, stride, put_ind = _StartCountStride(elem,self.shape)
  *         datashape = _out_array_shape(count)             # <<<<<<<<<<<<<<
  *         if self._isvlen:
  *             data = numpy.empty(datashape, dtype='O')
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -30937,16 +31087,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_count);
     PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_count);
     __Pyx_GIVEREF(__pyx_v_count);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -30954,37 +31104,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __pyx_v_datashape = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3209
+  /* "netCDF4/_netCDF4.pyx":3320
  *         start, count, stride, put_ind = _StartCountStride(elem,self.shape)
  *         datashape = _out_array_shape(count)
  *         if self._isvlen:             # <<<<<<<<<<<<<<
  *             data = numpy.empty(datashape, dtype='O')
  *         else:
  */
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_9) {
 
-    /* "netCDF4/_netCDF4.pyx":3210
+    /* "netCDF4/_netCDF4.pyx":3321
  *         datashape = _out_array_shape(count)
  *         if self._isvlen:
  *             data = numpy.empty(datashape, dtype='O')             # <<<<<<<<<<<<<<
  *         else:
  *             data = numpy.empty(datashape, dtype=self.dtype)
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_datashape);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_datashape);
     __Pyx_GIVEREF(__pyx_v_datashape);
-    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_n_s_O) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_n_s_O) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -30995,27 +31145,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3212
+    /* "netCDF4/_netCDF4.pyx":3323
  *             data = numpy.empty(datashape, dtype='O')
  *         else:
  *             data = numpy.empty(datashape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
  *         # Determine which dimensions need to be
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_datashape);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_datashape);
     __Pyx_GIVEREF(__pyx_v_datashape);
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_v_self->dtype) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_v_self->dtype) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -31025,28 +31175,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   }
   __pyx_L5:;
 
-  /* "netCDF4/_netCDF4.pyx":3218
+  /* "netCDF4/_netCDF4.pyx":3329
  *         # The convention used is that for those cases,
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]             # <<<<<<<<<<<<<<
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_slice__50);
   PyList_SET_ITEM(__pyx_t_1, 0, __pyx_slice__50);
   __Pyx_GIVEREF(__pyx_slice__50);
-  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_squeeze = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3219
+  /* "netCDF4/_netCDF4.pyx":3330
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
@@ -31055,18 +31205,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
  */
   __Pyx_INCREF(__pyx_int_0);
   __pyx_t_3 = __pyx_int_0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_1, 0, -1, NULL, NULL, &__pyx_slice__51, 0, 1, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_t_1, 0, -1, NULL, NULL, &__pyx_slice__51, 0, 1, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
     __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   for (;;) {
@@ -31074,16 +31224,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -31092,7 +31242,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -31102,28 +31252,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __pyx_t_4 = 0;
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
-    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_int_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3);
     __pyx_t_3 = __pyx_t_4;
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3220
+    /* "netCDF4/_netCDF4.pyx":3331
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:             # <<<<<<<<<<<<<<
  *                 squeeze[i] = 0
  * 
  */
-    __pyx_t_4 = PyObject_RichCompare(__pyx_v_n, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_v_n, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_11) {
     } else {
       __pyx_t_9 = __pyx_t_11;
       goto __pyx_L9_bool_binop_done;
     }
-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(Py_Ellipsis);
     PyTuple_SET_ITEM(__pyx_t_6, 0, Py_Ellipsis);
@@ -31131,10 +31281,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __Pyx_INCREF(__pyx_v_i);
     PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_i);
     __Pyx_GIVEREF(__pyx_v_i);
-    __pyx_t_2 = PyObject_GetItem(__pyx_v_put_ind, __pyx_t_6); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_2 = PyObject_GetItem(__pyx_v_put_ind, __pyx_t_6); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -31148,37 +31298,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_9 = __pyx_t_11;
     __pyx_L9_bool_binop_done:;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3221
+      /* "netCDF4/_netCDF4.pyx":3332
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  *                 squeeze[i] = 0             # <<<<<<<<<<<<<<
  * 
  *         # Reshape the arrays so we can iterate over them.
  */
-      if (unlikely(PyObject_SetItem(__pyx_v_squeeze, __pyx_v_i, __pyx_int_0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_v_squeeze, __pyx_v_i, __pyx_int_0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L8;
     }
     __pyx_L8:;
 
-    /* "netCDF4/_netCDF4.pyx":3219
+    /* "netCDF4/_netCDF4.pyx":3330
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
@@ -31189,28 +31339,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3224
+  /* "netCDF4/_netCDF4.pyx":3335
  * 
  *         # Reshape the arrays so we can iterate over them.
  *         start = start.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         count = count.reshape((-1, self.ndim or 1))
  *         stride = stride.reshape((-1, self.ndim or 1))
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_9) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_4 = __pyx_v_self->ndim;
     goto __pyx_L11_bool_binop_done;
   }
-  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_4 = __pyx_t_6;
   __pyx_t_6 = 0;
   __pyx_L11_bool_binop_done:;
-  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_neg_1);
@@ -31229,17 +31379,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -31247,28 +31397,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3225
+  /* "netCDF4/_netCDF4.pyx":3336
  *         # Reshape the arrays so we can iterate over them.
  *         start = start.reshape((-1, self.ndim or 1))
  *         count = count.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         stride = stride.reshape((-1, self.ndim or 1))
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_count, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_count, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_9) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_2 = __pyx_v_self->ndim;
     goto __pyx_L13_bool_binop_done;
   }
-  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_2 = __pyx_t_6;
   __pyx_t_6 = 0;
   __pyx_L13_bool_binop_done:;
-  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_neg_1);
@@ -31287,17 +31437,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -31305,28 +31455,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __Pyx_DECREF_SET(__pyx_v_count, __pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3226
+  /* "netCDF4/_netCDF4.pyx":3337
  *         start = start.reshape((-1, self.ndim or 1))
  *         count = count.reshape((-1, self.ndim or 1))
  *         stride = stride.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_stride, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_stride, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_9) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_4 = __pyx_v_self->ndim;
     goto __pyx_L15_bool_binop_done;
   }
-  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_4 = __pyx_t_6;
   __pyx_t_6 = 0;
   __pyx_L15_bool_binop_done:;
-  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_neg_1);
@@ -31345,17 +31495,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     }
   }
   if (!__pyx_t_4) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -31363,28 +31513,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __Pyx_DECREF_SET(__pyx_v_stride, __pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3227
+  /* "netCDF4/_netCDF4.pyx":3338
  *         count = count.reshape((-1, self.ndim or 1))
  *         stride = stride.reshape((-1, self.ndim or 1))
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  * 
  *         # Fill output array with data chunks.
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_9) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_2 = __pyx_v_self->ndim;
     goto __pyx_L17_bool_binop_done;
   }
-  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_2 = __pyx_t_6;
   __pyx_t_6 = 0;
   __pyx_L17_bool_binop_done:;
-  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_neg_1);
@@ -31403,17 +31553,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -31421,14 +31571,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __Pyx_DECREF_SET(__pyx_v_put_ind, __pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3230
+  /* "netCDF4/_netCDF4.pyx":3341
  * 
  *         # Fill output array with data chunks.
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
  *             datout = self._get(a,b,c)
  *             if not hasattr(datout,'shape') or data.shape == datout.shape:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_4 = NULL;
   __pyx_t_5 = 0;
@@ -31442,7 +31592,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       __pyx_t_5 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_4) {
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -31459,7 +31609,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __Pyx_INCREF(__pyx_v_put_ind);
   PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_put_ind);
   __Pyx_GIVEREF(__pyx_v_put_ind);
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -31467,9 +31617,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   for (;;) {
@@ -31477,16 +31627,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -31495,7 +31645,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -31511,7 +31661,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       if (unlikely(size != 4)) {
         if (size > 4) __Pyx_RaiseTooManyValuesError(4);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -31534,7 +31684,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         Py_ssize_t i;
         PyObject** temps[4] = {&__pyx_t_6,&__pyx_t_4,&__pyx_t_2,&__pyx_t_7};
         for (i=0; i < 4; i++) {
-          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(item);
           *(temps[i]) = item;
         }
@@ -31544,7 +31694,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     } else {
       Py_ssize_t index = -1;
       PyObject** temps[4] = {&__pyx_t_6,&__pyx_t_4,&__pyx_t_2,&__pyx_t_7};
-      __pyx_t_12 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_8 = Py_TYPE(__pyx_t_12)->tp_iternext;
@@ -31553,7 +31703,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         __Pyx_GOTREF(item);
         *(temps[index]) = item;
       }
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_12), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_12), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = NULL;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       goto __pyx_L22_unpacking_done;
@@ -31561,7 +31711,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       __pyx_t_8 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L22_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_6);
@@ -31573,14 +31723,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3231
+    /* "netCDF4/_netCDF4.pyx":3342
  *         # Fill output array with data chunks.
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):
  *             datout = self._get(a,b,c)             # <<<<<<<<<<<<<<
  *             if not hasattr(datout,'shape') or data.shape == datout.shape:
  *                 data = datout
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_2 = NULL;
     __pyx_t_13 = 0;
@@ -31594,7 +31744,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         __pyx_t_13 = 1;
       }
     }
-    __pyx_t_4 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     if (__pyx_t_2) {
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
@@ -31608,41 +31758,41 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __Pyx_INCREF(__pyx_v_c);
     PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_13, __pyx_v_c);
     __Pyx_GIVEREF(__pyx_v_c);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF_SET(__pyx_v_datout, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3232
+    /* "netCDF4/_netCDF4.pyx":3343
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):
  *             datout = self._get(a,b,c)
  *             if not hasattr(datout,'shape') or data.shape == datout.shape:             # <<<<<<<<<<<<<<
  *                 data = datout
  *             else:
  */
-    __pyx_t_11 = PyObject_HasAttr(__pyx_v_datout, __pyx_n_s_shape); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_HasAttr(__pyx_v_datout, __pyx_n_s_shape); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_14 = ((!(__pyx_t_11 != 0)) != 0);
     if (!__pyx_t_14) {
     } else {
       __pyx_t_9 = __pyx_t_14;
       goto __pyx_L24_bool_binop_done;
     }
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datout, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datout, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_9 = __pyx_t_14;
     __pyx_L24_bool_binop_done:;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3233
+      /* "netCDF4/_netCDF4.pyx":3344
  *             datout = self._get(a,b,c)
  *             if not hasattr(datout,'shape') or data.shape == datout.shape:
  *                 data = datout             # <<<<<<<<<<<<<<
@@ -31655,32 +31805,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3235
+      /* "netCDF4/_netCDF4.pyx":3346
  *                 data = datout
  *             else:
  *                 shape = getattr(data[tuple(i)], 'shape', ())             # <<<<<<<<<<<<<<
  *                 data[tuple(i)] = datout.reshape(shape)
  * 
  */
-      __pyx_t_4 = PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = PyObject_GetItem(__pyx_v_data, __pyx_t_4); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3235; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_7 = PyObject_GetItem(__pyx_v_data, __pyx_t_4); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3346; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_GetAttr3(__pyx_t_7, __pyx_n_s_shape, __pyx_empty_tuple); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetAttr3(__pyx_t_7, __pyx_n_s_shape, __pyx_empty_tuple); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF_SET(__pyx_v_shape, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3236
+      /* "netCDF4/_netCDF4.pyx":3347
  *             else:
  *                 shape = getattr(data[tuple(i)], 'shape', ())
  *                 data[tuple(i)] = datout.reshape(shape)             # <<<<<<<<<<<<<<
  * 
  *         # Remove extra singleton dimensions.
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datout, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_datout, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_3 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -31693,29 +31843,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         }
       }
       if (!__pyx_t_3) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
         __Pyx_INCREF(__pyx_v_shape);
         PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_shape);
         __Pyx_GIVEREF(__pyx_v_shape);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      if (unlikely(PyObject_SetItem(__pyx_v_data, __pyx_t_7, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_v_data, __pyx_t_7, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
     __pyx_L23:;
 
-    /* "netCDF4/_netCDF4.pyx":3230
+    /* "netCDF4/_netCDF4.pyx":3341
  * 
  *         # Fill output array with data chunks.
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
@@ -31725,27 +31875,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3239
+  /* "netCDF4/_netCDF4.pyx":3350
  * 
  *         # Remove extra singleton dimensions.
  *         if hasattr(data,'shape'):             # <<<<<<<<<<<<<<
  *             data = data[tuple(squeeze)]
  *         if hasattr(data,'ndim') and self.ndim == 0:
  */
-  __pyx_t_9 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_14 = (__pyx_t_9 != 0);
   if (__pyx_t_14) {
 
-    /* "netCDF4/_netCDF4.pyx":3240
+    /* "netCDF4/_netCDF4.pyx":3351
  *         # Remove extra singleton dimensions.
  *         if hasattr(data,'shape'):
  *             data = data[tuple(squeeze)]             # <<<<<<<<<<<<<<
  *         if hasattr(data,'ndim') and self.ndim == 0:
  *             # Make sure a numpy scalar array is returned instead of a 1-d array of
  */
-    __pyx_t_1 = PySequence_Tuple(__pyx_v_squeeze); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PySequence_Tuple(__pyx_v_squeeze); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyObject_GetItem(__pyx_v_data, __pyx_t_1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_data, __pyx_t_1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3351; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
@@ -31754,47 +31904,47 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   }
   __pyx_L26:;
 
-  /* "netCDF4/_netCDF4.pyx":3241
+  /* "netCDF4/_netCDF4.pyx":3352
  *         if hasattr(data,'shape'):
  *             data = data[tuple(squeeze)]
  *         if hasattr(data,'ndim') and self.ndim == 0:             # <<<<<<<<<<<<<<
  *             # Make sure a numpy scalar array is returned instead of a 1-d array of
  *             # length 1.
  */
-  __pyx_t_9 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_11 = (__pyx_t_9 != 0);
   if (__pyx_t_11) {
   } else {
     __pyx_t_14 = __pyx_t_11;
     goto __pyx_L28_bool_binop_done;
   }
-  __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->ndim, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->ndim, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_14 = __pyx_t_11;
   __pyx_L28_bool_binop_done:;
   if (__pyx_t_14) {
 
-    /* "netCDF4/_netCDF4.pyx":3244
+    /* "netCDF4/_netCDF4.pyx":3355
  *             # Make sure a numpy scalar array is returned instead of a 1-d array of
  *             # length 1.
  *             if data.ndim != 0: data = numpy.asarray(data[0])             # <<<<<<<<<<<<<<
  * 
  *         # if auto_scale mode set to True, (through
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_14) {
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_asarray); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_data, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_data, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_2 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
@@ -31807,17 +31957,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         }
       }
       if (!__pyx_t_2) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else {
-        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
         PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4);
         __Pyx_GIVEREF(__pyx_t_4);
         __pyx_t_4 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
@@ -31831,7 +31981,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   }
   __pyx_L27:;
 
-  /* "netCDF4/_netCDF4.pyx":3254
+  /* "netCDF4/_netCDF4.pyx":3365
  *         # missing_value/_Fill_Value.
  *         # ignore for compound and vlen datatypes.
  *         try: # check to see if scale_factor and add_offset is valid (issue 176).             # <<<<<<<<<<<<<<
@@ -31845,43 +31995,43 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __Pyx_XGOTREF(__pyx_t_17);
     /*try:*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3255
+      /* "netCDF4/_netCDF4.pyx":3366
  *         # ignore for compound and vlen datatypes.
  *         try: # check to see if scale_factor and add_offset is valid (issue 176).
  *             if hasattr(self,'scale_factor'): float(self.scale_factor)             # <<<<<<<<<<<<<<
  *             if hasattr(self,'add_offset'): float(self.add_offset)
  *             valid_scaleoffset = True
  */
-      __pyx_t_14 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3255; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+      __pyx_t_14 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
       __pyx_t_11 = (__pyx_t_14 != 0);
       if (__pyx_t_11) {
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3255; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_18 = __Pyx_PyObject_AsDouble(__pyx_t_1); if (unlikely(__pyx_t_18 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3255; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+        __pyx_t_18 = __Pyx_PyObject_AsDouble(__pyx_t_1); if (unlikely(__pyx_t_18 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L39;
       }
       __pyx_L39:;
 
-      /* "netCDF4/_netCDF4.pyx":3256
+      /* "netCDF4/_netCDF4.pyx":3367
  *         try: # check to see if scale_factor and add_offset is valid (issue 176).
  *             if hasattr(self,'scale_factor'): float(self.scale_factor)
  *             if hasattr(self,'add_offset'): float(self.add_offset)             # <<<<<<<<<<<<<<
  *             valid_scaleoffset = True
  *         except:
  */
-      __pyx_t_11 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3256; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+      __pyx_t_11 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3367; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
       __pyx_t_14 = (__pyx_t_11 != 0);
       if (__pyx_t_14) {
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3256; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3367; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_18 = __Pyx_PyObject_AsDouble(__pyx_t_1); if (unlikely(__pyx_t_18 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3256; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+        __pyx_t_18 = __Pyx_PyObject_AsDouble(__pyx_t_1); if (unlikely(__pyx_t_18 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3367; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L40;
       }
       __pyx_L40:;
 
-      /* "netCDF4/_netCDF4.pyx":3257
+      /* "netCDF4/_netCDF4.pyx":3368
  *             if hasattr(self,'scale_factor'): float(self.scale_factor)
  *             if hasattr(self,'add_offset'): float(self.add_offset)
  *             valid_scaleoffset = True             # <<<<<<<<<<<<<<
@@ -31903,7 +32053,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3258
+    /* "netCDF4/_netCDF4.pyx":3369
  *             if hasattr(self,'add_offset'): float(self.add_offset)
  *             valid_scaleoffset = True
  *         except:             # <<<<<<<<<<<<<<
@@ -31912,12 +32062,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
  */
     /*except:*/ {
       __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3258; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3369; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_3);
 
-      /* "netCDF4/_netCDF4.pyx":3259
+      /* "netCDF4/_netCDF4.pyx":3370
  *             valid_scaleoffset = True
  *         except:
  *             valid_scaleoffset = False             # <<<<<<<<<<<<<<
@@ -31926,17 +32076,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
  */
       __pyx_v_valid_scaleoffset = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3260
+      /* "netCDF4/_netCDF4.pyx":3371
  *         except:
  *             valid_scaleoffset = False
  *             if self.scale:             # <<<<<<<<<<<<<<
  *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'
  *                 warnings.warn(msg)
  */
-      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3260; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+      __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
       if (__pyx_t_14) {
 
-        /* "netCDF4/_netCDF4.pyx":3261
+        /* "netCDF4/_netCDF4.pyx":3372
  *             valid_scaleoffset = False
  *             if self.scale:
  *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'             # <<<<<<<<<<<<<<
@@ -31946,16 +32096,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
         __Pyx_INCREF(__pyx_kp_s_invalid_scale_factor_or_add_offs);
         __pyx_v_msg = __pyx_kp_s_invalid_scale_factor_or_add_offs;
 
-        /* "netCDF4/_netCDF4.pyx":3262
+        /* "netCDF4/_netCDF4.pyx":3373
  *             if self.scale:
  *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'
  *                 warnings.warn(msg)             # <<<<<<<<<<<<<<
  *         if self.mask and self._isprimitive:
  *             data = self._toma(data)
  */
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3262; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3373; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3262; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3373; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __pyx_t_2 = NULL;
@@ -31969,16 +32119,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
           }
         }
         if (!__pyx_t_2) {
-          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_msg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3262; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_msg); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3373; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
           __Pyx_GOTREF(__pyx_t_4);
         } else {
-          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3262; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3373; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
           __Pyx_GOTREF(__pyx_t_12);
           PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
           __Pyx_INCREF(__pyx_v_msg);
           PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_msg);
           __Pyx_GIVEREF(__pyx_v_msg);
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3262; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3373; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
@@ -32006,32 +32156,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
     __pyx_L38_try_end:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3263
+  /* "netCDF4/_netCDF4.pyx":3374
  *                 msg = 'invalid scale_factor or add_offset attribute, no unpacking done...'
  *                 warnings.warn(msg)
  *         if self.mask and self._isprimitive:             # <<<<<<<<<<<<<<
  *             data = self._toma(data)
  *         if self.scale and self._isprimitive and valid_scaleoffset:
  */
-  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->mask); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->mask); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_11) {
   } else {
     __pyx_t_14 = __pyx_t_11;
     goto __pyx_L45_bool_binop_done;
   }
-  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_14 = __pyx_t_11;
   __pyx_L45_bool_binop_done:;
   if (__pyx_t_14) {
 
-    /* "netCDF4/_netCDF4.pyx":3264
+    /* "netCDF4/_netCDF4.pyx":3375
  *                 warnings.warn(msg)
  *         if self.mask and self._isprimitive:
  *             data = self._toma(data)             # <<<<<<<<<<<<<<
  *         if self.scale and self._isprimitive and valid_scaleoffset:
  *             # if variable has scale_factor and add_offset attributes, rescale.
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_toma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_toma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_1 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -32044,16 +32194,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       }
     }
     if (!__pyx_t_1) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_data); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_data); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
       __Pyx_INCREF(__pyx_v_data);
       PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_data);
       __Pyx_GIVEREF(__pyx_v_data);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
@@ -32064,20 +32214,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   }
   __pyx_L44:;
 
-  /* "netCDF4/_netCDF4.pyx":3265
+  /* "netCDF4/_netCDF4.pyx":3376
  *         if self.mask and self._isprimitive:
  *             data = self._toma(data)
  *         if self.scale and self._isprimitive and valid_scaleoffset:             # <<<<<<<<<<<<<<
  *             # if variable has scale_factor and add_offset attributes, rescale.
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset') and\
  */
-  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_11) {
   } else {
     __pyx_t_14 = __pyx_t_11;
     goto __pyx_L48_bool_binop_done;
   }
-  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_11) {
   } else {
     __pyx_t_14 = __pyx_t_11;
@@ -32088,21 +32238,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __pyx_L48_bool_binop_done:;
   if (__pyx_t_14) {
 
-    /* "netCDF4/_netCDF4.pyx":3267
+    /* "netCDF4/_netCDF4.pyx":3378
  *         if self.scale and self._isprimitive and valid_scaleoffset:
  *             # if variable has scale_factor and add_offset attributes, rescale.
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset') and\             # <<<<<<<<<<<<<<
  *             (self.add_offset != 0.0 or self.scale_factor != 1.0):
  *                 data = data*self.scale_factor + self.add_offset
  */
-    __pyx_t_11 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_9 = (__pyx_t_11 != 0);
     if (__pyx_t_9) {
     } else {
       __pyx_t_14 = __pyx_t_9;
       goto __pyx_L52_bool_binop_done;
     }
-    __pyx_t_9 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_11 = (__pyx_t_9 != 0);
     if (__pyx_t_11) {
     } else {
@@ -32110,49 +32260,49 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       goto __pyx_L52_bool_binop_done;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3268
+    /* "netCDF4/_netCDF4.pyx":3379
  *             # if variable has scale_factor and add_offset attributes, rescale.
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset') and\
  *             (self.add_offset != 0.0 or self.scale_factor != 1.0):             # <<<<<<<<<<<<<<
  *                 data = data*self.scale_factor + self.add_offset
  *             # else if variable has only scale_factor attributes, rescale.
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_float_0_0, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_float_0_0, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (!__pyx_t_11) {
     } else {
       __pyx_t_14 = __pyx_t_11;
       goto __pyx_L52_bool_binop_done;
     }
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_float_1_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_float_1_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_14 = __pyx_t_11;
     __pyx_L52_bool_binop_done:;
     if (__pyx_t_14) {
 
-      /* "netCDF4/_netCDF4.pyx":3269
+      /* "netCDF4/_netCDF4.pyx":3380
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset') and\
  *             (self.add_offset != 0.0 or self.scale_factor != 1.0):
  *                 data = data*self.scale_factor + self.add_offset             # <<<<<<<<<<<<<<
  *             # else if variable has only scale_factor attributes, rescale.
  *             elif hasattr(self, 'scale_factor') and self.scale_factor != 1.0:
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = PyNumber_Multiply(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyNumber_Multiply(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Add(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -32161,40 +32311,40 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       goto __pyx_L51;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3271
+    /* "netCDF4/_netCDF4.pyx":3382
  *                 data = data*self.scale_factor + self.add_offset
  *             # else if variable has only scale_factor attributes, rescale.
  *             elif hasattr(self, 'scale_factor') and self.scale_factor != 1.0:             # <<<<<<<<<<<<<<
  *                 data = data*self.scale_factor
  *             # else if variable has only add_offset attributes, rescale.
  */
-    __pyx_t_11 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_9 = (__pyx_t_11 != 0);
     if (__pyx_t_9) {
     } else {
       __pyx_t_14 = __pyx_t_9;
       goto __pyx_L56_bool_binop_done;
     }
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_float_1_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_float_1_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_14 = __pyx_t_9;
     __pyx_L56_bool_binop_done:;
     if (__pyx_t_14) {
 
-      /* "netCDF4/_netCDF4.pyx":3272
+      /* "netCDF4/_netCDF4.pyx":3383
  *             # else if variable has only scale_factor attributes, rescale.
  *             elif hasattr(self, 'scale_factor') and self.scale_factor != 1.0:
  *                 data = data*self.scale_factor             # <<<<<<<<<<<<<<
  *             # else if variable has only add_offset attributes, rescale.
  *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyNumber_Multiply(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Multiply(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
@@ -32202,40 +32352,40 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
       goto __pyx_L51;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3274
+    /* "netCDF4/_netCDF4.pyx":3385
  *                 data = data*self.scale_factor
  *             # else if variable has only add_offset attributes, rescale.
  *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:             # <<<<<<<<<<<<<<
  *                 data = data + self.add_offset
  *         return data
  */
-    __pyx_t_9 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_11 = (__pyx_t_9 != 0);
     if (__pyx_t_11) {
     } else {
       __pyx_t_14 = __pyx_t_11;
       goto __pyx_L58_bool_binop_done;
     }
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_float_0_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_float_0_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_14 = __pyx_t_11;
     __pyx_L58_bool_binop_done:;
     if (__pyx_t_14) {
 
-      /* "netCDF4/_netCDF4.pyx":3275
+      /* "netCDF4/_netCDF4.pyx":3386
  *             # else if variable has only add_offset attributes, rescale.
  *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:
  *                 data = data + self.add_offset             # <<<<<<<<<<<<<<
  *         return data
  * 
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = PyNumber_Add(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Add(__pyx_v_data, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
@@ -32247,7 +32397,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   }
   __pyx_L47:;
 
-  /* "netCDF4/_netCDF4.pyx":3276
+  /* "netCDF4/_netCDF4.pyx":3387
  *             elif hasattr(self, 'add_offset') and self.add_offset != 0.0:
  *                 data = data + self.add_offset
  *         return data             # <<<<<<<<<<<<<<
@@ -32259,7 +32409,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   __pyx_r = __pyx_v_data;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":3201
+  /* "netCDF4/_netCDF4.pyx":3312
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -32299,7 +32449,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_42__getitem__(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3278
+/* "netCDF4/_netCDF4.pyx":3389
  *         return data
  * 
  *     def _toma(self,data):             # <<<<<<<<<<<<<<
@@ -32358,23 +32508,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   __Pyx_RefNannySetupContext("_toma", 0);
   __Pyx_INCREF(__pyx_v_data);
 
-  /* "netCDF4/_netCDF4.pyx":3282
+  /* "netCDF4/_netCDF4.pyx":3393
  *         # private function for creating a masked array, masking missing_values
  *         # and/or _FillValues.
  *         totalmask = numpy.zeros(data.shape, numpy.bool)             # <<<<<<<<<<<<<<
  *         fill_value = None
  *         if hasattr(self, 'missing_value'):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_bool); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_bool); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -32389,7 +32539,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __pyx_t_6 = 1;
     }
   }
-  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (__pyx_t_4) {
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -32400,14 +32550,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   __Pyx_GIVEREF(__pyx_t_5);
   __pyx_t_2 = 0;
   __pyx_t_5 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_totalmask = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3283
+  /* "netCDF4/_netCDF4.pyx":3394
  *         # and/or _FillValues.
  *         totalmask = numpy.zeros(data.shape, numpy.bool)
  *         fill_value = None             # <<<<<<<<<<<<<<
@@ -32417,30 +32567,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   __Pyx_INCREF(Py_None);
   __pyx_v_fill_value = Py_None;
 
-  /* "netCDF4/_netCDF4.pyx":3284
+  /* "netCDF4/_netCDF4.pyx":3395
  *         totalmask = numpy.zeros(data.shape, numpy.bool)
  *         fill_value = None
  *         if hasattr(self, 'missing_value'):             # <<<<<<<<<<<<<<
  *             mval = numpy.array(self.missing_value, self.dtype)
  *             if (self.endian() == 'big' and is_native_little) or\
  */
-  __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_9 = (__pyx_t_8 != 0);
   if (__pyx_t_9) {
 
-    /* "netCDF4/_netCDF4.pyx":3285
+    /* "netCDF4/_netCDF4.pyx":3396
  *         fill_value = None
  *         if hasattr(self, 'missing_value'):
  *             mval = numpy.array(self.missing_value, self.dtype)             # <<<<<<<<<<<<<<
  *             if (self.endian() == 'big' and is_native_little) or\
  *                (self.endian() == 'little' and is_native_big):
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_5 = NULL;
     __pyx_t_6 = 0;
@@ -32454,7 +32604,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     if (__pyx_t_5) {
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -32465,21 +32615,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_self->dtype);
     __Pyx_GIVEREF(__pyx_v_self->dtype);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_v_mval = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3286
+    /* "netCDF4/_netCDF4.pyx":3397
  *         if hasattr(self, 'missing_value'):
  *             mval = numpy.array(self.missing_value, self.dtype)
  *             if (self.endian() == 'big' and is_native_little) or\             # <<<<<<<<<<<<<<
  *                (self.endian() == 'little' and is_native_big):
  *                 mval.byteswap(True)
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -32492,22 +32642,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (!__pyx_t_8) {
       goto __pyx_L6_next_or;
     } else {
     }
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (!__pyx_t_8) {
     } else {
@@ -32516,14 +32666,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     __pyx_L6_next_or:;
 
-    /* "netCDF4/_netCDF4.pyx":3287
+    /* "netCDF4/_netCDF4.pyx":3398
  *             mval = numpy.array(self.missing_value, self.dtype)
  *             if (self.endian() == 'big' and is_native_little) or\
  *                (self.endian() == 'little' and is_native_big):             # <<<<<<<<<<<<<<
  *                 mval.byteswap(True)
  *             if mval.shape == (): # mval a scalar.
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -32536,38 +32686,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_8) {
     } else {
       __pyx_t_9 = __pyx_t_8;
       goto __pyx_L5_bool_binop_done;
     }
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_9 = __pyx_t_8;
     __pyx_L5_bool_binop_done:;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3288
+      /* "netCDF4/_netCDF4.pyx":3399
  *             if (self.endian() == 'big' and is_native_little) or\
  *                (self.endian() == 'little' and is_native_big):
  *                 mval.byteswap(True)             # <<<<<<<<<<<<<<
  *             if mval.shape == (): # mval a scalar.
  *                 hasmval = data==mval
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_mval, __pyx_n_s_byteswap); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_mval, __pyx_n_s_byteswap); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -32575,33 +32725,33 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     __pyx_L4:;
 
-    /* "netCDF4/_netCDF4.pyx":3289
+    /* "netCDF4/_netCDF4.pyx":3400
  *                (self.endian() == 'little' and is_native_big):
  *                 mval.byteswap(True)
  *             if mval.shape == (): # mval a scalar.             # <<<<<<<<<<<<<<
  *                 hasmval = data==mval
  *                 # is scalar missing value a NaN?
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_mval, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_mval, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3290
+      /* "netCDF4/_netCDF4.pyx":3401
  *                 mval.byteswap(True)
  *             if mval.shape == (): # mval a scalar.
  *                 hasmval = data==mval             # <<<<<<<<<<<<<<
  *                 # is scalar missing value a NaN?
  *                 try:
  */
-      __pyx_t_1 = PyObject_RichCompare(__pyx_v_data, __pyx_v_mval, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_RichCompare(__pyx_v_data, __pyx_v_mval, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_v_hasmval = __pyx_t_1;
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3292
+      /* "netCDF4/_netCDF4.pyx":3403
  *                 hasmval = data==mval
  *                 # is scalar missing value a NaN?
  *                 try:             # <<<<<<<<<<<<<<
@@ -32615,16 +32765,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __Pyx_XGOTREF(__pyx_t_12);
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":3293
+          /* "netCDF4/_netCDF4.pyx":3404
  *                 # is scalar missing value a NaN?
  *                 try:
  *                     mvalisnan = numpy.isnan(mval)             # <<<<<<<<<<<<<<
  *                 except TypeError: # isnan fails on some dtypes (issue 206)
  *                     mvalisnan = False
  */
-          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3293; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
           __Pyx_GOTREF(__pyx_t_7);
-          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_isnan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3293; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_isnan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_t_7 = NULL;
@@ -32638,16 +32788,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
             }
           }
           if (!__pyx_t_7) {
-            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_mval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3293; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_mval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
             __Pyx_GOTREF(__pyx_t_1);
           } else {
-            __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3293; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+            __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
             __Pyx_GOTREF(__pyx_t_3);
             PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
             __Pyx_INCREF(__pyx_v_mval);
             PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_mval);
             __Pyx_GIVEREF(__pyx_v_mval);
-            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3293; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
             __Pyx_GOTREF(__pyx_t_1);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           }
@@ -32667,7 +32817,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3294
+        /* "netCDF4/_netCDF4.pyx":3405
  *                 try:
  *                     mvalisnan = numpy.isnan(mval)
  *                 except TypeError: # isnan fails on some dtypes (issue 206)             # <<<<<<<<<<<<<<
@@ -32677,12 +32827,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __pyx_t_13 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
         if (__pyx_t_13) {
           __Pyx_AddTraceback("netCDF4._netCDF4.Variable._toma", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3294; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3405; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_GOTREF(__pyx_t_3);
 
-          /* "netCDF4/_netCDF4.pyx":3295
+          /* "netCDF4/_netCDF4.pyx":3406
  *                     mvalisnan = numpy.isnan(mval)
  *                 except TypeError: # isnan fails on some dtypes (issue 206)
  *                     mvalisnan = False             # <<<<<<<<<<<<<<
@@ -32714,23 +32864,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3297
+      /* "netCDF4/_netCDF4.pyx":3408
  *                     mvalisnan = False
  *             else: # mval a vector.
  *                 hasmval = numpy.zeros(data.shape, numpy.bool)             # <<<<<<<<<<<<<<
  *                 for m in mval:
  *                     m =  numpy.array(m)
  */
-      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_bool); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_bool); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_7 = NULL;
@@ -32745,7 +32895,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       if (__pyx_t_7) {
         PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -32756,14 +32906,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __Pyx_GIVEREF(__pyx_t_5);
       __pyx_t_2 = 0;
       __pyx_t_5 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_hasmval = __pyx_t_3;
       __pyx_t_3 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3298
+      /* "netCDF4/_netCDF4.pyx":3409
  *             else: # mval a vector.
  *                 hasmval = numpy.zeros(data.shape, numpy.bool)
  *                 for m in mval:             # <<<<<<<<<<<<<<
@@ -32774,25 +32924,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __pyx_t_3 = __pyx_v_mval; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
         __pyx_t_14 = NULL;
       } else {
-        __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_mval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_mval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       for (;;) {
         if (likely(!__pyx_t_14)) {
           if (likely(PyList_CheckExact(__pyx_t_3))) {
             if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -32801,7 +32951,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -32810,16 +32960,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_1);
         __pyx_t_1 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3299
+        /* "netCDF4/_netCDF4.pyx":3410
  *                 hasmval = numpy.zeros(data.shape, numpy.bool)
  *                 for m in mval:
  *                     m =  numpy.array(m)             # <<<<<<<<<<<<<<
  *                     hasmval += data == m
  *             if mval.shape == () and mvalisnan:
  */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_4 = NULL;
@@ -32833,16 +32983,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
           }
         }
         if (!__pyx_t_4) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_m); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_m); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
         } else {
-          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
           __Pyx_INCREF(__pyx_v_m);
           PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_m);
           __Pyx_GIVEREF(__pyx_v_m);
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         }
@@ -32850,21 +33000,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __Pyx_DECREF_SET(__pyx_v_m, __pyx_t_1);
         __pyx_t_1 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3300
+        /* "netCDF4/_netCDF4.pyx":3411
  *                 for m in mval:
  *                     m =  numpy.array(m)
  *                     hasmval += data == m             # <<<<<<<<<<<<<<
  *             if mval.shape == () and mvalisnan:
  *                 mask = numpy.isnan(data)
  */
-        __pyx_t_1 = PyObject_RichCompare(__pyx_v_data, __pyx_v_m, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_hasmval, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyObject_RichCompare(__pyx_v_data, __pyx_v_m, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_hasmval, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF_SET(__pyx_v_hasmval, __pyx_t_5);
         __pyx_t_5 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3298
+        /* "netCDF4/_netCDF4.pyx":3409
  *             else: # mval a vector.
  *                 hasmval = numpy.zeros(data.shape, numpy.bool)
  *                 for m in mval:             # <<<<<<<<<<<<<<
@@ -32876,40 +33026,40 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     __pyx_L9:;
 
-    /* "netCDF4/_netCDF4.pyx":3301
+    /* "netCDF4/_netCDF4.pyx":3412
  *                     m =  numpy.array(m)
  *                     hasmval += data == m
  *             if mval.shape == () and mvalisnan:             # <<<<<<<<<<<<<<
  *                 mask = numpy.isnan(data)
  *             elif hasmval.any():
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_mval, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_mval, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_8) {
     } else {
       __pyx_t_9 = __pyx_t_8;
       goto __pyx_L23_bool_binop_done;
     }
-    if (unlikely(!__pyx_v_mvalisnan)) { __Pyx_RaiseUnboundLocalError("mvalisnan"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3301; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_mvalisnan); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(!__pyx_v_mvalisnan)) { __Pyx_RaiseUnboundLocalError("mvalisnan"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3412; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_mvalisnan); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_9 = __pyx_t_8;
     __pyx_L23_bool_binop_done:;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3302
+      /* "netCDF4/_netCDF4.pyx":3413
  *                     hasmval += data == m
  *             if mval.shape == () and mvalisnan:
  *                 mask = numpy.isnan(data)             # <<<<<<<<<<<<<<
  *             elif hasmval.any():
  *                 mask = hasmval
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isnan); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isnan); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -32923,16 +33073,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         }
       }
       if (!__pyx_t_3) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
       } else {
-        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
         __Pyx_INCREF(__pyx_v_data);
         PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_data);
         __Pyx_GIVEREF(__pyx_v_data);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       }
@@ -32942,14 +33092,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       goto __pyx_L22;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3303
+    /* "netCDF4/_netCDF4.pyx":3414
  *             if mval.shape == () and mvalisnan:
  *                 mask = numpy.isnan(data)
  *             elif hasmval.any():             # <<<<<<<<<<<<<<
  *                 mask = hasmval
  *             else:
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_hasmval, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_hasmval, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -32962,18 +33112,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3304
+      /* "netCDF4/_netCDF4.pyx":3415
  *                 mask = numpy.isnan(data)
  *             elif hasmval.any():
  *                 mask = hasmval             # <<<<<<<<<<<<<<
@@ -32986,7 +33136,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3306
+      /* "netCDF4/_netCDF4.pyx":3417
  *                 mask = hasmval
  *             else:
  *                 mask = None             # <<<<<<<<<<<<<<
@@ -32998,7 +33148,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     __pyx_L22:;
 
-    /* "netCDF4/_netCDF4.pyx":3307
+    /* "netCDF4/_netCDF4.pyx":3418
  *             else:
  *                 mask = None
  *             if mask is not None:             # <<<<<<<<<<<<<<
@@ -33009,7 +33159,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     __pyx_t_8 = (__pyx_t_9 != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":3308
+      /* "netCDF4/_netCDF4.pyx":3419
  *                 mask = None
  *             if mask is not None:
  *                 fill_value = mval             # <<<<<<<<<<<<<<
@@ -33019,14 +33169,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __Pyx_INCREF(__pyx_v_mval);
       __Pyx_DECREF_SET(__pyx_v_fill_value, __pyx_v_mval);
 
-      /* "netCDF4/_netCDF4.pyx":3309
+      /* "netCDF4/_netCDF4.pyx":3420
  *             if mask is not None:
  *                 fill_value = mval
  *                 totalmask += mask             # <<<<<<<<<<<<<<
  *         if hasattr(self, '_FillValue'):
  *             fval = numpy.array(self._FillValue, self.dtype)
  */
-      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_5);
       __pyx_t_5 = 0;
@@ -33037,30 +33187,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3310
+  /* "netCDF4/_netCDF4.pyx":3421
  *                 fill_value = mval
  *                 totalmask += mask
  *         if hasattr(self, '_FillValue'):             # <<<<<<<<<<<<<<
  *             fval = numpy.array(self._FillValue, self.dtype)
  *             # byte swap the _FillValue if endian-ness of the variable
  */
-  __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_9 = (__pyx_t_8 != 0);
   if (__pyx_t_9) {
 
-    /* "netCDF4/_netCDF4.pyx":3311
+    /* "netCDF4/_netCDF4.pyx":3422
  *                 totalmask += mask
  *         if hasattr(self, '_FillValue'):
  *             fval = numpy.array(self._FillValue, self.dtype)             # <<<<<<<<<<<<<<
  *             # byte swap the _FillValue if endian-ness of the variable
  *             # is not native.
  */
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_3 = NULL;
     __pyx_t_6 = 0;
@@ -33074,7 +33224,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     if (__pyx_t_3) {
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -33085,21 +33235,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_self->dtype);
     __Pyx_GIVEREF(__pyx_v_self->dtype);
     __pyx_t_1 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_v_fval = __pyx_t_5;
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3314
+    /* "netCDF4/_netCDF4.pyx":3425
  *             # byte swap the _FillValue if endian-ness of the variable
  *             # is not native.
  *             if (self.endian() == 'big' and is_native_little) or\             # <<<<<<<<<<<<<<
  *                (self.endian() == 'little' and is_native_big):
  *                 fval.byteswap(True)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -33112,22 +33262,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (!__pyx_t_8) {
       goto __pyx_L29_next_or;
     } else {
     }
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (!__pyx_t_8) {
     } else {
@@ -33136,14 +33286,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     __pyx_L29_next_or:;
 
-    /* "netCDF4/_netCDF4.pyx":3315
+    /* "netCDF4/_netCDF4.pyx":3426
  *             # is not native.
  *             if (self.endian() == 'big' and is_native_little) or\
  *                (self.endian() == 'little' and is_native_big):             # <<<<<<<<<<<<<<
  *                 fval.byteswap(True)
  *             # is _FillValue a NaN?
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -33156,38 +33306,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_8) {
     } else {
       __pyx_t_9 = __pyx_t_8;
       goto __pyx_L28_bool_binop_done;
     }
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_9 = __pyx_t_8;
     __pyx_L28_bool_binop_done:;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3316
+      /* "netCDF4/_netCDF4.pyx":3427
  *             if (self.endian() == 'big' and is_native_little) or\
  *                (self.endian() == 'little' and is_native_big):
  *                 fval.byteswap(True)             # <<<<<<<<<<<<<<
  *             # is _FillValue a NaN?
  *             try:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fval, __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fval, __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33195,7 +33345,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     __pyx_L27:;
 
-    /* "netCDF4/_netCDF4.pyx":3318
+    /* "netCDF4/_netCDF4.pyx":3429
  *                 fval.byteswap(True)
  *             # is _FillValue a NaN?
  *             try:             # <<<<<<<<<<<<<<
@@ -33209,16 +33359,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __Pyx_XGOTREF(__pyx_t_10);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3319
+        /* "netCDF4/_netCDF4.pyx":3430
  *             # is _FillValue a NaN?
  *             try:
  *                 fvalisnan = numpy.isnan(fval)             # <<<<<<<<<<<<<<
  *             except: # isnan fails on some dtypes (issue 202)
  *                 fvalisnan = False
  */
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
+        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_isnan); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_isnan); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_5 = NULL;
@@ -33232,16 +33382,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
           }
         }
         if (!__pyx_t_5) {
-          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_fval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
+          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_fval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
           __Pyx_GOTREF(__pyx_t_2);
         } else {
-          __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
+          __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
           __Pyx_GOTREF(__pyx_t_1);
           PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
           __Pyx_INCREF(__pyx_v_fval);
           PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_fval);
           __Pyx_GIVEREF(__pyx_v_fval);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3319; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L32_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         }
@@ -33261,7 +33411,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3320
+      /* "netCDF4/_netCDF4.pyx":3431
  *             try:
  *                 fvalisnan = numpy.isnan(fval)
  *             except: # isnan fails on some dtypes (issue 202)             # <<<<<<<<<<<<<<
@@ -33270,12 +33420,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
  */
       /*except:*/ {
         __Pyx_AddTraceback("netCDF4._netCDF4.Variable._toma", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3320; __pyx_clineno = __LINE__; goto __pyx_L34_except_error;}
+        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3431; __pyx_clineno = __LINE__; goto __pyx_L34_except_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_GOTREF(__pyx_t_1);
 
-        /* "netCDF4/_netCDF4.pyx":3321
+        /* "netCDF4/_netCDF4.pyx":3432
  *                 fvalisnan = numpy.isnan(fval)
  *             except: # isnan fails on some dtypes (issue 202)
  *                 fvalisnan = False             # <<<<<<<<<<<<<<
@@ -33303,26 +33453,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __pyx_L39_try_end:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3322
+    /* "netCDF4/_netCDF4.pyx":3433
  *             except: # isnan fails on some dtypes (issue 202)
  *                 fvalisnan = False
  *             if fvalisnan:             # <<<<<<<<<<<<<<
  *                 mask = numpy.isnan(data)
  *             elif (data == fval).any():
  */
-    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_fvalisnan); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_fvalisnan); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3323
+      /* "netCDF4/_netCDF4.pyx":3434
  *                 fvalisnan = False
  *             if fvalisnan:
  *                 mask = numpy.isnan(data)             # <<<<<<<<<<<<<<
  *             elif (data == fval).any():
  *                 mask = data==fval
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_isnan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_isnan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_4 = NULL;
@@ -33336,16 +33486,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         }
       }
       if (!__pyx_t_4) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
       } else {
-        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
         __Pyx_INCREF(__pyx_v_data);
         PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_data);
         __Pyx_GIVEREF(__pyx_v_data);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
@@ -33355,15 +33505,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       goto __pyx_L42;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3324
+    /* "netCDF4/_netCDF4.pyx":3435
  *             if fvalisnan:
  *                 mask = numpy.isnan(data)
  *             elif (data == fval).any():             # <<<<<<<<<<<<<<
  *                 mask = data==fval
  *             else:
  */
-    __pyx_t_2 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fval, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_any); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fval, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_any); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -33377,32 +33527,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3325
+      /* "netCDF4/_netCDF4.pyx":3436
  *                 mask = numpy.isnan(data)
  *             elif (data == fval).any():
  *                 mask = data==fval             # <<<<<<<<<<<<<<
  *             else:
  *                 mask = None
  */
-      __pyx_t_1 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fval, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fval, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_XDECREF_SET(__pyx_v_mask, __pyx_t_1);
       __pyx_t_1 = 0;
       goto __pyx_L42;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3327
+      /* "netCDF4/_netCDF4.pyx":3438
  *                 mask = data==fval
  *             else:
  *                 mask = None             # <<<<<<<<<<<<<<
@@ -33414,7 +33564,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     }
     __pyx_L42:;
 
-    /* "netCDF4/_netCDF4.pyx":3328
+    /* "netCDF4/_netCDF4.pyx":3439
  *             else:
  *                 mask = None
  *             if mask is not None:             # <<<<<<<<<<<<<<
@@ -33425,7 +33575,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     __pyx_t_8 = (__pyx_t_9 != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":3329
+      /* "netCDF4/_netCDF4.pyx":3440
  *                 mask = None
  *             if mask is not None:
  *                 if fill_value is None:             # <<<<<<<<<<<<<<
@@ -33436,7 +33586,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __pyx_t_9 = (__pyx_t_8 != 0);
       if (__pyx_t_9) {
 
-        /* "netCDF4/_netCDF4.pyx":3330
+        /* "netCDF4/_netCDF4.pyx":3441
  *             if mask is not None:
  *                 if fill_value is None:
  *                     fill_value = fval             # <<<<<<<<<<<<<<
@@ -33449,14 +33599,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
       __pyx_L44:;
 
-      /* "netCDF4/_netCDF4.pyx":3331
+      /* "netCDF4/_netCDF4.pyx":3442
  *                 if fill_value is None:
  *                     fill_value = fval
  *                 totalmask += mask             # <<<<<<<<<<<<<<
  *         # issue 209: don't return masked array if variable filling
  *         # is disabled.
  */
-      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_1);
       __pyx_t_1 = 0;
@@ -33467,7 +33617,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3335
+    /* "netCDF4/_netCDF4.pyx":3446
  *         # is disabled.
  *         else:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -33481,7 +33631,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":3336
+          /* "netCDF4/_netCDF4.pyx":3447
  *         else:
  *             with nogil:
  *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)             # <<<<<<<<<<<<<<
@@ -33491,7 +33641,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
           __pyx_v_ierr = nc_inq_var_fill(__pyx_v_self->_grpid, __pyx_v_self->_varid, (&__pyx_v_no_fill), NULL);
         }
 
-        /* "netCDF4/_netCDF4.pyx":3335
+        /* "netCDF4/_netCDF4.pyx":3446
  *         # is disabled.
  *         else:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -33509,7 +33659,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":3337
+    /* "netCDF4/_netCDF4.pyx":3448
  *             with nogil:
  *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -33519,7 +33669,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     __pyx_t_9 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3338
+      /* "netCDF4/_netCDF4.pyx":3449
  *                 ierr = nc_inq_var_fill(self._grpid,self._varid,&no_fill,NULL)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -33527,23 +33677,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
  *             # from http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c/Fill-Values.html#Fill-Values
  */
       __pyx_t_15 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_15, 0, strlen(__pyx_t_15), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_15, 0, strlen(__pyx_t_15), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3351
+    /* "netCDF4/_netCDF4.pyx":3462
  *             # small to assume one of the values should appear as a missing
  *             # value unless a _FillValue attribute is set explicitly."
  *             if no_fill != 1 and self.dtype.str[1:] not in ['u1','i1']:             # <<<<<<<<<<<<<<
@@ -33556,18 +33706,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       __pyx_t_9 = __pyx_t_8;
       goto __pyx_L50_bool_binop_done;
     }
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__54, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__54, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_u1, Py_NE)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_u1, Py_NE)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_16) {
     } else {
       __pyx_t_8 = __pyx_t_16;
       goto __pyx_L52_bool_binop_done;
     }
-    __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_i1, Py_NE)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_i1, Py_NE)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_8 = __pyx_t_16;
     __pyx_L52_bool_binop_done:;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -33576,26 +33726,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
     __pyx_L50_bool_binop_done:;
     if (__pyx_t_9) {
 
-      /* "netCDF4/_netCDF4.pyx":3352
+      /* "netCDF4/_netCDF4.pyx":3463
  *             # value unless a _FillValue attribute is set explicitly."
  *             if no_fill != 1 and self.dtype.str[1:] not in ['u1','i1']:
  *                 fillval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)             # <<<<<<<<<<<<<<
  *                 # byte swap the _FillValue if endian-ness of the variable
  *                 # is not native.
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_fillvals); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_fillvals); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__55, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__55, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_t_3); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = PyObject_GetItem(__pyx_t_1, __pyx_t_3); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -33611,7 +33761,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       if (__pyx_t_3) {
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -33622,21 +33772,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_self->dtype);
       __Pyx_GIVEREF(__pyx_v_self->dtype);
       __pyx_t_4 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_v_fillval = __pyx_t_5;
       __pyx_t_5 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3355
+      /* "netCDF4/_netCDF4.pyx":3466
  *                 # byte swap the _FillValue if endian-ness of the variable
  *                 # is not native.
  *                 if (self.endian() == 'big' and is_native_little) or\             # <<<<<<<<<<<<<<
  *                    (self.endian() == 'little' and is_native_big):
  *                     fillval.byteswap(True)
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_1 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -33649,22 +33799,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         }
       }
       if (__pyx_t_1) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       } else {
-        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (!__pyx_t_16) {
         goto __pyx_L56_next_or;
       } else {
       }
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (!__pyx_t_16) {
       } else {
@@ -33673,14 +33823,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
       __pyx_L56_next_or:;
 
-      /* "netCDF4/_netCDF4.pyx":3356
+      /* "netCDF4/_netCDF4.pyx":3467
  *                 # is not native.
  *                 if (self.endian() == 'big' and is_native_little) or\
  *                    (self.endian() == 'little' and is_native_big):             # <<<<<<<<<<<<<<
  *                     fillval.byteswap(True)
  *                 has_fillval = data == fillval
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_1 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -33693,38 +33843,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         }
       }
       if (__pyx_t_1) {
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       } else {
-        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_16 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (__pyx_t_16) {
       } else {
         __pyx_t_9 = __pyx_t_16;
         goto __pyx_L55_bool_binop_done;
       }
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_9 = __pyx_t_16;
       __pyx_L55_bool_binop_done:;
       if (__pyx_t_9) {
 
-        /* "netCDF4/_netCDF4.pyx":3357
+        /* "netCDF4/_netCDF4.pyx":3468
  *                 if (self.endian() == 'big' and is_native_little) or\
  *                    (self.endian() == 'little' and is_native_big):
  *                     fillval.byteswap(True)             # <<<<<<<<<<<<<<
  *                 has_fillval = data == fillval
  *                 # if data is an array scalar, has_fillval will be a boolean.
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fillval, __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fillval, __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33732,31 +33882,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
       __pyx_L54:;
 
-      /* "netCDF4/_netCDF4.pyx":3358
+      /* "netCDF4/_netCDF4.pyx":3469
  *                    (self.endian() == 'little' and is_native_big):
  *                     fillval.byteswap(True)
  *                 has_fillval = data == fillval             # <<<<<<<<<<<<<<
  *                 # if data is an array scalar, has_fillval will be a boolean.
  *                 # in that case convert to an array.
  */
-      __pyx_t_2 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fillval, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fillval, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_v_has_fillval = __pyx_t_2;
       __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3361
+      /* "netCDF4/_netCDF4.pyx":3472
  *                 # if data is an array scalar, has_fillval will be a boolean.
  *                 # in that case convert to an array.
  *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)             # <<<<<<<<<<<<<<
  *                 if has_fillval.any():
  *                     mask=data==fillval
  */
-      __pyx_t_2 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_has_fillval)), ((PyObject*)&PyBool_Type), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_has_fillval)), ((PyObject*)&PyBool_Type), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       if (__pyx_t_9) {
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_asarray); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_5 = NULL;
@@ -33770,16 +33920,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
           }
         }
         if (!__pyx_t_5) {
-          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_has_fillval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_has_fillval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
         } else {
-          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
           __Pyx_INCREF(__pyx_v_has_fillval);
           PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_has_fillval);
           __Pyx_GIVEREF(__pyx_v_has_fillval);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         }
@@ -33790,14 +33940,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
       }
       __pyx_L59:;
 
-      /* "netCDF4/_netCDF4.pyx":3362
+      /* "netCDF4/_netCDF4.pyx":3473
  *                 # in that case convert to an array.
  *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)
  *                 if has_fillval.any():             # <<<<<<<<<<<<<<
  *                     mask=data==fillval
  *                     if fill_value is None:
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_has_fillval, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_has_fillval, __pyx_n_s_any); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_4 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -33810,29 +33960,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         }
       }
       if (__pyx_t_4) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       if (__pyx_t_9) {
 
-        /* "netCDF4/_netCDF4.pyx":3363
+        /* "netCDF4/_netCDF4.pyx":3474
  *                 if type(has_fillval) == bool: has_fillval=numpy.asarray(has_fillval)
  *                 if has_fillval.any():
  *                     mask=data==fillval             # <<<<<<<<<<<<<<
  *                     if fill_value is None:
  *                         fill_value = fillval
  */
-        __pyx_t_2 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fillval, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyObject_RichCompare(__pyx_v_data, __pyx_v_fillval, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_XDECREF_SET(__pyx_v_mask, __pyx_t_2);
         __pyx_t_2 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3364
+        /* "netCDF4/_netCDF4.pyx":3475
  *                 if has_fillval.any():
  *                     mask=data==fillval
  *                     if fill_value is None:             # <<<<<<<<<<<<<<
@@ -33843,7 +33993,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         __pyx_t_16 = (__pyx_t_9 != 0);
         if (__pyx_t_16) {
 
-          /* "netCDF4/_netCDF4.pyx":3365
+          /* "netCDF4/_netCDF4.pyx":3476
  *                     mask=data==fillval
  *                     if fill_value is None:
  *                         fill_value = fillval             # <<<<<<<<<<<<<<
@@ -33856,14 +34006,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
         }
         __pyx_L61:;
 
-        /* "netCDF4/_netCDF4.pyx":3366
+        /* "netCDF4/_netCDF4.pyx":3477
  *                     if fill_value is None:
  *                         fill_value = fillval
  *                     totalmask += mask             # <<<<<<<<<<<<<<
  *         # all values where data == missing_value or _FillValue are
  *         # masked.  fill_value set to missing_value if it exists,
  */
-        __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_totalmask, __pyx_v_mask); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF_SET(__pyx_v_totalmask, __pyx_t_2);
         __pyx_t_2 = 0;
@@ -33876,7 +34026,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   }
   __pyx_L26:;
 
-  /* "netCDF4/_netCDF4.pyx":3370
+  /* "netCDF4/_netCDF4.pyx":3481
  *         # masked.  fill_value set to missing_value if it exists,
  *         # otherwise _FillValue.
  *         if fill_value is not None:             # <<<<<<<<<<<<<<
@@ -33887,28 +34037,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   __pyx_t_9 = (__pyx_t_16 != 0);
   if (__pyx_t_9) {
 
-    /* "netCDF4/_netCDF4.pyx":3371
+    /* "netCDF4/_netCDF4.pyx":3482
  *         # otherwise _FillValue.
  *         if fill_value is not None:
  *             data = ma.masked_array(data,mask=totalmask,fill_value=fill_value)             # <<<<<<<<<<<<<<
  *         return data
  * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_masked_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_masked_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_data);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_data);
     __Pyx_GIVEREF(__pyx_v_data);
-    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_mask, __pyx_v_totalmask) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fill_value, __pyx_v_fill_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_mask, __pyx_v_totalmask) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_fill_value, __pyx_v_fill_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -33919,7 +34069,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   }
   __pyx_L62:;
 
-  /* "netCDF4/_netCDF4.pyx":3372
+  /* "netCDF4/_netCDF4.pyx":3483
  *         if fill_value is not None:
  *             data = ma.masked_array(data,mask=totalmask,fill_value=fill_value)
  *         return data             # <<<<<<<<<<<<<<
@@ -33931,7 +34081,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   __pyx_r = __pyx_v_data;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":3278
+  /* "netCDF4/_netCDF4.pyx":3389
  *         return data
  * 
  *     def _toma(self,data):             # <<<<<<<<<<<<<<
@@ -33967,7 +34117,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_44_toma(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3374
+/* "netCDF4/_netCDF4.pyx":3485
  *         return data
  * 
  *     def _assign_vlen(self, elem, data):             # <<<<<<<<<<<<<<
@@ -34007,11 +34157,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_47_assign_vlen(PyObject *
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_assign_vlen", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_assign_vlen", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_assign_vlen") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_assign_vlen") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -34024,7 +34174,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_47_assign_vlen(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_assign_vlen", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("_assign_vlen", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable._assign_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -34072,42 +34222,42 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   __Pyx_RefNannySetupContext("_assign_vlen", 0);
   __Pyx_INCREF(__pyx_v_elem);
 
-  /* "netCDF4/_netCDF4.pyx":3382
+  /* "netCDF4/_netCDF4.pyx":3493
  *         cdef char **strdata
  *         cdef ndarray data2
  *         if not self._isvlen:             # <<<<<<<<<<<<<<
  *             raise TypeError('_assign_vlen method only for use with VLEN variables')
  *         ndims = self.ndim
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = ((!__pyx_t_1) != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":3383
+    /* "netCDF4/_netCDF4.pyx":3494
  *         cdef ndarray data2
  *         if not self._isvlen:
  *             raise TypeError('_assign_vlen method only for use with VLEN variables')             # <<<<<<<<<<<<<<
  *         ndims = self.ndim
  *         msg="single element VLEN slices must be specified by integers only"
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3384
+  /* "netCDF4/_netCDF4.pyx":3495
  *         if not self._isvlen:
  *             raise TypeError('_assign_vlen method only for use with VLEN variables')
  *         ndims = self.ndim             # <<<<<<<<<<<<<<
  *         msg="single element VLEN slices must be specified by integers only"
  *         # check to see that elem is a tuple of integers.
  */
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_self->ndim); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_self->ndim); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_ndims = __pyx_t_4;
 
-  /* "netCDF4/_netCDF4.pyx":3385
+  /* "netCDF4/_netCDF4.pyx":3496
  *             raise TypeError('_assign_vlen method only for use with VLEN variables')
  *         ndims = self.ndim
  *         msg="single element VLEN slices must be specified by integers only"             # <<<<<<<<<<<<<<
@@ -34117,7 +34267,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   __Pyx_INCREF(__pyx_kp_s_single_element_VLEN_slices_must);
   __pyx_v_msg = __pyx_kp_s_single_element_VLEN_slices_must;
 
-  /* "netCDF4/_netCDF4.pyx":3388
+  /* "netCDF4/_netCDF4.pyx":3499
  *         # check to see that elem is a tuple of integers.
  *         # handle negative integers.
  *         if isinstance(elem, int):             # <<<<<<<<<<<<<<
@@ -34128,7 +34278,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":3389
+    /* "netCDF4/_netCDF4.pyx":3500
  *         # handle negative integers.
  *         if isinstance(elem, int):
  *             if ndims > 1:             # <<<<<<<<<<<<<<
@@ -34138,72 +34288,72 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
     __pyx_t_1 = ((__pyx_v_ndims > 1) != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":3390
+      /* "netCDF4/_netCDF4.pyx":3501
  *         if isinstance(elem, int):
  *             if ndims > 1:
  *                 raise IndexError(msg)             # <<<<<<<<<<<<<<
  *             if elem < 0:
  *                 if self.shape[0]+elem >= 0:
  */
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_msg);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_msg);
       __Pyx_GIVEREF(__pyx_v_msg);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3391
+    /* "netCDF4/_netCDF4.pyx":3502
  *             if ndims > 1:
  *                 raise IndexError(msg)
  *             if elem < 0:             # <<<<<<<<<<<<<<
  *                 if self.shape[0]+elem >= 0:
  *                     elem = self.shape[0]+elem
  */
-    __pyx_t_5 = PyObject_RichCompare(__pyx_v_elem, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_RichCompare(__pyx_v_elem, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":3392
+      /* "netCDF4/_netCDF4.pyx":3503
  *                 raise IndexError(msg)
  *             if elem < 0:
  *                 if self.shape[0]+elem >= 0:             # <<<<<<<<<<<<<<
  *                     elem = self.shape[0]+elem
  *                 else:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3392; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_v_elem); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_v_elem); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":3393
+        /* "netCDF4/_netCDF4.pyx":3504
  *             if elem < 0:
  *                 if self.shape[0]+elem >= 0:
  *                     elem = self.shape[0]+elem             # <<<<<<<<<<<<<<
  *                 else:
  *                     raise IndexError("Illegal index")
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3504; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_v_elem); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_v_elem); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF_SET(__pyx_v_elem, __pyx_t_3);
@@ -34212,18 +34362,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3395
+        /* "netCDF4/_netCDF4.pyx":3506
  *                     elem = self.shape[0]+elem
  *                 else:
  *                     raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
  *         elif isinstance(elem, tuple):
  *             if len(elem) != ndims:
  */
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_Raise(__pyx_t_3, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L7:;
       goto __pyx_L6;
@@ -34232,7 +34382,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
     goto __pyx_L4;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3396
+  /* "netCDF4/_netCDF4.pyx":3507
  *                 else:
  *                     raise IndexError("Illegal index")
  *         elif isinstance(elem, tuple):             # <<<<<<<<<<<<<<
@@ -34243,44 +34393,44 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":3397
+    /* "netCDF4/_netCDF4.pyx":3508
  *                     raise IndexError("Illegal index")
  *         elif isinstance(elem, tuple):
  *             if len(elem) != ndims:             # <<<<<<<<<<<<<<
  *                 raise IndexError("Illegal index")
  *             elemnew = []
  */
-    __pyx_t_6 = PyObject_Length(__pyx_v_elem); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyObject_Length(__pyx_v_elem); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_2 = ((__pyx_t_6 != __pyx_v_ndims) != 0);
     if (__pyx_t_2) {
 
-      /* "netCDF4/_netCDF4.pyx":3398
+      /* "netCDF4/_netCDF4.pyx":3509
  *         elif isinstance(elem, tuple):
  *             if len(elem) != ndims:
  *                 raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
  *             elemnew = []
  *             for n,e in enumerate(elem):
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3399
+    /* "netCDF4/_netCDF4.pyx":3510
  *             if len(elem) != ndims:
  *                 raise IndexError("Illegal index")
  *             elemnew = []             # <<<<<<<<<<<<<<
  *             for n,e in enumerate(elem):
  *                 if not isinstance(e, int):
  */
-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_elemnew = ((PyObject*)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3400
+    /* "netCDF4/_netCDF4.pyx":3511
  *                 raise IndexError("Illegal index")
  *             elemnew = []
  *             for n,e in enumerate(elem):             # <<<<<<<<<<<<<<
@@ -34292,25 +34442,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
       __pyx_t_3 = __pyx_v_elem; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
     } else {
-      __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_elem); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_elem); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_7)) {
         if (likely(PyList_CheckExact(__pyx_t_3))) {
           if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -34319,7 +34469,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -34330,7 +34480,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
       __pyx_v_n = __pyx_t_4;
       __pyx_t_4 = (__pyx_t_4 + 1);
 
-      /* "netCDF4/_netCDF4.pyx":3401
+      /* "netCDF4/_netCDF4.pyx":3512
  *             elemnew = []
  *             for n,e in enumerate(elem):
  *                 if not isinstance(e, int):             # <<<<<<<<<<<<<<
@@ -34341,117 +34491,117 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
       __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":3402
+        /* "netCDF4/_netCDF4.pyx":3513
  *             for n,e in enumerate(elem):
  *                 if not isinstance(e, int):
  *                     raise IndexError(msg)             # <<<<<<<<<<<<<<
  *                 elif e < 0:
  *                     enew = self.shape[n]+e
  */
-        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_v_msg);
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_msg);
         __Pyx_GIVEREF(__pyx_v_msg);
-        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_Raise(__pyx_t_8, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3403
+      /* "netCDF4/_netCDF4.pyx":3514
  *                 if not isinstance(e, int):
  *                     raise IndexError(msg)
  *                 elif e < 0:             # <<<<<<<<<<<<<<
  *                     enew = self.shape[n]+e
  *                     if enew < 0:
  */
-      __pyx_t_8 = PyObject_RichCompare(__pyx_v_e, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_RichCompare(__pyx_v_e, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":3404
+        /* "netCDF4/_netCDF4.pyx":3515
  *                     raise IndexError(msg)
  *                 elif e < 0:
  *                     enew = self.shape[n]+e             # <<<<<<<<<<<<<<
  *                     if enew < 0:
  *                         raise IndexError("Illegal index")
  */
-        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3515; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_v_e); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_v_e); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_XDECREF_SET(__pyx_v_enew, __pyx_t_8);
         __pyx_t_8 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3405
+        /* "netCDF4/_netCDF4.pyx":3516
  *                 elif e < 0:
  *                     enew = self.shape[n]+e
  *                     if enew < 0:             # <<<<<<<<<<<<<<
  *                         raise IndexError("Illegal index")
  *                     else:
  */
-        __pyx_t_8 = PyObject_RichCompare(__pyx_v_enew, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyObject_RichCompare(__pyx_v_enew, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         if (__pyx_t_1) {
 
-          /* "netCDF4/_netCDF4.pyx":3406
+          /* "netCDF4/_netCDF4.pyx":3517
  *                     enew = self.shape[n]+e
  *                     if enew < 0:
  *                         raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
  *                     else:
  *                         elemnew.append(self.shape[n]+e)
  */
-          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_Raise(__pyx_t_8, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":3408
+          /* "netCDF4/_netCDF4.pyx":3519
  *                         raise IndexError("Illegal index")
  *                     else:
  *                         elemnew.append(self.shape[n]+e)             # <<<<<<<<<<<<<<
  *                 else:
  *                     elemnew.append(e)
  */
-          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+          __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3519; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_v_e); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_v_e); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_elemnew, __pyx_t_8); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_elemnew, __pyx_t_8); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         }
         goto __pyx_L11;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3410
+        /* "netCDF4/_netCDF4.pyx":3521
  *                         elemnew.append(self.shape[n]+e)
  *                 else:
  *                     elemnew.append(e)             # <<<<<<<<<<<<<<
  *             elem = tuple(elemnew)
  *         else:
  */
-        __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_elemnew, __pyx_v_e); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_elemnew, __pyx_v_e); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L11:;
 
-      /* "netCDF4/_netCDF4.pyx":3400
+      /* "netCDF4/_netCDF4.pyx":3511
  *                 raise IndexError("Illegal index")
  *             elemnew = []
  *             for n,e in enumerate(elem):             # <<<<<<<<<<<<<<
@@ -34461,14 +34611,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3411
+    /* "netCDF4/_netCDF4.pyx":3522
  *                 else:
  *                     elemnew.append(e)
  *             elem = tuple(elemnew)             # <<<<<<<<<<<<<<
  *         else:
  *             raise IndexError(msg)
  */
-    __pyx_t_3 = PyList_AsTuple(__pyx_v_elemnew); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyList_AsTuple(__pyx_v_elemnew); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_elem, __pyx_t_3);
     __pyx_t_3 = 0;
@@ -34476,28 +34626,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3413
+    /* "netCDF4/_netCDF4.pyx":3524
  *             elem = tuple(elemnew)
  *         else:
  *             raise IndexError(msg)             # <<<<<<<<<<<<<<
  *         # set start, count
  *         if isinstance(elem, tuple):
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_msg);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_msg);
     __Pyx_GIVEREF(__pyx_v_msg);
-    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_t_8, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L4:;
 
-  /* "netCDF4/_netCDF4.pyx":3415
+  /* "netCDF4/_netCDF4.pyx":3526
  *             raise IndexError(msg)
  *         # set start, count
  *         if isinstance(elem, tuple):             # <<<<<<<<<<<<<<
@@ -34508,14 +34658,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":3416
+    /* "netCDF4/_netCDF4.pyx":3527
  *         # set start, count
  *         if isinstance(elem, tuple):
  *             start = list(elem)             # <<<<<<<<<<<<<<
  *         else:
  *             start = [elem]
  */
-    __pyx_t_8 = PySequence_List(__pyx_v_elem); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PySequence_List(__pyx_v_elem); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_v_start = ((PyObject*)__pyx_t_8);
     __pyx_t_8 = 0;
@@ -34523,14 +34673,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3418
+    /* "netCDF4/_netCDF4.pyx":3529
  *             start = list(elem)
  *         else:
  *             start = [elem]             # <<<<<<<<<<<<<<
  *         count = [1]*ndims
  *         for n from 0 <= n < ndims:
  */
-    __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_INCREF(__pyx_v_elem);
     PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_elem);
@@ -34540,14 +34690,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   }
   __pyx_L13:;
 
-  /* "netCDF4/_netCDF4.pyx":3419
+  /* "netCDF4/_netCDF4.pyx":3530
  *         else:
  *             start = [elem]
  *         count = [1]*ndims             # <<<<<<<<<<<<<<
  *         for n from 0 <= n < ndims:
  *             startp[n] = start[n]
  */
-  __pyx_t_8 = PyList_New(1 * ((__pyx_v_ndims<0) ? 0:__pyx_v_ndims)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyList_New(1 * ((__pyx_v_ndims<0) ? 0:__pyx_v_ndims)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   { Py_ssize_t __pyx_temp;
     for (__pyx_temp=0; __pyx_temp < __pyx_v_ndims; __pyx_temp++) {
@@ -34559,7 +34709,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   __pyx_v_count = ((PyObject*)__pyx_t_8);
   __pyx_t_8 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3420
+  /* "netCDF4/_netCDF4.pyx":3531
  *             start = [elem]
  *         count = [1]*ndims
  *         for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
@@ -34569,46 +34719,46 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   __pyx_t_4 = __pyx_v_ndims;
   for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_4; __pyx_v_n++) {
 
-    /* "netCDF4/_netCDF4.pyx":3421
+    /* "netCDF4/_netCDF4.pyx":3532
  *         count = [1]*ndims
  *         for n from 0 <= n < ndims:
  *             startp[n] = start[n]             # <<<<<<<<<<<<<<
  *             countp[n] = count[n]
  *         if self.dtype == str: # VLEN string
  */
-    __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_start, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3421; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_start, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     (__pyx_v_startp[__pyx_v_n]) = __pyx_t_10;
 
-    /* "netCDF4/_netCDF4.pyx":3422
+    /* "netCDF4/_netCDF4.pyx":3533
  *         for n from 0 <= n < ndims:
  *             startp[n] = start[n]
  *             countp[n] = count[n]             # <<<<<<<<<<<<<<
  *         if self.dtype == str: # VLEN string
  *             strdata = <char **>malloc(sizeof(char *))
  */
-    __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_count, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3422; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_count, __pyx_v_n, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3533; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyInt_As_size_t(__pyx_t_8); if (unlikely((__pyx_t_10 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     (__pyx_v_countp[__pyx_v_n]) = __pyx_t_10;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3423
+  /* "netCDF4/_netCDF4.pyx":3534
  *             startp[n] = start[n]
  *             countp[n] = count[n]
  *         if self.dtype == str: # VLEN string             # <<<<<<<<<<<<<<
  *             strdata = <char **>malloc(sizeof(char *))
  *             bytestr = _strencode(data)
  */
-  __pyx_t_8 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3423; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":3424
+    /* "netCDF4/_netCDF4.pyx":3535
  *             countp[n] = count[n]
  *         if self.dtype == str: # VLEN string
  *             strdata = <char **>malloc(sizeof(char *))             # <<<<<<<<<<<<<<
@@ -34617,29 +34767,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
  */
     __pyx_v_strdata = ((char **)malloc((sizeof(char *))));
 
-    /* "netCDF4/_netCDF4.pyx":3425
+    /* "netCDF4/_netCDF4.pyx":3536
  *         if self.dtype == str: # VLEN string
  *             strdata = <char **>malloc(sizeof(char *))
  *             bytestr = _strencode(data)             # <<<<<<<<<<<<<<
  *             strdata[0] = bytestr
  *             ierr = nc_put_vara(self._grpid, self._varid,
  */
-    __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_data, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_data, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_v_bytestr = __pyx_t_8;
     __pyx_t_8 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3426
+    /* "netCDF4/_netCDF4.pyx":3537
  *             strdata = <char **>malloc(sizeof(char *))
  *             bytestr = _strencode(data)
  *             strdata[0] = bytestr             # <<<<<<<<<<<<<<
  *             ierr = nc_put_vara(self._grpid, self._varid,
  *                                startp, countp, strdata)
  */
-    __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     (__pyx_v_strdata[0]) = __pyx_t_11;
 
-    /* "netCDF4/_netCDF4.pyx":3427
+    /* "netCDF4/_netCDF4.pyx":3538
  *             bytestr = _strencode(data)
  *             strdata[0] = bytestr
  *             ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -34648,7 +34798,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
  */
     __pyx_v_ierr = nc_put_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_strdata);
 
-    /* "netCDF4/_netCDF4.pyx":3429
+    /* "netCDF4/_netCDF4.pyx":3540
  *             ierr = nc_put_vara(self._grpid, self._varid,
  *                                startp, countp, strdata)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -34658,7 +34808,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
     __pyx_t_2 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_2) {
 
-      /* "netCDF4/_netCDF4.pyx":3430
+      /* "netCDF4/_netCDF4.pyx":3541
  *                                startp, countp, strdata)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -34666,23 +34816,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
  *         else: # regular VLEN
  */
       __pyx_t_11 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_8);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
       __Pyx_GIVEREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_t_8, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3431
+    /* "netCDF4/_netCDF4.pyx":3542
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             free(strdata)             # <<<<<<<<<<<<<<
@@ -34694,31 +34844,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3433
+    /* "netCDF4/_netCDF4.pyx":3544
  *             free(strdata)
  *         else: # regular VLEN
  *             if data.dtype != self.dtype:             # <<<<<<<<<<<<<<
  *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))
  *             data2 = data
  */
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_v_self->dtype, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_v_self->dtype, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_2) {
 
-      /* "netCDF4/_netCDF4.pyx":3434
+      /* "netCDF4/_netCDF4.pyx":3545
  *         else: # regular VLEN
  *             if data.dtype != self.dtype:
  *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))             # <<<<<<<<<<<<<<
  *             data2 = data
  *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_v_self->dtype);
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_self->dtype);
@@ -34726,36 +34876,36 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
       PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_wrong_data_type_should_be_s_got, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_wrong_data_type_should_be_s_got, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3435
+    /* "netCDF4/_netCDF4.pyx":3546
  *             if data.dtype != self.dtype:
  *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))
  *             data2 = data             # <<<<<<<<<<<<<<
  *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
  *             vldata[0].len = PyArray_SIZE(data2)
  */
-    if (!(likely(((__pyx_v_data) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_data, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_v_data) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_data, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_3 = __pyx_v_data;
     __Pyx_INCREF(__pyx_t_3);
     __pyx_v_data2 = ((PyArrayObject *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3436
+    /* "netCDF4/_netCDF4.pyx":3547
  *                 raise TypeError("wrong data type: should be %s, got %s" % (self.dtype,data.dtype))
  *             data2 = data
  *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))             # <<<<<<<<<<<<<<
@@ -34764,7 +34914,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
  */
     __pyx_v_vldata = ((nc_vlen_t *)malloc((sizeof(nc_vlen_t))));
 
-    /* "netCDF4/_netCDF4.pyx":3437
+    /* "netCDF4/_netCDF4.pyx":3548
  *             data2 = data
  *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
  *             vldata[0].len = PyArray_SIZE(data2)             # <<<<<<<<<<<<<<
@@ -34773,7 +34923,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
  */
     (__pyx_v_vldata[0]).len = PyArray_SIZE(__pyx_v_data2);
 
-    /* "netCDF4/_netCDF4.pyx":3438
+    /* "netCDF4/_netCDF4.pyx":3549
  *             vldata = <nc_vlen_t *>malloc(sizeof(nc_vlen_t))
  *             vldata[0].len = PyArray_SIZE(data2)
  *             vldata[0].p = data2.data             # <<<<<<<<<<<<<<
@@ -34783,7 +34933,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
     __pyx_t_11 = __pyx_v_data2->data;
     (__pyx_v_vldata[0]).p = __pyx_t_11;
 
-    /* "netCDF4/_netCDF4.pyx":3439
+    /* "netCDF4/_netCDF4.pyx":3550
  *             vldata[0].len = PyArray_SIZE(data2)
  *             vldata[0].p = data2.data
  *             ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -34792,7 +34942,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
  */
     __pyx_v_ierr = nc_put_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_vldata);
 
-    /* "netCDF4/_netCDF4.pyx":3441
+    /* "netCDF4/_netCDF4.pyx":3552
  *             ierr = nc_put_vara(self._grpid, self._varid,
  *                                startp, countp, vldata)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -34802,7 +34952,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
     __pyx_t_2 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_2) {
 
-      /* "netCDF4/_netCDF4.pyx":3442
+      /* "netCDF4/_netCDF4.pyx":3553
  *                                startp, countp, vldata)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -34810,23 +34960,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
  * 
  */
       __pyx_t_11 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_11, 0, strlen(__pyx_t_11), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3443
+    /* "netCDF4/_netCDF4.pyx":3554
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             free(vldata)             # <<<<<<<<<<<<<<
@@ -34837,7 +34987,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   }
   __pyx_L16:;
 
-  /* "netCDF4/_netCDF4.pyx":3374
+  /* "netCDF4/_netCDF4.pyx":3485
  *         return data
  * 
  *     def _assign_vlen(self, elem, data):             # <<<<<<<<<<<<<<
@@ -34869,7 +35019,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_46_assign_vlen(struct __p
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3445
+/* "netCDF4/_netCDF4.pyx":3556
  *             free(vldata)
  * 
  *     def __setitem__(self, elem, data):             # <<<<<<<<<<<<<<
@@ -34926,47 +35076,47 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __Pyx_RefNannySetupContext("__setitem__", 0);
   __Pyx_INCREF(__pyx_v_data);
 
-  /* "netCDF4/_netCDF4.pyx":3452
+  /* "netCDF4/_netCDF4.pyx":3563
  *         # to use.
  * 
  *         if self._isvlen: # if vlen, should be object array (don't try casting)             # <<<<<<<<<<<<<<
  *             if self.dtype == str:
  *                 # for string vars, if data is not an array
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":3453
+    /* "netCDF4/_netCDF4.pyx":3564
  * 
  *         if self._isvlen: # if vlen, should be object array (don't try casting)
  *             if self.dtype == str:             # <<<<<<<<<<<<<<
  *                 # for string vars, if data is not an array
  *                 # assume it is a python string and raise an error
  */
-    __pyx_t_2 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":3457
+      /* "netCDF4/_netCDF4.pyx":3568
  *                 # assume it is a python string and raise an error
  *                 # if it is an array, but not an object array.
  *                 if not hasattr(data,'ndim'):             # <<<<<<<<<<<<<<
  *                     self._assign_vlen(elem, data)
  *                     return
  */
-      __pyx_t_1 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_3 = ((!(__pyx_t_1 != 0)) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3458
+        /* "netCDF4/_netCDF4.pyx":3569
  *                 # if it is an array, but not an object array.
  *                 if not hasattr(data,'ndim'):
  *                     self._assign_vlen(elem, data)             # <<<<<<<<<<<<<<
  *                     return
  *                 elif data.dtype.kind in ['S', 'U']:
  */
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_assign_vlen); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_assign_vlen); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_5 = NULL;
         __pyx_t_6 = 0;
@@ -34980,7 +35130,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
             __pyx_t_6 = 1;
           }
         }
-        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         if (__pyx_t_5) {
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -34991,13 +35141,13 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __Pyx_INCREF(__pyx_v_data);
         PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_data);
         __Pyx_GIVEREF(__pyx_v_data);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3459
+        /* "netCDF4/_netCDF4.pyx":3570
  *                 if not hasattr(data,'ndim'):
  *                     self._assign_vlen(elem, data)
  *                     return             # <<<<<<<<<<<<<<
@@ -35008,39 +35158,39 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         goto __pyx_L0;
       }
 
-      /* "netCDF4/_netCDF4.pyx":3460
+      /* "netCDF4/_netCDF4.pyx":3571
  *                     self._assign_vlen(elem, data)
  *                     return
  *                 elif data.dtype.kind in ['S', 'U']:             # <<<<<<<<<<<<<<
  *                     data = data.astype(object)
  *                 elif data.dtype.kind != 'O':
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_kind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_kind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (!__pyx_t_1) {
       } else {
         __pyx_t_3 = __pyx_t_1;
         goto __pyx_L6_bool_binop_done;
       }
-      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_U, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_3 = __pyx_t_1;
       __pyx_L6_bool_binop_done:;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_1 = (__pyx_t_3 != 0);
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":3461
+        /* "netCDF4/_netCDF4.pyx":3572
  *                     return
  *                 elif data.dtype.kind in ['S', 'U']:
  *                     data = data.astype(object)             # <<<<<<<<<<<<<<
  *                 elif data.dtype.kind != 'O':
  *                     msg = ('only numpy string, unicode or object arrays can '
  */
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __pyx_t_7 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -35053,16 +35203,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           }
         }
         if (!__pyx_t_7) {
-          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_builtin_object); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_builtin_object); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
         } else {
-          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
           __Pyx_INCREF(__pyx_builtin_object);
           PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_builtin_object);
           __Pyx_GIVEREF(__pyx_builtin_object);
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         }
@@ -35072,23 +35222,23 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         goto __pyx_L5;
       }
 
-      /* "netCDF4/_netCDF4.pyx":3462
+      /* "netCDF4/_netCDF4.pyx":3573
  *                 elif data.dtype.kind in ['S', 'U']:
  *                     data = data.astype(object)
  *                 elif data.dtype.kind != 'O':             # <<<<<<<<<<<<<<
  *                     msg = ('only numpy string, unicode or object arrays can '
  *                            'be assigned to VLEN str var slices')
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_O, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_O, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":3463
+        /* "netCDF4/_netCDF4.pyx":3574
  *                     data = data.astype(object)
  *                 elif data.dtype.kind != 'O':
  *                     msg = ('only numpy string, unicode or object arrays can '             # <<<<<<<<<<<<<<
@@ -35098,63 +35248,63 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __Pyx_INCREF(__pyx_kp_s_only_numpy_string_unicode_or_obj);
         __pyx_v_msg = __pyx_kp_s_only_numpy_string_unicode_or_obj;
 
-        /* "netCDF4/_netCDF4.pyx":3465
+        /* "netCDF4/_netCDF4.pyx":3576
  *                     msg = ('only numpy string, unicode or object arrays can '
  *                            'be assigned to VLEN str var slices')
  *                     raise TypeError(msg)             # <<<<<<<<<<<<<<
  *             else:
  *                 # for non-string vlen arrays, if data is not multi-dim, or
  */
-        __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_INCREF(__pyx_v_msg);
         PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_msg);
         __Pyx_GIVEREF(__pyx_v_msg);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_Raise(__pyx_t_4, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L5:;
       goto __pyx_L4;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3470
+      /* "netCDF4/_netCDF4.pyx":3581
  *                 # not an object array, assume it represents a single element
  *                 # of the vlen var.
  *                 if not hasattr(data,'ndim') or data.dtype.kind != 'O':             # <<<<<<<<<<<<<<
  *                     self._assign_vlen(elem, data)
  *                     return
  */
-      __pyx_t_3 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = ((!(__pyx_t_3 != 0)) != 0);
       if (!__pyx_t_8) {
       } else {
         __pyx_t_1 = __pyx_t_8;
         goto __pyx_L9_bool_binop_done;
       }
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_O, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_O, Py_NE)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_1 = __pyx_t_8;
       __pyx_L9_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":3471
+        /* "netCDF4/_netCDF4.pyx":3582
  *                 # of the vlen var.
  *                 if not hasattr(data,'ndim') or data.dtype.kind != 'O':
  *                     self._assign_vlen(elem, data)             # <<<<<<<<<<<<<<
  *                     return
  * 
  */
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_assign_vlen); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_assign_vlen); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __pyx_t_5 = NULL;
         __pyx_t_6 = 0;
@@ -35168,7 +35318,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
             __pyx_t_6 = 1;
           }
         }
-        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         if (__pyx_t_5) {
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -35179,13 +35329,13 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __Pyx_INCREF(__pyx_v_data);
         PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_data);
         __Pyx_GIVEREF(__pyx_v_data);
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3472
+        /* "netCDF4/_netCDF4.pyx":3583
  *                 if not hasattr(data,'ndim') or data.dtype.kind != 'O':
  *                     self._assign_vlen(elem, data)
  *                     return             # <<<<<<<<<<<<<<
@@ -35201,74 +35351,75 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3476
+  /* "netCDF4/_netCDF4.pyx":3587
  *         # A numpy array is needed. Convert if necessary.
  *         # assume it's a numpy or masked array if it has an 'ndim' attribute.
  *         if not hasattr(data,'ndim'):             # <<<<<<<<<<<<<<
  *             # if auto scaling is to be done, don't cast to an integer yet.
- *             if self.scale and self.dtype.kind == 'i' and \
+ *             if self.scale and self.dtype.kind in 'iu' and \
  */
-  __pyx_t_1 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_HasAttr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_8 = ((!(__pyx_t_1 != 0)) != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":3478
+    /* "netCDF4/_netCDF4.pyx":3589
  *         if not hasattr(data,'ndim'):
  *             # if auto scaling is to be done, don't cast to an integer yet.
- *             if self.scale and self.dtype.kind == 'i' and \             # <<<<<<<<<<<<<<
+ *             if self.scale and self.dtype.kind in 'iu' and \             # <<<<<<<<<<<<<<
  *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
  *                 data = numpy.array(data,numpy.float)
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (!__pyx_t_1) {
       goto __pyx_L14_next_or;
     } else {
     }
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_i, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_t_2, __pyx_n_s_iu, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (!__pyx_t_1) {
+    __pyx_t_3 = (__pyx_t_1 != 0);
+    if (!__pyx_t_3) {
       goto __pyx_L14_next_or;
     } else {
     }
 
-    /* "netCDF4/_netCDF4.pyx":3479
+    /* "netCDF4/_netCDF4.pyx":3590
  *             # if auto scaling is to be done, don't cast to an integer yet.
- *             if self.scale and self.dtype.kind == 'i' and \
+ *             if self.scale and self.dtype.kind in 'iu' and \
  *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
  *                 data = numpy.array(data,numpy.float)
  *             else:
  */
-    __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = (__pyx_t_1 != 0);
-    if (!__pyx_t_3) {
+    __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__pyx_t_3 != 0);
+    if (!__pyx_t_1) {
     } else {
-      __pyx_t_8 = __pyx_t_3;
+      __pyx_t_8 = __pyx_t_1;
       goto __pyx_L13_bool_binop_done;
     }
     __pyx_L14_next_or:;
-    __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = (__pyx_t_3 != 0);
-    __pyx_t_8 = __pyx_t_1;
+    __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__pyx_t_1 != 0);
+    __pyx_t_8 = __pyx_t_3;
     __pyx_L13_bool_binop_done:;
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":3480
- *             if self.scale and self.dtype.kind == 'i' and \
+      /* "netCDF4/_netCDF4.pyx":3591
+ *             if self.scale and self.dtype.kind in 'iu' and \
  *                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
  *                 data = numpy.array(data,numpy.float)             # <<<<<<<<<<<<<<
  *             else:
  *                 data = numpy.array(data,self.dtype)
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_4 = NULL;
@@ -35283,7 +35434,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_9 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       if (__pyx_t_4) {
         PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -35294,7 +35445,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_6, __pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_5);
       __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -35304,16 +35455,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3482
+      /* "netCDF4/_netCDF4.pyx":3593
  *                 data = numpy.array(data,numpy.float)
  *             else:
  *                 data = numpy.array(data,self.dtype)             # <<<<<<<<<<<<<<
  * 
  *         start, count, stride, put_ind =\
  */
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_7 = NULL;
@@ -35328,7 +35479,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           __pyx_t_6 = 1;
         }
       }
-      __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       if (__pyx_t_7) {
         PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -35339,7 +35490,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       __Pyx_INCREF(__pyx_v_self->dtype);
       PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_self->dtype);
       __Pyx_GIVEREF(__pyx_v_self->dtype);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -35351,20 +35502,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   }
   __pyx_L11:;
 
-  /* "netCDF4/_netCDF4.pyx":3485
+  /* "netCDF4/_netCDF4.pyx":3596
  * 
  *         start, count, stride, put_ind =\
  *         _StartCountStride(elem,self.shape,self.dimensions,self._grp,datashape=data.shape,put=True)             # <<<<<<<<<<<<<<
  *         datashape = _out_array_shape(count)
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_v_elem);
   PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_elem);
@@ -35378,14 +35529,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __Pyx_GIVEREF(__pyx_v_self->_grp);
   __pyx_t_9 = 0;
   __pyx_t_5 = 0;
-  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
-  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_datashape, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_datashape, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_put, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_put, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -35400,7 +35551,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     if (unlikely(size != 4)) {
       if (size > 4) __Pyx_RaiseTooManyValuesError(4);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -35423,7 +35574,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       Py_ssize_t i;
       PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_7,&__pyx_t_2,&__pyx_t_4};
       for (i=0; i < 4; i++) {
-        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(item);
         *(temps[i]) = item;
       }
@@ -35433,7 +35584,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   } else {
     Py_ssize_t index = -1;
     PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_7,&__pyx_t_2,&__pyx_t_4};
-    __pyx_t_10 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
@@ -35442,7 +35593,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       __Pyx_GOTREF(item);
       *(temps[index]) = item;
     }
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_11 = NULL;
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     goto __pyx_L18_unpacking_done;
@@ -35450,11 +35601,11 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __pyx_t_11 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L18_unpacking_done:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3484
+  /* "netCDF4/_netCDF4.pyx":3595
  *                 data = numpy.array(data,self.dtype)
  * 
  *         start, count, stride, put_ind =\             # <<<<<<<<<<<<<<
@@ -35470,14 +35621,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __pyx_v_put_ind = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3486
+  /* "netCDF4/_netCDF4.pyx":3597
  *         start, count, stride, put_ind =\
  *         _StartCountStride(elem,self.shape,self.dimensions,self._grp,datashape=data.shape,put=True)
  *         datashape = _out_array_shape(count)             # <<<<<<<<<<<<<<
  * 
  *         # if a numpy scalar, create an array of the right size
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -35490,16 +35641,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
   } else {
-    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_count);
     PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_count);
     __Pyx_GIVEREF(__pyx_v_count);
-    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -35507,31 +35658,31 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __pyx_v_datashape = __pyx_t_9;
   __pyx_t_9 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3490
+  /* "netCDF4/_netCDF4.pyx":3601
  *         # if a numpy scalar, create an array of the right size
  *         # and fill with scalar values.
  *         if data.shape == ():             # <<<<<<<<<<<<<<
  *             data = numpy.tile(data,datashape)
  *         # reshape data array by adding extra singleton dimensions
  */
-  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_t_9, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_9, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":3491
+    /* "netCDF4/_netCDF4.pyx":3602
  *         # and fill with scalar values.
  *         if data.shape == ():
  *             data = numpy.tile(data,datashape)             # <<<<<<<<<<<<<<
  *         # reshape data array by adding extra singleton dimensions
  *         # if needed to conform with start,count,stride.
  */
-    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_tile); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_tile); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __pyx_t_9 = NULL;
@@ -35546,7 +35697,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     if (__pyx_t_9) {
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
@@ -35557,7 +35708,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     __Pyx_INCREF(__pyx_v_datashape);
     PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_datashape);
     __Pyx_GIVEREF(__pyx_v_datashape);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -35567,29 +35718,29 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   }
   __pyx_L19:;
 
-  /* "netCDF4/_netCDF4.pyx":3494
+  /* "netCDF4/_netCDF4.pyx":3605
  *         # reshape data array by adding extra singleton dimensions
  *         # if needed to conform with start,count,stride.
  *         if len(data.shape) != len(datashape):             # <<<<<<<<<<<<<<
  *             # create a view so shape in caller is not modified (issue 90)
  *             data = data.view()
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_6 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_12 = PyObject_Length(__pyx_v_datashape); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = PyObject_Length(__pyx_v_datashape); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_8 = ((__pyx_t_6 != __pyx_t_12) != 0);
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":3496
+    /* "netCDF4/_netCDF4.pyx":3607
  *         if len(data.shape) != len(datashape):
  *             # create a view so shape in caller is not modified (issue 90)
  *             data = data.view()             # <<<<<<<<<<<<<<
  *             data.shape = tuple(datashape)
  * 
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -35602,53 +35753,53 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3497
+    /* "netCDF4/_netCDF4.pyx":3608
  *             # create a view so shape in caller is not modified (issue 90)
  *             data = data.view()
  *             data.shape = tuple(datashape)             # <<<<<<<<<<<<<<
  * 
  *         # Reshape these arrays so we can iterate over them.
  */
-    __pyx_t_4 = PySequence_Tuple(__pyx_v_datashape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_Tuple(__pyx_v_datashape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    if (__Pyx_PyObject_SetAttrStr(__pyx_v_data, __pyx_n_s_shape, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_PyObject_SetAttrStr(__pyx_v_data, __pyx_n_s_shape, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     goto __pyx_L20;
   }
   __pyx_L20:;
 
-  /* "netCDF4/_netCDF4.pyx":3500
+  /* "netCDF4/_netCDF4.pyx":3611
  * 
  *         # Reshape these arrays so we can iterate over them.
  *         start = start.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         count = count.reshape((-1, self.ndim or 1))
  *         stride = stride.reshape((-1, self.ndim or 1))
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_8) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_2 = __pyx_v_self->ndim;
     goto __pyx_L21_bool_binop_done;
   }
-  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_2 = __pyx_t_9;
   __pyx_t_9 = 0;
   __pyx_L21_bool_binop_done:;
-  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_neg_1);
@@ -35667,17 +35818,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_GOTREF(__pyx_t_4);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_9);
     __Pyx_GIVEREF(__pyx_t_9);
     __pyx_t_9 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -35685,28 +35836,28 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3501
+  /* "netCDF4/_netCDF4.pyx":3612
  *         # Reshape these arrays so we can iterate over them.
  *         start = start.reshape((-1, self.ndim or 1))
  *         count = count.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         stride = stride.reshape((-1, self.ndim or 1))
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_count, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_count, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_8) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_5 = __pyx_v_self->ndim;
     goto __pyx_L23_bool_binop_done;
   }
-  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_5 = __pyx_t_9;
   __pyx_t_9 = 0;
   __pyx_L23_bool_binop_done:;
-  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_neg_1);
@@ -35725,17 +35876,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_GOTREF(__pyx_t_4);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_9);
     __Pyx_GIVEREF(__pyx_t_9);
     __pyx_t_9 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -35743,28 +35894,28 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __Pyx_DECREF_SET(__pyx_v_count, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3502
+  /* "netCDF4/_netCDF4.pyx":3613
  *         start = start.reshape((-1, self.ndim or 1))
  *         count = count.reshape((-1, self.ndim or 1))
  *         stride = stride.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))
  * 
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_stride, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_stride, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_8) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_2 = __pyx_v_self->ndim;
     goto __pyx_L25_bool_binop_done;
   }
-  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_2 = __pyx_t_9;
   __pyx_t_9 = 0;
   __pyx_L25_bool_binop_done:;
-  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_neg_1);
@@ -35783,17 +35934,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_GOTREF(__pyx_t_4);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_9);
     __Pyx_GIVEREF(__pyx_t_9);
     __pyx_t_9 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -35801,28 +35952,28 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __Pyx_DECREF_SET(__pyx_v_stride, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3503
+  /* "netCDF4/_netCDF4.pyx":3614
  *         count = count.reshape((-1, self.ndim or 1))
  *         stride = stride.reshape((-1, self.ndim or 1))
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  * 
  *         if 'least_significant_digit' in self.ncattrs():
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->ndim); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_8) {
   } else {
     __Pyx_INCREF(__pyx_v_self->ndim);
     __pyx_t_5 = __pyx_v_self->ndim;
     goto __pyx_L27_bool_binop_done;
   }
-  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_5 = __pyx_t_9;
   __pyx_t_9 = 0;
   __pyx_L27_bool_binop_done:;
-  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_neg_1);
@@ -35841,17 +35992,17 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_GOTREF(__pyx_t_4);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_9);
     __Pyx_GIVEREF(__pyx_t_9);
     __pyx_t_9 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -35859,14 +36010,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __Pyx_DECREF_SET(__pyx_v_put_ind, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3505
+  /* "netCDF4/_netCDF4.pyx":3616
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))
  * 
  *         if 'least_significant_digit' in self.ncattrs():             # <<<<<<<<<<<<<<
  *             data = _quantize(data,self.least_significant_digit)
  *         # if auto_scale mode set to True, (through
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_2 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -35879,28 +36030,28 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_n_s_least_significant_digit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_n_s_least_significant_digit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_1 = (__pyx_t_8 != 0);
-  if (__pyx_t_1) {
+  __pyx_t_3 = (__pyx_t_8 != 0);
+  if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3506
+    /* "netCDF4/_netCDF4.pyx":3617
  * 
  *         if 'least_significant_digit' in self.ncattrs():
  *             data = _quantize(data,self.least_significant_digit)             # <<<<<<<<<<<<<<
  *         # if auto_scale mode set to True, (through
  *         # a call to set_auto_scale or set_auto_maskandscale),
  */
-    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_quantize); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_quantize); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_least_significant_digit); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_least_significant_digit); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_9 = NULL;
     __pyx_t_12 = 0;
@@ -35914,7 +36065,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __pyx_t_12 = 1;
       }
     }
-    __pyx_t_5 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_9) {
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
@@ -35925,7 +36076,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_12, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -35935,54 +36086,54 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   }
   __pyx_L29:;
 
-  /* "netCDF4/_netCDF4.pyx":3515
+  /* "netCDF4/_netCDF4.pyx":3626
  *         # missing_value/_Fill_Value.
  *         # ignore if not a primitive (not compound or vlen) datatype.
  *         if self.mask and self._isprimitive:             # <<<<<<<<<<<<<<
  *             # use missing_value as fill value.
  *             # if no missing value set, use _FillValue.
  */
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->mask); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->mask); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_8) {
   } else {
-    __pyx_t_1 = __pyx_t_8;
+    __pyx_t_3 = __pyx_t_8;
     goto __pyx_L31_bool_binop_done;
   }
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = __pyx_t_8;
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __pyx_t_8;
   __pyx_L31_bool_binop_done:;
-  if (__pyx_t_1) {
+  if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3518
+    /* "netCDF4/_netCDF4.pyx":3629
  *             # use missing_value as fill value.
  *             # if no missing value set, use _FillValue.
  *             if hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
  *                 # if not masked, create a masked array.
  *                 if not ma.isMA(data): data = self._toma(data)
  */
-    __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = (__pyx_t_8 != 0);
-    if (!__pyx_t_3) {
+    __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__pyx_t_8 != 0);
+    if (!__pyx_t_1) {
     } else {
-      __pyx_t_1 = __pyx_t_3;
+      __pyx_t_3 = __pyx_t_1;
       goto __pyx_L34_bool_binop_done;
     }
-    __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_8 = (__pyx_t_3 != 0);
-    __pyx_t_1 = __pyx_t_8;
+    __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__pyx_t_1 != 0);
+    __pyx_t_3 = __pyx_t_8;
     __pyx_L34_bool_binop_done:;
-    if (__pyx_t_1) {
+    if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3520
+      /* "netCDF4/_netCDF4.pyx":3631
  *             if hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
  *                 # if not masked, create a masked array.
  *                 if not ma.isMA(data): data = self._toma(data)             # <<<<<<<<<<<<<<
  *         if self.scale and self._isprimitive:
  *             # pack non-masked values using scale_factor and add_offset
  */
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_isMA); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_isMA); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_7 = NULL;
@@ -35996,25 +36147,25 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         }
       }
       if (!__pyx_t_7) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
         __Pyx_INCREF(__pyx_v_data);
         PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_data);
         __Pyx_GIVEREF(__pyx_v_data);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = ((!__pyx_t_1) != 0);
+      __pyx_t_8 = ((!__pyx_t_3) != 0);
       if (__pyx_t_8) {
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_toma); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_toma); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_2 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -36027,16 +36178,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           }
         }
         if (!__pyx_t_2) {
-          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
         } else {
-          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
           __Pyx_INCREF(__pyx_v_data);
           PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_data);
           __Pyx_GIVEREF(__pyx_v_data);
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         }
@@ -36053,80 +36204,81 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   }
   __pyx_L30:;
 
-  /* "netCDF4/_netCDF4.pyx":3521
+  /* "netCDF4/_netCDF4.pyx":3632
  *                 # if not masked, create a masked array.
  *                 if not ma.isMA(data): data = self._toma(data)
  *         if self.scale and self._isprimitive:             # <<<<<<<<<<<<<<
  *             # pack non-masked values using scale_factor and add_offset
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__pyx_t_1) {
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->scale); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_3) {
   } else {
-    __pyx_t_8 = __pyx_t_1;
+    __pyx_t_8 = __pyx_t_3;
     goto __pyx_L38_bool_binop_done;
   }
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_8 = __pyx_t_1;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __pyx_t_3;
   __pyx_L38_bool_binop_done:;
   if (__pyx_t_8) {
 
-    /* "netCDF4/_netCDF4.pyx":3523
+    /* "netCDF4/_netCDF4.pyx":3634
  *         if self.scale and self._isprimitive:
  *             # pack non-masked values using scale_factor and add_offset
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
  *                 data = (data - self.add_offset)/self.scale_factor
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  */
-    __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = (__pyx_t_1 != 0);
-    if (__pyx_t_3) {
+    __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = (__pyx_t_3 != 0);
+    if (__pyx_t_1) {
     } else {
-      __pyx_t_8 = __pyx_t_3;
+      __pyx_t_8 = __pyx_t_1;
       goto __pyx_L41_bool_binop_done;
     }
-    __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = (__pyx_t_3 != 0);
-    __pyx_t_8 = __pyx_t_1;
+    __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__pyx_t_1 != 0);
+    __pyx_t_8 = __pyx_t_3;
     __pyx_L41_bool_binop_done:;
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":3524
+      /* "netCDF4/_netCDF4.pyx":3635
  *             # pack non-masked values using scale_factor and add_offset
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
  *                 data = (data - self.add_offset)/self.scale_factor             # <<<<<<<<<<<<<<
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             elif hasattr(self, 'scale_factor'):
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyNumber_Subtract(__pyx_v_data, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Subtract(__pyx_v_data, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3525
+      /* "netCDF4/_netCDF4.pyx":3636
  *             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
  *                 data = (data - self.add_offset)/self.scale_factor
- *                 if self.dtype.kind == 'i': data = numpy.around(data)             # <<<<<<<<<<<<<<
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)             # <<<<<<<<<<<<<<
  *             elif hasattr(self, 'scale_factor'):
  *                 data = data/self.scale_factor
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_i, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_t_7, __pyx_n_s_iu, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (__pyx_t_8) {
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = (__pyx_t_8 != 0);
+      if (__pyx_t_3) {
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_around); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_around); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_4 = NULL;
@@ -36140,16 +36292,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           }
         }
         if (!__pyx_t_4) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_data); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_data); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
         } else {
-          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
           __Pyx_INCREF(__pyx_v_data);
           PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_data);
           __Pyx_GIVEREF(__pyx_v_data);
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         }
@@ -36162,47 +36314,48 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       goto __pyx_L40;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3526
+    /* "netCDF4/_netCDF4.pyx":3637
  *                 data = (data - self.add_offset)/self.scale_factor
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             elif hasattr(self, 'scale_factor'):             # <<<<<<<<<<<<<<
  *                 data = data/self.scale_factor
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  */
-    __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = (__pyx_t_8 != 0);
-    if (__pyx_t_1) {
+    __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__pyx_t_3 != 0);
+    if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":3527
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+      /* "netCDF4/_netCDF4.pyx":3638
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             elif hasattr(self, 'scale_factor'):
  *                 data = data/self.scale_factor             # <<<<<<<<<<<<<<
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             elif hasattr(self, 'add_offset'):
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scale_factor); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_data, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_data, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3528
+      /* "netCDF4/_netCDF4.pyx":3639
  *             elif hasattr(self, 'scale_factor'):
  *                 data = data/self.scale_factor
- *                 if self.dtype.kind == 'i': data = numpy.around(data)             # <<<<<<<<<<<<<<
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)             # <<<<<<<<<<<<<<
  *             elif hasattr(self, 'add_offset'):
  *                 data = data - self.add_offset
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_i, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_t_5, __pyx_n_s_iu, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (__pyx_t_1) {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = (__pyx_t_8 != 0);
+      if (__pyx_t_3) {
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_around); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_around); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -36216,16 +36369,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           }
         }
         if (!__pyx_t_7) {
-          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_data); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
         } else {
-          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
           __Pyx_INCREF(__pyx_v_data);
           PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_data);
           __Pyx_GIVEREF(__pyx_v_data);
-          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         }
@@ -36238,47 +36391,48 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       goto __pyx_L40;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3529
+    /* "netCDF4/_netCDF4.pyx":3640
  *                 data = data/self.scale_factor
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             elif hasattr(self, 'add_offset'):             # <<<<<<<<<<<<<<
  *                 data = data - self.add_offset
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  */
-    __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_8 = (__pyx_t_1 != 0);
+    __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = (__pyx_t_3 != 0);
     if (__pyx_t_8) {
 
-      /* "netCDF4/_netCDF4.pyx":3530
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+      /* "netCDF4/_netCDF4.pyx":3641
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             elif hasattr(self, 'add_offset'):
  *                 data = data - self.add_offset             # <<<<<<<<<<<<<<
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             if ma.isMA(data):
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_offset); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_2 = PyNumber_Subtract(__pyx_v_data, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyNumber_Subtract(__pyx_v_data, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3531
+      /* "netCDF4/_netCDF4.pyx":3642
  *             elif hasattr(self, 'add_offset'):
  *                 data = data - self.add_offset
- *                 if self.dtype.kind == 'i': data = numpy.around(data)             # <<<<<<<<<<<<<<
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)             # <<<<<<<<<<<<<<
  *             if ma.isMA(data):
  *                 # if underlying data in masked regions of masked array
  */
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_i, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_t_2, __pyx_n_s_iu, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (__pyx_t_8) {
-        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = (__pyx_t_8 != 0);
+      if (__pyx_t_3) {
+        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_around); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_around); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_5 = NULL;
@@ -36292,16 +36446,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           }
         }
         if (!__pyx_t_5) {
-          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
         } else {
-          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
           __Pyx_INCREF(__pyx_v_data);
           PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_data);
           __Pyx_GIVEREF(__pyx_v_data);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         }
@@ -36315,16 +36469,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
     __pyx_L40:;
 
-    /* "netCDF4/_netCDF4.pyx":3532
+    /* "netCDF4/_netCDF4.pyx":3643
  *                 data = data - self.add_offset
- *                 if self.dtype.kind == 'i': data = numpy.around(data)
+ *                 if self.dtype.kind in 'iu': data = numpy.around(data)
  *             if ma.isMA(data):             # <<<<<<<<<<<<<<
  *                 # if underlying data in masked regions of masked array
  *                 # corresponds to missing values, don't fill masked array -
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_isMA); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_isMA); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -36338,65 +36492,65 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
     } else {
-      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_data);
       PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_data);
       __Pyx_GIVEREF(__pyx_v_data);
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (__pyx_t_8) {
+    if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3536
+      /* "netCDF4/_netCDF4.pyx":3647
  *                 # corresponds to missing values, don't fill masked array -
  *                 # just use underlying data instead
  *                 if hasattr(self, 'missing_value') and \             # <<<<<<<<<<<<<<
  *                    numpy.all(numpy.in1d(data.data[data.mask],self.missing_value)):
  *                     data = data.data
  */
-      __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_3 = (__pyx_t_1 != 0);
-      if (__pyx_t_3) {
+      __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = (__pyx_t_8 != 0);
+      if (__pyx_t_1) {
       } else {
-        __pyx_t_8 = __pyx_t_3;
+        __pyx_t_3 = __pyx_t_1;
         goto __pyx_L48_bool_binop_done;
       }
 
-      /* "netCDF4/_netCDF4.pyx":3537
+      /* "netCDF4/_netCDF4.pyx":3648
  *                 # just use underlying data instead
  *                 if hasattr(self, 'missing_value') and \
  *                    numpy.all(numpy.in1d(data.data[data.mask],self.missing_value)):             # <<<<<<<<<<<<<<
  *                     data = data.data
  *                 else:
  */
-      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_in1d); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_in1d); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_data); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_mask); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_mask); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_13 = PyObject_GetItem(__pyx_t_4, __pyx_t_10); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_13 = PyObject_GetItem(__pyx_t_4, __pyx_t_10); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_4 = NULL;
       __pyx_t_12 = 0;
@@ -36410,7 +36564,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           __pyx_t_12 = 1;
         }
       }
-      __pyx_t_14 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       if (__pyx_t_4) {
         PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -36421,7 +36575,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       __Pyx_GIVEREF(__pyx_t_10);
       __pyx_t_13 = 0;
       __pyx_t_10 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -36436,35 +36590,35 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         }
       }
       if (!__pyx_t_9) {
-        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_GOTREF(__pyx_t_2);
       } else {
-        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
         PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
         PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_7);
         __Pyx_GIVEREF(__pyx_t_7);
         __pyx_t_7 = 0;
-        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_8 = __pyx_t_3;
+      __pyx_t_3 = __pyx_t_1;
       __pyx_L48_bool_binop_done:;
-      if (__pyx_t_8) {
+      if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3538
+        /* "netCDF4/_netCDF4.pyx":3649
  *                 if hasattr(self, 'missing_value') and \
  *                    numpy.all(numpy.in1d(data.data[data.mask],self.missing_value)):
  *                     data = data.data             # <<<<<<<<<<<<<<
  *                 else:
  *                     if hasattr(self, 'missing_value'):
  */
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_2);
         __pyx_t_2 = 0;
@@ -36472,30 +36626,30 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3540
+        /* "netCDF4/_netCDF4.pyx":3651
  *                     data = data.data
  *                 else:
  *                     if hasattr(self, 'missing_value'):             # <<<<<<<<<<<<<<
  *                         # if missing value is a scalar, use it as fill_value.
  *                         # if missing value is a vector, raise an exception
  */
-        __pyx_t_8 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_3 = (__pyx_t_8 != 0);
-        if (__pyx_t_3) {
+        __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = (__pyx_t_3 != 0);
+        if (__pyx_t_1) {
 
-          /* "netCDF4/_netCDF4.pyx":3544
+          /* "netCDF4/_netCDF4.pyx":3655
  *                         # if missing value is a vector, raise an exception
  *                         # since we then don't know how to fill in masked values.
  *                         if numpy.array(self.missing_value).shape == ():             # <<<<<<<<<<<<<<
  *                             fillval = self.missing_value
  *                         else:
  */
-          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
-          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           __pyx_t_7 = NULL;
           if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_14))) {
@@ -36508,38 +36662,38 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
             }
           }
           if (!__pyx_t_7) {
-            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_GOTREF(__pyx_t_2);
           } else {
-            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_9);
             PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
             PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_5);
             __Pyx_GIVEREF(__pyx_t_5);
             __pyx_t_5 = 0;
-            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_2);
             __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           }
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shape); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shape); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __pyx_t_2 = PyObject_RichCompare(__pyx_t_14, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PyObject_RichCompare(__pyx_t_14, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          if (__pyx_t_3) {
+          if (__pyx_t_1) {
 
-            /* "netCDF4/_netCDF4.pyx":3545
+            /* "netCDF4/_netCDF4.pyx":3656
  *                         # since we then don't know how to fill in masked values.
  *                         if numpy.array(self.missing_value).shape == ():
  *                             fillval = self.missing_value             # <<<<<<<<<<<<<<
  *                         else:
  *                             msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"
  */
-            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_missing_value); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_2);
             __pyx_v_fillval = __pyx_t_2;
             __pyx_t_2 = 0;
@@ -36547,7 +36701,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           }
           /*else*/ {
 
-            /* "netCDF4/_netCDF4.pyx":3547
+            /* "netCDF4/_netCDF4.pyx":3658
  *                             fillval = self.missing_value
  *                         else:
  *                             msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"             # <<<<<<<<<<<<<<
@@ -36557,37 +36711,37 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
             __Pyx_INCREF(__pyx_kp_s_cannot_assign_fill_value_for_mas);
             __pyx_v_msg = __pyx_kp_s_cannot_assign_fill_value_for_mas;
 
-            /* "netCDF4/_netCDF4.pyx":3548
+            /* "netCDF4/_netCDF4.pyx":3659
  *                         else:
  *                             msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"
  *                             raise RuntimeError(msg)             # <<<<<<<<<<<<<<
  *                         if numpy.array(fillval).shape != ():
  *                             fillval = fillval[0]
  */
-            __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_2);
             __Pyx_INCREF(__pyx_v_msg);
             PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_msg);
             __Pyx_GIVEREF(__pyx_v_msg);
-            __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_14);
             __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
             __Pyx_Raise(__pyx_t_14, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           __pyx_L51:;
 
-          /* "netCDF4/_netCDF4.pyx":3549
+          /* "netCDF4/_netCDF4.pyx":3660
  *                             msg="cannot assign fill_value for masked array when missing_value attribute is not a scalar"
  *                             raise RuntimeError(msg)
  *                         if numpy.array(fillval).shape != ():             # <<<<<<<<<<<<<<
  *                             fillval = fillval[0]
  *                     elif hasattr(self, '_FillValue'):
  */
-          __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
-          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
           __pyx_t_2 = NULL;
@@ -36601,37 +36755,37 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
             }
           }
           if (!__pyx_t_2) {
-            __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_fillval); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_14 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_fillval); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_14);
           } else {
-            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_5);
             PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
             __Pyx_INCREF(__pyx_v_fillval);
             PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_fillval);
             __Pyx_GIVEREF(__pyx_v_fillval);
-            __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_14);
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           }
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_shape); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __pyx_t_14 = PyObject_RichCompare(__pyx_t_9, __pyx_empty_tuple, Py_NE); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = PyObject_RichCompare(__pyx_t_9, __pyx_empty_tuple, Py_NE); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          if (__pyx_t_3) {
+          if (__pyx_t_1) {
 
-            /* "netCDF4/_netCDF4.pyx":3550
+            /* "netCDF4/_netCDF4.pyx":3661
  *                             raise RuntimeError(msg)
  *                         if numpy.array(fillval).shape != ():
  *                             fillval = fillval[0]             # <<<<<<<<<<<<<<
  *                     elif hasattr(self, '_FillValue'):
  *                         fillval = self._FillValue
  */
-            __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_fillval, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3550; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+            __pyx_t_14 = __Pyx_GetItemInt(__pyx_v_fillval, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3661; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
             __Pyx_GOTREF(__pyx_t_14);
             __Pyx_DECREF_SET(__pyx_v_fillval, __pyx_t_14);
             __pyx_t_14 = 0;
@@ -36641,25 +36795,25 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
           goto __pyx_L50;
         }
 
-        /* "netCDF4/_netCDF4.pyx":3551
+        /* "netCDF4/_netCDF4.pyx":3662
  *                         if numpy.array(fillval).shape != ():
  *                             fillval = fillval[0]
  *                     elif hasattr(self, '_FillValue'):             # <<<<<<<<<<<<<<
  *                         fillval = self._FillValue
  *                     else:
  */
-        __pyx_t_3 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_8 = (__pyx_t_3 != 0);
-        if (__pyx_t_8) {
+        __pyx_t_1 = PyObject_HasAttr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = (__pyx_t_1 != 0);
+        if (__pyx_t_3) {
 
-          /* "netCDF4/_netCDF4.pyx":3552
+          /* "netCDF4/_netCDF4.pyx":3663
  *                             fillval = fillval[0]
  *                     elif hasattr(self, '_FillValue'):
  *                         fillval = self._FillValue             # <<<<<<<<<<<<<<
  *                     else:
  *                         fillval = default_fillvals[self.dtype.str[1:]]
  */
-          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_FillValue); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __pyx_v_fillval = __pyx_t_14;
           __pyx_t_14 = 0;
@@ -36667,21 +36821,21 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":3554
+          /* "netCDF4/_netCDF4.pyx":3665
  *                         fillval = self._FillValue
  *                     else:
  *                         fillval = default_fillvals[self.dtype.str[1:]]             # <<<<<<<<<<<<<<
  *                     data = data.filled(fill_value=fillval)
  * 
  */
-          __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_fillvals); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_fillvals); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
-          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->dtype, __pyx_n_s_str); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_9);
-          __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_9, 1, 0, NULL, NULL, &__pyx_slice__61, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_9, 1, 0, NULL, NULL, &__pyx_slice__61, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-          __pyx_t_9 = PyObject_GetItem(__pyx_t_14, __pyx_t_5); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3554; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+          __pyx_t_9 = PyObject_GetItem(__pyx_t_14, __pyx_t_5); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3665; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -36690,19 +36844,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         }
         __pyx_L50:;
 
-        /* "netCDF4/_netCDF4.pyx":3555
+        /* "netCDF4/_netCDF4.pyx":3666
  *                     else:
  *                         fillval = default_fillvals[self.dtype.str[1:]]
  *                     data = data.filled(fill_value=fillval)             # <<<<<<<<<<<<<<
  * 
  *         # Fill output array with data chunks.
  */
-        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_filled); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_filled); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_9);
-        __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill_value, __pyx_v_fillval) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill_value, __pyx_v_fillval) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -36717,14 +36871,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   }
   __pyx_L37:;
 
-  /* "netCDF4/_netCDF4.pyx":3558
+  /* "netCDF4/_netCDF4.pyx":3669
  * 
  *         # Fill output array with data chunks.
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
  *             dataput = data[tuple(i)]
  *             if dataput.size == 0: continue # nothing to write
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_9 = NULL;
   __pyx_t_12 = 0;
@@ -36738,7 +36892,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       __pyx_t_12 = 1;
     }
   }
-  __pyx_t_2 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   if (__pyx_t_9) {
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
@@ -36755,7 +36909,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   __Pyx_INCREF(__pyx_v_put_ind);
   PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_12, __pyx_v_put_ind);
   __Pyx_GIVEREF(__pyx_v_put_ind);
-  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_14);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -36763,9 +36917,9 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     __pyx_t_5 = __pyx_t_14; __Pyx_INCREF(__pyx_t_5); __pyx_t_12 = 0;
     __pyx_t_15 = NULL;
   } else {
-    __pyx_t_12 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_15 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
   for (;;) {
@@ -36773,16 +36927,16 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_14 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_14); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_14); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_14 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_14 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_14); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_14); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_14 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -36791,7 +36945,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -36807,7 +36961,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       if (unlikely(size != 4)) {
         if (size > 4) __Pyx_RaiseTooManyValuesError(4);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -36830,7 +36984,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         Py_ssize_t i;
         PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_9,&__pyx_t_7,&__pyx_t_10};
         for (i=0; i < 4; i++) {
-          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(item);
           *(temps[i]) = item;
         }
@@ -36840,7 +36994,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     } else {
       Py_ssize_t index = -1;
       PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_9,&__pyx_t_7,&__pyx_t_10};
-      __pyx_t_13 = PyObject_GetIter(__pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PyObject_GetIter(__pyx_t_14); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __pyx_t_11 = Py_TYPE(__pyx_t_13)->tp_iternext;
@@ -36849,7 +37003,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __Pyx_GOTREF(item);
         *(temps[index]) = item;
       }
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_13), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_13), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       goto __pyx_L56_unpacking_done;
@@ -36857,7 +37011,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L56_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_2);
@@ -36869,73 +37023,73 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_10);
     __pyx_t_10 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3559
+    /* "netCDF4/_netCDF4.pyx":3670
  *         # Fill output array with data chunks.
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):
  *             dataput = data[tuple(i)]             # <<<<<<<<<<<<<<
  *             if dataput.size == 0: continue # nothing to write
  *             # convert array scalar to regular array with one element.
  */
-    __pyx_t_14 = PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = PySequence_Tuple(__pyx_v_i); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_14);
-    __pyx_t_10 = PyObject_GetItem(__pyx_v_data, __pyx_t_14); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3559; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_10 = PyObject_GetItem(__pyx_v_data, __pyx_t_14); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3670; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
     __Pyx_XDECREF_SET(__pyx_v_dataput, __pyx_t_10);
     __pyx_t_10 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3560
+    /* "netCDF4/_netCDF4.pyx":3671
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):
  *             dataput = data[tuple(i)]
  *             if dataput.size == 0: continue # nothing to write             # <<<<<<<<<<<<<<
  *             # convert array scalar to regular array with one element.
  *             if dataput.shape == ():
  */
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_n_s_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_n_s_size); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
-    __pyx_t_14 = PyObject_RichCompare(__pyx_t_10, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = PyObject_RichCompare(__pyx_t_10, __pyx_int_0, Py_EQ); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    if (__pyx_t_8) {
+    if (__pyx_t_3) {
       goto __pyx_L53_continue;
     }
 
-    /* "netCDF4/_netCDF4.pyx":3562
+    /* "netCDF4/_netCDF4.pyx":3673
  *             if dataput.size == 0: continue # nothing to write
  *             # convert array scalar to regular array with one element.
  *             if dataput.shape == ():             # <<<<<<<<<<<<<<
  *                 if self._isvlen:
  *                     dataput=numpy.array(dataput,'O')
  */
-    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_n_s_shape); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_n_s_shape); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_14);
-    __pyx_t_10 = PyObject_RichCompare(__pyx_t_14, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyObject_RichCompare(__pyx_t_14, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-    if (__pyx_t_8) {
+    if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3563
+      /* "netCDF4/_netCDF4.pyx":3674
  *             # convert array scalar to regular array with one element.
  *             if dataput.shape == ():
  *                 if self._isvlen:             # <<<<<<<<<<<<<<
  *                     dataput=numpy.array(dataput,'O')
  *                 else:
  */
-      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      if (__pyx_t_8) {
+      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3564
+        /* "netCDF4/_netCDF4.pyx":3675
  *             if dataput.shape == ():
  *                 if self._isvlen:
  *                     dataput=numpy.array(dataput,'O')             # <<<<<<<<<<<<<<
  *                 else:
  *                     dataput=numpy.array(dataput,dataput.dtype)
  */
-        __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         __pyx_t_14 = NULL;
@@ -36950,7 +37104,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
             __pyx_t_6 = 1;
           }
         }
-        __pyx_t_9 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_9);
         if (__pyx_t_14) {
           PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __pyx_t_14 = NULL;
@@ -36961,7 +37115,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __Pyx_INCREF(__pyx_n_s_O);
         PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_6, __pyx_n_s_O);
         __Pyx_GIVEREF(__pyx_n_s_O);
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -36971,19 +37125,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3566
+        /* "netCDF4/_netCDF4.pyx":3677
  *                     dataput=numpy.array(dataput,'O')
  *                 else:
  *                     dataput=numpy.array(dataput,dataput.dtype)             # <<<<<<<<<<<<<<
  *             self._put(dataput,a,b,c)
  * 
  */
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_dataput, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_14 = NULL;
         __pyx_t_6 = 0;
@@ -36997,7 +37151,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
             __pyx_t_6 = 1;
           }
         }
-        __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         if (__pyx_t_14) {
           PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __pyx_t_14 = NULL;
@@ -37008,7 +37162,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_7);
         __Pyx_GIVEREF(__pyx_t_7);
         __pyx_t_7 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_2, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -37020,14 +37174,14 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     }
     __pyx_L58:;
 
-    /* "netCDF4/_netCDF4.pyx":3567
+    /* "netCDF4/_netCDF4.pyx":3678
  *                 else:
  *                     dataput=numpy.array(dataput,dataput.dtype)
  *             self._put(dataput,a,b,c)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_2 = NULL;
     __pyx_t_6 = 0;
@@ -37041,7 +37195,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_2) {
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
@@ -37058,13 +37212,13 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
     __Pyx_INCREF(__pyx_v_c);
     PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_c);
     __Pyx_GIVEREF(__pyx_v_c);
-    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3558
+    /* "netCDF4/_netCDF4.pyx":3669
  * 
  *         # Fill output array with data chunks.
  *         for (a,b,c,i) in zip(start, count, stride, put_ind):             # <<<<<<<<<<<<<<
@@ -37075,7 +37229,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3445
+  /* "netCDF4/_netCDF4.pyx":3556
  *             free(vldata)
  * 
  *     def __setitem__(self, elem, data):             # <<<<<<<<<<<<<<
@@ -37115,12 +37269,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_48__setitem__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3570
+/* "netCDF4/_netCDF4.pyx":3681
  * 
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
- *         return self.shape[0]
- * 
+ *         if not self.shape:
+ *             raise TypeError('len() of unsized object')
  */
 
 /* Python wrapper */
@@ -37140,42 +37294,74 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_8Variable_50__len__(struct __pyx_o
   Py_ssize_t __pyx_r;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  Py_ssize_t __pyx_t_3;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
   int __pyx_lineno = 0;
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__len__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3571
+  /* "netCDF4/_netCDF4.pyx":3682
  * 
  *     def __len__(self):
- *         return self.shape[0]             # <<<<<<<<<<<<<<
- * 
- * 
+ *         if not self.shape:             # <<<<<<<<<<<<<<
+ *             raise TypeError('len() of unsized object')
+ *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_3;
-  goto __pyx_L0;
+  __pyx_t_3 = ((!__pyx_t_2) != 0);
+  if (__pyx_t_3) {
+
+    /* "netCDF4/_netCDF4.pyx":3683
+ *     def __len__(self):
+ *         if not self.shape:
+ *             raise TypeError('len() of unsized object')             # <<<<<<<<<<<<<<
+ *         else:
+ *             return self.shape[0]
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  /*else*/ {
 
-  /* "netCDF4/_netCDF4.pyx":3570
+    /* "netCDF4/_netCDF4.pyx":3685
+ *             raise TypeError('len() of unsized object')
+ *         else:
+ *             return self.shape[0]             # <<<<<<<<<<<<<<
  * 
  * 
- *     def __len__(self):             # <<<<<<<<<<<<<<
- *         return self.shape[0]
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3685; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    goto __pyx_L0;
+  }
+
+  /* "netCDF4/_netCDF4.pyx":3681
  * 
+ * 
+ *     def __len__(self):             # <<<<<<<<<<<<<<
+ *         if not self.shape:
+ *             raise TypeError('len() of unsized object')
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = -1;
   __pyx_L0:;
@@ -37183,17 +37369,17 @@ static Py_ssize_t __pyx_pf_7netCDF4_8_netCDF4_8Variable_50__len__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3574
+/* "netCDF4/_netCDF4.pyx":3688
  * 
  * 
  *     def assignValue(self,val):             # <<<<<<<<<<<<<<
  *         """
- * assignValue(self, val)
+ * **`assignValue(self, val)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_53assignValue(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_52assignValue[] = "\nassignValue(self, val)\n\nassign a value to a scalar variable.  Provided for compatibility with\nScientific.IO.NetCDF, can also be done by assigning to a slice ([:]).";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_52assignValue[] = "\n**`assignValue(self, val)`**\n\nassign a value to a scalar variable.  Provided for compatibility with\nScientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...]).";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_53assignValue(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -37216,49 +37402,49 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_52assignValue(struct __py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("assignValue", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3580
+  /* "netCDF4/_netCDF4.pyx":3694
  * assign a value to a scalar variable.  Provided for compatibility with
- * Scientific.IO.NetCDF, can also be done by assigning to a slice ([:])."""
+ * Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...])."""
  *         if len(self.dimensions):             # <<<<<<<<<<<<<<
  *             raise IndexError('to assign values to a non-scalar variable, use a slice')
  *         self[:]=val
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3581
- * Scientific.IO.NetCDF, can also be done by assigning to a slice ([:])."""
+    /* "netCDF4/_netCDF4.pyx":3695
+ * Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...])."""
  *         if len(self.dimensions):
  *             raise IndexError('to assign values to a non-scalar variable, use a slice')             # <<<<<<<<<<<<<<
  *         self[:]=val
  * 
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3582
+  /* "netCDF4/_netCDF4.pyx":3696
  *         if len(self.dimensions):
  *             raise IndexError('to assign values to a non-scalar variable, use a slice')
  *         self[:]=val             # <<<<<<<<<<<<<<
  * 
  *     def getValue(self):
  */
-  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self), __pyx_v_val, 0, 0, NULL, NULL, &__pyx_slice__63, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetSlice(((PyObject *)__pyx_v_self), __pyx_v_val, 0, 0, NULL, NULL, &__pyx_slice__64, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":3574
+  /* "netCDF4/_netCDF4.pyx":3688
  * 
  * 
  *     def assignValue(self,val):             # <<<<<<<<<<<<<<
  *         """
- * assignValue(self, val)
+ * **`assignValue(self, val)`**
  */
 
   /* function exit code */
@@ -37274,17 +37460,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_52assignValue(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3584
+/* "netCDF4/_netCDF4.pyx":3698
  *         self[:]=val
  * 
  *     def getValue(self):             # <<<<<<<<<<<<<<
  *         """
- * getValue(self)
+ * **`getValue(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_55getValue(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_54getValue[] = "\ngetValue(self)\n\nget the value of a scalar variable.  Provided for compatibility with\nScientific.IO.NetCDF, can also be done by slicing ([:]).";
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_54getValue[] = "\n**`getValue(self)`**\n\nget the value of a scalar variable.  Provided for compatibility with\nScientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...]).";
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_55getValue(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -37307,35 +37493,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_54getValue(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("getValue", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3590
+  /* "netCDF4/_netCDF4.pyx":3704
  * get the value of a scalar variable.  Provided for compatibility with
- * Scientific.IO.NetCDF, can also be done by slicing ([:])."""
+ * Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...])."""
  *         if len(self.dimensions):             # <<<<<<<<<<<<<<
  *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')
  *         return self[slice(None)]
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3591
- * Scientific.IO.NetCDF, can also be done by slicing ([:])."""
+    /* "netCDF4/_netCDF4.pyx":3705
+ * Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...])."""
  *         if len(self.dimensions):
  *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')             # <<<<<<<<<<<<<<
  *         return self[slice(None)]
  * 
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3592
+  /* "netCDF4/_netCDF4.pyx":3706
  *         if len(self.dimensions):
  *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')
  *         return self[slice(None)]             # <<<<<<<<<<<<<<
@@ -37343,18 +37529,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_54getValue(struct __pyx_o
  *     def set_auto_maskandscale(self,maskandscale):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_slice__65); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3592; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_slice__66); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3706; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":3584
+  /* "netCDF4/_netCDF4.pyx":3698
  *         self[:]=val
  * 
  *     def getValue(self):             # <<<<<<<<<<<<<<
  *         """
- * getValue(self)
+ * **`getValue(self)`**
  */
 
   /* function exit code */
@@ -37368,17 +37554,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_54getValue(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3594
+/* "netCDF4/_netCDF4.pyx":3708
  *         return self[slice(None)]
  * 
  *     def set_auto_maskandscale(self,maskandscale):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_maskandscale(self,maskandscale)
+ * **`set_auto_maskandscale(self,maskandscale)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_57set_auto_maskandscale(PyObject *__pyx_v_self, PyObject *__pyx_v_maskandscale); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale[] = "\nset_auto_maskandscale(self,maskandscale)\n\nturn on or off automatic conversion of variable data to and\nfrom masked arrays and automatic packing/unpacking of variable\ndata using C{scale_factor} and C{add_offset} attributes.\n\nIf C{maskandscale} is set to C{True}, when data is read from a variable\nit is converted to a masked array if any of the values are exactly\nequal to the either the netCDF _FillValu [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale[] = "\n**`set_auto_maskandscale(self,maskandscale)`**\n\nturn on or off automatic conversion of variable data to and\nfrom masked arrays and automatic packing/unpacking of variable\ndata using `scale_factor` and `add_offset` attributes.\n\nIf `maskandscale` is set to `True`, when data is read from a variable\nit is converted to a masked array if any of the values are exactly\nequal to the either the netCDF _FillVa [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_57set_auto_maskandscale(PyObject *__pyx_v_self, PyObject *__pyx_v_maskandscale) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -37399,17 +37585,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale(s
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_auto_maskandscale", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3633
+  /* "netCDF4/_netCDF4.pyx":3746
  * (automatic conversions are performed).
  *         """
  *         if maskandscale:             # <<<<<<<<<<<<<<
  *             self.scale = True
  *             self.mask = True
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_maskandscale); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_maskandscale); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":3634
+    /* "netCDF4/_netCDF4.pyx":3747
  *         """
  *         if maskandscale:
  *             self.scale = True             # <<<<<<<<<<<<<<
@@ -37422,7 +37608,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale(s
     __Pyx_DECREF(__pyx_v_self->scale);
     __pyx_v_self->scale = Py_True;
 
-    /* "netCDF4/_netCDF4.pyx":3635
+    /* "netCDF4/_netCDF4.pyx":3748
  *         if maskandscale:
  *             self.scale = True
  *             self.mask = True             # <<<<<<<<<<<<<<
@@ -37438,7 +37624,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale(s
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3637
+    /* "netCDF4/_netCDF4.pyx":3750
  *             self.mask = True
  *         else:
  *             self.scale = False             # <<<<<<<<<<<<<<
@@ -37451,7 +37637,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale(s
     __Pyx_DECREF(__pyx_v_self->scale);
     __pyx_v_self->scale = Py_False;
 
-    /* "netCDF4/_netCDF4.pyx":3638
+    /* "netCDF4/_netCDF4.pyx":3751
  *         else:
  *             self.scale = False
  *             self.mask = False             # <<<<<<<<<<<<<<
@@ -37466,12 +37652,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale(s
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3594
+  /* "netCDF4/_netCDF4.pyx":3708
  *         return self[slice(None)]
  * 
  *     def set_auto_maskandscale(self,maskandscale):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_maskandscale(self,maskandscale)
+ * **`set_auto_maskandscale(self,maskandscale)`**
  */
 
   /* function exit code */
@@ -37486,17 +37672,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_56set_auto_maskandscale(s
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3640
+/* "netCDF4/_netCDF4.pyx":3753
  *             self.mask = False
  * 
  *     def set_auto_scale(self,scale):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_scale(self,scale)
+ * **`set_auto_scale(self,scale)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_59set_auto_scale(PyObject *__pyx_v_self, PyObject *__pyx_v_scale); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_58set_auto_scale[] = "\nset_auto_scale(self,scale)\n\nturn on or off automatic packing/unpacking of variable\ndata using C{scale_factor} and C{add_offset} attributes.\n\nIf C{scale} is set to C{True}, and the variable has a\nC{scale_factor} or an C{add_offset} attribute, then data read\nfrom that variable is unpacked using::\n\n    data = self.scale_factor*data + self.add_offset\n\nWhen data is written to a variable it is packed using::\ [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_58set_auto_scale[] = "\n**`set_auto_scale(self,scale)`**\n\nturn on or off automatic packing/unpacking of variable\ndata using `scale_factor` and `add_offset` attributes.\n\nIf `scale` is set to `True`, and the variable has a\n`scale_factor` or an `add_offset` attribute, then data read\nfrom that variable is unpacked using::\n\n    data = self.scale_factor*data + self.add_offset\n\nWhen data is written to a variable it is packed using::\ [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_59set_auto_scale(PyObject *__pyx_v_self, PyObject *__pyx_v_scale) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -37517,17 +37703,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_58set_auto_scale(struct _
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_auto_scale", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3668
+  /* "netCDF4/_netCDF4.pyx":3780
  * (automatic conversions are performed).
  *         """
  *         if scale:             # <<<<<<<<<<<<<<
  *             self.scale = True
  *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_scale); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_scale); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":3669
+    /* "netCDF4/_netCDF4.pyx":3781
  *         """
  *         if scale:
  *             self.scale = True             # <<<<<<<<<<<<<<
@@ -37543,7 +37729,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_58set_auto_scale(struct _
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3671
+    /* "netCDF4/_netCDF4.pyx":3783
  *             self.scale = True
  *         else:
  *             self.scale = False             # <<<<<<<<<<<<<<
@@ -37558,12 +37744,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_58set_auto_scale(struct _
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3640
+  /* "netCDF4/_netCDF4.pyx":3753
  *             self.mask = False
  * 
  *     def set_auto_scale(self,scale):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_scale(self,scale)
+ * **`set_auto_scale(self,scale)`**
  */
 
   /* function exit code */
@@ -37578,17 +37764,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_58set_auto_scale(struct _
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3673
+/* "netCDF4/_netCDF4.pyx":3785
  *             self.scale = False
  * 
  *     def set_auto_mask(self,mask):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_mask(self,mask)
+ * **`set_auto_mask(self,mask)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_61set_auto_mask(PyObject *__pyx_v_self, PyObject *__pyx_v_mask); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_60set_auto_mask[] = "\nset_auto_mask(self,mask)\n\nturn on or off automatic conversion of variable data to and\nfrom masked arrays .\n\nIf C{mask} is set to C{True}, when data is read from a variable\nit is converted to a masked array if any of the values are exactly\nequal to the either the netCDF _FillValue or the value specified by the\nmissing_value variable attribute. The fill_value of the masked array\nis set to the missing_value a [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_8Variable_60set_auto_mask[] = "\n**`set_auto_mask(self,mask)`**\n\nturn on or off automatic conversion of variable data to and\nfrom masked arrays .\n\nIf `mask` is set to `True`, when data is read from a variable\nit is converted to a masked array if any of the values are exactly\nequal to the either the netCDF _FillValue or the value specified by the\nmissing_value variable attribute. The fill_value of the masked array\nis set to the missing_val [...]
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_61set_auto_mask(PyObject *__pyx_v_self, PyObject *__pyx_v_mask) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -37609,17 +37795,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_60set_auto_mask(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_auto_mask", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3693
+  /* "netCDF4/_netCDF4.pyx":3805
  * (automatic conversions are performed).
  *         """
  *         if mask:             # <<<<<<<<<<<<<<
  *             self.mask = True
  *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_mask); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3693; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_mask); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":3694
+    /* "netCDF4/_netCDF4.pyx":3806
  *         """
  *         if mask:
  *             self.mask = True             # <<<<<<<<<<<<<<
@@ -37635,7 +37821,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_60set_auto_mask(struct __
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3696
+    /* "netCDF4/_netCDF4.pyx":3808
  *             self.mask = True
  *         else:
  *             self.mask = False             # <<<<<<<<<<<<<<
@@ -37650,12 +37836,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_60set_auto_mask(struct __
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3673
+  /* "netCDF4/_netCDF4.pyx":3785
  *             self.scale = False
  * 
  *     def set_auto_mask(self,mask):             # <<<<<<<<<<<<<<
  *         """
- * set_auto_mask(self,mask)
+ * **`set_auto_mask(self,mask)`**
  */
 
   /* function exit code */
@@ -37670,7 +37856,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_60set_auto_mask(struct __
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3699
+/* "netCDF4/_netCDF4.pyx":3811
  * 
  * 
  *     def _put(self,ndarray data,start,count,stride):             # <<<<<<<<<<<<<<
@@ -37714,21 +37900,21 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_63_put(PyObject *__pyx_v_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_start)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_put") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_put") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
       goto __pyx_L5_argtuple_error;
@@ -37745,13 +37931,13 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_63_put(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("_put", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable._put", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_7netCDF4_8_netCDF4_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), __pyx_ptype_7netCDF4_8_netCDF4_ndarray, 1, "data", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(((struct __pyx_obj_7netCDF4_8_netCDF4_Variable *)__pyx_v_self), __pyx_v_data, __pyx_v_start, __pyx_v_count, __pyx_v_stride);
 
   /* function exit code */
@@ -37804,20 +37990,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
   __Pyx_RefNannySetupContext("_put", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_data);
 
-  /* "netCDF4/_netCDF4.pyx":3712
+  /* "netCDF4/_netCDF4.pyx":3824
  *         cdef nc_vlen_t *vldata
  *         # rank of variable.
  *         ndims = len(self.dimensions)             # <<<<<<<<<<<<<<
  *         # make sure data is contiguous.
  *         # if not, make a local copy.
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_ndims = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":3715
+  /* "netCDF4/_netCDF4.pyx":3827
  *         # make sure data is contiguous.
  *         # if not, make a local copy.
  *         if not PyArray_ISCONTIGUOUS(data):             # <<<<<<<<<<<<<<
@@ -37827,14 +38013,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
   __pyx_t_3 = ((!(PyArray_ISCONTIGUOUS(__pyx_v_data) != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3716
+    /* "netCDF4/_netCDF4.pyx":3828
  *         # if not, make a local copy.
  *         if not PyArray_ISCONTIGUOUS(data):
  *             data = data.copy()             # <<<<<<<<<<<<<<
  *         # fill up startp,countp,stridep.
  *         totelem = 1
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -37847,21 +38033,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_1));
     __pyx_t_1 = 0;
     goto __pyx_L3;
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":3718
+  /* "netCDF4/_netCDF4.pyx":3830
  *             data = data.copy()
  *         # fill up startp,countp,stridep.
  *         totelem = 1             # <<<<<<<<<<<<<<
@@ -37870,7 +38056,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
   __pyx_v_totelem = 1;
 
-  /* "netCDF4/_netCDF4.pyx":3719
+  /* "netCDF4/_netCDF4.pyx":3831
  *         # fill up startp,countp,stridep.
  *         totelem = 1
  *         negstride = 0             # <<<<<<<<<<<<<<
@@ -37879,19 +38065,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
   __pyx_v_negstride = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3720
+  /* "netCDF4/_netCDF4.pyx":3832
  *         totelem = 1
  *         negstride = 0
  *         sl = []             # <<<<<<<<<<<<<<
  *         for n from 0 <= n < ndims:
  *             count[n] = abs(count[n]) # make -1 into +1
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_sl = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3721
+  /* "netCDF4/_netCDF4.pyx":3833
  *         negstride = 0
  *         sl = []
  *         for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
@@ -37900,56 +38086,56 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
   __pyx_t_6 = __pyx_v_ndims;
   for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7++) {
-    __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3722
+    /* "netCDF4/_netCDF4.pyx":3834
  *         sl = []
  *         for n from 0 <= n < ndims:
  *             count[n] = abs(count[n]) # make -1 into +1             # <<<<<<<<<<<<<<
  *             countp[n] = count[n]
  *             # for neg strides, reverse order (then flip that axis after data read in)
  */
-    __pyx_t_1 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3722; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3834; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(PyObject_SetItem(__pyx_v_count, __pyx_v_n, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyObject_SetItem(__pyx_v_count, __pyx_v_n, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3723
+    /* "netCDF4/_netCDF4.pyx":3835
  *         for n from 0 <= n < ndims:
  *             count[n] = abs(count[n]) # make -1 into +1
  *             countp[n] = count[n]             # <<<<<<<<<<<<<<
  *             # for neg strides, reverse order (then flip that axis after data read in)
  *             if stride[n] < 0:
  */
-    __pyx_t_4 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3723; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3835; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     (__pyx_v_countp[__pyx_t_2]) = __pyx_t_8;
 
-    /* "netCDF4/_netCDF4.pyx":3725
+    /* "netCDF4/_netCDF4.pyx":3837
  *             countp[n] = count[n]
  *             # for neg strides, reverse order (then flip that axis after data read in)
  *             if stride[n] < 0:             # <<<<<<<<<<<<<<
  *                 negstride = 1
  *                 stridep[n] = -stride[n]
  */
-    __pyx_t_4 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3725; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3837; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3726
+      /* "netCDF4/_netCDF4.pyx":3838
  *             # for neg strides, reverse order (then flip that axis after data read in)
  *             if stride[n] < 0:
  *                 negstride = 1             # <<<<<<<<<<<<<<
@@ -37958,143 +38144,143 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
       __pyx_v_negstride = 1;
 
-      /* "netCDF4/_netCDF4.pyx":3727
+      /* "netCDF4/_netCDF4.pyx":3839
  *             if stride[n] < 0:
  *                 negstride = 1
  *                 stridep[n] = -stride[n]             # <<<<<<<<<<<<<<
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]
  */
-      __pyx_t_1 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3727; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_1 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3839; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_4); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_4); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       (__pyx_v_stridep[__pyx_t_2]) = __pyx_t_9;
 
-      /* "netCDF4/_netCDF4.pyx":3728
+      /* "netCDF4/_netCDF4.pyx":3840
  *                 negstride = 1
  *                 stridep[n] = -stride[n]
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)             # <<<<<<<<<<<<<<
  *                 stride[n] = -stride[n]
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
  */
-      __pyx_t_4 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_1 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_1 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_5 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_int_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyNumber_Multiply(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Multiply(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_10 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_10); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_10); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       (__pyx_v_startp[__pyx_t_2]) = __pyx_t_8;
 
-      /* "netCDF4/_netCDF4.pyx":3729
+      /* "netCDF4/_netCDF4.pyx":3841
  *                 stridep[n] = -stride[n]
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]             # <<<<<<<<<<<<<<
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
  *             else:
  */
-      __pyx_t_10 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3729; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_10 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3841; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_5 = PyNumber_Negative(__pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Negative(__pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      if (unlikely(PyObject_SetItem(__pyx_v_stride, __pyx_v_n, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_v_stride, __pyx_v_n, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3730
+      /* "netCDF4/_netCDF4.pyx":3842
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data             # <<<<<<<<<<<<<<
  *             else:
  *                 startp[n] = start[n]
  */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__66); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__67); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L6;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3732
+      /* "netCDF4/_netCDF4.pyx":3844
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
  *             else:
  *                 startp[n] = start[n]             # <<<<<<<<<<<<<<
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))
  */
-      __pyx_t_5 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3732; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_5 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3844; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       (__pyx_v_startp[__pyx_t_2]) = __pyx_t_8;
 
-      /* "netCDF4/_netCDF4.pyx":3733
+      /* "netCDF4/_netCDF4.pyx":3845
  *             else:
  *                 startp[n] = start[n]
  *                 stridep[n] = stride[n]             # <<<<<<<<<<<<<<
  *                 sl.append(slice(None,None, 1))
  *             totelem = totelem*countp[n]
  */
-      __pyx_t_5 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3733; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_5 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3845; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_5); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       (__pyx_v_stridep[__pyx_t_2]) = __pyx_t_9;
 
-      /* "netCDF4/_netCDF4.pyx":3734
+      /* "netCDF4/_netCDF4.pyx":3846
  *                 startp[n] = start[n]
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))             # <<<<<<<<<<<<<<
  *             totelem = totelem*countp[n]
  *         # check to see that size of data array is what is expected
  */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__67); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__68); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L6:;
 
-    /* "netCDF4/_netCDF4.pyx":3735
+    /* "netCDF4/_netCDF4.pyx":3847
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))
  *             totelem = totelem*countp[n]             # <<<<<<<<<<<<<<
  *         # check to see that size of data array is what is expected
  *         # for slice given.
  */
-    __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_totelem = (__pyx_v_totelem * (__pyx_v_countp[__pyx_t_2]));
-    __pyx_t_7 = __Pyx_PyInt_As_long(__pyx_v_n); if (unlikely((__pyx_t_7 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyInt_As_long(__pyx_v_n); if (unlikely((__pyx_t_7 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3721
+  /* "netCDF4/_netCDF4.pyx":3833
  *         negstride = 0
  *         sl = []
  *         for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
  *             count[n] = abs(count[n]) # make -1 into +1
  *             countp[n] = count[n]
  */
-  __pyx_t_5 = __Pyx_PyInt_From_long(__pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyInt_From_long(__pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3738
+  /* "netCDF4/_netCDF4.pyx":3850
  *         # check to see that size of data array is what is expected
  *         # for slice given.
  *         dataelem = PyArray_SIZE(data)             # <<<<<<<<<<<<<<
@@ -38103,7 +38289,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
   __pyx_v_dataelem = PyArray_SIZE(__pyx_v_data);
 
-  /* "netCDF4/_netCDF4.pyx":3739
+  /* "netCDF4/_netCDF4.pyx":3851
  *         # for slice given.
  *         dataelem = PyArray_SIZE(data)
  *         if totelem != dataelem:             # <<<<<<<<<<<<<<
@@ -38113,21 +38299,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
   __pyx_t_3 = ((__pyx_v_totelem != __pyx_v_dataelem) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3740
+    /* "netCDF4/_netCDF4.pyx":3852
  *         dataelem = PyArray_SIZE(data)
  *         if totelem != dataelem:
  *             raise IndexError('size of data array does not conform to slice')             # <<<<<<<<<<<<<<
  *         if negstride:
  *             # reverse data along axes with negative strides.
  */
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":3741
+  /* "netCDF4/_netCDF4.pyx":3853
  *         if totelem != dataelem:
  *             raise IndexError('size of data array does not conform to slice')
  *         if negstride:             # <<<<<<<<<<<<<<
@@ -38137,16 +38323,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
   __pyx_t_3 = (__pyx_v_negstride != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3743
+    /* "netCDF4/_netCDF4.pyx":3855
  *         if negstride:
  *             # reverse data along axes with negative strides.
  *             data = data[sl].copy() # make sure a copy is made.             # <<<<<<<<<<<<<<
  *         if self._isprimitive or self._iscompound:
  *             # primitive or compound data type.
  */
-    __pyx_t_10 = PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_v_sl); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3743; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_10 = PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_v_sl); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3855; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_10);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_copy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __pyx_t_10 = NULL;
@@ -38160,61 +38346,61 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
     }
     if (__pyx_t_10) {
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     } else {
-      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_5));
     __pyx_t_5 = 0;
     goto __pyx_L8;
   }
   __pyx_L8:;
 
-  /* "netCDF4/_netCDF4.pyx":3744
+  /* "netCDF4/_netCDF4.pyx":3856
  *             # reverse data along axes with negative strides.
  *             data = data[sl].copy() # make sure a copy is made.
  *         if self._isprimitive or self._iscompound:             # <<<<<<<<<<<<<<
  *             # primitive or compound data type.
  *             # if data type of array doesn't match variable,
  */
-  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_12) {
   } else {
     __pyx_t_3 = __pyx_t_12;
     goto __pyx_L10_bool_binop_done;
   }
-  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = __pyx_t_12;
   __pyx_L10_bool_binop_done:;
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3748
+    /* "netCDF4/_netCDF4.pyx":3860
  *             # if data type of array doesn't match variable,
  *             # try to cast the data.
  *             if self.dtype != data.dtype:             # <<<<<<<<<<<<<<
  *                 data = data.astype(self.dtype) # cast data, if necessary.
  *             # make sure byte-order of data matches byte-order of netcdf
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3749
+      /* "netCDF4/_netCDF4.pyx":3861
  *             # try to cast the data.
  *             if self.dtype != data.dtype:
  *                 data = data.astype(self.dtype) # cast data, if necessary.             # <<<<<<<<<<<<<<
  *             # make sure byte-order of data matches byte-order of netcdf
  *             # variable.
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_astype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_astype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_10 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -38227,35 +38413,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
         }
       }
       if (!__pyx_t_10) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_self->dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL;
         __Pyx_INCREF(__pyx_v_self->dtype);
         PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_self->dtype);
         __Pyx_GIVEREF(__pyx_v_self->dtype);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_4));
       __pyx_t_4 = 0;
       goto __pyx_L12;
     }
     __pyx_L12:;
 
-    /* "netCDF4/_netCDF4.pyx":3752
+    /* "netCDF4/_netCDF4.pyx":3864
  *             # make sure byte-order of data matches byte-order of netcdf
  *             # variable.
  *             if self.endian() == 'native':             # <<<<<<<<<<<<<<
  *                 if is_native_little and data.dtype.byteorder == '>':
  *                     data.byteswap(True)
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_1 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -38268,54 +38454,54 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
     }
     if (__pyx_t_1) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_native, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_native, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3753
+      /* "netCDF4/_netCDF4.pyx":3865
  *             # variable.
  *             if self.endian() == 'native':
  *                 if is_native_little and data.dtype.byteorder == '>':             # <<<<<<<<<<<<<<
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '<':
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_12) {
       } else {
         __pyx_t_3 = __pyx_t_12;
         goto __pyx_L15_bool_binop_done;
       }
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__13, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__13, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_3 = __pyx_t_12;
       __pyx_L15_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3754
+        /* "netCDF4/_netCDF4.pyx":3866
  *             if self.endian() == 'native':
  *                 if is_native_little and data.dtype.byteorder == '>':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *                 if is_native_big and data.dtype.byteorder == '<':
  *                     data.byteswap(True)
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -38323,43 +38509,43 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
       __pyx_L14:;
 
-      /* "netCDF4/_netCDF4.pyx":3755
+      /* "netCDF4/_netCDF4.pyx":3867
  *                 if is_native_little and data.dtype.byteorder == '>':
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '<':             # <<<<<<<<<<<<<<
  *                     data.byteswap(True)
  *             if self.endian() == 'big':
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_12) {
       } else {
         __pyx_t_3 = __pyx_t_12;
         goto __pyx_L18_bool_binop_done;
       }
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__12, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__12, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_3 = __pyx_t_12;
       __pyx_L18_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3756
+        /* "netCDF4/_netCDF4.pyx":3868
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '<':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *             if self.endian() == 'big':
  *                 if is_native_big and data.dtype.byteorder not in ['=','|']:
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -38370,14 +38556,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     }
     __pyx_L13:;
 
-    /* "netCDF4/_netCDF4.pyx":3757
+    /* "netCDF4/_netCDF4.pyx":3869
  *                 if is_native_big and data.dtype.byteorder == '<':
  *                     data.byteswap(True)
  *             if self.endian() == 'big':             # <<<<<<<<<<<<<<
  *                 if is_native_big and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_1 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -38390,45 +38576,45 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
     }
     if (__pyx_t_1) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_big, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3758
+      /* "netCDF4/_netCDF4.pyx":3870
  *                     data.byteswap(True)
  *             if self.endian() == 'big':
  *                 if is_native_big and data.dtype.byteorder not in ['=','|']:             # <<<<<<<<<<<<<<
  *                     data.byteswap(True)
  *                 if is_native_little and data.dtype.byteorder == '=':
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_12) {
       } else {
         __pyx_t_3 = __pyx_t_12;
         goto __pyx_L22_bool_binop_done;
       }
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_NE)); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_NE)); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_13) {
       } else {
         __pyx_t_12 = __pyx_t_13;
         goto __pyx_L24_bool_binop_done;
       }
-      __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__34, Py_NE)); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__34, Py_NE)); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_12 = __pyx_t_13;
       __pyx_L24_bool_binop_done:;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -38437,16 +38623,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_L22_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3759
+        /* "netCDF4/_netCDF4.pyx":3871
  *             if self.endian() == 'big':
  *                 if is_native_big and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *                 if is_native_little and data.dtype.byteorder == '=':
  *                     data.byteswap(True)
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -38454,43 +38640,43 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
       __pyx_L21:;
 
-      /* "netCDF4/_netCDF4.pyx":3760
+      /* "netCDF4/_netCDF4.pyx":3872
  *                 if is_native_big and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)
  *                 if is_native_little and data.dtype.byteorder == '=':             # <<<<<<<<<<<<<<
  *                     data.byteswap(True)
  *             if self.endian() == 'little':
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_13) {
       } else {
         __pyx_t_3 = __pyx_t_13;
         goto __pyx_L27_bool_binop_done;
       }
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_3 = __pyx_t_13;
       __pyx_L27_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3761
+        /* "netCDF4/_netCDF4.pyx":3873
  *                     data.byteswap(True)
  *                 if is_native_little and data.dtype.byteorder == '=':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *             if self.endian() == 'little':
  *                 if is_native_little and data.dtype.byteorder not in ['=','|']:
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -38501,14 +38687,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     }
     __pyx_L20:;
 
-    /* "netCDF4/_netCDF4.pyx":3762
+    /* "netCDF4/_netCDF4.pyx":3874
  *                 if is_native_little and data.dtype.byteorder == '=':
  *                     data.byteswap(True)
  *             if self.endian() == 'little':             # <<<<<<<<<<<<<<
  *                 if is_native_little and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_endian); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_1 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -38521,45 +38707,45 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
     }
     if (__pyx_t_1) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3762; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_little, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3763
+      /* "netCDF4/_netCDF4.pyx":3875
  *                     data.byteswap(True)
  *             if self.endian() == 'little':
  *                 if is_native_little and data.dtype.byteorder not in ['=','|']:             # <<<<<<<<<<<<<<
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '=':
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_little); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_13) {
       } else {
         __pyx_t_3 = __pyx_t_13;
         goto __pyx_L31_bool_binop_done;
       }
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_NE)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_NE)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_12) {
       } else {
         __pyx_t_13 = __pyx_t_12;
         goto __pyx_L33_bool_binop_done;
       }
-      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__34, Py_NE)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__34, Py_NE)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_13 = __pyx_t_12;
       __pyx_L33_bool_binop_done:;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -38568,16 +38754,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_L31_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3764
+        /* "netCDF4/_netCDF4.pyx":3876
  *             if self.endian() == 'little':
  *                 if is_native_little and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *                 if is_native_big and data.dtype.byteorder == '=':
  *                     data.byteswap(True)
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -38585,43 +38771,43 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
       __pyx_L30:;
 
-      /* "netCDF4/_netCDF4.pyx":3765
+      /* "netCDF4/_netCDF4.pyx":3877
  *                 if is_native_little and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '=':             # <<<<<<<<<<<<<<
  *                     data.byteswap(True)
  *             # strides all 1 or scalar variable, use put_vara (faster)
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_is_native_big); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_12) {
       } else {
         __pyx_t_3 = __pyx_t_12;
         goto __pyx_L36_bool_binop_done;
       }
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_3 = __pyx_t_12;
       __pyx_L36_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3766
+        /* "netCDF4/_netCDF4.pyx":3878
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '=':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *             # strides all 1 or scalar variable, use put_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_byteswap); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -38632,27 +38818,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     }
     __pyx_L29:;
 
-    /* "netCDF4/_netCDF4.pyx":3768
+    /* "netCDF4/_netCDF4.pyx":3880
  *                     data.byteswap(True)
  *             # strides all 1 or scalar variable, use put_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
  *                 ierr = nc_put_vara(self._grpid, self._varid,
  *                                    startp, countp, data.data)
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_stride);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_stride);
     __Pyx_GIVEREF(__pyx_v_stride);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (!__pyx_t_12) {
     } else {
@@ -38664,7 +38850,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     __pyx_L39_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3769
+      /* "netCDF4/_netCDF4.pyx":3881
  *             # strides all 1 or scalar variable, use put_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:
  *                 ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -38676,7 +38862,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3772
+      /* "netCDF4/_netCDF4.pyx":3884
  *                                    startp, countp, data.data)
  *             else:
  *                 ierr = nc_put_vars(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -38687,7 +38873,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     }
     __pyx_L38:;
 
-    /* "netCDF4/_netCDF4.pyx":3774
+    /* "netCDF4/_netCDF4.pyx":3886
  *                 ierr = nc_put_vars(self._grpid, self._varid,
  *                                    startp, countp, stridep, data.data)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -38697,7 +38883,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3775
+      /* "netCDF4/_netCDF4.pyx":3887
  *                                    startp, countp, stridep, data.data)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -38705,72 +38891,72 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  *             if data.dtype.char !='O':
  */
       __pyx_t_14 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_14, 0, strlen(__pyx_t_14), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_14, 0, strlen(__pyx_t_14), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     goto __pyx_L9;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3776
+  /* "netCDF4/_netCDF4.pyx":3888
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         elif self._isvlen:             # <<<<<<<<<<<<<<
  *             if data.dtype.char !='O':
  *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
  */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":3777
+    /* "netCDF4/_netCDF4.pyx":3889
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         elif self._isvlen:
  *             if data.dtype.char !='O':             # <<<<<<<<<<<<<<
  *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
  *             # flatten data array.
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_char); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_char); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_O, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_O, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3778
+      /* "netCDF4/_netCDF4.pyx":3890
  *         elif self._isvlen:
  *             if data.dtype.char !='O':
  *                 raise TypeError('data to put in string variable must be an object array containing Python strings')             # <<<<<<<<<<<<<<
  *             # flatten data array.
  *             data = data.flatten()
  */
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_Raise(__pyx_t_4, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3780
+    /* "netCDF4/_netCDF4.pyx":3892
  *                 raise TypeError('data to put in string variable must be an object array containing Python strings')
  *             # flatten data array.
  *             data = data.flatten()             # <<<<<<<<<<<<<<
  *             if self.dtype == str:
  *                 # convert all elements from strings to bytes
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_flatten); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_flatten); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -38783,56 +38969,56 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
     }
     if (__pyx_t_5) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3781
+    /* "netCDF4/_netCDF4.pyx":3893
  *             # flatten data array.
  *             data = data.flatten()
  *             if self.dtype == str:             # <<<<<<<<<<<<<<
  *                 # convert all elements from strings to bytes
  *                 for n in range(data.shape[0]):
  */
-    __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":3783
+      /* "netCDF4/_netCDF4.pyx":3895
  *             if self.dtype == str:
  *                 # convert all elements from strings to bytes
  *                 for n in range(data.shape[0]):             # <<<<<<<<<<<<<<
  *                     data[n] = _strencode(data[n])
  *                 # vlen string (NC_STRING)
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
         __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;
         __pyx_t_15 = NULL;
       } else {
-        __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_15 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       for (;;) {
@@ -38840,16 +39026,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
           if (likely(PyList_CheckExact(__pyx_t_4))) {
             if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -38858,7 +39044,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -38867,22 +39053,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
         __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1);
         __pyx_t_1 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3784
+        /* "netCDF4/_netCDF4.pyx":3896
  *                 # convert all elements from strings to bytes
  *                 for n in range(data.shape[0]):
  *                     data[n] = _strencode(data[n])             # <<<<<<<<<<<<<<
  *                 # vlen string (NC_STRING)
  *                 # loop over elements of object array, put data buffer for
  */
-        __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3784; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_v_n); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3896; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_data), __pyx_v_n, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_data), __pyx_v_n, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3783
+        /* "netCDF4/_netCDF4.pyx":3895
  *             if self.dtype == str:
  *                 # convert all elements from strings to bytes
  *                 for n in range(data.shape[0]):             # <<<<<<<<<<<<<<
@@ -38892,7 +39078,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3789
+      /* "netCDF4/_netCDF4.pyx":3901
  *                 # each element in struct.
  *                 # allocate struct array to hold vlen data.
  *                 strdata = <char **>malloc(sizeof(char *)*totelem)             # <<<<<<<<<<<<<<
@@ -38901,7 +39087,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
       __pyx_v_strdata = ((char **)malloc(((sizeof(char *)) * __pyx_v_totelem)));
 
-      /* "netCDF4/_netCDF4.pyx":3790
+      /* "netCDF4/_netCDF4.pyx":3902
  *                 # allocate struct array to hold vlen data.
  *                 strdata = <char **>malloc(sizeof(char *)*totelem)
  *                 for i from 0<=i<totelem:             # <<<<<<<<<<<<<<
@@ -38911,41 +39097,41 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_t_16 = __pyx_v_totelem;
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_16; __pyx_v_i++) {
 
-        /* "netCDF4/_netCDF4.pyx":3791
+        /* "netCDF4/_netCDF4.pyx":3903
  *                 strdata = <char **>malloc(sizeof(char *)*totelem)
  *                 for i from 0<=i<totelem:
  *                     strdata[i] = data[i]             # <<<<<<<<<<<<<<
  *                 # strides all 1 or scalar variable, use put_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  */
-        __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3903; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         (__pyx_v_strdata[__pyx_v_i]) = __pyx_t_14;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       }
 
-      /* "netCDF4/_netCDF4.pyx":3793
+      /* "netCDF4/_netCDF4.pyx":3905
  *                     strdata[i] = data[i]
  *                 # strides all 1 or scalar variable, use put_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
  *                     ierr = nc_put_vara(self._grpid, self._varid,
  *                                        startp, countp, strdata)
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_stride);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_stride);
       __Pyx_GIVEREF(__pyx_v_stride);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       if (!__pyx_t_12) {
       } else {
@@ -38957,7 +39143,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_L49_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3794
+        /* "netCDF4/_netCDF4.pyx":3906
  *                 # strides all 1 or scalar variable, use put_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  *                     ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -38969,22 +39155,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3797
+        /* "netCDF4/_netCDF4.pyx":3909
  *                                        startp, countp, strdata)
  *                 else:
  *                     raise IndexError('strides must all be 1 for string variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_put_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, strdata)
  */
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__77, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L48:;
 
-      /* "netCDF4/_netCDF4.pyx":3800
+      /* "netCDF4/_netCDF4.pyx":3912
  *                     #ierr = nc_put_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, strdata)
  *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -38994,7 +39180,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3801
+        /* "netCDF4/_netCDF4.pyx":3913
  *                     #                   startp, countp, stridep, strdata)
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -39002,23 +39188,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  *             else:
  */
         __pyx_t_14 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_14, 0, strlen(__pyx_t_14), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_14, 0, strlen(__pyx_t_14), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3802
+      /* "netCDF4/_netCDF4.pyx":3914
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 free(strdata)             # <<<<<<<<<<<<<<
@@ -39030,7 +39216,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3807
+      /* "netCDF4/_netCDF4.pyx":3919
  *                 # loop over elements of object array, put data buffer for
  *                 # each element in struct.
  *                 databuff = data.data             # <<<<<<<<<<<<<<
@@ -39040,7 +39226,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_t_14 = __pyx_v_data->data;
       __pyx_v_databuff = __pyx_t_14;
 
-      /* "netCDF4/_netCDF4.pyx":3809
+      /* "netCDF4/_netCDF4.pyx":3921
  *                 databuff = data.data
  *                 # allocate struct array to hold vlen data.
  *                 vldata = <nc_vlen_t *>malloc(<size_t>totelem*sizeof(nc_vlen_t))             # <<<<<<<<<<<<<<
@@ -39049,7 +39235,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
       __pyx_v_vldata = ((nc_vlen_t *)malloc((((size_t)__pyx_v_totelem) * (sizeof(nc_vlen_t)))));
 
-      /* "netCDF4/_netCDF4.pyx":3810
+      /* "netCDF4/_netCDF4.pyx":3922
  *                 # allocate struct array to hold vlen data.
  *                 vldata = <nc_vlen_t *>malloc(<size_t>totelem*sizeof(nc_vlen_t))
  *                 for i from 0<=i<totelem:             # <<<<<<<<<<<<<<
@@ -39059,7 +39245,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_t_16 = __pyx_v_totelem;
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_16; __pyx_v_i++) {
 
-        /* "netCDF4/_netCDF4.pyx":3811
+        /* "netCDF4/_netCDF4.pyx":3923
  *                 vldata = <nc_vlen_t *>malloc(<size_t>totelem*sizeof(nc_vlen_t))
  *                 for i from 0<=i<totelem:
  *                     elptr = (<void**>databuff)[0]             # <<<<<<<<<<<<<<
@@ -39068,7 +39254,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
         __pyx_v_elptr = (((void **)__pyx_v_databuff)[0]);
 
-        /* "netCDF4/_netCDF4.pyx":3812
+        /* "netCDF4/_netCDF4.pyx":3924
  *                 for i from 0<=i<totelem:
  *                     elptr = (<void**>databuff)[0]
  *                     dataarr = <ndarray>elptr             # <<<<<<<<<<<<<<
@@ -39080,37 +39266,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
         __Pyx_XDECREF_SET(__pyx_v_dataarr, ((PyArrayObject *)__pyx_t_1));
         __pyx_t_1 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3813
+        /* "netCDF4/_netCDF4.pyx":3925
  *                     elptr = (<void**>databuff)[0]
  *                     dataarr = <ndarray>elptr
  *                     if self.dtype != dataarr.dtype.str[1:]:             # <<<<<<<<<<<<<<
  *                         #dataarr = dataarr.astype(self.dtype) # cast data, if necessary.
  *                         # casting doesn't work ?? just raise TypeError
  */
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dataarr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dataarr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_str); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__77, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_4, 1, 0, NULL, NULL, &__pyx_slice__78, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyObject_RichCompare(__pyx_v_self->dtype, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         if (__pyx_t_3) {
 
-          /* "netCDF4/_netCDF4.pyx":3816
+          /* "netCDF4/_netCDF4.pyx":3928
  *                         #dataarr = dataarr.astype(self.dtype) # cast data, if necessary.
  *                         # casting doesn't work ?? just raise TypeError
  *                         raise TypeError("wrong data type in object array: should be %s, got %s" % (self.dtype,dataarr.dtype))             # <<<<<<<<<<<<<<
  *                     vldata[i].len = PyArray_SIZE(dataarr)
  *                     vldata[i].p = dataarr.data
  */
-          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dataarr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dataarr), __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_INCREF(__pyx_v_self->dtype);
           PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->dtype);
@@ -39118,23 +39304,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
           PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
           __Pyx_GIVEREF(__pyx_t_4);
           __pyx_t_4 = 0;
-          __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_wrong_data_type_in_object_array, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_wrong_data_type_in_object_array, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
           __Pyx_GIVEREF(__pyx_t_4);
           __pyx_t_4 = 0;
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __Pyx_Raise(__pyx_t_4, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
 
-        /* "netCDF4/_netCDF4.pyx":3817
+        /* "netCDF4/_netCDF4.pyx":3929
  *                         # casting doesn't work ?? just raise TypeError
  *                         raise TypeError("wrong data type in object array: should be %s, got %s" % (self.dtype,dataarr.dtype))
  *                     vldata[i].len = PyArray_SIZE(dataarr)             # <<<<<<<<<<<<<<
@@ -39143,7 +39329,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  */
         (__pyx_v_vldata[__pyx_v_i]).len = PyArray_SIZE(__pyx_v_dataarr);
 
-        /* "netCDF4/_netCDF4.pyx":3818
+        /* "netCDF4/_netCDF4.pyx":3930
  *                         raise TypeError("wrong data type in object array: should be %s, got %s" % (self.dtype,dataarr.dtype))
  *                     vldata[i].len = PyArray_SIZE(dataarr)
  *                     vldata[i].p = dataarr.data             # <<<<<<<<<<<<<<
@@ -39153,7 +39339,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
         __pyx_t_14 = __pyx_v_dataarr->data;
         (__pyx_v_vldata[__pyx_v_i]).p = __pyx_t_14;
 
-        /* "netCDF4/_netCDF4.pyx":3819
+        /* "netCDF4/_netCDF4.pyx":3931
  *                     vldata[i].len = PyArray_SIZE(dataarr)
  *                     vldata[i].p = dataarr.data
  *                     databuff = databuff + data.strides[0]             # <<<<<<<<<<<<<<
@@ -39163,27 +39349,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
         __pyx_v_databuff = (__pyx_v_databuff + (__pyx_v_data->strides[0]));
       }
 
-      /* "netCDF4/_netCDF4.pyx":3821
+      /* "netCDF4/_netCDF4.pyx":3933
  *                     databuff = databuff + data.strides[0]
  *                 # strides all 1 or scalar variable, use put_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
  *                     ierr = nc_put_vara(self._grpid, self._varid,
  *                                        startp, countp, vldata)
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_stride);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_stride);
       __Pyx_GIVEREF(__pyx_v_stride);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (!__pyx_t_12) {
       } else {
@@ -39195,7 +39381,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_L56_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3822
+        /* "netCDF4/_netCDF4.pyx":3934
  *                 # strides all 1 or scalar variable, use put_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  *                     ierr = nc_put_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -39207,22 +39393,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3825
+        /* "netCDF4/_netCDF4.pyx":3937
  *                                        startp, countp, vldata)
  *                 else:
  *                     raise IndexError('strides must all be 1 for vlen variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_put_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, vldata)
  */
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__78, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_Raise(__pyx_t_5, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L55:;
 
-      /* "netCDF4/_netCDF4.pyx":3828
+      /* "netCDF4/_netCDF4.pyx":3940
  *                     #ierr = nc_put_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, vldata)
  *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -39232,7 +39418,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
       __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_3) {
 
-        /* "netCDF4/_netCDF4.pyx":3829
+        /* "netCDF4/_netCDF4.pyx":3941
  *                     #                   startp, countp, stridep, vldata)
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -39240,23 +39426,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
  *                 free(vldata)
  */
         __pyx_t_14 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_14, 0, strlen(__pyx_t_14), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_14, 0, strlen(__pyx_t_14), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_t_5);
         PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_Raise(__pyx_t_5, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3831
+      /* "netCDF4/_netCDF4.pyx":3943
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *                 # free the pointer array.
  *                 free(vldata)             # <<<<<<<<<<<<<<
@@ -39270,7 +39456,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
   }
   __pyx_L9:;
 
-  /* "netCDF4/_netCDF4.pyx":3699
+  /* "netCDF4/_netCDF4.pyx":3811
  * 
  * 
  *     def _put(self,ndarray data,start,count,stride):             # <<<<<<<<<<<<<<
@@ -39298,7 +39484,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_62_put(struct __pyx_obj_7
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3833
+/* "netCDF4/_netCDF4.pyx":3945
  *                 free(vldata)
  * 
  *     def _get(self,start,count,stride):             # <<<<<<<<<<<<<<
@@ -39340,16 +39526,16 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_65_get(PyObject *__pyx_v_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_count)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stride)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_get") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_get") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -39364,7 +39550,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_8Variable_65_get(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("_get", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.Variable._get", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -39418,7 +39604,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_get", 0);
 
-  /* "netCDF4/_netCDF4.pyx":3846
+  /* "netCDF4/_netCDF4.pyx":3958
  *         # and not a slice so the resulting array
  *         # should be 'squeezed' to remove the singleton dimension.
  *         shapeout = ()             # <<<<<<<<<<<<<<
@@ -39428,7 +39614,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   __Pyx_INCREF(__pyx_empty_tuple);
   __pyx_v_shapeout = __pyx_empty_tuple;
 
-  /* "netCDF4/_netCDF4.pyx":3847
+  /* "netCDF4/_netCDF4.pyx":3959
  *         # should be 'squeezed' to remove the singleton dimension.
  *         shapeout = ()
  *         squeeze_out = False             # <<<<<<<<<<<<<<
@@ -39437,7 +39623,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  */
   __pyx_v_squeeze_out = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3848
+  /* "netCDF4/_netCDF4.pyx":3960
  *         shapeout = ()
  *         squeeze_out = False
  *         for lendim in count:             # <<<<<<<<<<<<<<
@@ -39448,25 +39634,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     __pyx_t_1 = __pyx_v_count; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
     __pyx_t_3 = NULL;
   } else {
-    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (likely(!__pyx_t_3)) {
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -39475,7 +39661,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -39484,31 +39670,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     __Pyx_XDECREF_SET(__pyx_v_lendim, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3849
+    /* "netCDF4/_netCDF4.pyx":3961
  *         squeeze_out = False
  *         for lendim in count:
  *             if lendim == -1:             # <<<<<<<<<<<<<<
  *                 shapeout = shapeout + (1,)
  *                 squeeze_out = True
  */
-    __pyx_t_4 = PyObject_RichCompare(__pyx_v_lendim, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_v_lendim, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":3850
+      /* "netCDF4/_netCDF4.pyx":3962
  *         for lendim in count:
  *             if lendim == -1:
  *                 shapeout = shapeout + (1,)             # <<<<<<<<<<<<<<
  *                 squeeze_out = True
  *             else:
  */
-      __pyx_t_4 = PyNumber_Add(__pyx_v_shapeout, __pyx_tuple__79); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Add(__pyx_v_shapeout, __pyx_tuple__80); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_shapeout, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3851
+      /* "netCDF4/_netCDF4.pyx":3963
  *             if lendim == -1:
  *                 shapeout = shapeout + (1,)
  *                 squeeze_out = True             # <<<<<<<<<<<<<<
@@ -39520,19 +39706,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3853
+      /* "netCDF4/_netCDF4.pyx":3965
  *                 squeeze_out = True
  *             else:
  *                 shapeout = shapeout + (lendim,)             # <<<<<<<<<<<<<<
  *         # rank of variable.
  *         ndims = len(self.dimensions)
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_lendim);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_lendim);
       __Pyx_GIVEREF(__pyx_v_lendim);
-      __pyx_t_6 = PyNumber_Add(__pyx_v_shapeout, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyNumber_Add(__pyx_v_shapeout, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_shapeout, __pyx_t_6);
@@ -39540,7 +39726,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     }
     __pyx_L5:;
 
-    /* "netCDF4/_netCDF4.pyx":3848
+    /* "netCDF4/_netCDF4.pyx":3960
  *         shapeout = ()
  *         squeeze_out = False
  *         for lendim in count:             # <<<<<<<<<<<<<<
@@ -39550,20 +39736,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3855
+  /* "netCDF4/_netCDF4.pyx":3967
  *                 shapeout = shapeout + (lendim,)
  *         # rank of variable.
  *         ndims = len(self.dimensions)             # <<<<<<<<<<<<<<
  *         # fill up startp,countp,stridep.
  *         negstride = 0
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_ndims = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":3857
+  /* "netCDF4/_netCDF4.pyx":3969
  *         ndims = len(self.dimensions)
  *         # fill up startp,countp,stridep.
  *         negstride = 0             # <<<<<<<<<<<<<<
@@ -39572,19 +39758,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  */
   __pyx_v_negstride = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3858
+  /* "netCDF4/_netCDF4.pyx":3970
  *         # fill up startp,countp,stridep.
  *         negstride = 0
  *         sl = []             # <<<<<<<<<<<<<<
  *         for n from 0 <= n < ndims:
  *             count[n] = abs(count[n]) # make -1 into +1
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_sl = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":3859
+  /* "netCDF4/_netCDF4.pyx":3971
  *         negstride = 0
  *         sl = []
  *         for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
@@ -39594,50 +39780,50 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   __pyx_t_7 = __pyx_v_ndims;
   for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_7; __pyx_v_n++) {
 
-    /* "netCDF4/_netCDF4.pyx":3860
+    /* "netCDF4/_netCDF4.pyx":3972
  *         sl = []
  *         for n from 0 <= n < ndims:
  *             count[n] = abs(count[n]) # make -1 into +1             # <<<<<<<<<<<<<<
  *             countp[n] = count[n]
  *             # for neg strides, reverse order (then flip that axis after data read in)
  */
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3860; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3972; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyNumber_Absolute(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(__Pyx_SetItemInt(__pyx_v_count, __pyx_v_n, __pyx_t_6, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_SetItemInt(__pyx_v_count, __pyx_v_n, __pyx_t_6, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3861
+    /* "netCDF4/_netCDF4.pyx":3973
  *         for n from 0 <= n < ndims:
  *             count[n] = abs(count[n]) # make -1 into +1
  *             countp[n] = count[n]             # <<<<<<<<<<<<<<
  *             # for neg strides, reverse order (then flip that axis after data read in)
  *             if stride[n] < 0:
  */
-    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3861; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3973; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     (__pyx_v_countp[__pyx_v_n]) = __pyx_t_8;
 
-    /* "netCDF4/_netCDF4.pyx":3863
+    /* "netCDF4/_netCDF4.pyx":3975
  *             countp[n] = count[n]
  *             # for neg strides, reverse order (then flip that axis after data read in)
  *             if stride[n] < 0:             # <<<<<<<<<<<<<<
  *                 negstride = 1
  *                 stridep[n] = -stride[n]
  */
-    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3863; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":3864
+      /* "netCDF4/_netCDF4.pyx":3976
  *             # for neg strides, reverse order (then flip that axis after data read in)
  *             if stride[n] < 0:
  *                 negstride = 1             # <<<<<<<<<<<<<<
@@ -39646,143 +39832,143 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  */
       __pyx_v_negstride = 1;
 
-      /* "netCDF4/_netCDF4.pyx":3865
+      /* "netCDF4/_netCDF4.pyx":3977
  *             if stride[n] < 0:
  *                 negstride = 1
  *                 stridep[n] = -stride[n]             # <<<<<<<<<<<<<<
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]
  */
-      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_6); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_6); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       (__pyx_v_stridep[__pyx_v_n]) = __pyx_t_9;
 
-      /* "netCDF4/_netCDF4.pyx":3866
+      /* "netCDF4/_netCDF4.pyx":3978
  *                 negstride = 1
  *                 stridep[n] = -stride[n]
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)             # <<<<<<<<<<<<<<
  *                 stride[n] = -stride[n]
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
  */
-      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_start, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_start, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3978; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3978; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_count, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3978; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_10 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyNumber_Subtract(__pyx_t_4, __pyx_int_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_10 = PyNumber_Add(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyNumber_Add(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_10); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_10); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       (__pyx_v_startp[__pyx_v_n]) = __pyx_t_8;
 
-      /* "netCDF4/_netCDF4.pyx":3867
+      /* "netCDF4/_netCDF4.pyx":3979
  *                 stridep[n] = -stride[n]
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]             # <<<<<<<<<<<<<<
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
  *             else:
  */
-      __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3979; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_4 = PyNumber_Negative(__pyx_t_10); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyNumber_Negative(__pyx_t_10); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      if (unlikely(__Pyx_SetItemInt(__pyx_v_stride, __pyx_v_n, __pyx_t_4, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(__Pyx_SetItemInt(__pyx_v_stride, __pyx_v_n, __pyx_t_4, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3868
+      /* "netCDF4/_netCDF4.pyx":3980
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data             # <<<<<<<<<<<<<<
  *             else:
  *                 startp[n] = start[n]
  */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__80); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__81); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L8;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3870
+      /* "netCDF4/_netCDF4.pyx":3982
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data
  *             else:
  *                 startp[n] = start[n]             # <<<<<<<<<<<<<<
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))
  */
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_start, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_start, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3982; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_4); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       (__pyx_v_startp[__pyx_v_n]) = __pyx_t_8;
 
-      /* "netCDF4/_netCDF4.pyx":3871
+      /* "netCDF4/_netCDF4.pyx":3983
  *             else:
  *                 startp[n] = start[n]
  *                 stridep[n] = stride[n]             # <<<<<<<<<<<<<<
  *                 sl.append(slice(None,None, 1))
  *         if self._isprimitive or self._iscompound:
  */
-      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3871; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_stride, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3983; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_4); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyInt_As_ptrdiff_t(__pyx_t_4); if (unlikely((__pyx_t_9 == (ptrdiff_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       (__pyx_v_stridep[__pyx_v_n]) = __pyx_t_9;
 
-      /* "netCDF4/_netCDF4.pyx":3872
+      /* "netCDF4/_netCDF4.pyx":3984
  *                 startp[n] = start[n]
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))             # <<<<<<<<<<<<<<
  *         if self._isprimitive or self._iscompound:
  *             data = numpy.empty(shapeout, self.dtype)
  */
-      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__81); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_sl, __pyx_slice__82); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L8:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3873
+  /* "netCDF4/_netCDF4.pyx":3985
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))
  *         if self._isprimitive or self._iscompound:             # <<<<<<<<<<<<<<
  *             data = numpy.empty(shapeout, self.dtype)
  *             # strides all 1 or scalar variable, use get_vara (faster)
  */
-  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isprimitive); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_12) {
   } else {
     __pyx_t_5 = __pyx_t_12;
     goto __pyx_L10_bool_binop_done;
   }
-  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_self->_iscompound); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_5 = __pyx_t_12;
   __pyx_L10_bool_binop_done:;
   if (__pyx_t_5) {
 
-    /* "netCDF4/_netCDF4.pyx":3874
+    /* "netCDF4/_netCDF4.pyx":3986
  *                 sl.append(slice(None,None, 1))
  *         if self._isprimitive or self._iscompound:
  *             data = numpy.empty(shapeout, self.dtype)             # <<<<<<<<<<<<<<
  *             # strides all 1 or scalar variable, use get_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:
  */
-    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __pyx_t_10 = NULL;
@@ -39797,7 +39983,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
         __pyx_t_2 = 1;
       }
     }
-    __pyx_t_1 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (__pyx_t_10) {
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL;
@@ -39808,35 +39994,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     __Pyx_INCREF(__pyx_v_self->dtype);
     PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_2, __pyx_v_self->dtype);
     __Pyx_GIVEREF(__pyx_v_self->dtype);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_data = ((PyArrayObject *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3876
+    /* "netCDF4/_netCDF4.pyx":3988
  *             data = numpy.empty(shapeout, self.dtype)
  *             # strides all 1 or scalar variable, use get_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
  *                 with nogil:
  *                     ierr = nc_get_vara(self._grpid, self._varid,
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_stride);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_stride);
     __Pyx_GIVEREF(__pyx_v_stride);
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (!__pyx_t_12) {
     } else {
@@ -39848,7 +40034,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     __pyx_L13_bool_binop_done:;
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":3877
+      /* "netCDF4/_netCDF4.pyx":3989
  *             # strides all 1 or scalar variable, use get_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:
  *                 with nogil:             # <<<<<<<<<<<<<<
@@ -39862,7 +40048,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":3878
+            /* "netCDF4/_netCDF4.pyx":3990
  *             if sum(stride) == ndims or ndims == 0:
  *                 with nogil:
  *                     ierr = nc_get_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -39872,7 +40058,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
             __pyx_v_ierr = nc_get_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_data->data);
           }
 
-          /* "netCDF4/_netCDF4.pyx":3877
+          /* "netCDF4/_netCDF4.pyx":3989
  *             # strides all 1 or scalar variable, use get_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:
  *                 with nogil:             # <<<<<<<<<<<<<<
@@ -39893,7 +40079,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3881
+      /* "netCDF4/_netCDF4.pyx":3993
  *                                        startp, countp, data.data)
  *             else:
  *                 with nogil:             # <<<<<<<<<<<<<<
@@ -39907,7 +40093,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
           #endif
           /*try:*/ {
 
-            /* "netCDF4/_netCDF4.pyx":3882
+            /* "netCDF4/_netCDF4.pyx":3994
  *             else:
  *                 with nogil:
  *                     ierr = nc_get_vars(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -39917,7 +40103,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
             __pyx_v_ierr = nc_get_vars(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_stridep, __pyx_v_data->data);
           }
 
-          /* "netCDF4/_netCDF4.pyx":3881
+          /* "netCDF4/_netCDF4.pyx":3993
  *                                        startp, countp, data.data)
  *             else:
  *                 with nogil:             # <<<<<<<<<<<<<<
@@ -39937,7 +40123,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     }
     __pyx_L12:;
 
-    /* "netCDF4/_netCDF4.pyx":3884
+    /* "netCDF4/_netCDF4.pyx":3996
  *                     ierr = nc_get_vars(self._grpid, self._varid,
  *                                        startp, countp, stridep, data.data)
  *             if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
@@ -39947,7 +40133,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     __pyx_t_5 = ((__pyx_v_ierr == NC_EINVALCOORDS) != 0);
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":3885
+      /* "netCDF4/_netCDF4.pyx":3997
  *                                        startp, countp, stridep, data.data)
  *             if ierr == NC_EINVALCOORDS:
  *                 raise IndexError             # <<<<<<<<<<<<<<
@@ -39955,10 +40141,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
       __Pyx_Raise(__pyx_builtin_IndexError, 0, 0, 0);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":3886
+    /* "netCDF4/_netCDF4.pyx":3998
  *             if ierr == NC_EINVALCOORDS:
  *                 raise IndexError
  *             elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -39968,7 +40154,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":3887
+      /* "netCDF4/_netCDF4.pyx":3999
  *                 raise IndexError
  *             elif ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -39976,44 +40162,44 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *             # allocate array of correct primitive type.
  */
       __pyx_t_13 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     goto __pyx_L9;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3888
+  /* "netCDF4/_netCDF4.pyx":4000
  *             elif ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         elif self._isvlen:             # <<<<<<<<<<<<<<
  *             # allocate array of correct primitive type.
  *             data = numpy.empty(shapeout, 'O')
  */
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_self->_isvlen); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_5) {
 
-    /* "netCDF4/_netCDF4.pyx":3890
+    /* "netCDF4/_netCDF4.pyx":4002
  *         elif self._isvlen:
  *             # allocate array of correct primitive type.
  *             data = numpy.empty(shapeout, 'O')             # <<<<<<<<<<<<<<
  *             # flatten data array.
  *             data = data.flatten()
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -40028,7 +40214,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
         __pyx_t_2 = 1;
       }
     }
-    __pyx_t_10 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     if (__pyx_t_4) {
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -40039,22 +40225,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     __Pyx_INCREF(__pyx_n_s_O);
     PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_2, __pyx_n_s_O);
     __Pyx_GIVEREF(__pyx_n_s_O);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_data = ((PyArrayObject *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3892
+    /* "netCDF4/_netCDF4.pyx":4004
  *             data = numpy.empty(shapeout, 'O')
  *             # flatten data array.
  *             data = data.flatten()             # <<<<<<<<<<<<<<
  *             totelem = PyArray_SIZE(data)
  *             if self.dtype == str:
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_flatten); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_data), __pyx_n_s_flatten); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_10 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -40067,78 +40253,78 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       }
     }
     if (__pyx_t_10) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3893
+    /* "netCDF4/_netCDF4.pyx":4005
  *             # flatten data array.
  *             data = data.flatten()
  *             totelem = PyArray_SIZE(data)             # <<<<<<<<<<<<<<
  *             if self.dtype == str:
  *                 # vlen string (NC_STRING)
  */
-    __pyx_t_1 = __Pyx_PyInt_From_npy_intp(PyArray_SIZE(__pyx_v_data)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyInt_From_npy_intp(PyArray_SIZE(__pyx_v_data)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_totelem = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":3894
+    /* "netCDF4/_netCDF4.pyx":4006
  *             data = data.flatten()
  *             totelem = PyArray_SIZE(data)
  *             if self.dtype == str:             # <<<<<<<<<<<<<<
  *                 # vlen string (NC_STRING)
  *                 # allocate pointer array to hold string data.
  */
-    __pyx_t_1 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":3897
+      /* "netCDF4/_netCDF4.pyx":4009
  *                 # vlen string (NC_STRING)
  *                 # allocate pointer array to hold string data.
  *                 strdata = <char **>malloc(sizeof(char *) * totelem)             # <<<<<<<<<<<<<<
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  */
-      __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(char *))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyInt_FromSize_t((sizeof(char *))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_v_totelem); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_v_totelem); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_strdata = ((char **)malloc(__pyx_t_8));
 
-      /* "netCDF4/_netCDF4.pyx":3899
+      /* "netCDF4/_netCDF4.pyx":4011
  *                 strdata = <char **>malloc(sizeof(char *) * totelem)
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
  *                     with nogil:
  *                         ierr = nc_get_vara(self._grpid, self._varid,
  */
-      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_v_stride);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_stride);
       __Pyx_GIVEREF(__pyx_v_stride);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_10 = PyObject_RichCompare(__pyx_t_1, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyObject_RichCompare(__pyx_t_1, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       if (!__pyx_t_12) {
       } else {
@@ -40150,7 +40336,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __pyx_L24_bool_binop_done:;
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":3900
+        /* "netCDF4/_netCDF4.pyx":4012
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  *                     with nogil:             # <<<<<<<<<<<<<<
@@ -40164,7 +40350,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
             #endif
             /*try:*/ {
 
-              /* "netCDF4/_netCDF4.pyx":3901
+              /* "netCDF4/_netCDF4.pyx":4013
  *                 if sum(stride) == ndims or ndims == 0:
  *                     with nogil:
  *                         ierr = nc_get_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -40174,7 +40360,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
               __pyx_v_ierr = nc_get_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_strdata);
             }
 
-            /* "netCDF4/_netCDF4.pyx":3900
+            /* "netCDF4/_netCDF4.pyx":4012
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  *                     with nogil:             # <<<<<<<<<<<<<<
@@ -40195,22 +40381,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3905
+        /* "netCDF4/_netCDF4.pyx":4017
  *                 else:
  *                     # FIXME: is this a bug in netCDF4?
  *                     raise IndexError('strides must all be 1 for string variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_get_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, strdata)
  */
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__82, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_Raise(__pyx_t_10, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L23:;
 
-      /* "netCDF4/_netCDF4.pyx":3908
+      /* "netCDF4/_netCDF4.pyx":4020
  *                     #ierr = nc_get_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, strdata)
  *                 if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
@@ -40220,7 +40406,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __pyx_t_5 = ((__pyx_v_ierr == NC_EINVALCOORDS) != 0);
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":3909
+        /* "netCDF4/_netCDF4.pyx":4021
  *                     #                   startp, countp, stridep, strdata)
  *                 if ierr == NC_EINVALCOORDS:
  *                     raise IndexError             # <<<<<<<<<<<<<<
@@ -40228,10 +40414,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
         __Pyx_Raise(__pyx_builtin_IndexError, 0, 0, 0);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3910
+      /* "netCDF4/_netCDF4.pyx":4022
  *                 if ierr == NC_EINVALCOORDS:
  *                     raise IndexError
  *                 elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -40241,7 +40427,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":3911
+        /* "netCDF4/_netCDF4.pyx":4023
  *                     raise IndexError
  *                 elif ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -40249,45 +40435,45 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *                 # contents of strdata.
  */
         __pyx_t_13 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_10 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_10, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3914
+      /* "netCDF4/_netCDF4.pyx":4026
  *                 # loop over elements of object array, fill array with
  *                 # contents of strdata.
  *                 for i from 0<=i<totelem:             # <<<<<<<<<<<<<<
  *                     data[i] = strdata[i].decode(default_encoding)
  *                 # reshape the output array
  */
-      __pyx_t_14 = __Pyx_PyInt_As_long(__pyx_v_totelem); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = __Pyx_PyInt_As_long(__pyx_v_totelem); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_14; __pyx_v_i++) {
 
-        /* "netCDF4/_netCDF4.pyx":3915
+        /* "netCDF4/_netCDF4.pyx":4027
  *                 # contents of strdata.
  *                 for i from 0<=i<totelem:
  *                     data[i] = strdata[i].decode(default_encoding)             # <<<<<<<<<<<<<<
  *                 # reshape the output array
  *                 data = numpy.reshape(data, shapeout)
  */
-        __pyx_t_6 = __Pyx_PyBytes_FromString((__pyx_v_strdata[__pyx_v_i])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyBytes_FromString((__pyx_v_strdata[__pyx_v_i])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_4 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -40300,35 +40486,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
           }
         }
         if (!__pyx_t_4) {
-          __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_GOTREF(__pyx_t_10);
         } else {
-          __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_15);
           PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
           PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
           __Pyx_GIVEREF(__pyx_t_6);
           __pyx_t_6 = 0;
-          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         }
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, __pyx_t_10, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, __pyx_t_10, long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
 
-      /* "netCDF4/_netCDF4.pyx":3917
+      /* "netCDF4/_netCDF4.pyx":4029
  *                     data[i] = strdata[i].decode(default_encoding)
  *                 # reshape the output array
  *                 data = numpy.reshape(data, shapeout)             # <<<<<<<<<<<<<<
  *                 free(strdata)
  *             else:
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_reshape); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_1 = NULL;
@@ -40343,7 +40529,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
           __pyx_t_2 = 1;
         }
       }
-      __pyx_t_6 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       if (__pyx_t_1) {
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -40354,15 +40540,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __Pyx_INCREF(__pyx_v_shapeout);
       PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_2, __pyx_v_shapeout);
       __Pyx_GIVEREF(__pyx_v_shapeout);
-      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_6, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_6, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-      if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_10));
       __pyx_t_10 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3918
+      /* "netCDF4/_netCDF4.pyx":4030
  *                 # reshape the output array
  *                 data = numpy.reshape(data, shapeout)
  *                 free(strdata)             # <<<<<<<<<<<<<<
@@ -40374,43 +40560,43 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":3922
+      /* "netCDF4/_netCDF4.pyx":4034
  *                 # regular vlen
  *                 # allocate struct array to hold vlen data.
  *                 vldata = <nc_vlen_t *>malloc(totelem*sizeof(nc_vlen_t))             # <<<<<<<<<<<<<<
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  */
-      __pyx_t_10 = __Pyx_PyInt_FromSize_t((sizeof(nc_vlen_t))); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyInt_FromSize_t((sizeof(nc_vlen_t))); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_15 = PyNumber_Multiply(__pyx_v_totelem, __pyx_t_10); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = PyNumber_Multiply(__pyx_v_totelem, __pyx_t_10); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_15); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_t_15); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
       __pyx_v_vldata = ((nc_vlen_t *)malloc(__pyx_t_8));
 
-      /* "netCDF4/_netCDF4.pyx":3924
+      /* "netCDF4/_netCDF4.pyx":4036
  *                 vldata = <nc_vlen_t *>malloc(totelem*sizeof(nc_vlen_t))
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:             # <<<<<<<<<<<<<<
  *                     with nogil:
  *                         ierr = nc_get_vara(self._grpid, self._varid,
  */
-      __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       __Pyx_INCREF(__pyx_v_stride);
       PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_v_stride);
       __Pyx_GIVEREF(__pyx_v_stride);
-      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_15, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_15, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_PyInt_From_int(__pyx_v_ndims); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
-      __pyx_t_6 = PyObject_RichCompare(__pyx_t_10, __pyx_t_15, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyObject_RichCompare(__pyx_t_10, __pyx_t_15, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       if (!__pyx_t_12) {
       } else {
@@ -40422,7 +40608,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __pyx_L33_bool_binop_done:;
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":3925
+        /* "netCDF4/_netCDF4.pyx":4037
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  *                     with nogil:             # <<<<<<<<<<<<<<
@@ -40436,7 +40622,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
             #endif
             /*try:*/ {
 
-              /* "netCDF4/_netCDF4.pyx":3926
+              /* "netCDF4/_netCDF4.pyx":4038
  *                 if sum(stride) == ndims or ndims == 0:
  *                     with nogil:
  *                         ierr = nc_get_vara(self._grpid, self._varid,             # <<<<<<<<<<<<<<
@@ -40446,7 +40632,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
               __pyx_v_ierr = nc_get_vara(__pyx_v_self->_grpid, __pyx_v_self->_varid, __pyx_v_startp, __pyx_v_countp, __pyx_v_vldata);
             }
 
-            /* "netCDF4/_netCDF4.pyx":3925
+            /* "netCDF4/_netCDF4.pyx":4037
  *                 # strides all 1 or scalar variable, use get_vara (faster)
  *                 if sum(stride) == ndims or ndims == 0:
  *                     with nogil:             # <<<<<<<<<<<<<<
@@ -40467,22 +40653,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":3929
+        /* "netCDF4/_netCDF4.pyx":4041
  *                                            startp, countp, vldata)
  *                 else:
  *                     raise IndexError('strides must all be 1 for vlen variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_get_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, vldata)
  */
-        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__84, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_Raise(__pyx_t_6, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L32:;
 
-      /* "netCDF4/_netCDF4.pyx":3932
+      /* "netCDF4/_netCDF4.pyx":4044
  *                     #ierr = nc_get_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, vldata)
  *                 if ierr == NC_EINVALCOORDS:             # <<<<<<<<<<<<<<
@@ -40492,7 +40678,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __pyx_t_5 = ((__pyx_v_ierr == NC_EINVALCOORDS) != 0);
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":3933
+        /* "netCDF4/_netCDF4.pyx":4045
  *                     #                   startp, countp, stridep, vldata)
  *                 if ierr == NC_EINVALCOORDS:
  *                     raise IndexError             # <<<<<<<<<<<<<<
@@ -40500,10 +40686,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
         __Pyx_Raise(__pyx_builtin_IndexError, 0, 0, 0);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3934
+      /* "netCDF4/_netCDF4.pyx":4046
  *                 if ierr == NC_EINVALCOORDS:
  *                     raise IndexError
  *                 elif ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -40513,7 +40699,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":3935
+        /* "netCDF4/_netCDF4.pyx":4047
  *                     raise IndexError
  *                 elif ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -40521,33 +40707,33 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *                 # contents of vlarray struct, put array in object array.
  */
         __pyx_t_13 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_decode_c_string(__pyx_t_13, 0, strlen(__pyx_t_13), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = PyTuple_New(1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         __Pyx_INCREF(__pyx_t_6);
         PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_6);
         __Pyx_GIVEREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_15, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_15, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         __Pyx_Raise(__pyx_t_6, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3938
+      /* "netCDF4/_netCDF4.pyx":4050
  *                 # loop over elements of object array, fill array with
  *                 # contents of vlarray struct, put array in object array.
  *                 for i from 0<=i<totelem:             # <<<<<<<<<<<<<<
  *                     arrlen  = vldata[i].len
  *                     dataarr = numpy.empty(arrlen, self.dtype)
  */
-      __pyx_t_14 = __Pyx_PyInt_As_long(__pyx_v_totelem); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = __Pyx_PyInt_As_long(__pyx_v_totelem); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_14; __pyx_v_i++) {
 
-        /* "netCDF4/_netCDF4.pyx":3939
+        /* "netCDF4/_netCDF4.pyx":4051
  *                 # contents of vlarray struct, put array in object array.
  *                 for i from 0<=i<totelem:
  *                     arrlen  = vldata[i].len             # <<<<<<<<<<<<<<
@@ -40557,19 +40743,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
         __pyx_t_8 = (__pyx_v_vldata[__pyx_v_i]).len;
         __pyx_v_arrlen = __pyx_t_8;
 
-        /* "netCDF4/_netCDF4.pyx":3940
+        /* "netCDF4/_netCDF4.pyx":4052
  *                 for i from 0<=i<totelem:
  *                     arrlen  = vldata[i].len
  *                     dataarr = numpy.empty(arrlen, self.dtype)             # <<<<<<<<<<<<<<
  *                     dataarr.data = <char *>vldata[i].p
  *                     data[i] = dataarr
  */
-        __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
-        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-        __pyx_t_15 = __Pyx_PyInt_FromSize_t(__pyx_v_arrlen); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = __Pyx_PyInt_FromSize_t(__pyx_v_arrlen); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         __pyx_t_1 = NULL;
         __pyx_t_2 = 0;
@@ -40583,7 +40769,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
             __pyx_t_2 = 1;
           }
         }
-        __pyx_t_4 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         if (__pyx_t_1) {
           PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -40594,15 +40780,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
         PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_2, __pyx_v_self->dtype);
         __Pyx_GIVEREF(__pyx_v_self->dtype);
         __pyx_t_15 = 0;
-        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_XDECREF_SET(__pyx_v_dataarr, ((PyArrayObject *)__pyx_t_6));
         __pyx_t_6 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":3941
+        /* "netCDF4/_netCDF4.pyx":4053
  *                     arrlen  = vldata[i].len
  *                     dataarr = numpy.empty(arrlen, self.dtype)
  *                     dataarr.data = <char *>vldata[i].p             # <<<<<<<<<<<<<<
@@ -40611,26 +40797,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  */
         __pyx_v_dataarr->data = ((char *)(__pyx_v_vldata[__pyx_v_i]).p);
 
-        /* "netCDF4/_netCDF4.pyx":3942
+        /* "netCDF4/_netCDF4.pyx":4054
  *                     dataarr = numpy.empty(arrlen, self.dtype)
  *                     dataarr.data = <char *>vldata[i].p
  *                     data[i] = dataarr             # <<<<<<<<<<<<<<
  *                 # reshape the output array
  *                 data = numpy.reshape(data, shapeout)
  */
-        if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, ((PyObject *)__pyx_v_dataarr), long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_data), __pyx_v_i, ((PyObject *)__pyx_v_dataarr), long, 1, __Pyx_PyInt_From_long, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
 
-      /* "netCDF4/_netCDF4.pyx":3944
+      /* "netCDF4/_netCDF4.pyx":4056
  *                     data[i] = dataarr
  *                 # reshape the output array
  *                 data = numpy.reshape(data, shapeout)             # <<<<<<<<<<<<<<
  *                 # free the pointer array.
  *                 free(vldata)
  */
-      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __pyx_t_10 = NULL;
@@ -40645,7 +40831,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
           __pyx_t_2 = 1;
         }
       }
-      __pyx_t_15 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       if (__pyx_t_10) {
         PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL;
@@ -40656,15 +40842,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       __Pyx_INCREF(__pyx_v_shapeout);
       PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_2, __pyx_v_shapeout);
       __Pyx_GIVEREF(__pyx_v_shapeout);
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_6));
       __pyx_t_6 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":3946
+      /* "netCDF4/_netCDF4.pyx":4058
  *                 data = numpy.reshape(data, shapeout)
  *                 # free the pointer array.
  *                 free(vldata)             # <<<<<<<<<<<<<<
@@ -40678,7 +40864,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   }
   __pyx_L9:;
 
-  /* "netCDF4/_netCDF4.pyx":3947
+  /* "netCDF4/_netCDF4.pyx":4059
  *                 # free the pointer array.
  *                 free(vldata)
  *         if negstride:             # <<<<<<<<<<<<<<
@@ -40688,17 +40874,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   __pyx_t_5 = (__pyx_v_negstride != 0);
   if (__pyx_t_5) {
 
-    /* "netCDF4/_netCDF4.pyx":3949
+    /* "netCDF4/_netCDF4.pyx":4061
  *         if negstride:
  *             # reverse data along axes with negative strides.
  *             data = data[sl].copy() # make a copy so data is contiguous.             # <<<<<<<<<<<<<<
  *         if not self.dimensions:
  *             return data[0] # a scalar
  */
-    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3949; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-    __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_v_sl); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3949; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_data), __pyx_v_sl); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_copy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_copy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -40712,35 +40898,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_15); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_15); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_7netCDF4_8_netCDF4_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_XDECREF_SET(__pyx_v_data, ((PyArrayObject *)__pyx_t_6));
     __pyx_t_6 = 0;
     goto __pyx_L41;
   }
   __pyx_L41:;
 
-  /* "netCDF4/_netCDF4.pyx":3950
+  /* "netCDF4/_netCDF4.pyx":4062
  *             # reverse data along axes with negative strides.
  *             data = data[sl].copy() # make a copy so data is contiguous.
  *         if not self.dimensions:             # <<<<<<<<<<<<<<
  *             return data[0] # a scalar
  *         elif squeeze_out:
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dimensions); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_12 = ((!__pyx_t_5) != 0);
   if (__pyx_t_12) {
 
-    /* "netCDF4/_netCDF4.pyx":3951
+    /* "netCDF4/_netCDF4.pyx":4063
  *             data = data[sl].copy() # make a copy so data is contiguous.
  *         if not self.dimensions:
  *             return data[0] # a scalar             # <<<<<<<<<<<<<<
@@ -40748,15 +40934,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *             return numpy.squeeze(data)
  */
     __Pyx_XDECREF(__pyx_r);
-    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3951; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-    __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_data), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3951; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4063; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_data), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4063; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_r = __pyx_t_6;
     __pyx_t_6 = 0;
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3952
+  /* "netCDF4/_netCDF4.pyx":4064
  *         if not self.dimensions:
  *             return data[0] # a scalar
  *         elif squeeze_out:             # <<<<<<<<<<<<<<
@@ -40766,7 +40952,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   __pyx_t_12 = (__pyx_v_squeeze_out != 0);
   if (__pyx_t_12) {
 
-    /* "netCDF4/_netCDF4.pyx":3953
+    /* "netCDF4/_netCDF4.pyx":4065
  *             return data[0] # a scalar
  *         elif squeeze_out:
  *             return numpy.squeeze(data)             # <<<<<<<<<<<<<<
@@ -40774,12 +40960,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  *             return data
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3953; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
     __pyx_t_15 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
       __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_4);
@@ -40791,16 +40977,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
       }
     }
     if (!__pyx_t_15) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_data)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_data)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
     } else {
-      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_15); __pyx_t_15 = NULL;
       __Pyx_INCREF(((PyObject *)__pyx_v_data));
       PyTuple_SET_ITEM(__pyx_t_10, 0+1, ((PyObject *)__pyx_v_data));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_data));
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     }
@@ -40811,7 +40997,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":3955
+    /* "netCDF4/_netCDF4.pyx":4067
  *             return numpy.squeeze(data)
  *         else:
  *             return data             # <<<<<<<<<<<<<<
@@ -40819,13 +41005,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
  * # Compound datatype support.
  */
     __Pyx_XDECREF(__pyx_r);
-    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3955; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    if (unlikely(!__pyx_v_data)) { __Pyx_RaiseUnboundLocalError("data"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4067; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
     __Pyx_INCREF(((PyObject *)__pyx_v_data));
     __pyx_r = ((PyObject *)__pyx_v_data);
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":3833
+  /* "netCDF4/_netCDF4.pyx":3945
  *                 free(vldata)
  * 
  *     def _get(self,start,count,stride):             # <<<<<<<<<<<<<<
@@ -40854,9 +41040,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_64_get(struct __pyx_obj_7
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2567
- * that are 1d arrays or lists slice along each dimension independently.  This
- * behavior is similar to Fortran or Matlab, but different than numpy."""
+/* "netCDF4/_netCDF4.pyx":2551
+ * **`size`**: The number of stored elements.
+ *     """
  *     cdef public int _varid, _grpid, _nunlimdim             # <<<<<<<<<<<<<<
  *     cdef public _name, ndim, dtype, mask, scale, _isprimitive, _iscompound,\
  *     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__
@@ -40884,7 +41070,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6_varid___get__(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_varid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -40922,7 +41108,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_6_varid_2__set__(struct __pyx_o
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_varid = __pyx_t_1;
 
   /* function exit code */
@@ -40958,7 +41144,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_6_grpid___get__(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -40996,7 +41182,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_6_grpid_2__set__(struct __pyx_o
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_grpid = __pyx_t_1;
 
   /* function exit code */
@@ -41032,7 +41218,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8Variable_10_nunlimdim___get__(stru
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_nunlimdim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_nunlimdim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -41070,7 +41256,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_2__set__(struct __
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_nunlimdim = __pyx_t_1;
 
   /* function exit code */
@@ -41084,12 +41270,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_10_nunlimdim_2__set__(struct __
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2568
- * behavior is similar to Fortran or Matlab, but different than numpy."""
+/* "netCDF4/_netCDF4.pyx":2552
+ *     """
  *     cdef public int _varid, _grpid, _nunlimdim
  *     cdef public _name, ndim, dtype, mask, scale, _isprimitive, _iscompound,\             # <<<<<<<<<<<<<<
  *     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__
- * 
+ *     # Docstrings for class variables (used by pdoc).
  */
 
 /* Python wrapper */
@@ -41701,12 +41887,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_11_iscompound_4__del__(struct _
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":2569
+/* "netCDF4/_netCDF4.pyx":2553
  *     cdef public int _varid, _grpid, _nunlimdim
  *     cdef public _name, ndim, dtype, mask, scale, _isprimitive, _iscompound,\
  *     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__             # <<<<<<<<<<<<<<
- * 
- *     def __init__(self, grp, name, datatype, dimensions=(), zlib=False,
+ *     # Docstrings for class variables (used by pdoc).
+ *     __pdoc__['Variable.dimensions'] = \
  */
 
 /* Python wrapper */
@@ -42144,16 +42330,20 @@ static int __pyx_pf_7netCDF4_8_netCDF4_8Variable_23__orthogonal_indexing___4__de
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3999
- *     cdef public nc_type _nc_type
- *     cdef public dtype, name
+/* "netCDF4/_netCDF4.pyx":4088
+ *     __pdoc__['CompoundType.dtype'] = \
+ *     """A numpy dtype object describing the compound data type."""
  *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef nc_type xtype
- *         dt = numpy.dtype(dt,align=True)
+ *         """
+ *         ***`__init__(group, datatype, datatype_name)`***
  */
 
 /* Python wrapper */
 static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_7netCDF4_8_netCDF4_12CompoundType___init__[] = "\n        ***`__init__(group, datatype, datatype_name)`***\n\n        CompoundType constructor.\n\n        **`group`**: `netCDF4.Group` instance to associate with the compound datatype.\n        \n        **`datatype`**: A numpy dtype object describing a structured (a.k.a record)\n        array.  Can be composed of homogeneous numeric or character data types, or\n        other structured array data types.\n        \n   [...]
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__;
+#endif
 static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_grp = 0;
   PyObject *__pyx_v_dt = 0;
@@ -42188,16 +42378,16 @@ static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_1__init__(PyObject *__pyx_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4088; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4088; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4088; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -42212,7 +42402,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_12CompoundType_1__init__(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3999; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4088; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("netCDF4._netCDF4.CompoundType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -42244,27 +42434,27 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_dt);
 
-  /* "netCDF4/_netCDF4.pyx":4001
- *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+  /* "netCDF4/_netCDF4.pyx":4113
+ *         """
  *         cdef nc_type xtype
  *         dt = numpy.dtype(dt,align=True)             # <<<<<<<<<<<<<<
  *         if 'typeid' in kwargs:
  *             xtype = kwargs['typeid']
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_dt);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dt);
   __Pyx_GIVEREF(__pyx_v_dt);
-  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_align, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_align, Py_True) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -42272,49 +42462,49 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_
   __Pyx_DECREF_SET(__pyx_v_dt, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4002
+  /* "netCDF4/_netCDF4.pyx":4114
  *         cdef nc_type xtype
  *         dt = numpy.dtype(dt,align=True)
  *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
  *             xtype = kwargs['typeid']
  *         else:
  */
-  __pyx_t_5 = (__Pyx_PyDict_Contains(__pyx_n_s_typeid, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = (__Pyx_PyDict_Contains(__pyx_n_s_typeid, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
 
-    /* "netCDF4/_netCDF4.pyx":4003
+    /* "netCDF4/_netCDF4.pyx":4115
  *         dt = numpy.dtype(dt,align=True)
  *         if 'typeid' in kwargs:
  *             xtype = kwargs['typeid']             # <<<<<<<<<<<<<<
  *         else:
  *             xtype = _def_compound(grp, dt, dtype_name)
  */
-    __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_typeid); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4003; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_typeid); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4115; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_PyInt_As_nc_type(__pyx_t_4); if (unlikely((__pyx_t_7 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyInt_As_nc_type(__pyx_t_4); if (unlikely((__pyx_t_7 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_v_xtype = __pyx_t_7;
     goto __pyx_L3;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4005
+    /* "netCDF4/_netCDF4.pyx":4117
  *             xtype = kwargs['typeid']
  *         else:
  *             xtype = _def_compound(grp, dt, dtype_name)             # <<<<<<<<<<<<<<
  *         self._nc_type = xtype
  *         self.dtype = dt
  */
-    __pyx_t_4 = __pyx_f_7netCDF4_8_netCDF4__def_compound(__pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __pyx_f_7netCDF4_8_netCDF4__def_compound(__pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = __Pyx_PyInt_As_nc_type(__pyx_t_4); if (unlikely((__pyx_t_7 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyInt_As_nc_type(__pyx_t_4); if (unlikely((__pyx_t_7 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_v_xtype = __pyx_t_7;
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4006
+  /* "netCDF4/_netCDF4.pyx":4118
  *         else:
  *             xtype = _def_compound(grp, dt, dtype_name)
  *         self._nc_type = xtype             # <<<<<<<<<<<<<<
@@ -42323,7 +42513,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_
  */
   __pyx_v_self->_nc_type = __pyx_v_xtype;
 
-  /* "netCDF4/_netCDF4.pyx":4007
+  /* "netCDF4/_netCDF4.pyx":4119
  *             xtype = _def_compound(grp, dt, dtype_name)
  *         self._nc_type = xtype
  *         self.dtype = dt             # <<<<<<<<<<<<<<
@@ -42336,7 +42526,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_
   __Pyx_DECREF(__pyx_v_self->dtype);
   __pyx_v_self->dtype = __pyx_v_dt;
 
-  /* "netCDF4/_netCDF4.pyx":4008
+  /* "netCDF4/_netCDF4.pyx":4120
  *         self._nc_type = xtype
  *         self.dtype = dt
  *         self.name = dtype_name             # <<<<<<<<<<<<<<
@@ -42349,12 +42539,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_dtype_name;
 
-  /* "netCDF4/_netCDF4.pyx":3999
- *     cdef public nc_type _nc_type
- *     cdef public dtype, name
+  /* "netCDF4/_netCDF4.pyx":4088
+ *     __pdoc__['CompoundType.dtype'] = \
+ *     """A numpy dtype object describing the compound data type."""
  *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef nc_type xtype
- *         dt = numpy.dtype(dt,align=True)
+ *         """
+ *         ***`__init__(group, datatype, datatype_name)`***
  */
 
   /* function exit code */
@@ -42373,7 +42563,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType___init__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4010
+/* "netCDF4/_netCDF4.pyx":4122
  *         self.name = dtype_name
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -42408,20 +42598,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4011
+  /* "netCDF4/_netCDF4.pyx":4123
  * 
  *     def __repr__(self):
  *         if python3:             # <<<<<<<<<<<<<<
  *             return self.__unicode__()
  *         else:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4012
+    /* "netCDF4/_netCDF4.pyx":4124
  *     def __repr__(self):
  *         if python3:
  *             return self.__unicode__()             # <<<<<<<<<<<<<<
@@ -42429,7 +42619,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
  *             return unicode(self).encode(default_encoding)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -42442,10 +42632,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -42455,7 +42645,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4014
+    /* "netCDF4/_netCDF4.pyx":4126
  *             return self.__unicode__()
  *         else:
  *             return unicode(self).encode(default_encoding)             # <<<<<<<<<<<<<<
@@ -42463,18 +42653,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
  *     def __unicode__(self):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -42487,17 +42677,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
       __pyx_t_4 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -42507,7 +42697,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4010
+  /* "netCDF4/_netCDF4.pyx":4122
  *         self.name = dtype_name
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -42530,7 +42720,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_2__repr__(struct __p
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4016
+/* "netCDF4/_netCDF4.pyx":4128
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -42562,7 +42752,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__unicode__(struct
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__unicode__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4017
+  /* "netCDF4/_netCDF4.pyx":4129
  * 
  *     def __unicode__(self):
  *         return repr(type(self))+": name = '%s', numpy dtype = %s\n" %\             # <<<<<<<<<<<<<<
@@ -42570,17 +42760,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__unicode__(struct
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "netCDF4/_netCDF4.pyx":4018
+  /* "netCDF4/_netCDF4.pyx":4130
  *     def __unicode__(self):
  *         return repr(type(self))+": name = '%s', numpy dtype = %s\n" %\
  *         (self.name,self.dtype)             # <<<<<<<<<<<<<<
  * 
  * cdef _def_compound(grp, object dt, object dtype_name):
  */
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->name);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->name);
@@ -42589,17 +42779,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__unicode__(struct
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->dtype);
   __Pyx_GIVEREF(__pyx_v_self->dtype);
 
-  /* "netCDF4/_netCDF4.pyx":4017
+  /* "netCDF4/_netCDF4.pyx":4129
  * 
  *     def __unicode__(self):
  *         return repr(type(self))+": name = '%s', numpy dtype = %s\n" %\             # <<<<<<<<<<<<<<
  *         (self.name,self.dtype)
  * 
  */
-  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_name_s_numpy_dtype_s, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_name_s_numpy_dtype_s, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -42607,7 +42797,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__unicode__(struct
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4016
+  /* "netCDF4/_netCDF4.pyx":4128
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -42628,12 +42818,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4__unicode__(struct
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3997
- * @ivar name: A python string describing the compound type.
+/* "netCDF4/_netCDF4.pyx":4082
+ * the user.
  * """
  *     cdef public nc_type _nc_type             # <<<<<<<<<<<<<<
  *     cdef public dtype, name
- *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+ *     __pdoc__['CompoundType.name'] = \
  */
 
 /* Python wrapper */
@@ -42658,7 +42848,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12CompoundType_8_nc_type___get__(st
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_nc_type(__pyx_v_self->_nc_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_nc_type(__pyx_v_self->_nc_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -42696,7 +42886,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_2__set__(struct
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_nc_type(__pyx_v_value); if (unlikely((__pyx_t_1 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_nc_type(__pyx_v_value); if (unlikely((__pyx_t_1 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_nc_type = __pyx_t_1;
 
   /* function exit code */
@@ -42710,12 +42900,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_8_nc_type_2__set__(struct
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":3998
+/* "netCDF4/_netCDF4.pyx":4083
  * """
  *     cdef public nc_type _nc_type
  *     cdef public dtype, name             # <<<<<<<<<<<<<<
- *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
- *         cdef nc_type xtype
+ *     __pdoc__['CompoundType.name'] = \
+ *     """String name."""
  */
 
 /* Python wrapper */
@@ -42892,7 +43082,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_12CompoundType_4name_4__del__(struct __py
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4020
+/* "netCDF4/_netCDF4.pyx":4132
  *         (self.name,self.dtype)
  * 
  * cdef _def_compound(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
@@ -42945,55 +43135,55 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_def_compound", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4029
+  /* "netCDF4/_netCDF4.pyx":4141
  *     cdef char *nested_namstring
  *     cdef int dim_sizes[NC_MAX_DIMS]
  *     bytestr = _strencode(dtype_name)             # <<<<<<<<<<<<<<
  *     namstring = bytestr
  *     size = dt.itemsize
  */
-  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_dtype_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_dtype_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_bytestr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4030
+  /* "netCDF4/_netCDF4.pyx":4142
  *     cdef int dim_sizes[NC_MAX_DIMS]
  *     bytestr = _strencode(dtype_name)
  *     namstring = bytestr             # <<<<<<<<<<<<<<
  *     size = dt.itemsize
  *     ierr = nc_def_compound(grp._grpid, size, namstring, &xtype)
  */
-  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_namstring = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":4031
+  /* "netCDF4/_netCDF4.pyx":4143
  *     bytestr = _strencode(dtype_name)
  *     namstring = bytestr
  *     size = dt.itemsize             # <<<<<<<<<<<<<<
  *     ierr = nc_def_compound(grp._grpid, size, namstring, &xtype)
  *     if ierr != NC_NOERR:
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_size = __pyx_t_3;
 
-  /* "netCDF4/_netCDF4.pyx":4032
+  /* "netCDF4/_netCDF4.pyx":4144
  *     namstring = bytestr
  *     size = dt.itemsize
  *     ierr = nc_def_compound(grp._grpid, size, namstring, &xtype)             # <<<<<<<<<<<<<<
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_ierr = nc_def_compound(__pyx_t_4, __pyx_v_size, __pyx_v_namstring, (&__pyx_v_xtype));
 
-  /* "netCDF4/_netCDF4.pyx":4033
+  /* "netCDF4/_netCDF4.pyx":4145
  *     size = dt.itemsize
  *     ierr = nc_def_compound(grp._grpid, size, namstring, &xtype)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -43003,7 +43193,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
   __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_5) {
 
-    /* "netCDF4/_netCDF4.pyx":4034
+    /* "netCDF4/_netCDF4.pyx":4146
  *     ierr = nc_def_compound(grp._grpid, size, namstring, &xtype)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -43011,32 +43201,32 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  *     formats = [v[0] for v in dt.fields.values()]
  */
     __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4035
+  /* "netCDF4/_netCDF4.pyx":4147
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     names = list(dt.fields.keys())             # <<<<<<<<<<<<<<
  *     formats = [v[0] for v in dt.fields.values()]
  *     offsets = [v[1] for v in dt.fields.values()]
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_fields); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_fields); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_keys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_keys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_6 = NULL;
@@ -43050,31 +43240,31 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_names = __pyx_t_7;
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4036
+  /* "netCDF4/_netCDF4.pyx":4148
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     names = list(dt.fields.keys())
  *     formats = [v[0] for v in dt.fields.values()]             # <<<<<<<<<<<<<<
  *     offsets = [v[1] for v in dt.fields.values()]
  *     # make sure entries in lists sorted by offset.
  */
-  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_fields); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_fields); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_values); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_values); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_6 = NULL;
@@ -43088,10 +43278,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -43099,9 +43289,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -43109,16 +43299,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       if (likely(PyList_CheckExact(__pyx_t_8))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -43127,7 +43317,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -43135,27 +43325,27 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     }
     __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __pyx_v_formats = __pyx_t_7;
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4037
+  /* "netCDF4/_netCDF4.pyx":4149
  *     names = list(dt.fields.keys())
  *     formats = [v[0] for v in dt.fields.values()]
  *     offsets = [v[1] for v in dt.fields.values()]             # <<<<<<<<<<<<<<
  *     # make sure entries in lists sorted by offset.
  *     # (don't know why this is necessary, but it is for version 4.0.1)
  */
-  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_fields); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_fields); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_values); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = NULL;
@@ -43169,10 +43359,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -43180,9 +43370,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     __pyx_t_6 = __pyx_t_8; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   for (;;) {
@@ -43190,16 +43380,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -43208,7 +43398,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -43216,23 +43406,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     }
     __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_8);
     __pyx_t_8 = 0;
-    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_v, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_v, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_8);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_offsets = ((PyObject*)__pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4040
+  /* "netCDF4/_netCDF4.pyx":4152
  *     # make sure entries in lists sorted by offset.
  *     # (don't know why this is necessary, but it is for version 4.0.1)
  *     names = _sortbylist(names, offsets)             # <<<<<<<<<<<<<<
  *     formats = _sortbylist(formats, offsets)
  *     offsets.sort()
  */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_8 = NULL;
   __pyx_t_9 = 0;
@@ -43246,7 +43436,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_1 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (__pyx_t_8) {
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -43257,21 +43447,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
   __Pyx_INCREF(__pyx_v_offsets);
   PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_9, __pyx_v_offsets);
   __Pyx_GIVEREF(__pyx_v_offsets);
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF_SET(__pyx_v_names, __pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4041
+  /* "netCDF4/_netCDF4.pyx":4153
  *     # (don't know why this is necessary, but it is for version 4.0.1)
  *     names = _sortbylist(names, offsets)
  *     formats = _sortbylist(formats, offsets)             # <<<<<<<<<<<<<<
  *     offsets.sort()
  *     for name, format, offset in zip(names, formats, offsets):
  */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_1 = NULL;
   __pyx_t_9 = 0;
@@ -43285,7 +43475,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (__pyx_t_1) {
     PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -43296,30 +43486,30 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
   __Pyx_INCREF(__pyx_v_offsets);
   PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_v_offsets);
   __Pyx_GIVEREF(__pyx_v_offsets);
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF_SET(__pyx_v_formats, __pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4042
+  /* "netCDF4/_netCDF4.pyx":4154
  *     names = _sortbylist(names, offsets)
  *     formats = _sortbylist(formats, offsets)
  *     offsets.sort()             # <<<<<<<<<<<<<<
  *     for name, format, offset in zip(names, formats, offsets):
  *         bytestr = _strencode(name)
  */
-  __pyx_t_11 = PyList_Sort(__pyx_v_offsets); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = PyList_Sort(__pyx_v_offsets); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4043
+  /* "netCDF4/_netCDF4.pyx":4155
  *     formats = _sortbylist(formats, offsets)
  *     offsets.sort()
  *     for name, format, offset in zip(names, formats, offsets):             # <<<<<<<<<<<<<<
  *         bytestr = _strencode(name)
  *         namstring = bytestr
  */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_8 = NULL;
   __pyx_t_9 = 0;
@@ -43333,7 +43523,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_1 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (__pyx_t_8) {
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -43347,7 +43537,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
   __Pyx_INCREF(__pyx_v_offsets);
   PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_9, __pyx_v_offsets);
   __Pyx_GIVEREF(__pyx_v_offsets);
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -43355,9 +43545,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   for (;;) {
@@ -43365,16 +43555,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -43383,7 +43573,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -43399,7 +43589,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       if (unlikely(size != 3)) {
         if (size > 3) __Pyx_RaiseTooManyValuesError(3);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -43415,17 +43605,17 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       __Pyx_INCREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_t_12);
       #else
-      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_12 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       #endif
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_13 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
@@ -43435,7 +43625,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       __Pyx_GOTREF(__pyx_t_8);
       index = 2; __pyx_t_12 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_12)) goto __pyx_L10_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_12);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_14 = NULL;
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       goto __pyx_L11_unpacking_done;
@@ -43443,10 +43633,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L11_unpacking_done:;
     }
-    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_t_12); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_t_12); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
     __pyx_t_1 = 0;
@@ -43454,42 +43644,42 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     __pyx_t_8 = 0;
     __pyx_v_offset = __pyx_t_3;
 
-    /* "netCDF4/_netCDF4.pyx":4044
+    /* "netCDF4/_netCDF4.pyx":4156
  *     offsets.sort()
  *     for name, format, offset in zip(names, formats, offsets):
  *         bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *         namstring = bytestr
  *         if format.kind != 'V': # scalar primitive type
  */
-    __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4045
+    /* "netCDF4/_netCDF4.pyx":4157
  *     for name, format, offset in zip(names, formats, offsets):
  *         bytestr = _strencode(name)
  *         namstring = bytestr             # <<<<<<<<<<<<<<
  *         if format.kind != 'V': # scalar primitive type
  *             try:
  */
-    __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_namstring = __pyx_t_2;
 
-    /* "netCDF4/_netCDF4.pyx":4046
+    /* "netCDF4/_netCDF4.pyx":4158
  *         bytestr = _strencode(name)
  *         namstring = bytestr
  *         if format.kind != 'V': # scalar primitive type             # <<<<<<<<<<<<<<
  *             try:
  *                 xtype_tmp = _nptonctype[format.str[1:]]
  */
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_kind); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_kind); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_V, Py_NE)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_V, Py_NE)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":4047
+      /* "netCDF4/_netCDF4.pyx":4159
  *         namstring = bytestr
  *         if format.kind != 'V': # scalar primitive type
  *             try:             # <<<<<<<<<<<<<<
@@ -43503,25 +43693,25 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         __Pyx_XGOTREF(__pyx_t_17);
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":4048
+          /* "netCDF4/_netCDF4.pyx":4160
  *         if format.kind != 'V': # scalar primitive type
  *             try:
  *                 xtype_tmp = _nptonctype[format.str[1:]]             # <<<<<<<<<<<<<<
  *             except KeyError:
  *                 raise ValueError('Unsupported compound type element')
  */
-          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4048; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+          __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
           __Pyx_GOTREF(__pyx_t_7);
-          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_str); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4048; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_str); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
           __Pyx_GOTREF(__pyx_t_12);
-          __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_12, 1, 0, NULL, NULL, &__pyx_slice__84, 1, 0, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4048; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_12, 1, 0, NULL, NULL, &__pyx_slice__85, 1, 0, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-          __pyx_t_12 = PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4048; __pyx_clineno = __LINE__; goto __pyx_L13_error;};
+          __pyx_t_12 = PyObject_GetItem(__pyx_t_7, __pyx_t_8); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L13_error;};
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_12); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4048; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+          __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_12); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           __pyx_v_xtype_tmp = __pyx_t_18;
         }
@@ -43536,7 +43726,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4049
+        /* "netCDF4/_netCDF4.pyx":4161
  *             try:
  *                 xtype_tmp = _nptonctype[format.str[1:]]
  *             except KeyError:             # <<<<<<<<<<<<<<
@@ -43546,23 +43736,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         __pyx_t_4 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
         if (__pyx_t_4) {
           __Pyx_AddTraceback("netCDF4._netCDF4._def_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_8, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4049; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
+          if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_8, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4161; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_GOTREF(__pyx_t_7);
 
-          /* "netCDF4/_netCDF4.pyx":4050
+          /* "netCDF4/_netCDF4.pyx":4162
  *                 xtype_tmp = _nptonctype[format.str[1:]]
  *             except KeyError:
  *                 raise ValueError('Unsupported compound type element')             # <<<<<<<<<<<<<<
  *             ierr = nc_insert_compound(grp._grpid, xtype, namstring,
  *                                       offset, xtype_tmp)
  */
-          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4050; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
+          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4162; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_Raise(__pyx_t_1, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4050; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4162; __pyx_clineno = __LINE__; goto __pyx_L15_except_error;}
         }
         goto __pyx_L15_except_error;
         __pyx_L15_except_error:;
@@ -43574,19 +43764,19 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         __pyx_L20_try_end:;
       }
 
-      /* "netCDF4/_netCDF4.pyx":4051
+      /* "netCDF4/_netCDF4.pyx":4163
  *             except KeyError:
  *                 raise ValueError('Unsupported compound type element')
  *             ierr = nc_insert_compound(grp._grpid, xtype, namstring,             # <<<<<<<<<<<<<<
  *                                       offset, xtype_tmp)
  *             if ierr != NC_NOERR:
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4052
+      /* "netCDF4/_netCDF4.pyx":4164
  *                 raise ValueError('Unsupported compound type element')
  *             ierr = nc_insert_compound(grp._grpid, xtype, namstring,
  *                                       offset, xtype_tmp)             # <<<<<<<<<<<<<<
@@ -43595,7 +43785,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  */
       __pyx_v_ierr = nc_insert_compound(__pyx_t_4, __pyx_v_xtype, __pyx_v_namstring, __pyx_v_offset, __pyx_v_xtype_tmp);
 
-      /* "netCDF4/_netCDF4.pyx":4053
+      /* "netCDF4/_netCDF4.pyx":4165
  *             ierr = nc_insert_compound(grp._grpid, xtype, namstring,
  *                                       offset, xtype_tmp)
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -43605,7 +43795,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
       __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":4054
+        /* "netCDF4/_netCDF4.pyx":4166
  *                                       offset, xtype_tmp)
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -43613,88 +43803,88 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  *             if format.shape ==  (): # nested scalar compound type
  */
         __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_INCREF(__pyx_t_7);
         PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
         __Pyx_GIVEREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __Pyx_Raise(__pyx_t_7, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       goto __pyx_L12;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4056
+      /* "netCDF4/_netCDF4.pyx":4168
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         else:
  *             if format.shape ==  (): # nested scalar compound type             # <<<<<<<<<<<<<<
  *                 # find this compound type in this group or it's parents.
  *                 xtype_tmp = _find_cmptype(grp, format)
  */
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       if (__pyx_t_5) {
 
-        /* "netCDF4/_netCDF4.pyx":4058
+        /* "netCDF4/_netCDF4.pyx":4170
  *             if format.shape ==  (): # nested scalar compound type
  *                 # find this compound type in this group or it's parents.
  *                 xtype_tmp = _find_cmptype(grp, format)             # <<<<<<<<<<<<<<
  *                 bytestr = _strencode(name)
  *                 nested_namstring = bytestr
  */
-        __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_v_format); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_v_format); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_8); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_8); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __pyx_v_xtype_tmp = __pyx_t_18;
 
-        /* "netCDF4/_netCDF4.pyx":4059
+        /* "netCDF4/_netCDF4.pyx":4171
  *                 # find this compound type in this group or it's parents.
  *                 xtype_tmp = _find_cmptype(grp, format)
  *                 bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *                 nested_namstring = bytestr
  *                 ierr = nc_insert_compound(grp._grpid, xtype,\
  */
-        __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_8);
         __pyx_t_8 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4060
+        /* "netCDF4/_netCDF4.pyx":4172
  *                 xtype_tmp = _find_cmptype(grp, format)
  *                 bytestr = _strencode(name)
  *                 nested_namstring = bytestr             # <<<<<<<<<<<<<<
  *                 ierr = nc_insert_compound(grp._grpid, xtype,\
  *                                           nested_namstring,\
  */
-        __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_v_nested_namstring = __pyx_t_2;
 
-        /* "netCDF4/_netCDF4.pyx":4061
+        /* "netCDF4/_netCDF4.pyx":4173
  *                 bytestr = _strencode(name)
  *                 nested_namstring = bytestr
  *                 ierr = nc_insert_compound(grp._grpid, xtype,\             # <<<<<<<<<<<<<<
  *                                           nested_namstring,\
  *                                           offset, xtype_tmp)
  */
-        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4063
+        /* "netCDF4/_netCDF4.pyx":4175
  *                 ierr = nc_insert_compound(grp._grpid, xtype,\
  *                                           nested_namstring,\
  *                                           offset, xtype_tmp)             # <<<<<<<<<<<<<<
@@ -43703,7 +43893,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  */
         __pyx_v_ierr = nc_insert_compound(__pyx_t_4, __pyx_v_xtype, __pyx_v_nested_namstring, __pyx_v_offset, __pyx_v_xtype_tmp);
 
-        /* "netCDF4/_netCDF4.pyx":4064
+        /* "netCDF4/_netCDF4.pyx":4176
  *                                           nested_namstring,\
  *                                           offset, xtype_tmp)
  *                 if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -43713,7 +43903,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
         if (__pyx_t_5) {
 
-          /* "netCDF4/_netCDF4.pyx":4065
+          /* "netCDF4/_netCDF4.pyx":4177
  *                                           offset, xtype_tmp)
  *                 if ierr != NC_NOERR:
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -43721,39 +43911,39 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  *                 ndims = len(format.shape)
  */
           __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-          __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_INCREF(__pyx_t_8);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
           __Pyx_GIVEREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __Pyx_Raise(__pyx_t_8, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         goto __pyx_L24;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4067
+        /* "netCDF4/_netCDF4.pyx":4179
  *                     raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *             else: # array compound element
  *                 ndims = len(format.shape)             # <<<<<<<<<<<<<<
  *                 for n from 0 <= n < ndims:
  *                     dim_sizes[n] = format.shape[n]
  */
-        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_19 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_19 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_19 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_19 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         __pyx_v_ndims = __pyx_t_19;
 
-        /* "netCDF4/_netCDF4.pyx":4068
+        /* "netCDF4/_netCDF4.pyx":4180
  *             else: # array compound element
  *                 ndims = len(format.shape)
  *                 for n from 0 <= n < ndims:             # <<<<<<<<<<<<<<
@@ -43763,46 +43953,46 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
         __pyx_t_4 = __pyx_v_ndims;
         for (__pyx_v_n = 0; __pyx_v_n < __pyx_t_4; __pyx_v_n++) {
 
-          /* "netCDF4/_netCDF4.pyx":4069
+          /* "netCDF4/_netCDF4.pyx":4181
  *                 ndims = len(format.shape)
  *                 for n from 0 <= n < ndims:
  *                     dim_sizes[n] = format.shape[n]             # <<<<<<<<<<<<<<
  *                 if format.subdtype[0].str[1] != 'V': # primitive type.
  *                     try:
  */
-          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4069; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+          __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_n, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4181; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __pyx_t_20 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_20 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           (__pyx_v_dim_sizes[__pyx_v_n]) = __pyx_t_20;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4070
+        /* "netCDF4/_netCDF4.pyx":4182
  *                 for n from 0 <= n < ndims:
  *                     dim_sizes[n] = format.shape[n]
  *                 if format.subdtype[0].str[1] != 'V': # primitive type.             # <<<<<<<<<<<<<<
  *                     try:
  *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
  */
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_subdtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_subdtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4070; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4182; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_str); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_str); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-        __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4070; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4182; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_8, __pyx_n_s_V, Py_NE)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_8, __pyx_n_s_V, Py_NE)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         if (__pyx_t_5) {
 
-          /* "netCDF4/_netCDF4.pyx":4071
+          /* "netCDF4/_netCDF4.pyx":4183
  *                     dim_sizes[n] = format.shape[n]
  *                 if format.subdtype[0].str[1] != 'V': # primitive type.
  *                     try:             # <<<<<<<<<<<<<<
@@ -43816,31 +44006,31 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
             __Pyx_XGOTREF(__pyx_t_15);
             /*try:*/ {
 
-              /* "netCDF4/_netCDF4.pyx":4072
+              /* "netCDF4/_netCDF4.pyx":4184
  *                 if format.subdtype[0].str[1] != 'V': # primitive type.
  *                     try:
  *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]             # <<<<<<<<<<<<<<
  *                     except KeyError:
  *                         raise ValueError('Unsupported compound type element')
  */
-              __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
+              __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
               __Pyx_GOTREF(__pyx_t_8);
-              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_subdtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
+              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_subdtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
               __Pyx_GOTREF(__pyx_t_7);
-              __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L29_error;};
+              __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L29_error;};
               __Pyx_GOTREF(__pyx_t_12);
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_str); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
+              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_str); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
               __Pyx_GOTREF(__pyx_t_7);
               __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-              __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_7, 1, 0, NULL, NULL, &__pyx_slice__86, 1, 0, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
+              __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_t_7, 1, 0, NULL, NULL, &__pyx_slice__87, 1, 0, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
               __Pyx_GOTREF(__pyx_t_12);
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-              __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L29_error;};
+              __pyx_t_7 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L29_error;};
               __Pyx_GOTREF(__pyx_t_7);
               __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
               __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-              __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_7); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
+              __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_7); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L29_error;}
               __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
               __pyx_v_xtype_tmp = __pyx_t_18;
             }
@@ -43855,7 +44045,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
             __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
             __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-            /* "netCDF4/_netCDF4.pyx":4073
+            /* "netCDF4/_netCDF4.pyx":4185
  *                     try:
  *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
  *                     except KeyError:             # <<<<<<<<<<<<<<
@@ -43865,23 +44055,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
             __pyx_t_4 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
             if (__pyx_t_4) {
               __Pyx_AddTraceback("netCDF4._netCDF4._def_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-              if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_12, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4073; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+              if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_12, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4185; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
               __Pyx_GOTREF(__pyx_t_7);
               __Pyx_GOTREF(__pyx_t_12);
               __Pyx_GOTREF(__pyx_t_8);
 
-              /* "netCDF4/_netCDF4.pyx":4074
+              /* "netCDF4/_netCDF4.pyx":4186
  *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
  *                     except KeyError:
  *                         raise ValueError('Unsupported compound type element')             # <<<<<<<<<<<<<<
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,namstring,
  *                            offset,xtype_tmp,ndims,dim_sizes)
  */
-              __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4074; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+              __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4186; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
               __Pyx_GOTREF(__pyx_t_1);
               __Pyx_Raise(__pyx_t_1, 0, 0, 0);
               __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4074; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
+              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4186; __pyx_clineno = __LINE__; goto __pyx_L31_except_error;}
             }
             goto __pyx_L31_except_error;
             __pyx_L31_except_error:;
@@ -43893,19 +44083,19 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
             __pyx_L36_try_end:;
           }
 
-          /* "netCDF4/_netCDF4.pyx":4075
+          /* "netCDF4/_netCDF4.pyx":4187
  *                     except KeyError:
  *                         raise ValueError('Unsupported compound type element')
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,namstring,             # <<<<<<<<<<<<<<
  *                            offset,xtype_tmp,ndims,dim_sizes)
  *                     if ierr != NC_NOERR:
  */
-          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4076
+          /* "netCDF4/_netCDF4.pyx":4188
  *                         raise ValueError('Unsupported compound type element')
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,namstring,
  *                            offset,xtype_tmp,ndims,dim_sizes)             # <<<<<<<<<<<<<<
@@ -43914,7 +44104,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  */
           __pyx_v_ierr = nc_insert_array_compound(__pyx_t_4, __pyx_v_xtype, __pyx_v_namstring, __pyx_v_offset, __pyx_v_xtype_tmp, __pyx_v_ndims, __pyx_v_dim_sizes);
 
-          /* "netCDF4/_netCDF4.pyx":4077
+          /* "netCDF4/_netCDF4.pyx":4189
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,namstring,
  *                            offset,xtype_tmp,ndims,dim_sizes)
  *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -43924,7 +44114,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
           __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
           if (__pyx_t_5) {
 
-            /* "netCDF4/_netCDF4.pyx":4078
+            /* "netCDF4/_netCDF4.pyx":4190
  *                            offset,xtype_tmp,ndims,dim_sizes)
  *                     if ierr != NC_NOERR:
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -43932,79 +44122,79 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  *                     # find this compound type in this group or it's parents.
  */
             __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-            __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_8);
-            __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_12);
             __Pyx_INCREF(__pyx_t_8);
             PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8);
             __Pyx_GIVEREF(__pyx_t_8);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_8);
             __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
             __Pyx_Raise(__pyx_t_8, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           goto __pyx_L28;
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":4081
+          /* "netCDF4/_netCDF4.pyx":4193
  *                 else: # nested array compound type.
  *                     # find this compound type in this group or it's parents.
  *                     xtype_tmp = _find_cmptype(grp, format.subdtype[0])             # <<<<<<<<<<<<<<
  *                     bytestr = _strencode(name)
  *                     nested_namstring = bytestr
  */
-          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_subdtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_format, __pyx_n_s_subdtype); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4081; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+          __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4193; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-          __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_t_12); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_grp, __pyx_t_12); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-          __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_8); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_18 = __Pyx_PyInt_As_nc_type(__pyx_t_8); if (unlikely((__pyx_t_18 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
           __pyx_v_xtype_tmp = __pyx_t_18;
 
-          /* "netCDF4/_netCDF4.pyx":4082
+          /* "netCDF4/_netCDF4.pyx":4194
  *                     # find this compound type in this group or it's parents.
  *                     xtype_tmp = _find_cmptype(grp, format.subdtype[0])
  *                     bytestr = _strencode(name)             # <<<<<<<<<<<<<<
  *                     nested_namstring = bytestr
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,\
  */
-          __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_name, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
           __Pyx_DECREF_SET(__pyx_v_bytestr, __pyx_t_8);
           __pyx_t_8 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4083
+          /* "netCDF4/_netCDF4.pyx":4195
  *                     xtype_tmp = _find_cmptype(grp, format.subdtype[0])
  *                     bytestr = _strencode(name)
  *                     nested_namstring = bytestr             # <<<<<<<<<<<<<<
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,\
  *                                                     nested_namstring,\
  */
-          __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_v_nested_namstring = __pyx_t_2;
 
-          /* "netCDF4/_netCDF4.pyx":4084
+          /* "netCDF4/_netCDF4.pyx":4196
  *                     bytestr = _strencode(name)
  *                     nested_namstring = bytestr
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,\             # <<<<<<<<<<<<<<
  *                                                     nested_namstring,\
  *                                                     offset,xtype_tmp,\
  */
-          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_8);
-          __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4087
+          /* "netCDF4/_netCDF4.pyx":4199
  *                                                     nested_namstring,\
  *                                                     offset,xtype_tmp,\
  *                                                     ndims,dim_sizes)             # <<<<<<<<<<<<<<
@@ -44013,7 +44203,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  */
           __pyx_v_ierr = nc_insert_array_compound(__pyx_t_4, __pyx_v_xtype, __pyx_v_nested_namstring, __pyx_v_offset, __pyx_v_xtype_tmp, __pyx_v_ndims, __pyx_v_dim_sizes);
 
-          /* "netCDF4/_netCDF4.pyx":4088
+          /* "netCDF4/_netCDF4.pyx":4200
  *                                                     offset,xtype_tmp,\
  *                                                     ndims,dim_sizes)
  *                     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -44023,7 +44213,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
           __pyx_t_5 = ((__pyx_v_ierr != NC_NOERR) != 0);
           if (__pyx_t_5) {
 
-            /* "netCDF4/_netCDF4.pyx":4089
+            /* "netCDF4/_netCDF4.pyx":4201
  *                                                     ndims,dim_sizes)
  *                     if ierr != NC_NOERR:
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -44031,20 +44221,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  * 
  */
             __pyx_t_2 = ((char *)nc_strerror(__pyx_v_ierr));
-            __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_8 = __Pyx_decode_c_string(__pyx_t_2, 0, strlen(__pyx_t_2), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_8);
-            __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_12);
             __Pyx_INCREF(__pyx_t_8);
             PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8);
             __Pyx_GIVEREF(__pyx_t_8);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_12, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_8);
             __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
             __Pyx_Raise(__pyx_t_8, 0, 0, 0);
             __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
         }
         __pyx_L28:;
@@ -44053,7 +44243,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
     }
     __pyx_L12:;
 
-    /* "netCDF4/_netCDF4.pyx":4043
+    /* "netCDF4/_netCDF4.pyx":4155
  *     formats = _sortbylist(formats, offsets)
  *     offsets.sort()
  *     for name, format, offset in zip(names, formats, offsets):             # <<<<<<<<<<<<<<
@@ -44063,7 +44253,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4090
+  /* "netCDF4/_netCDF4.pyx":4202
  *                     if ierr != NC_NOERR:
  *                         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     return xtype             # <<<<<<<<<<<<<<
@@ -44071,13 +44261,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
  * cdef _find_cmptype(grp, dtype):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_6 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_r = __pyx_t_6;
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4020
+  /* "netCDF4/_netCDF4.pyx":4132
  *         (self.name,self.dtype)
  * 
  * cdef _def_compound(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
@@ -44108,7 +44298,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_compound(PyObject *__pyx_v_grp,
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4092
+/* "netCDF4/_netCDF4.pyx":4204
  *     return xtype
  * 
  * cdef _find_cmptype(grp, dtype):             # <<<<<<<<<<<<<<
@@ -44151,7 +44341,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_find_cmptype", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4096
+  /* "netCDF4/_netCDF4.pyx":4208
  *     # return datatype id when found, if not found, raise exception.
  *     cdef nc_type xtype
  *     match = False             # <<<<<<<<<<<<<<
@@ -44160,16 +44350,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
  */
   __pyx_v_match = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4097
+  /* "netCDF4/_netCDF4.pyx":4209
  *     cdef nc_type xtype
  *     match = False
  *     for cmpname, cmpdt in grp.cmptypes.items():             # <<<<<<<<<<<<<<
  *         xtype = cmpdt._nc_type
  *         names1 = dtype.names; names2 = cmpdt.dtype.names
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_cmptypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_cmptypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -44183,10 +44373,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -44194,9 +44384,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -44204,16 +44394,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -44222,7 +44412,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -44238,7 +44428,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -44251,15 +44441,15 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __Pyx_INCREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_t_6);
       #else
-      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -44267,7 +44457,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __Pyx_GOTREF(__pyx_t_2);
       index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_6);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = NULL;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L6_unpacking_done;
@@ -44275,7 +44465,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L6_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_cmpname, __pyx_t_2);
@@ -44283,50 +44473,50 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
     __Pyx_XDECREF_SET(__pyx_v_cmpdt, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4098
+    /* "netCDF4/_netCDF4.pyx":4210
  *     match = False
  *     for cmpname, cmpdt in grp.cmptypes.items():
  *         xtype = cmpdt._nc_type             # <<<<<<<<<<<<<<
  *         names1 = dtype.names; names2 = cmpdt.dtype.names
  *         formats1 = [v[0] for v in dtype.fields.values()]
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_n_s_nc_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_n_s_nc_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_1); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_1); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_v_xtype = __pyx_t_9;
 
-    /* "netCDF4/_netCDF4.pyx":4099
+    /* "netCDF4/_netCDF4.pyx":4211
  *     for cmpname, cmpdt in grp.cmptypes.items():
  *         xtype = cmpdt._nc_type
  *         names1 = dtype.names; names2 = cmpdt.dtype.names             # <<<<<<<<<<<<<<
  *         formats1 = [v[0] for v in dtype.fields.values()]
  *         formats2 = [v[0] for v in cmpdt.dtype.fields.values()]
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_names1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_names); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_names); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_XDECREF_SET(__pyx_v_names2, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4100
+    /* "netCDF4/_netCDF4.pyx":4212
  *         xtype = cmpdt._nc_type
  *         names1 = dtype.names; names2 = cmpdt.dtype.names
  *         formats1 = [v[0] for v in dtype.fields.values()]             # <<<<<<<<<<<<<<
  *         formats2 = [v[0] for v in cmpdt.dtype.fields.values()]
  *         # match names, formats, but not offsets (they may be changed
  */
-    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_fields); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_fields); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_values); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_values); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -44340,10 +44530,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -44351,9 +44541,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7); __pyx_t_10 = 0;
       __pyx_t_11 = NULL;
     } else {
-      __pyx_t_10 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_11 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     for (;;) {
@@ -44361,16 +44551,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
         if (likely(PyList_CheckExact(__pyx_t_7))) {
           if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -44379,7 +44569,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -44387,30 +44577,30 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       }
       __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_1);
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF_SET(__pyx_v_formats1, ((PyObject*)__pyx_t_6));
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4101
+    /* "netCDF4/_netCDF4.pyx":4213
  *         names1 = dtype.names; names2 = cmpdt.dtype.names
  *         formats1 = [v[0] for v in dtype.fields.values()]
  *         formats2 = [v[0] for v in cmpdt.dtype.fields.values()]             # <<<<<<<<<<<<<<
  *         # match names, formats, but not offsets (they may be changed
  *         # by netcdf lib).
  */
-    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cmpdt, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fields); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fields); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_values); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_values); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -44424,10 +44614,10 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -44435,9 +44625,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
       __pyx_t_11 = NULL;
     } else {
-      __pyx_t_10 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -44445,16 +44635,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
         if (likely(PyList_CheckExact(__pyx_t_1))) {
           if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -44463,7 +44653,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -44471,38 +44661,38 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       }
       __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7);
       __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_v, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_v, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_7);
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_7))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_7))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_XDECREF_SET(__pyx_v_formats2, ((PyObject*)__pyx_t_6));
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4104
+    /* "netCDF4/_netCDF4.pyx":4216
  *         # match names, formats, but not offsets (they may be changed
  *         # by netcdf lib).
  *         if names1==names2 and formats1==formats2:             # <<<<<<<<<<<<<<
  *             match = True
  *             break
  */
-    __pyx_t_6 = PyObject_RichCompare(__pyx_v_names1, __pyx_v_names2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyObject_RichCompare(__pyx_v_names1, __pyx_v_names2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (__pyx_t_13) {
     } else {
       __pyx_t_12 = __pyx_t_13;
       goto __pyx_L12_bool_binop_done;
     }
-    __pyx_t_6 = PyObject_RichCompare(__pyx_v_formats1, __pyx_v_formats2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyObject_RichCompare(__pyx_v_formats1, __pyx_v_formats2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_12 = __pyx_t_13;
     __pyx_L12_bool_binop_done:;
     if (__pyx_t_12) {
 
-      /* "netCDF4/_netCDF4.pyx":4105
+      /* "netCDF4/_netCDF4.pyx":4217
  *         # by netcdf lib).
  *         if names1==names2 and formats1==formats2:
  *             match = True             # <<<<<<<<<<<<<<
@@ -44511,7 +44701,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
  */
       __pyx_v_match = 1;
 
-      /* "netCDF4/_netCDF4.pyx":4106
+      /* "netCDF4/_netCDF4.pyx":4218
  *         if names1==names2 and formats1==formats2:
  *             match = True
  *             break             # <<<<<<<<<<<<<<
@@ -44521,7 +44711,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       goto __pyx_L4_break;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4097
+    /* "netCDF4/_netCDF4.pyx":4209
  *     cdef nc_type xtype
  *     match = False
  *     for cmpname, cmpdt in grp.cmptypes.items():             # <<<<<<<<<<<<<<
@@ -44532,7 +44722,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
   __pyx_L4_break:;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4107
+  /* "netCDF4/_netCDF4.pyx":4219
  *             match = True
  *             break
  *     if not match:             # <<<<<<<<<<<<<<
@@ -44542,7 +44732,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
   __pyx_t_12 = ((!(__pyx_v_match != 0)) != 0);
   if (__pyx_t_12) {
 
-    /* "netCDF4/_netCDF4.pyx":4108
+    /* "netCDF4/_netCDF4.pyx":4220
  *             break
  *     if not match:
  *         try:             # <<<<<<<<<<<<<<
@@ -44556,14 +44746,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __Pyx_XGOTREF(__pyx_t_16);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4109
+        /* "netCDF4/_netCDF4.pyx":4221
  *     if not match:
  *         try:
  *             parent_grp = grp.parent             # <<<<<<<<<<<<<<
  *         except AttributeError:
  *             raise ValueError("cannot find compound type in this group or parent groups")
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4109; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4221; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_v_parent_grp = __pyx_t_3;
         __pyx_t_3 = 0;
@@ -44579,7 +44769,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4110
+      /* "netCDF4/_netCDF4.pyx":4222
  *         try:
  *             parent_grp = grp.parent
  *         except AttributeError:             # <<<<<<<<<<<<<<
@@ -44589,23 +44779,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __pyx_t_17 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
       if (__pyx_t_17) {
         __Pyx_AddTraceback("netCDF4._netCDF4._find_cmptype", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_6, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4110; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_6, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4222; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GOTREF(__pyx_t_1);
 
-        /* "netCDF4/_netCDF4.pyx":4111
+        /* "netCDF4/_netCDF4.pyx":4223
  *             parent_grp = grp.parent
  *         except AttributeError:
  *             raise ValueError("cannot find compound type in this group or parent groups")             # <<<<<<<<<<<<<<
  *         if parent_grp is None:
  *             raise ValueError("cannot find compound type in this group or parent groups")
  */
-        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4111; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4223; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_Raise(__pyx_t_7, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4111; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4223; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
       }
       goto __pyx_L17_except_error;
       __pyx_L17_except_error:;
@@ -44617,7 +44807,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
       __pyx_L22_try_end:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4112
+    /* "netCDF4/_netCDF4.pyx":4224
  *         except AttributeError:
  *             raise ValueError("cannot find compound type in this group or parent groups")
  *         if parent_grp is None:             # <<<<<<<<<<<<<<
@@ -44628,31 +44818,31 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
     __pyx_t_13 = (__pyx_t_12 != 0);
     if (__pyx_t_13) {
 
-      /* "netCDF4/_netCDF4.pyx":4113
+      /* "netCDF4/_netCDF4.pyx":4225
  *             raise ValueError("cannot find compound type in this group or parent groups")
  *         if parent_grp is None:
  *             raise ValueError("cannot find compound type in this group or parent groups")             # <<<<<<<<<<<<<<
  *         else:
  *             xtype = _find_cmptype(parent_grp,dtype)
  */
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4115
+      /* "netCDF4/_netCDF4.pyx":4227
  *             raise ValueError("cannot find compound type in this group or parent groups")
  *         else:
  *             xtype = _find_cmptype(parent_grp,dtype)             # <<<<<<<<<<<<<<
  *     return xtype
  * 
  */
-      __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_parent_grp, __pyx_v_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__find_cmptype(__pyx_v_parent_grp, __pyx_v_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_1); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyInt_As_nc_type(__pyx_t_1); if (unlikely((__pyx_t_9 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_v_xtype = __pyx_t_9;
     }
@@ -44660,7 +44850,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
   }
   __pyx_L14:;
 
-  /* "netCDF4/_netCDF4.pyx":4116
+  /* "netCDF4/_netCDF4.pyx":4228
  *         else:
  *             xtype = _find_cmptype(parent_grp,dtype)
  *     return xtype             # <<<<<<<<<<<<<<
@@ -44668,13 +44858,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
  * cdef _read_compound(group, nc_type xtype, endian=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4092
+  /* "netCDF4/_netCDF4.pyx":4204
  *     return xtype
  * 
  * cdef _find_cmptype(grp, dtype):             # <<<<<<<<<<<<<<
@@ -44705,7 +44895,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__find_cmptype(PyObject *__pyx_v_grp,
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4118
+/* "netCDF4/_netCDF4.pyx":4230
  *     return xtype
  * 
  * cdef _read_compound(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
@@ -44765,20 +44955,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
     }
   }
 
-  /* "netCDF4/_netCDF4.pyx":4131
+  /* "netCDF4/_netCDF4.pyx":4243
  *     cdef char cmp_namstring[NC_MAX_NAME+1]
  *     # get name and number of fields.
  *     _grpid = group._grpid             # <<<<<<<<<<<<<<
  *     with nogil:
  *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":4132
+  /* "netCDF4/_netCDF4.pyx":4244
  *     # get name and number of fields.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -44792,7 +44982,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       #endif
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4133
+        /* "netCDF4/_netCDF4.pyx":4245
  *     _grpid = group._grpid
  *     with nogil:
  *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)             # <<<<<<<<<<<<<<
@@ -44802,7 +44992,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
         __pyx_v_ierr = nc_inq_compound(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_cmp_namstring, NULL, (&__pyx_v_nfields));
       }
 
-      /* "netCDF4/_netCDF4.pyx":4132
+      /* "netCDF4/_netCDF4.pyx":4244
  *     # get name and number of fields.
  *     _grpid = group._grpid
  *     with nogil:             # <<<<<<<<<<<<<<
@@ -44820,7 +45010,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       }
   }
 
-  /* "netCDF4/_netCDF4.pyx":4134
+  /* "netCDF4/_netCDF4.pyx":4246
  *     with nogil:
  *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
  *     if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -44830,7 +45020,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":4135
+    /* "netCDF4/_netCDF4.pyx":4247
  *         ierr = nc_inq_compound(_grpid, xtype, cmp_namstring, NULL, &nfields)
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -44838,37 +45028,37 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
  *     # loop over fields.
  */
     __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_INCREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4136
+  /* "netCDF4/_netCDF4.pyx":4248
  *     if ierr != NC_NOERR:
  *         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *     name = cmp_namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *     # loop over fields.
  *     names = []
  */
-  __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_cmp_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_cmp_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_8 = NULL;
   __pyx_t_9 = 0;
@@ -44882,7 +45072,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   if (__pyx_t_8) {
     PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -44893,50 +45083,50 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   __Pyx_GIVEREF(__pyx_t_7);
   __pyx_t_5 = 0;
   __pyx_t_7 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_name = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4138
+  /* "netCDF4/_netCDF4.pyx":4250
  *     name = cmp_namstring.decode(default_encoding,unicode_error)
  *     # loop over fields.
  *     names = []             # <<<<<<<<<<<<<<
  *     formats = []
  *     offsets = []
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_names = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4139
+  /* "netCDF4/_netCDF4.pyx":4251
  *     # loop over fields.
  *     names = []
  *     formats = []             # <<<<<<<<<<<<<<
  *     offsets = []
  *     for nf from 0 <= nf < nfields:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_formats = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4140
+  /* "netCDF4/_netCDF4.pyx":4252
  *     names = []
  *     formats = []
  *     offsets = []             # <<<<<<<<<<<<<<
  *     for nf from 0 <= nf < nfields:
  *         with nogil:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_offsets = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4141
+  /* "netCDF4/_netCDF4.pyx":4253
  *     formats = []
  *     offsets = []
  *     for nf from 0 <= nf < nfields:             # <<<<<<<<<<<<<<
@@ -44946,7 +45136,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   __pyx_t_11 = __pyx_v_nfields;
   for (__pyx_v_nf = 0; __pyx_v_nf < __pyx_t_11; __pyx_v_nf++) {
 
-    /* "netCDF4/_netCDF4.pyx":4142
+    /* "netCDF4/_netCDF4.pyx":4254
  *     offsets = []
  *     for nf from 0 <= nf < nfields:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -44960,7 +45150,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":4143
+          /* "netCDF4/_netCDF4.pyx":4255
  *     for nf from 0 <= nf < nfields:
  *         with nogil:
  *             ierr = nc_inq_compound_field(_grpid,             # <<<<<<<<<<<<<<
@@ -44970,7 +45160,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
           __pyx_v_ierr = nc_inq_compound_field(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_nf, __pyx_v_field_namstring, (&__pyx_v_offset), (&__pyx_v_field_typeid), (&__pyx_v_numdims), __pyx_v_dim_sizes);
         }
 
-        /* "netCDF4/_netCDF4.pyx":4142
+        /* "netCDF4/_netCDF4.pyx":4254
  *     offsets = []
  *     for nf from 0 <= nf < nfields:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -44988,7 +45178,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":4151
+    /* "netCDF4/_netCDF4.pyx":4263
  *                                          &numdims,
  *                                          dim_sizes)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -44998,7 +45188,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
     __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":4152
+      /* "netCDF4/_netCDF4.pyx":4264
  *                                          dim_sizes)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -45006,37 +45196,37 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
  *         names.append(field_name)
  */
       __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":4153
+    /* "netCDF4/_netCDF4.pyx":4265
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         field_name = field_namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *         names.append(field_name)
  *         offsets.append(offset)
  */
-    __pyx_t_6 = __Pyx_PyObject_FromString(__pyx_v_field_namstring); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_FromString(__pyx_v_field_namstring); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_5 = NULL;
     __pyx_t_9 = 0;
@@ -45050,7 +45240,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
         __pyx_t_9 = 1;
       }
     }
-    __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_8);
     if (__pyx_t_5) {
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -45061,35 +45251,35 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
     __Pyx_GIVEREF(__pyx_t_7);
     __pyx_t_6 = 0;
     __pyx_t_7 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __Pyx_XDECREF_SET(__pyx_v_field_name, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4154
+    /* "netCDF4/_netCDF4.pyx":4266
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         field_name = field_namstring.decode(default_encoding,unicode_error)
  *         names.append(field_name)             # <<<<<<<<<<<<<<
  *         offsets.append(offset)
  *         # if numdims=0, not an array.
  */
-    __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_names, __pyx_v_field_name); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_names, __pyx_v_field_name); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "netCDF4/_netCDF4.pyx":4155
+    /* "netCDF4/_netCDF4.pyx":4267
  *         field_name = field_namstring.decode(default_encoding,unicode_error)
  *         names.append(field_name)
  *         offsets.append(offset)             # <<<<<<<<<<<<<<
  *         # if numdims=0, not an array.
  *         field_shape = ()
  */
-    __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_offset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_offset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_offsets, __pyx_t_1); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_offsets, __pyx_t_1); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4157
+    /* "netCDF4/_netCDF4.pyx":4269
  *         offsets.append(offset)
  *         # if numdims=0, not an array.
  *         field_shape = ()             # <<<<<<<<<<<<<<
@@ -45099,7 +45289,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
     __Pyx_INCREF(__pyx_empty_tuple);
     __Pyx_XDECREF_SET(__pyx_v_field_shape, __pyx_empty_tuple);
 
-    /* "netCDF4/_netCDF4.pyx":4158
+    /* "netCDF4/_netCDF4.pyx":4270
  *         # if numdims=0, not an array.
  *         field_shape = ()
  *         if numdims != 0:             # <<<<<<<<<<<<<<
@@ -45109,7 +45299,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
     __pyx_t_3 = ((__pyx_v_numdims != 0) != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":4159
+      /* "netCDF4/_netCDF4.pyx":4271
  *         field_shape = ()
  *         if numdims != 0:
  *             for ndim from 0 <= ndim < numdims:             # <<<<<<<<<<<<<<
@@ -45119,21 +45309,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __pyx_t_2 = __pyx_v_numdims;
       for (__pyx_v_ndim = 0; __pyx_v_ndim < __pyx_t_2; __pyx_v_ndim++) {
 
-        /* "netCDF4/_netCDF4.pyx":4160
+        /* "netCDF4/_netCDF4.pyx":4272
  *         if numdims != 0:
  *             for ndim from 0 <= ndim < numdims:
  *                 field_shape = field_shape + (dim_sizes[ndim],)             # <<<<<<<<<<<<<<
  *         # check to see if this field is a nested compound type.
  *         try:
  */
-        __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_dim_sizes[__pyx_v_ndim])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_dim_sizes[__pyx_v_ndim])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_1);
         __pyx_t_1 = 0;
-        __pyx_t_1 = PyNumber_Add(__pyx_v_field_shape, __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyNumber_Add(__pyx_v_field_shape, __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_DECREF_SET(__pyx_v_field_shape, __pyx_t_1);
@@ -45143,7 +45333,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
     }
     __pyx_L15:;
 
-    /* "netCDF4/_netCDF4.pyx":4162
+    /* "netCDF4/_netCDF4.pyx":4274
  *                 field_shape = field_shape + (dim_sizes[ndim],)
  *         # check to see if this field is a nested compound type.
  *         try:             # <<<<<<<<<<<<<<
@@ -45157,22 +45347,22 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __Pyx_XGOTREF(__pyx_t_15);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4163
+        /* "netCDF4/_netCDF4.pyx":4275
  *         # check to see if this field is a nested compound type.
  *         try:
  *             field_type =  _nctonptype[field_typeid]             # <<<<<<<<<<<<<<
  *             if endian is not None:
  *                 format = endian + format
  */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4163; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
+        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4275; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_field_typeid, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4163; __pyx_clineno = __LINE__; goto __pyx_L18_error;};
+        __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_field_typeid, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4275; __pyx_clineno = __LINE__; goto __pyx_L18_error;};
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_XDECREF_SET(__pyx_v_field_type, __pyx_t_10);
         __pyx_t_10 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4164
+        /* "netCDF4/_netCDF4.pyx":4276
  *         try:
  *             field_type =  _nctonptype[field_typeid]
  *             if endian is not None:             # <<<<<<<<<<<<<<
@@ -45183,15 +45373,15 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
         __pyx_t_16 = (__pyx_t_3 != 0);
         if (__pyx_t_16) {
 
-          /* "netCDF4/_netCDF4.pyx":4165
+          /* "netCDF4/_netCDF4.pyx":4277
  *             field_type =  _nctonptype[field_typeid]
  *             if endian is not None:
  *                 format = endian + format             # <<<<<<<<<<<<<<
  *         except KeyError:
  *             with nogil:
  */
-          if (unlikely(!__pyx_v_format)) { __Pyx_RaiseUnboundLocalError("format"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4165; __pyx_clineno = __LINE__; goto __pyx_L18_error;} }
-          __pyx_t_10 = PyNumber_Add(__pyx_v_endian, __pyx_v_format); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4165; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
+          if (unlikely(!__pyx_v_format)) { __Pyx_RaiseUnboundLocalError("format"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4277; __pyx_clineno = __LINE__; goto __pyx_L18_error;} }
+          __pyx_t_10 = PyNumber_Add(__pyx_v_endian, __pyx_v_format); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4277; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
           __Pyx_GOTREF(__pyx_t_10);
           __Pyx_XDECREF_SET(__pyx_v_format, __pyx_t_10);
           __pyx_t_10 = 0;
@@ -45211,7 +45401,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4166
+      /* "netCDF4/_netCDF4.pyx":4278
  *             if endian is not None:
  *                 format = endian + format
  *         except KeyError:             # <<<<<<<<<<<<<<
@@ -45221,12 +45411,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __pyx_t_2 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
       if (__pyx_t_2) {
         __Pyx_AddTraceback("netCDF4._netCDF4._read_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_1, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4166; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+        if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_1, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4278; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_GOTREF(__pyx_t_8);
 
-        /* "netCDF4/_netCDF4.pyx":4167
+        /* "netCDF4/_netCDF4.pyx":4279
  *                 format = endian + format
  *         except KeyError:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -45240,7 +45430,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
             #endif
             /*try:*/ {
 
-              /* "netCDF4/_netCDF4.pyx":4168
+              /* "netCDF4/_netCDF4.pyx":4280
  *         except KeyError:
  *             with nogil:
  *                 ierr = nc_inq_user_type(_grpid,             # <<<<<<<<<<<<<<
@@ -45250,7 +45440,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
               __pyx_v_ierr = nc_inq_user_type(__pyx_v__grpid, __pyx_v_field_typeid, NULL, NULL, NULL, NULL, (&__pyx_v_classp));
             }
 
-            /* "netCDF4/_netCDF4.pyx":4167
+            /* "netCDF4/_netCDF4.pyx":4279
  *                 format = endian + format
  *         except KeyError:
  *             with nogil:             # <<<<<<<<<<<<<<
@@ -45268,7 +45458,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
             }
         }
 
-        /* "netCDF4/_netCDF4.pyx":4170
+        /* "netCDF4/_netCDF4.pyx":4282
  *                 ierr = nc_inq_user_type(_grpid,
  *                        field_typeid,NULL,NULL,NULL,NULL,&classp)
  *             if classp == NC_COMPOUND: # a compound type             # <<<<<<<<<<<<<<
@@ -45278,7 +45468,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
         __pyx_t_16 = ((__pyx_v_classp == NC_COMPOUND) != 0);
         if (__pyx_t_16) {
 
-          /* "netCDF4/_netCDF4.pyx":4172
+          /* "netCDF4/_netCDF4.pyx":4284
  *             if classp == NC_COMPOUND: # a compound type
  *                 # recursively call this function?
  *                 field_type = _read_compound(group, field_typeid, endian=endian)             # <<<<<<<<<<<<<<
@@ -45287,7 +45477,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
  */
           __pyx_t_17.__pyx_n = 1;
           __pyx_t_17.endian = __pyx_v_endian;
-          __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_field_typeid, &__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4172; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+          __pyx_t_7 = __pyx_f_7netCDF4_8_netCDF4__read_compound(__pyx_v_group, __pyx_v_field_typeid, &__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4284; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_XDECREF_SET(__pyx_v_field_type, __pyx_t_7);
           __pyx_t_7 = 0;
@@ -45295,18 +45485,18 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":4174
+          /* "netCDF4/_netCDF4.pyx":4286
  *                 field_type = _read_compound(group, field_typeid, endian=endian)
  *             else:
  *                 raise KeyError('compound field of an unsupported data type')             # <<<<<<<<<<<<<<
  *         if field_shape != ():
  *             formats.append((field_type,field_shape))
  */
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4174; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4286; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_Raise(__pyx_t_7, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4174; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4286; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
         }
         __pyx_L34:;
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -45329,26 +45519,26 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __pyx_L25_try_end:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4175
+    /* "netCDF4/_netCDF4.pyx":4287
  *             else:
  *                 raise KeyError('compound field of an unsupported data type')
  *         if field_shape != ():             # <<<<<<<<<<<<<<
  *             formats.append((field_type,field_shape))
  *         else:
  */
-    __pyx_t_8 = PyObject_RichCompare(__pyx_v_field_shape, __pyx_empty_tuple, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = PyObject_RichCompare(__pyx_v_field_shape, __pyx_empty_tuple, Py_NE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     if (__pyx_t_16) {
 
-      /* "netCDF4/_netCDF4.pyx":4176
+      /* "netCDF4/_netCDF4.pyx":4288
  *                 raise KeyError('compound field of an unsupported data type')
  *         if field_shape != ():
  *             formats.append((field_type,field_shape))             # <<<<<<<<<<<<<<
  *         else:
  *             formats.append(field_type)
  */
-      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_v_field_type);
       PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_field_type);
@@ -45356,32 +45546,32 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __Pyx_INCREF(__pyx_v_field_shape);
       PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_field_shape);
       __Pyx_GIVEREF(__pyx_v_field_shape);
-      __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_formats, __pyx_t_8); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_formats, __pyx_t_8); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L35;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4178
+      /* "netCDF4/_netCDF4.pyx":4290
  *             formats.append((field_type,field_shape))
  *         else:
  *             formats.append(field_type)             # <<<<<<<<<<<<<<
  *     # make sure entries in lists sorted by offset.
  *     names = _sortbylist(names, offsets)
  */
-      __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_formats, __pyx_v_field_type); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_formats, __pyx_v_field_type); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L35:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4180
+  /* "netCDF4/_netCDF4.pyx":4292
  *             formats.append(field_type)
  *     # make sure entries in lists sorted by offset.
  *     names = _sortbylist(names, offsets)             # <<<<<<<<<<<<<<
  *     formats = _sortbylist(formats, offsets)
  *     offsets.sort()
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_10 = NULL;
   __pyx_t_9 = 0;
@@ -45395,7 +45585,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (__pyx_t_10) {
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_10); __pyx_t_10 = NULL;
@@ -45406,21 +45596,21 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   __Pyx_INCREF(__pyx_v_offsets);
   PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_v_offsets);
   __Pyx_GIVEREF(__pyx_v_offsets);
-  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF_SET(__pyx_v_names, __pyx_t_8);
   __pyx_t_8 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4181
+  /* "netCDF4/_netCDF4.pyx":4293
  *     # make sure entries in lists sorted by offset.
  *     names = _sortbylist(names, offsets)
  *     formats = _sortbylist(formats, offsets)             # <<<<<<<<<<<<<<
  *     offsets.sort()
  *     # create a dict that can be converted into a numpy dtype.
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sortbylist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_7 = NULL;
   __pyx_t_9 = 0;
@@ -45434,7 +45624,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
       __pyx_t_9 = 1;
     }
   }
-  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   if (__pyx_t_7) {
     PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -45445,38 +45635,38 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   __Pyx_INCREF(__pyx_v_offsets);
   PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_offsets);
   __Pyx_GIVEREF(__pyx_v_offsets);
-  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF_SET(__pyx_v_formats, __pyx_t_8);
   __pyx_t_8 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4182
+  /* "netCDF4/_netCDF4.pyx":4294
  *     names = _sortbylist(names, offsets)
  *     formats = _sortbylist(formats, offsets)
  *     offsets.sort()             # <<<<<<<<<<<<<<
  *     # create a dict that can be converted into a numpy dtype.
  *     dtype_dict = {'names':names,'formats':formats,'offsets':offsets}
  */
-  __pyx_t_12 = PyList_Sort(__pyx_v_offsets); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = PyList_Sort(__pyx_v_offsets); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4184
+  /* "netCDF4/_netCDF4.pyx":4296
  *     offsets.sort()
  *     # create a dict that can be converted into a numpy dtype.
  *     dtype_dict = {'names':names,'formats':formats,'offsets':offsets}             # <<<<<<<<<<<<<<
  *     return CompoundType(group, dtype_dict, name, typeid=xtype)
  * 
  */
-  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
-  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_names, __pyx_v_names) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_formats, __pyx_v_formats) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_offsets, __pyx_v_offsets) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_names, __pyx_v_names) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_formats, __pyx_v_formats) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_offsets, __pyx_v_offsets) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_dtype_dict = ((PyObject*)__pyx_t_8);
   __pyx_t_8 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4185
+  /* "netCDF4/_netCDF4.pyx":4297
  *     # create a dict that can be converted into a numpy dtype.
  *     dtype_dict = {'names':names,'formats':formats,'offsets':offsets}
  *     return CompoundType(group, dtype_dict, name, typeid=xtype)             # <<<<<<<<<<<<<<
@@ -45484,7 +45674,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
  * # VLEN datatype support.
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_INCREF(__pyx_v_group);
   PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_group);
@@ -45495,13 +45685,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   __Pyx_INCREF(__pyx_v_name);
   PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_name);
   __Pyx_GIVEREF(__pyx_v_name);
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_10 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_typeid, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_typeid, __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_CompoundType)), __pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_CompoundType)), __pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -45509,7 +45699,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   __pyx_t_10 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4118
+  /* "netCDF4/_netCDF4.pyx":4230
  *     return xtype
  * 
  * cdef _read_compound(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
@@ -45542,16 +45732,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_compound(PyObject *__pyx_v_gro
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4223
- *     cdef public nc_type _nc_type
- *     cdef public dtype, name
+/* "netCDF4/_netCDF4.pyx":4317
+ *     __pdoc__['VLType.dtype'] = \
+ *     """A numpy dtype object describing the component type for the VLEN."""
  *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef nc_type xtype
- *         if 'typeid' in kwargs:
+ *         """
+ *         **`__init__(group, datatype, datatype_name)`**
  */
 
 /* Python wrapper */
 static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_7netCDF4_8_netCDF4_6VLType___init__[] = "\n        **`__init__(group, datatype, datatype_name)`**\n\n        VLType constructor.\n\n        **`group`**: `netCDF4.Group` instance to associate with the VLEN datatype.\n        \n        **`datatype`**: An numpy dtype object describing a the component type for the\n        variable length array.\n        \n        **`datatype_name`**: a Python string containing a description of the\n        VLEN data type.\n\n        ** [...]
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__;
+#endif
 static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_grp = 0;
   PyObject *__pyx_v_dt = 0;
@@ -45586,16 +45780,16 @@ static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_1__init__(PyObject *__pyx_v_self,
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -45610,7 +45804,7 @@ static int __pyx_pw_7netCDF4_8_netCDF4_6VLType_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4223; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
   __Pyx_AddTraceback("netCDF4._netCDF4.VLType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -45643,41 +45837,41 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_dt);
 
-  /* "netCDF4/_netCDF4.pyx":4225
- *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+  /* "netCDF4/_netCDF4.pyx":4336
+ *         """
  *         cdef nc_type xtype
  *         if 'typeid' in kwargs:             # <<<<<<<<<<<<<<
  *             xtype = kwargs['typeid']
  *         else:
  */
-  __pyx_t_1 = (__Pyx_PyDict_Contains(__pyx_n_s_typeid, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyDict_Contains(__pyx_n_s_typeid, __pyx_v_kwargs, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4226
+    /* "netCDF4/_netCDF4.pyx":4337
  *         cdef nc_type xtype
  *         if 'typeid' in kwargs:
  *             xtype = kwargs['typeid']             # <<<<<<<<<<<<<<
  *         else:
  *             xtype, dt = _def_vlen(grp, dt, dtype_name)
  */
-    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_typeid); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4226; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_kwargs, __pyx_n_s_typeid); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4337; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyInt_As_nc_type(__pyx_t_3); if (unlikely((__pyx_t_4 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_As_nc_type(__pyx_t_3); if (unlikely((__pyx_t_4 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_xtype = __pyx_t_4;
     goto __pyx_L3;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4228
+    /* "netCDF4/_netCDF4.pyx":4339
  *             xtype = kwargs['typeid']
  *         else:
  *             xtype, dt = _def_vlen(grp, dt, dtype_name)             # <<<<<<<<<<<<<<
  *         self._nc_type = xtype
  *         self.dtype = dt
  */
-    __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__def_vlen(__pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __pyx_f_7netCDF4_8_netCDF4__def_vlen(__pyx_v_grp, __pyx_v_dt, __pyx_v_dtype_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
       PyObject* sequence = __pyx_t_3;
@@ -45689,7 +45883,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -45702,15 +45896,15 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
       __Pyx_INCREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_6);
       #else
-      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       #endif
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -45718,7 +45912,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
       __Pyx_GOTREF(__pyx_t_5);
       index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_6);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = NULL;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L5_unpacking_done;
@@ -45726,10 +45920,10 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L5_unpacking_done:;
     }
-    __pyx_t_4 = __Pyx_PyInt_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_4 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyInt_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_4 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_v_xtype = __pyx_t_4;
     __Pyx_DECREF_SET(__pyx_v_dt, __pyx_t_6);
@@ -45737,7 +45931,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4229
+  /* "netCDF4/_netCDF4.pyx":4340
  *         else:
  *             xtype, dt = _def_vlen(grp, dt, dtype_name)
  *         self._nc_type = xtype             # <<<<<<<<<<<<<<
@@ -45746,7 +45940,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
  */
   __pyx_v_self->_nc_type = __pyx_v_xtype;
 
-  /* "netCDF4/_netCDF4.pyx":4230
+  /* "netCDF4/_netCDF4.pyx":4341
  *             xtype, dt = _def_vlen(grp, dt, dtype_name)
  *         self._nc_type = xtype
  *         self.dtype = dt             # <<<<<<<<<<<<<<
@@ -45759,19 +45953,19 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
   __Pyx_DECREF(__pyx_v_self->dtype);
   __pyx_v_self->dtype = __pyx_v_dt;
 
-  /* "netCDF4/_netCDF4.pyx":4231
+  /* "netCDF4/_netCDF4.pyx":4342
  *         self._nc_type = xtype
  *         self.dtype = dt
  *         if dt == str:             # <<<<<<<<<<<<<<
  *             self.name = None
  *         else:
  */
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_dt, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(__pyx_v_dt, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4232
+    /* "netCDF4/_netCDF4.pyx":4343
  *         self.dtype = dt
  *         if dt == str:
  *             self.name = None             # <<<<<<<<<<<<<<
@@ -45787,7 +45981,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4234
+    /* "netCDF4/_netCDF4.pyx":4345
  *             self.name = None
  *         else:
  *             self.name = dtype_name             # <<<<<<<<<<<<<<
@@ -45802,12 +45996,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
   }
   __pyx_L6:;
 
-  /* "netCDF4/_netCDF4.pyx":4223
- *     cdef public nc_type _nc_type
- *     cdef public dtype, name
+  /* "netCDF4/_netCDF4.pyx":4317
+ *     __pdoc__['VLType.dtype'] = \
+ *     """A numpy dtype object describing the component type for the VLEN."""
  *     def __init__(self, grp, object dt, object dtype_name, **kwargs):             # <<<<<<<<<<<<<<
- *         cdef nc_type xtype
- *         if 'typeid' in kwargs:
+ *         """
+ *         **`__init__(group, datatype, datatype_name)`**
  */
 
   /* function exit code */
@@ -45826,7 +46020,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType___init__(struct __pyx_obj_7netCDF
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4236
+/* "netCDF4/_netCDF4.pyx":4347
  *             self.name = dtype_name
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -45861,20 +46055,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4237
+  /* "netCDF4/_netCDF4.pyx":4348
  * 
  *     def __repr__(self):
  *         if python3:             # <<<<<<<<<<<<<<
  *             return self.__unicode__()
  *         else:
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_python3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4238
+    /* "netCDF4/_netCDF4.pyx":4349
  *     def __repr__(self):
  *         if python3:
  *             return self.__unicode__()             # <<<<<<<<<<<<<<
@@ -45882,7 +46076,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
  *             return unicode(self).encode(default_encoding)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unicode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -45895,10 +46089,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -45908,7 +46102,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4240
+    /* "netCDF4/_netCDF4.pyx":4351
  *             return self.__unicode__()
  *         else:
  *             return unicode(self).encode(default_encoding)             # <<<<<<<<<<<<<<
@@ -45916,18 +46110,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
  *     def __unicode__(self):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -45940,17 +46134,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
       }
     }
     if (!__pyx_t_5) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
       __Pyx_GIVEREF(__pyx_t_4);
       __pyx_t_4 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -45960,7 +46154,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4236
+  /* "netCDF4/_netCDF4.pyx":4347
  *             self.name = dtype_name
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -45983,7 +46177,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_2__repr__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4242
+/* "netCDF4/_netCDF4.pyx":4353
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -46016,19 +46210,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__unicode__(struct __pyx_o
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__unicode__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4243
+  /* "netCDF4/_netCDF4.pyx":4354
  * 
  *     def __unicode__(self):
  *         if self.dtype == str:             # <<<<<<<<<<<<<<
  *             return repr(type(self))+': string type'
  *         else:
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_self->dtype, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4244
+    /* "netCDF4/_netCDF4.pyx":4355
  *     def __unicode__(self):
  *         if self.dtype == str:
  *             return repr(type(self))+': string type'             # <<<<<<<<<<<<<<
@@ -46036,9 +46230,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__unicode__(struct __pyx_o
  *             return repr(type(self))+": name = '%s', numpy dtype = %s\n" %\
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_string_type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_string_type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_r = __pyx_t_3;
@@ -46047,7 +46241,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__unicode__(struct __pyx_o
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4246
+    /* "netCDF4/_netCDF4.pyx":4357
  *             return repr(type(self))+': string type'
  *         else:
  *             return repr(type(self))+": name = '%s', numpy dtype = %s\n" %\             # <<<<<<<<<<<<<<
@@ -46055,17 +46249,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__unicode__(struct __pyx_o
  * 
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_Repr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
 
-    /* "netCDF4/_netCDF4.pyx":4247
+    /* "netCDF4/_netCDF4.pyx":4358
  *         else:
  *             return repr(type(self))+": name = '%s', numpy dtype = %s\n" %\
  *             (self.name, self.dtype)             # <<<<<<<<<<<<<<
  * 
  * cdef _def_vlen(grp, object dt, object dtype_name):
  */
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_self->name);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->name);
@@ -46074,17 +46268,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__unicode__(struct __pyx_o
     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->dtype);
     __Pyx_GIVEREF(__pyx_v_self->dtype);
 
-    /* "netCDF4/_netCDF4.pyx":4246
+    /* "netCDF4/_netCDF4.pyx":4357
  *             return repr(type(self))+': string type'
  *         else:
  *             return repr(type(self))+": name = '%s', numpy dtype = %s\n" %\             # <<<<<<<<<<<<<<
  *             (self.name, self.dtype)
  * 
  */
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_name_s_numpy_dtype_s, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_name_s_numpy_dtype_s, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -46093,7 +46287,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__unicode__(struct __pyx_o
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4242
+  /* "netCDF4/_netCDF4.pyx":4353
  *             return unicode(self).encode(default_encoding)
  * 
  *     def __unicode__(self):             # <<<<<<<<<<<<<<
@@ -46114,12 +46308,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_4__unicode__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4221
- * @ivar name: A python string describing the VLEN type.
+/* "netCDF4/_netCDF4.pyx":4311
+ * the user.
  * """
  *     cdef public nc_type _nc_type             # <<<<<<<<<<<<<<
  *     cdef public dtype, name
- *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+ *     __pdoc__['VLType.name'] = \
  */
 
 /* Python wrapper */
@@ -46144,7 +46338,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6VLType_8_nc_type___get__(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__get__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_nc_type(__pyx_v_self->_nc_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_From_nc_type(__pyx_v_self->_nc_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -46182,7 +46376,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_8_nc_type_2__set__(struct __pyx_o
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__set__", 0);
-  __pyx_t_1 = __Pyx_PyInt_As_nc_type(__pyx_v_value); if (unlikely((__pyx_t_1 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_As_nc_type(__pyx_v_value); if (unlikely((__pyx_t_1 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_v_self->_nc_type = __pyx_t_1;
 
   /* function exit code */
@@ -46196,12 +46390,12 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_8_nc_type_2__set__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4222
+/* "netCDF4/_netCDF4.pyx":4312
  * """
  *     cdef public nc_type _nc_type
  *     cdef public dtype, name             # <<<<<<<<<<<<<<
- *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
- *         cdef nc_type xtype
+ *     __pdoc__['VLType.name'] = \
+ *     """String name."""
  */
 
 /* Python wrapper */
@@ -46378,7 +46572,7 @@ static int __pyx_pf_7netCDF4_8_netCDF4_6VLType_4name_4__del__(struct __pyx_obj_7
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4249
+/* "netCDF4/_netCDF4.pyx":4360
  *             (self.name, self.dtype)
  * 
  * cdef _def_vlen(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
@@ -46409,19 +46603,19 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
   __Pyx_RefNannySetupContext("_def_vlen", 0);
   __Pyx_INCREF(__pyx_v_dt);
 
-  /* "netCDF4/_netCDF4.pyx":4258
+  /* "netCDF4/_netCDF4.pyx":4369
  *     cdef char *nested_namstring
  *     cdef int dim_sizes[NC_MAX_DIMS]
  *     if dt == str: # python string, use NC_STRING             # <<<<<<<<<<<<<<
  *         xtype = NC_STRING
  *         # dtype_name ignored
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_dt, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_dt, ((PyObject *)((PyObject*)(&PyString_Type))), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4259
+    /* "netCDF4/_netCDF4.pyx":4370
  *     cdef int dim_sizes[NC_MAX_DIMS]
  *     if dt == str: # python string, use NC_STRING
  *         xtype = NC_STRING             # <<<<<<<<<<<<<<
@@ -46433,38 +46627,38 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4262
+    /* "netCDF4/_netCDF4.pyx":4373
  *         # dtype_name ignored
  *     else: # numpy datatype
  *         bytestr = _strencode(dtype_name)             # <<<<<<<<<<<<<<
  *         namstring = bytestr
  *         dt = numpy.dtype(dt) # convert to numpy datatype.
  */
-    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_dtype_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __pyx_f_7netCDF4_8_netCDF4__strencode(__pyx_v_dtype_name, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_bytestr = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4263
+    /* "netCDF4/_netCDF4.pyx":4374
  *     else: # numpy datatype
  *         bytestr = _strencode(dtype_name)
  *         namstring = bytestr             # <<<<<<<<<<<<<<
  *         dt = numpy.dtype(dt) # convert to numpy datatype.
  *         if dt.str[1:] in _supportedtypes:
  */
-    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_bytestr); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_v_namstring = __pyx_t_3;
 
-    /* "netCDF4/_netCDF4.pyx":4264
+    /* "netCDF4/_netCDF4.pyx":4375
  *         bytestr = _strencode(dtype_name)
  *         namstring = bytestr
  *         dt = numpy.dtype(dt) # convert to numpy datatype.             # <<<<<<<<<<<<<<
  *         if dt.str[1:] in _supportedtypes:
  *             # find netCDF primitive data type corresponding to
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -46478,16 +46672,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
       }
     }
     if (!__pyx_t_4) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_dt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_dt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
       __Pyx_INCREF(__pyx_v_dt);
       PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_dt);
       __Pyx_GIVEREF(__pyx_v_dt);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     }
@@ -46495,62 +46689,62 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
     __Pyx_DECREF_SET(__pyx_v_dt, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4265
+    /* "netCDF4/_netCDF4.pyx":4376
  *         namstring = bytestr
  *         dt = numpy.dtype(dt) # convert to numpy datatype.
  *         if dt.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
  *             # find netCDF primitive data type corresponding to
  *             # specified numpy data type.
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__91, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_1, 1, 0, NULL, NULL, &__pyx_slice__92, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_supportedtypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_t_5, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_t_5, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_7 = (__pyx_t_2 != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":4268
+      /* "netCDF4/_netCDF4.pyx":4379
  *             # find netCDF primitive data type corresponding to
  *             # specified numpy data type.
  *             xtype_tmp = _nptonctype[dt.str[1:]]             # <<<<<<<<<<<<<<
  *             ierr = nc_def_vlen(grp._grpid, namstring, xtype_tmp, &xtype);
  *             if ierr != NC_NOERR:
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__92, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_5, 1, 0, NULL, NULL, &__pyx_slice__93, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyObject_GetItem(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4268; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_5 = PyObject_GetItem(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_8 = __Pyx_PyInt_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_8 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_As_nc_type(__pyx_t_5); if (unlikely((__pyx_t_8 == (nc_type)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_v_xtype_tmp = __pyx_t_8;
 
-      /* "netCDF4/_netCDF4.pyx":4269
+      /* "netCDF4/_netCDF4.pyx":4380
  *             # specified numpy data type.
  *             xtype_tmp = _nptonctype[dt.str[1:]]
  *             ierr = nc_def_vlen(grp._grpid, namstring, xtype_tmp, &xtype);             # <<<<<<<<<<<<<<
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_grp, __pyx_n_s_grpid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_v_ierr = nc_def_vlen(__pyx_t_9, __pyx_v_namstring, __pyx_v_xtype_tmp, (&__pyx_v_xtype));
 
-      /* "netCDF4/_netCDF4.pyx":4270
+      /* "netCDF4/_netCDF4.pyx":4381
  *             xtype_tmp = _nptonctype[dt.str[1:]]
  *             ierr = nc_def_vlen(grp._grpid, namstring, xtype_tmp, &xtype);
  *             if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -46560,7 +46754,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
       __pyx_t_7 = ((__pyx_v_ierr != NC_NOERR) != 0);
       if (__pyx_t_7) {
 
-        /* "netCDF4/_netCDF4.pyx":4271
+        /* "netCDF4/_netCDF4.pyx":4382
  *             ierr = nc_def_vlen(grp._grpid, namstring, xtype_tmp, &xtype);
  *             if ierr != NC_NOERR:
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -46568,43 +46762,43 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
  *             raise KeyError("unsupported datatype specified for VLEN")
  */
         __pyx_t_3 = ((char *)nc_strerror(__pyx_v_ierr));
-        __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_3, 0, strlen(__pyx_t_3), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_decode_c_string(__pyx_t_3, 0, strlen(__pyx_t_3), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_5);
         PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
         __Pyx_GIVEREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __Pyx_Raise(__pyx_t_5, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       goto __pyx_L4;
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4273
+      /* "netCDF4/_netCDF4.pyx":4384
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         else:
  *             raise KeyError("unsupported datatype specified for VLEN")             # <<<<<<<<<<<<<<
  *     return xtype, dt
  * 
  */
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_Raise(__pyx_t_5, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L4:;
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4274
+  /* "netCDF4/_netCDF4.pyx":4385
  *         else:
  *             raise KeyError("unsupported datatype specified for VLEN")
  *     return xtype, dt             # <<<<<<<<<<<<<<
@@ -46612,9 +46806,9 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
  * cdef _read_vlen(group, nc_type xtype, endian=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_5);
@@ -46626,7 +46820,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4249
+  /* "netCDF4/_netCDF4.pyx":4360
  *             (self.name, self.dtype)
  * 
  * cdef _def_vlen(grp, object dt, object dtype_name):             # <<<<<<<<<<<<<<
@@ -46650,7 +46844,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__def_vlen(PyObject *__pyx_v_grp, PyO
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4276
+/* "netCDF4/_netCDF4.pyx":4387
  *     return xtype, dt
  * 
  * cdef _read_vlen(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
@@ -46694,20 +46888,20 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
     }
   }
 
-  /* "netCDF4/_netCDF4.pyx":4285
+  /* "netCDF4/_netCDF4.pyx":4396
  *     cdef nc_type base_xtype
  *     cdef char vl_namstring[NC_MAX_NAME+1]
  *     _grpid = group._grpid             # <<<<<<<<<<<<<<
  *     if xtype == NC_STRING:
  *         dt = str
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_group, __pyx_n_s_grpid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v__grpid = __pyx_t_2;
 
-  /* "netCDF4/_netCDF4.pyx":4286
+  /* "netCDF4/_netCDF4.pyx":4397
  *     cdef char vl_namstring[NC_MAX_NAME+1]
  *     _grpid = group._grpid
  *     if xtype == NC_STRING:             # <<<<<<<<<<<<<<
@@ -46717,7 +46911,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
   __pyx_t_3 = ((__pyx_v_xtype == NC_STRING) != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":4287
+    /* "netCDF4/_netCDF4.pyx":4398
  *     _grpid = group._grpid
  *     if xtype == NC_STRING:
  *         dt = str             # <<<<<<<<<<<<<<
@@ -46727,7 +46921,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
     __Pyx_INCREF(((PyObject *)((PyObject*)(&PyString_Type))));
     __pyx_v_dt = ((PyObject *)((PyObject*)(&PyString_Type)));
 
-    /* "netCDF4/_netCDF4.pyx":4288
+    /* "netCDF4/_netCDF4.pyx":4399
  *     if xtype == NC_STRING:
  *         dt = str
  *         name = None             # <<<<<<<<<<<<<<
@@ -46740,7 +46934,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4290
+    /* "netCDF4/_netCDF4.pyx":4401
  *         name = None
  *     else:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -46754,7 +46948,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
         #endif
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":4291
+          /* "netCDF4/_netCDF4.pyx":4402
  *     else:
  *         with nogil:
  *             ierr = nc_inq_vlen(_grpid, xtype, vl_namstring, &vlsize, &base_xtype)             # <<<<<<<<<<<<<<
@@ -46764,7 +46958,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
           __pyx_v_ierr = nc_inq_vlen(__pyx_v__grpid, __pyx_v_xtype, __pyx_v_vl_namstring, (&__pyx_v_vlsize), (&__pyx_v_base_xtype));
         }
 
-        /* "netCDF4/_netCDF4.pyx":4290
+        /* "netCDF4/_netCDF4.pyx":4401
  *         name = None
  *     else:
  *         with nogil:             # <<<<<<<<<<<<<<
@@ -46782,7 +46976,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
         }
     }
 
-    /* "netCDF4/_netCDF4.pyx":4292
+    /* "netCDF4/_netCDF4.pyx":4403
  *         with nogil:
  *             ierr = nc_inq_vlen(_grpid, xtype, vl_namstring, &vlsize, &base_xtype)
  *         if ierr != NC_NOERR:             # <<<<<<<<<<<<<<
@@ -46792,7 +46986,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
     __pyx_t_3 = ((__pyx_v_ierr != NC_NOERR) != 0);
     if (__pyx_t_3) {
 
-      /* "netCDF4/_netCDF4.pyx":4293
+      /* "netCDF4/_netCDF4.pyx":4404
  *             ierr = nc_inq_vlen(_grpid, xtype, vl_namstring, &vlsize, &base_xtype)
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))             # <<<<<<<<<<<<<<
@@ -46800,37 +46994,37 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
  *         try:
  */
       __pyx_t_4 = ((char *)nc_strerror(__pyx_v_ierr));
-      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_decode_c_string(__pyx_t_4, 0, strlen(__pyx_t_4), NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_1);
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":4294
+    /* "netCDF4/_netCDF4.pyx":4405
  *         if ierr != NC_NOERR:
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         name = vl_namstring.decode(default_encoding,unicode_error)             # <<<<<<<<<<<<<<
  *         try:
  *             datatype = _nctonptype[base_xtype]
  */
-    __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_vl_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_FromString(__pyx_v_vl_namstring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_unicode_error); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_8 = NULL;
     __pyx_t_9 = 0;
@@ -46844,7 +47038,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
         __pyx_t_9 = 1;
       }
     }
-    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     if (__pyx_t_8) {
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -46855,14 +47049,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
     __Pyx_GIVEREF(__pyx_t_7);
     __pyx_t_5 = 0;
     __pyx_t_7 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_v_name = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4295
+    /* "netCDF4/_netCDF4.pyx":4406
  *             raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         name = vl_namstring.decode(default_encoding,unicode_error)
  *         try:             # <<<<<<<<<<<<<<
@@ -46876,22 +47070,22 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
       __Pyx_XGOTREF(__pyx_t_13);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4296
+        /* "netCDF4/_netCDF4.pyx":4407
  *         name = vl_namstring.decode(default_encoding,unicode_error)
  *         try:
  *             datatype = _nctonptype[base_xtype]             # <<<<<<<<<<<<<<
  *             if endian is not None: datatype = endian + datatype
  *             dt = numpy.dtype(datatype) # see if it is a primitive type
  */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4296; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4407; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_base_xtype, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4296; __pyx_clineno = __LINE__; goto __pyx_L8_error;};
+        __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_base_xtype, nc_type, 1, __Pyx_PyInt_From_nc_type, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4407; __pyx_clineno = __LINE__; goto __pyx_L8_error;};
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __pyx_v_datatype = __pyx_t_6;
         __pyx_t_6 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4297
+        /* "netCDF4/_netCDF4.pyx":4408
  *         try:
  *             datatype = _nctonptype[base_xtype]
  *             if endian is not None: datatype = endian + datatype             # <<<<<<<<<<<<<<
@@ -46901,7 +47095,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
         __pyx_t_3 = (__pyx_v_endian != Py_None);
         __pyx_t_14 = (__pyx_t_3 != 0);
         if (__pyx_t_14) {
-          __pyx_t_6 = PyNumber_Add(__pyx_v_endian, __pyx_v_datatype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4297; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_6 = PyNumber_Add(__pyx_v_endian, __pyx_v_datatype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4408; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF_SET(__pyx_v_datatype, __pyx_t_6);
           __pyx_t_6 = 0;
@@ -46909,16 +47103,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
         }
         __pyx_L16:;
 
-        /* "netCDF4/_netCDF4.pyx":4298
+        /* "netCDF4/_netCDF4.pyx":4409
  *             datatype = _nctonptype[base_xtype]
  *             if endian is not None: datatype = endian + datatype
  *             dt = numpy.dtype(datatype) # see if it is a primitive type             # <<<<<<<<<<<<<<
  *         except KeyError:
  *             raise KeyError("unsupported component type for VLEN")
  */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4298; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4409; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4298; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4409; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __pyx_t_1 = NULL;
@@ -46932,16 +47126,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
           }
         }
         if (!__pyx_t_1) {
-          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_datatype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4298; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_datatype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4409; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_6);
         } else {
-          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4298; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4409; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_7);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
           __Pyx_INCREF(__pyx_v_datatype);
           PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_datatype);
           __Pyx_GIVEREF(__pyx_v_datatype);
-          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4298; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4409; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         }
@@ -46961,7 +47155,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
       __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4299
+      /* "netCDF4/_netCDF4.pyx":4410
  *             if endian is not None: datatype = endian + datatype
  *             dt = numpy.dtype(datatype) # see if it is a primitive type
  *         except KeyError:             # <<<<<<<<<<<<<<
@@ -46971,23 +47165,23 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
       __pyx_t_2 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
       if (__pyx_t_2) {
         __Pyx_AddTraceback("netCDF4._netCDF4._read_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4299; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
+        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_10, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4410; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GOTREF(__pyx_t_7);
 
-        /* "netCDF4/_netCDF4.pyx":4300
+        /* "netCDF4/_netCDF4.pyx":4411
  *             dt = numpy.dtype(datatype) # see if it is a primitive type
  *         except KeyError:
  *             raise KeyError("unsupported component type for VLEN")             # <<<<<<<<<<<<<<
  *     return VLType(group, dt, name, typeid=xtype)
  * 
  */
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4300; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_tuple__95, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4411; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_Raise(__pyx_t_1, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4300; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4411; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
       }
       goto __pyx_L10_except_error;
       __pyx_L10_except_error:;
@@ -47001,7 +47195,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4301
+  /* "netCDF4/_netCDF4.pyx":4412
  *         except KeyError:
  *             raise KeyError("unsupported component type for VLEN")
  *     return VLType(group, dt, name, typeid=xtype)             # <<<<<<<<<<<<<<
@@ -47009,7 +47203,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
  * cdef _strencode(pystr,encoding=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_v_group);
   PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_group);
@@ -47020,13 +47214,13 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
   __Pyx_INCREF(__pyx_v_name);
   PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_name);
   __Pyx_GIVEREF(__pyx_v_name);
-  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
-  __pyx_t_6 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyInt_From_nc_type(__pyx_v_xtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_typeid, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_typeid, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_VLType)), __pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_VLType)), __pyx_t_7, __pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -47034,7 +47228,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4276
+  /* "netCDF4/_netCDF4.pyx":4387
  *     return xtype, dt
  * 
  * cdef _read_vlen(group, nc_type xtype, endian=None):             # <<<<<<<<<<<<<<
@@ -47061,7 +47255,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__read_vlen(PyObject *__pyx_v_group,
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4303
+/* "netCDF4/_netCDF4.pyx":4414
  *     return VLType(group, dt, name, typeid=xtype)
  * 
  * cdef _strencode(pystr,encoding=None):             # <<<<<<<<<<<<<<
@@ -47094,7 +47288,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
   }
   __Pyx_INCREF(__pyx_v_encoding);
 
-  /* "netCDF4/_netCDF4.pyx":4306
+  /* "netCDF4/_netCDF4.pyx":4417
  *     # encode a string into bytes.  If already bytes, do nothing.
  *     # uses default_encoding module variable for default encoding.
  *     if encoding is None:             # <<<<<<<<<<<<<<
@@ -47105,14 +47299,14 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4307
+    /* "netCDF4/_netCDF4.pyx":4418
  *     # uses default_encoding module variable for default encoding.
  *     if encoding is None:
  *         encoding = default_encoding             # <<<<<<<<<<<<<<
  *     try:
  *         return pystr.encode(encoding)
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_3);
     __pyx_t_3 = 0;
@@ -47120,7 +47314,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4308
+  /* "netCDF4/_netCDF4.pyx":4419
  *     if encoding is None:
  *         encoding = default_encoding
  *     try:             # <<<<<<<<<<<<<<
@@ -47134,7 +47328,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
     __Pyx_XGOTREF(__pyx_t_6);
     /*try:*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4309
+      /* "netCDF4/_netCDF4.pyx":4420
  *         encoding = default_encoding
  *     try:
  *         return pystr.encode(encoding)             # <<<<<<<<<<<<<<
@@ -47142,7 +47336,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
  *         return pystr # already bytes or unicode?
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_pystr, __pyx_n_s_encode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4309; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_pystr, __pyx_n_s_encode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4420; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_8 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -47155,16 +47349,16 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
         }
       }
       if (!__pyx_t_8) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_encoding); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4309; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_encoding); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4420; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4309; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4420; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
         __Pyx_GOTREF(__pyx_t_9);
         PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
         __Pyx_INCREF(__pyx_v_encoding);
         PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_encoding);
         __Pyx_GIVEREF(__pyx_v_encoding);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4309; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4420; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       }
@@ -47179,7 +47373,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4310
+    /* "netCDF4/_netCDF4.pyx":4421
  *     try:
  *         return pystr.encode(encoding)
  *     except (AttributeError, UnicodeDecodeError):             # <<<<<<<<<<<<<<
@@ -47189,12 +47383,12 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
     __pyx_t_10 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError) || PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
     if (__pyx_t_10) {
       __Pyx_AddTraceback("netCDF4._netCDF4._strencode", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4310; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_7, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4421; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_9);
 
-      /* "netCDF4/_netCDF4.pyx":4311
+      /* "netCDF4/_netCDF4.pyx":4422
  *         return pystr.encode(encoding)
  *     except (AttributeError, UnicodeDecodeError):
  *         return pystr # already bytes or unicode?             # <<<<<<<<<<<<<<
@@ -47230,7 +47424,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4303
+  /* "netCDF4/_netCDF4.pyx":4414
  *     return VLType(group, dt, name, typeid=xtype)
  * 
  * cdef _strencode(pystr,encoding=None):             # <<<<<<<<<<<<<<
@@ -47253,7 +47447,7 @@ static PyObject *__pyx_f_7netCDF4_8_netCDF4__strencode(PyObject *__pyx_v_pystr,
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4323
+/* "netCDF4/_netCDF4.pyx":4434
  * gregorian = datetime(1582,10,15)
  * 
  * def _dateparse(timestr):             # <<<<<<<<<<<<<<
@@ -47308,14 +47502,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_dateparse", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4328
+  /* "netCDF4/_netCDF4.pyx":4439
  *     # same as version in netcdftime, but returns a timezone naive
  *     # python datetime instance with the utc_offset included.
  *     timestr_split = timestr.split()             # <<<<<<<<<<<<<<
  *     units = timestr_split[0].lower()
  *     if timestr_split[1].lower() != 'since':
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_timestr, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_timestr, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -47328,26 +47522,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_timestr_split = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4329
+  /* "netCDF4/_netCDF4.pyx":4440
  *     # python datetime instance with the utc_offset included.
  *     timestr_split = timestr.split()
  *     units = timestr_split[0].lower()             # <<<<<<<<<<<<<<
  *     if timestr_split[1].lower() != 'since':
  *         raise ValueError("no 'since' in unit_string")
  */
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_timestr_split, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4329; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_timestr_split, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4440; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -47361,26 +47555,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_units = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4330
+  /* "netCDF4/_netCDF4.pyx":4441
  *     timestr_split = timestr.split()
  *     units = timestr_split[0].lower()
  *     if timestr_split[1].lower() != 'since':             # <<<<<<<<<<<<<<
  *         raise ValueError("no 'since' in unit_string")
  *     # parse the date string.
  */
-  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timestr_split, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4330; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timestr_split, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4441; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -47394,71 +47588,71 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_since, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_since, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":4331
+    /* "netCDF4/_netCDF4.pyx":4442
  *     units = timestr_split[0].lower()
  *     if timestr_split[1].lower() != 'since':
  *         raise ValueError("no 'since' in unit_string")             # <<<<<<<<<<<<<<
  *     # parse the date string.
  *     n = timestr.find('since')+6
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__95, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__96, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4333
+  /* "netCDF4/_netCDF4.pyx":4444
  *         raise ValueError("no 'since' in unit_string")
  *     # parse the date string.
  *     n = timestr.find('since')+6             # <<<<<<<<<<<<<<
  *     isostring = timestr[n:]
  *     year, month, day, hour, minute, second, utc_offset =\
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_timestr, __pyx_n_s_find); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_timestr, __pyx_n_s_find); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__96, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_int_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_n = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4334
+  /* "netCDF4/_netCDF4.pyx":4445
  *     # parse the date string.
  *     n = timestr.find('since')+6
  *     isostring = timestr[n:]             # <<<<<<<<<<<<<<
  *     year, month, day, hour, minute, second, utc_offset =\
  *         _parse_date( isostring.strip() )
  */
-  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_timestr, 0, 0, &__pyx_v_n, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_timestr, 0, 0, &__pyx_v_n, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_isostring = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4336
+  /* "netCDF4/_netCDF4.pyx":4447
  *     isostring = timestr[n:]
  *     year, month, day, hour, minute, second, utc_offset =\
  *         _parse_date( isostring.strip() )             # <<<<<<<<<<<<<<
  *     basedate = datetime(year, month, day, hour, minute, second)
  *     # add utc_offset to basedate time instance (which is timezone naive)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_parse_date); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_parse_date); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_isostring, __pyx_n_s_strip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_isostring, __pyx_n_s_strip); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -47471,10 +47665,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -47489,17 +47683,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
     PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -47514,7 +47708,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
     if (unlikely(size != 7)) {
       if (size > 7) __Pyx_RaiseTooManyValuesError(7);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -47546,7 +47740,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
       Py_ssize_t i;
       PyObject** temps[7] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_5,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9};
       for (i=0; i < 7; i++) {
-        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(item);
         *(temps[i]) = item;
       }
@@ -47556,7 +47750,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
   } else {
     Py_ssize_t index = -1;
     PyObject** temps[7] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_5,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9};
-    __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
@@ -47565,7 +47759,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
       __Pyx_GOTREF(item);
       *(temps[index]) = item;
     }
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_11 = NULL;
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     goto __pyx_L5_unpacking_done;
@@ -47573,11 +47767,11 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __pyx_t_11 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L5_unpacking_done:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4335
+  /* "netCDF4/_netCDF4.pyx":4446
  *     n = timestr.find('since')+6
  *     isostring = timestr[n:]
  *     year, month, day, hour, minute, second, utc_offset =\             # <<<<<<<<<<<<<<
@@ -47599,14 +47793,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
   __pyx_v_utc_offset = __pyx_t_9;
   __pyx_t_9 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4337
+  /* "netCDF4/_netCDF4.pyx":4448
  *     year, month, day, hour, minute, second, utc_offset =\
  *         _parse_date( isostring.strip() )
  *     basedate = datetime(year, month, day, hour, minute, second)             # <<<<<<<<<<<<<<
  *     # add utc_offset to basedate time instance (which is timezone naive)
  *     basedate += timedelta(days=utc_offset/1440.)
  */
-  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_8 = NULL;
   __pyx_t_12 = 0;
@@ -47620,7 +47814,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
       __pyx_t_12 = 1;
     }
   }
-  __pyx_t_7 = PyTuple_New(6+__pyx_t_12); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyTuple_New(6+__pyx_t_12); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (__pyx_t_8) {
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -47643,39 +47837,39 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
   __Pyx_INCREF(__pyx_v_second);
   PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_12, __pyx_v_second);
   __Pyx_GIVEREF(__pyx_v_second);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   __pyx_v_basedate = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4339
+  /* "netCDF4/_netCDF4.pyx":4450
  *     basedate = datetime(year, month, day, hour, minute, second)
  *     # add utc_offset to basedate time instance (which is timezone naive)
  *     basedate += timedelta(days=utc_offset/1440.)             # <<<<<<<<<<<<<<
  *     return basedate
  * 
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_timedelta); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_timedelta); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
-  __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_v_utc_offset, __pyx_float_1440_); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_v_utc_offset, __pyx_float_1440_); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_days, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_days, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_9); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_basedate, __pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_basedate, __pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_9);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF_SET(__pyx_v_basedate, __pyx_t_9);
   __pyx_t_9 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4340
+  /* "netCDF4/_netCDF4.pyx":4451
  *     # add utc_offset to basedate time instance (which is timezone naive)
  *     basedate += timedelta(days=utc_offset/1440.)
  *     return basedate             # <<<<<<<<<<<<<<
@@ -47687,7 +47881,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
   __pyx_r = __pyx_v_basedate;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4323
+  /* "netCDF4/_netCDF4.pyx":4434
  * gregorian = datetime(1582,10,15)
  * 
  * def _dateparse(timestr):             # <<<<<<<<<<<<<<
@@ -47726,17 +47920,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6_dateparse(CYTHON_UNUSED PyObject
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4342
+/* "netCDF4/_netCDF4.pyx":4453
  *     return basedate
  * 
  * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
  *     """
- * stringtoarr(a, NUMCHARS,dtype='S')
+ * **`stringtoarr(a, NUMCHARS,dtype='S')`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9stringtoarr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_8stringtoarr[] = "\nstringtoarr(a, NUMCHARS,dtype='S')\n\nconvert a string to a character array of length NUMCHARS\n\n at param a:  Input python string.\n\n at param NUMCHARS:  number of characters used to represent string\n(if len(a) < NUMCHARS, it will be padded on the right with blanks).\n\n at keyword dtype:  type of numpy array to return.  Default is 'S', which\nmeans an array of dtype 'S1' will be returned.  If dtype='U', a\nunicode array (dtype = 'U [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_8stringtoarr[] = "\n**`stringtoarr(a, NUMCHARS,dtype='S')`**\n\nconvert a string to a character array of length `NUMCHARS`\n\n**`a`**:  Input python string.\n\n**`NUMCHARS`**:  number of characters used to represent string\n(if len(a) < `NUMCHARS`, it will be padded on the right with blanks).\n\n**`dtype`**:  type of numpy array to return.  Default is `'S'`, which\nmeans an array of dtype `'S1'` will be returned.  If dtype=`'U'`, a\nunicode array  [...]
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9stringtoarr = {"stringtoarr", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_9stringtoarr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_8stringtoarr};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9stringtoarr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_string = 0;
@@ -47770,7 +47964,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9stringtoarr(PyObject *__pyx_self,
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_NUMCHARS)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("stringtoarr", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("stringtoarr", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -47779,7 +47973,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9stringtoarr(PyObject *__pyx_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "stringtoarr") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "stringtoarr") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -47796,7 +47990,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9stringtoarr(PyObject *__pyx_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("stringtoarr", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("stringtoarr", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.stringtoarr", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -47826,55 +48020,55 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8stringtoarr(CYTHON_UNUSED PyObject
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("stringtoarr", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4359
- * @return: A rank 1 numpy character array of length NUMCHARS with datatype 'S1'
- * (default) or 'U1' (if dtype='U')"""
+  /* "netCDF4/_netCDF4.pyx":4470
+ * returns a rank 1 numpy character array of length NUMCHARS with datatype `'S1'`
+ * (default) or `'U1'` (if dtype=`'U'`)"""
  *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
  *         raise ValueError("dtype must string or unicode ('S' or 'U')")
  *     arr = numpy.zeros(NUMCHARS,dtype+'1')
  */
   __Pyx_INCREF(__pyx_v_dtype);
   __pyx_t_1 = __pyx_v_dtype;
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_S, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_S, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_U, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_U, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":4360
- * (default) or 'U1' (if dtype='U')"""
+    /* "netCDF4/_netCDF4.pyx":4471
+ * (default) or `'U1'` (if dtype=`'U'`)"""
  *     if dtype not in ["S","U"]:
  *         raise ValueError("dtype must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
  *     arr = numpy.zeros(NUMCHARS,dtype+'1')
  *     arr[0:len(string)] = tuple(string)
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4361
+  /* "netCDF4/_netCDF4.pyx":4472
  *     if dtype not in ["S","U"]:
  *         raise ValueError("dtype must string or unicode ('S' or 'U')")
  *     arr = numpy.zeros(NUMCHARS,dtype+'1')             # <<<<<<<<<<<<<<
  *     arr[0:len(string)] = tuple(string)
  *     return arr
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = PyNumber_Add(__pyx_v_dtype, __pyx_kp_s_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyNumber_Add(__pyx_v_dtype, __pyx_kp_s_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_6 = NULL;
   __pyx_t_7 = 0;
@@ -47888,7 +48082,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8stringtoarr(CYTHON_UNUSED PyObject
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_8);
   if (__pyx_t_6) {
     PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
@@ -47899,27 +48093,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8stringtoarr(CYTHON_UNUSED PyObject
   PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
   __pyx_t_4 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_arr = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4362
+  /* "netCDF4/_netCDF4.pyx":4473
  *         raise ValueError("dtype must string or unicode ('S' or 'U')")
  *     arr = numpy.zeros(NUMCHARS,dtype+'1')
  *     arr[0:len(string)] = tuple(string)             # <<<<<<<<<<<<<<
  *     return arr
  * 
  */
-  __pyx_t_1 = PySequence_Tuple(__pyx_v_string); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PySequence_Tuple(__pyx_v_string); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = PyObject_Length(__pyx_v_string); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__Pyx_PyObject_SetSlice(__pyx_v_arr, __pyx_t_1, 0, __pyx_t_7, NULL, NULL, NULL, 1, 1, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyObject_Length(__pyx_v_string); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetSlice(__pyx_v_arr, __pyx_t_1, 0, __pyx_t_7, NULL, NULL, NULL, 1, 1, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4363
+  /* "netCDF4/_netCDF4.pyx":4474
  *     arr = numpy.zeros(NUMCHARS,dtype+'1')
  *     arr[0:len(string)] = tuple(string)
  *     return arr             # <<<<<<<<<<<<<<
@@ -47931,12 +48125,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8stringtoarr(CYTHON_UNUSED PyObject
   __pyx_r = __pyx_v_arr;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4342
+  /* "netCDF4/_netCDF4.pyx":4453
  *     return basedate
  * 
  * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
  *     """
- * stringtoarr(a, NUMCHARS,dtype='S')
+ * **`stringtoarr(a, NUMCHARS,dtype='S')`**
  */
 
   /* function exit code */
@@ -47955,17 +48149,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_8stringtoarr(CYTHON_UNUSED PyObject
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4365
+/* "netCDF4/_netCDF4.pyx":4476
  *     return arr
  * 
  * def stringtochar(a):             # <<<<<<<<<<<<<<
  *     """
- * stringtochar(a)
+ * **`stringtochar(a)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_11stringtochar(PyObject *__pyx_self, PyObject *__pyx_v_a); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_10stringtochar[] = "\nstringtochar(a)\n\nconvert a string array to a character array with one extra dimension\n\n at param a:  Input numpy string array with numpy datatype 'SN' or 'UN', where N\nis the number of characters in each string.  Will be converted to\nan array of characters (datatype 'S1' or 'U1') of shape a.shape + (N,).\n\n at return: A numpy character array with datatype 'S1' or 'U1'\nand shape a.shape + (N,), where N is the length of each  [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_10stringtochar[] = "\n**`stringtochar(a)`**\n\nconvert a string array to a character array with one extra dimension\n\n**`a`**:  Input numpy string array with numpy datatype `'SN'` or `'UN'`, where N\nis the number of characters in each string.  Will be converted to\nan array of characters (datatype `'S1'` or `'U1'`) of shape `a.shape + (N,)`.\n\nreturns a numpy character array with datatype `'S1'` or `'U1'`\nand shape `a.shape + (N,)`, where N is [...]
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_11stringtochar = {"stringtochar", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_11stringtochar, METH_O, __pyx_doc_7netCDF4_8_netCDF4_10stringtochar};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_11stringtochar(PyObject *__pyx_self, PyObject *__pyx_v_a) {
   PyObject *__pyx_r = 0;
@@ -47998,23 +48192,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("stringtochar", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4377
- * @return: A numpy character array with datatype 'S1' or 'U1'
- * and shape a.shape + (N,), where N is the length of each string in a."""
+  /* "netCDF4/_netCDF4.pyx":4488
+ * returns a numpy character array with datatype `'S1'` or `'U1'`
+ * and shape `a.shape + (N,)`, where N is the length of each string in a."""
  *     dtype = a.dtype.kind             # <<<<<<<<<<<<<<
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_dtype = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4378
- * and shape a.shape + (N,), where N is the length of each string in a."""
+  /* "netCDF4/_netCDF4.pyx":4489
+ * and shape `a.shape + (N,)`, where N is the length of each string in a."""
  *     dtype = a.dtype.kind
  *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
  *         raise ValueError("type must string or unicode ('S' or 'U')")
@@ -48022,46 +48216,46 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
  */
   __Pyx_INCREF(__pyx_v_dtype);
   __pyx_t_2 = __pyx_v_dtype;
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
   } else {
     __pyx_t_3 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":4379
+    /* "netCDF4/_netCDF4.pyx":4490
  *     dtype = a.dtype.kind
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
  *     b = numpy.array(tuple(a.tostring().decode(default_encoding)),dtype+'1')
  *     b.shape = a.shape + (a.itemsize,)
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4380
+  /* "netCDF4/_netCDF4.pyx":4491
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")
  *     b = numpy.array(tuple(a.tostring().decode(default_encoding)),dtype+'1')             # <<<<<<<<<<<<<<
  *     b.shape = a.shape + (a.itemsize,)
  *     return b
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_tostring); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_tostring); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_8 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -48074,17 +48268,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
     }
   }
   if (__pyx_t_8) {
-    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   } else {
-    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_decode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_8 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -48097,25 +48291,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
     }
   }
   if (!__pyx_t_8) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_9);
     PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
     PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyNumber_Add(__pyx_v_dtype, __pyx_kp_s_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Add(__pyx_v_dtype, __pyx_kp_s_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_9 = NULL;
   __pyx_t_10 = 0;
@@ -48129,7 +48323,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
       __pyx_t_10 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_9) {
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = NULL;
@@ -48140,37 +48334,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_7 = 0;
   __pyx_t_1 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_b = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4381
+  /* "netCDF4/_netCDF4.pyx":4492
  *         raise ValueError("type must string or unicode ('S' or 'U')")
  *     b = numpy.array(tuple(a.tostring().decode(default_encoding)),dtype+'1')
  *     b.shape = a.shape + (a.itemsize,)             # <<<<<<<<<<<<<<
  *     return b
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_5);
   __pyx_t_5 = 0;
-  __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_b, __pyx_n_s_shape, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_b, __pyx_n_s_shape, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4382
+  /* "netCDF4/_netCDF4.pyx":4493
  *     b = numpy.array(tuple(a.tostring().decode(default_encoding)),dtype+'1')
  *     b.shape = a.shape + (a.itemsize,)
  *     return b             # <<<<<<<<<<<<<<
@@ -48182,12 +48376,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
   __pyx_r = __pyx_v_b;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4365
+  /* "netCDF4/_netCDF4.pyx":4476
  *     return arr
  * 
  * def stringtochar(a):             # <<<<<<<<<<<<<<
  *     """
- * stringtochar(a)
+ * **`stringtochar(a)`**
  */
 
   /* function exit code */
@@ -48209,17 +48403,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10stringtochar(CYTHON_UNUSED PyObje
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4384
+/* "netCDF4/_netCDF4.pyx":4495
  *     return b
  * 
  * def chartostring(b):             # <<<<<<<<<<<<<<
  *     """
- * chartostring(b)
+ * **`chartostring(b)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_13chartostring(PyObject *__pyx_self, PyObject *__pyx_v_b); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_12chartostring[] = "\nchartostring(b)\n\nconvert a character array to a string array with one less dimension.\n\n at param b:  Input character array (numpy datatype 'S1' or 'U1').\nWill be converted to a array of strings, where each string has a fixed\nlength of b.shape[-1] characters.\n\n at return: A numpy string array with datatype 'SN' or 'UN' and shape b.shape[:-1],\nwhere N=b.shape[-1].";
+static char __pyx_doc_7netCDF4_8_netCDF4_12chartostring[] = "\n**`chartostring(b)`**\n\nconvert a character array to a string array with one less dimension.\n\n**`b`**:  Input character array (numpy datatype `'S1'` or `'U1'`).\nWill be converted to a array of strings, where each string has a fixed\nlength of `b.shape[-1]` characters.\n\nreturns a numpy string array with datatype `'SN'` or `'UN'` and shape\n`b.shape[:-1]` where where `N=b.shape[-1]`.";
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_13chartostring = {"chartostring", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_13chartostring, METH_O, __pyx_doc_7netCDF4_8_netCDF4_12chartostring};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_13chartostring(PyObject *__pyx_self, PyObject *__pyx_v_b) {
   PyObject *__pyx_r = 0;
@@ -48255,23 +48449,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("chartostring", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4396
- * @return: A numpy string array with datatype 'SN' or 'UN' and shape b.shape[:-1],
- * where N=b.shape[-1]."""
+  /* "netCDF4/_netCDF4.pyx":4507
+ * returns a numpy string array with datatype `'SN'` or `'UN'` and shape
+ * `b.shape[:-1]` where where `N=b.shape[-1]`."""
  *     dtype = b.dtype.kind             # <<<<<<<<<<<<<<
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_dtype = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4397
- * where N=b.shape[-1]."""
+  /* "netCDF4/_netCDF4.pyx":4508
+ * `b.shape[:-1]` where where `N=b.shape[-1]`."""
  *     dtype = b.dtype.kind
  *     if dtype not in ["S","U"]:             # <<<<<<<<<<<<<<
  *         raise ValueError("type must string or unicode ('S' or 'U')")
@@ -48279,41 +48473,41 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
  */
   __Pyx_INCREF(__pyx_v_dtype);
   __pyx_t_2 = __pyx_v_dtype;
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_4) {
   } else {
     __pyx_t_3 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_U, Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":4398
+    /* "netCDF4/_netCDF4.pyx":4509
  *     dtype = b.dtype.kind
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
  *     bs = b.tostring().decode(default_encoding)
  *     slen = int(b.shape[-1])
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4399
+  /* "netCDF4/_netCDF4.pyx":4510
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")
  *     bs = b.tostring().decode(default_encoding)             # <<<<<<<<<<<<<<
  *     slen = int(b.shape[-1])
  *     a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],dtype+repr(slen))
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_tostring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_tostring); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -48326,17 +48520,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
     }
   }
   if (__pyx_t_6) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_decode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_encoding); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_6 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -48349,17 +48543,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
     }
   }
   if (!__pyx_t_6) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
     PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -48367,42 +48561,42 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
   __pyx_v_bs = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4400
+  /* "netCDF4/_netCDF4.pyx":4511
  *         raise ValueError("type must string or unicode ('S' or 'U')")
  *     bs = b.tostring().decode(default_encoding)
  *     slen = int(b.shape[-1])             # <<<<<<<<<<<<<<
  *     a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],dtype+repr(slen))
  *     a.shape = b.shape[:-1]
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, -1, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4400; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, -1, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4511; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_slen = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4401
+  /* "netCDF4/_netCDF4.pyx":4512
  *     bs = b.tostring().decode(default_encoding)
  *     slen = int(b.shape[-1])
  *     a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],dtype+repr(slen))             # <<<<<<<<<<<<<<
  *     a.shape = b.shape[:-1]
  *     return a
  */
-  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_8 = PyObject_Length(__pyx_v_bs); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = PyObject_Length(__pyx_v_bs); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_INCREF(__pyx_int_0);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_0);
@@ -48413,16 +48607,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
   PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_slen);
   __Pyx_GIVEREF(__pyx_v_slen);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
     __pyx_t_9 = NULL;
   } else {
-    __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -48430,16 +48624,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -48448,7 +48642,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -48456,18 +48650,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
     }
     __Pyx_XDECREF_SET(__pyx_v_n1, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_v_n1, __pyx_v_slen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(__pyx_v_n1, __pyx_v_slen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_bs, 0, 0, &__pyx_v_n1, &__pyx_t_1, NULL, 0, 0, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_bs, 0, 0, &__pyx_v_n1, &__pyx_t_1, NULL, 0, 0, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_10))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_10))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = PyObject_Repr(__pyx_v_slen); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyObject_Repr(__pyx_v_slen); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_10 = PyNumber_Add(__pyx_v_dtype, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyNumber_Add(__pyx_v_dtype, __pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_6 = NULL;
@@ -48482,7 +48676,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
       __pyx_t_8 = 1;
     }
   }
-  __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (__pyx_t_6) {
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
@@ -48493,29 +48687,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
   __Pyx_GIVEREF(__pyx_t_10);
   __pyx_t_5 = 0;
   __pyx_t_10 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_v_a = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4402
+  /* "netCDF4/_netCDF4.pyx":4513
  *     slen = int(b.shape[-1])
  *     a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],dtype+repr(slen))
  *     a.shape = b.shape[:-1]             # <<<<<<<<<<<<<<
  *     return a
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, -1, NULL, NULL, &__pyx_slice__100, 0, 1, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, -1, NULL, NULL, &__pyx_slice__101, 0, 1, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_a, __pyx_n_s_shape, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_a, __pyx_n_s_shape, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4403
+  /* "netCDF4/_netCDF4.pyx":4514
  *     a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],dtype+repr(slen))
  *     a.shape = b.shape[:-1]
  *     return a             # <<<<<<<<<<<<<<
@@ -48527,12 +48721,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
   __pyx_r = __pyx_v_a;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4384
+  /* "netCDF4/_netCDF4.pyx":4495
  *     return b
  * 
  * def chartostring(b):             # <<<<<<<<<<<<<<
  *     """
- * chartostring(b)
+ * **`chartostring(b)`**
  */
 
   /* function exit code */
@@ -48556,17 +48750,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_12chartostring(CYTHON_UNUSED PyObje
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4405
+/* "netCDF4/_netCDF4.pyx":4516
  *     return a
  * 
  * def date2num(dates,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * date2num(dates,units,calendar='standard')
+ * **`date2num(dates,units,calendar='standard')`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_15date2num(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_14date2num[] = "\ndate2num(dates,units,calendar='standard')\n\nReturn numeric time values given datetime objects. The units\nof the numeric time values are described by the L{units} argument\nand the L{calendar} keyword. The datetime objects must\nbe in UTC with no time-zone offset.  If there is a\ntime-zone offset in C{units}, it will be applied to the\nreturned numeric values.\n\n at param dates: A datetime object or a sequence of datetime objects. [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_14date2num[] = "\n**`date2num(dates,units,calendar='standard')`**\n\nReturn numeric time values given datetime objects. The units\nof the numeric time values are described by the `netCDF4.units` argument\nand the `netCDF4.calendar` keyword. The datetime objects must\nbe in UTC with no time-zone offset.  If there is a\ntime-zone offset in `units`, it will be applied to the\nreturned numeric values.\n\n**`dates`**: A datetime object or a sequence of [...]
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_15date2num = {"date2num", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_15date2num, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_14date2num};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_15date2num(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_dates = 0;
@@ -48600,7 +48794,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_15date2num(PyObject *__pyx_self, Py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_units)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("date2num", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("date2num", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -48609,7 +48803,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_15date2num(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "date2num") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "date2num") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -48626,7 +48820,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_15date2num(PyObject *__pyx_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("date2num", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("date2num", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.date2num", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -48674,14 +48868,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
   __Pyx_RefNannySetupContext("date2num", 0);
   __Pyx_INCREF(__pyx_v_dates);
 
-  /* "netCDF4/_netCDF4.pyx":4434
- * @return: a numeric time value, or an array of numeric time values.
+  /* "netCDF4/_netCDF4.pyx":4545
+ * returns a numeric time value, or an array of numeric time values.
  *     """
  *     basedate = _dateparse(units)             # <<<<<<<<<<<<<<
  *     unit = units.split()[0].lower()
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_dateparse); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_dateparse); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -48694,16 +48888,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_units);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_units);
     __Pyx_GIVEREF(__pyx_v_units);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -48711,14 +48905,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
   __pyx_v_basedate = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4435
+  /* "netCDF4/_netCDF4.pyx":4546
  *     """
  *     basedate = _dateparse(units)
  *     unit = units.split()[0].lower()             # <<<<<<<<<<<<<<
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_units, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_units, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -48731,17 +48925,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4435; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4546; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -48755,36 +48949,36 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_unit = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4437
+  /* "netCDF4/_netCDF4.pyx":4548
  *     unit = units.split()[0].lower()
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \             # <<<<<<<<<<<<<<
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):
  *         # use python datetime module,
  */
-  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_calendar, __pyx_n_s_proleptic_gregorian, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_calendar, __pyx_n_s_proleptic_gregorian, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_6) {
     goto __pyx_L5_next_or;
   } else {
   }
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_basedate, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_basedate, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   if (!__pyx_t_6) {
   } else {
@@ -48793,7 +48987,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
   }
   __pyx_L5_next_or:;
 
-  /* "netCDF4/_netCDF4.pyx":4438
+  /* "netCDF4/_netCDF4.pyx":4549
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):             # <<<<<<<<<<<<<<
@@ -48802,13 +48996,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
  */
   __Pyx_INCREF(__pyx_v_calendar);
   __pyx_t_4 = __pyx_v_calendar;
-  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_gregorian, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_gregorian, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_7) {
   } else {
     __pyx_t_6 = __pyx_t_7;
     goto __pyx_L8_bool_binop_done;
   }
-  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_standard, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_standard, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_6 = __pyx_t_7;
   __pyx_L8_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -48818,17 +49012,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     __pyx_t_5 = __pyx_t_7;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_gregorian); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_gregorian); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyObject_RichCompare(__pyx_v_basedate, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_basedate, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_5 = __pyx_t_7;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_5) {
 
-    /* "netCDF4/_netCDF4.pyx":4440
+    /* "netCDF4/_netCDF4.pyx":4551
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):
  *         # use python datetime module,
  *         isscalar = False             # <<<<<<<<<<<<<<
@@ -48837,7 +49031,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
  */
     __pyx_v_isscalar = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4441
+    /* "netCDF4/_netCDF4.pyx":4552
  *         # use python datetime module,
  *         isscalar = False
  *         try:             # <<<<<<<<<<<<<<
@@ -48851,14 +49045,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
       __Pyx_XGOTREF(__pyx_t_10);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4442
+        /* "netCDF4/_netCDF4.pyx":4553
  *         isscalar = False
  *         try:
  *             dates[0]             # <<<<<<<<<<<<<<
  *         except:
  *             isscalar = True
  */
-        __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_dates, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4442; __pyx_clineno = __LINE__; goto __pyx_L10_error;};
+        __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_dates, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4553; __pyx_clineno = __LINE__; goto __pyx_L10_error;};
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       }
@@ -48872,7 +49066,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4443
+      /* "netCDF4/_netCDF4.pyx":4554
  *         try:
  *             dates[0]
  *         except:             # <<<<<<<<<<<<<<
@@ -48881,12 +49075,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
  */
       /*except:*/ {
         __Pyx_AddTraceback("netCDF4._netCDF4.date2num", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4443; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
+        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4554; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_GOTREF(__pyx_t_1);
 
-        /* "netCDF4/_netCDF4.pyx":4444
+        /* "netCDF4/_netCDF4.pyx":4555
  *             dates[0]
  *         except:
  *             isscalar = True             # <<<<<<<<<<<<<<
@@ -48913,7 +49107,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
       __pyx_L17_try_end:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4445
+    /* "netCDF4/_netCDF4.pyx":4556
  *         except:
  *             isscalar = True
  *         if isscalar:             # <<<<<<<<<<<<<<
@@ -48923,19 +49117,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     __pyx_t_5 = (__pyx_v_isscalar != 0);
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":4446
+      /* "netCDF4/_netCDF4.pyx":4557
  *             isscalar = True
  *         if isscalar:
  *             dates = numpy.array([dates])             # <<<<<<<<<<<<<<
  *         else:
  *             dates = numpy.array(dates)
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_dates);
       PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_dates);
@@ -48951,17 +49145,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
         }
       }
       if (!__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else {
-        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_11);
         PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
         PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4);
         __Pyx_GIVEREF(__pyx_t_4);
         __pyx_t_4 = 0;
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       }
@@ -48972,16 +49166,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4448
+      /* "netCDF4/_netCDF4.pyx":4559
  *             dates = numpy.array([dates])
  *         else:
  *             dates = numpy.array(dates)             # <<<<<<<<<<<<<<
  *             shape = dates.shape
  *         ismasked = False
  */
-      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_2 = NULL;
@@ -48995,16 +49189,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
         }
       }
       if (!__pyx_t_2) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_dates); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_dates); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
       } else {
-        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
         __Pyx_INCREF(__pyx_v_dates);
         PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_dates);
         __Pyx_GIVEREF(__pyx_v_dates);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       }
@@ -49012,21 +49206,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
       __Pyx_DECREF_SET(__pyx_v_dates, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4449
+      /* "netCDF4/_netCDF4.pyx":4560
  *         else:
  *             dates = numpy.array(dates)
  *             shape = dates.shape             # <<<<<<<<<<<<<<
  *         ismasked = False
  *         if hasattr(dates,'mask'):
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dates, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dates, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_shape = __pyx_t_1;
       __pyx_t_1 = 0;
     }
     __pyx_L20:;
 
-    /* "netCDF4/_netCDF4.pyx":4450
+    /* "netCDF4/_netCDF4.pyx":4561
  *             dates = numpy.array(dates)
  *             shape = dates.shape
  *         ismasked = False             # <<<<<<<<<<<<<<
@@ -49035,30 +49229,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
  */
     __pyx_v_ismasked = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4451
+    /* "netCDF4/_netCDF4.pyx":4562
  *             shape = dates.shape
  *         ismasked = False
  *         if hasattr(dates,'mask'):             # <<<<<<<<<<<<<<
  *             mask = dates.mask
  *             ismasked = True
  */
-    __pyx_t_5 = PyObject_HasAttr(__pyx_v_dates, __pyx_n_s_mask); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_HasAttr(__pyx_v_dates, __pyx_n_s_mask); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_7 = (__pyx_t_5 != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":4452
+      /* "netCDF4/_netCDF4.pyx":4563
  *         ismasked = False
  *         if hasattr(dates,'mask'):
  *             mask = dates.mask             # <<<<<<<<<<<<<<
  *             ismasked = True
  *         times = []
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dates, __pyx_n_s_mask); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dates, __pyx_n_s_mask); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_v_mask = __pyx_t_1;
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4453
+      /* "netCDF4/_netCDF4.pyx":4564
  *         if hasattr(dates,'mask'):
  *             mask = dates.mask
  *             ismasked = True             # <<<<<<<<<<<<<<
@@ -49070,34 +49264,34 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     }
     __pyx_L21:;
 
-    /* "netCDF4/_netCDF4.pyx":4454
+    /* "netCDF4/_netCDF4.pyx":4565
  *             mask = dates.mask
  *             ismasked = True
  *         times = []             # <<<<<<<<<<<<<<
  *         for date in dates.flat:
  *             if ismasked and not date:
  */
-    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_v_times = ((PyObject*)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4455
+    /* "netCDF4/_netCDF4.pyx":4566
  *             ismasked = True
  *         times = []
  *         for date in dates.flat:             # <<<<<<<<<<<<<<
  *             if ismasked and not date:
  *                 times.append(None)
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dates, __pyx_n_s_flat); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dates, __pyx_n_s_flat); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
       __pyx_t_11 = __pyx_t_1; __Pyx_INCREF(__pyx_t_11); __pyx_t_12 = 0;
       __pyx_t_13 = NULL;
     } else {
-      __pyx_t_12 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     for (;;) {
@@ -49105,16 +49299,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
         if (likely(PyList_CheckExact(__pyx_t_11))) {
           if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_11)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_1); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_1); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_1); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_1); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -49123,7 +49317,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -49132,7 +49326,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
       __Pyx_XDECREF_SET(__pyx_v_date, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4456
+      /* "netCDF4/_netCDF4.pyx":4567
  *         times = []
  *         for date in dates.flat:
  *             if ismasked and not date:             # <<<<<<<<<<<<<<
@@ -49145,265 +49339,265 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
         __pyx_t_7 = __pyx_t_5;
         goto __pyx_L25_bool_binop_done;
       }
-      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_date); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_date); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_6 = ((!__pyx_t_5) != 0);
       __pyx_t_7 = __pyx_t_6;
       __pyx_L25_bool_binop_done:;
       if (__pyx_t_7) {
 
-        /* "netCDF4/_netCDF4.pyx":4457
+        /* "netCDF4/_netCDF4.pyx":4568
  *         for date in dates.flat:
  *             if ismasked and not date:
  *                 times.append(None)             # <<<<<<<<<<<<<<
  *             else:
  *                 td = date - basedate
  */
-        __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, Py_None); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, Py_None); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         goto __pyx_L24;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4459
+        /* "netCDF4/_netCDF4.pyx":4570
  *                 times.append(None)
  *             else:
  *                 td = date - basedate             # <<<<<<<<<<<<<<
  *                 # total time in microseconds.
  *                 totaltime = td.microseconds + (td.seconds + td.days * 24 * 3600) * 1.e6
  */
-        __pyx_t_1 = PyNumber_Subtract(__pyx_v_date, __pyx_v_basedate); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyNumber_Subtract(__pyx_v_date, __pyx_v_basedate); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_XDECREF_SET(__pyx_v_td, __pyx_t_1);
         __pyx_t_1 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4461
+        /* "netCDF4/_netCDF4.pyx":4572
  *                 td = date - basedate
  *                 # total time in microseconds.
  *                 totaltime = td.microseconds + (td.seconds + td.days * 24 * 3600) * 1.e6             # <<<<<<<<<<<<<<
  *                 if unit in microsec_units:
  *                     times.append(totaltime)
  */
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_td, __pyx_n_s_microseconds); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_td, __pyx_n_s_microseconds); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_td, __pyx_n_s_seconds); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_td, __pyx_n_s_seconds); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_td, __pyx_n_s_days); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_td, __pyx_n_s_days); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_int_24); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_int_24); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_int_3600); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_int_3600); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_float_1_e6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_float_1_e6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_XDECREF_SET(__pyx_v_totaltime, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4462
+        /* "netCDF4/_netCDF4.pyx":4573
  *                 # total time in microseconds.
  *                 totaltime = td.microseconds + (td.seconds + td.days * 24 * 3600) * 1.e6
  *                 if unit in microsec_units:             # <<<<<<<<<<<<<<
  *                     times.append(totaltime)
  *                 elif unit in millisec_units:
  */
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_microsec_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_microsec_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_6 = (__pyx_t_7 != 0);
         if (__pyx_t_6) {
 
-          /* "netCDF4/_netCDF4.pyx":4463
+          /* "netCDF4/_netCDF4.pyx":4574
  *                 totaltime = td.microseconds + (td.seconds + td.days * 24 * 3600) * 1.e6
  *                 if unit in microsec_units:
  *                     times.append(totaltime)             # <<<<<<<<<<<<<<
  *                 elif unit in millisec_units:
  *                     times.append(totaltime/1.e3)
  */
-          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_v_totaltime); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_v_totaltime); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4464
+        /* "netCDF4/_netCDF4.pyx":4575
  *                 if unit in microsec_units:
  *                     times.append(totaltime)
  *                 elif unit in millisec_units:             # <<<<<<<<<<<<<<
  *                     times.append(totaltime/1.e3)
  *                 elif unit in sec_units:
  */
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_millisec_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_millisec_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
 
-          /* "netCDF4/_netCDF4.pyx":4465
+          /* "netCDF4/_netCDF4.pyx":4576
  *                     times.append(totaltime)
  *                 elif unit in millisec_units:
  *                     times.append(totaltime/1.e3)             # <<<<<<<<<<<<<<
  *                 elif unit in sec_units:
  *                     times.append(totaltime/1.e6)
  */
-          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4466
+        /* "netCDF4/_netCDF4.pyx":4577
  *                 elif unit in millisec_units:
  *                     times.append(totaltime/1.e3)
  *                 elif unit in sec_units:             # <<<<<<<<<<<<<<
  *                     times.append(totaltime/1.e6)
  *                 elif unit in min_units:
  */
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sec_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sec_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_6 = (__pyx_t_7 != 0);
         if (__pyx_t_6) {
 
-          /* "netCDF4/_netCDF4.pyx":4467
+          /* "netCDF4/_netCDF4.pyx":4578
  *                     times.append(totaltime/1.e3)
  *                 elif unit in sec_units:
  *                     times.append(totaltime/1.e6)             # <<<<<<<<<<<<<<
  *                 elif unit in min_units:
  *                     times.append(totaltime/1.e6/60)
  */
-          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4468
+        /* "netCDF4/_netCDF4.pyx":4579
  *                 elif unit in sec_units:
  *                     times.append(totaltime/1.e6)
  *                 elif unit in min_units:             # <<<<<<<<<<<<<<
  *                     times.append(totaltime/1.e6/60)
  *                 elif unit in hr_units:
  */
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_min_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_min_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
 
-          /* "netCDF4/_netCDF4.pyx":4469
+          /* "netCDF4/_netCDF4.pyx":4580
  *                     times.append(totaltime/1.e6)
  *                 elif unit in min_units:
  *                     times.append(totaltime/1.e6/60)             # <<<<<<<<<<<<<<
  *                 elif unit in hr_units:
  *                     times.append(totaltime/1.e6/3600)
  */
-          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_int_60); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_int_60); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_2); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_2); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4470
+        /* "netCDF4/_netCDF4.pyx":4581
  *                 elif unit in min_units:
  *                     times.append(totaltime/1.e6/60)
  *                 elif unit in hr_units:             # <<<<<<<<<<<<<<
  *                     times.append(totaltime/1.e6/3600)
  *                 elif unit in day_units:
  */
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_hr_units); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_hr_units); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __pyx_t_6 = (__pyx_t_7 != 0);
         if (__pyx_t_6) {
 
-          /* "netCDF4/_netCDF4.pyx":4471
+          /* "netCDF4/_netCDF4.pyx":4582
  *                     times.append(totaltime/1.e6/60)
  *                 elif unit in hr_units:
  *                     times.append(totaltime/1.e6/3600)             # <<<<<<<<<<<<<<
  *                 elif unit in day_units:
  *                     times.append(totaltime/1.e6/3600./24.)
  */
-          __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
-          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_int_3600); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_int_3600); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4472
+        /* "netCDF4/_netCDF4.pyx":4583
  *                 elif unit in hr_units:
  *                     times.append(totaltime/1.e6/3600)
  *                 elif unit in day_units:             # <<<<<<<<<<<<<<
  *                     times.append(totaltime/1.e6/3600./24.)
  *                 else:
  */
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_day_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_day_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_3, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
 
-          /* "netCDF4/_netCDF4.pyx":4473
+          /* "netCDF4/_netCDF4.pyx":4584
  *                     times.append(totaltime/1.e6/3600)
  *                 elif unit in day_units:
  *                     times.append(totaltime/1.e6/3600./24.)             # <<<<<<<<<<<<<<
  *                 else:
  *                     raise ValueError('unsupported time units')
  */
-          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_totaltime, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_float_3600_); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_float_3600_); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_float_24_); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_float_24_); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_times, __pyx_t_3); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           goto __pyx_L27;
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":4475
+          /* "netCDF4/_netCDF4.pyx":4586
  *                     times.append(totaltime/1.e6/3600./24.)
  *                 else:
  *                     raise ValueError('unsupported time units')             # <<<<<<<<<<<<<<
  *         if isscalar:
  *             return times[0]
  */
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__101, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__102, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_Raise(__pyx_t_3, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         __pyx_L27:;
       }
       __pyx_L24:;
 
-      /* "netCDF4/_netCDF4.pyx":4455
+      /* "netCDF4/_netCDF4.pyx":4566
  *             ismasked = True
  *         times = []
  *         for date in dates.flat:             # <<<<<<<<<<<<<<
@@ -49413,7 +49607,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     }
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4476
+    /* "netCDF4/_netCDF4.pyx":4587
  *                 else:
  *                     raise ValueError('unsupported time units')
  *         if isscalar:             # <<<<<<<<<<<<<<
@@ -49423,7 +49617,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     __pyx_t_7 = (__pyx_v_isscalar != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":4477
+      /* "netCDF4/_netCDF4.pyx":4588
  *                     raise ValueError('unsupported time units')
  *         if isscalar:
  *             return times[0]             # <<<<<<<<<<<<<<
@@ -49431,7 +49625,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
  *             return numpy.reshape(numpy.array(times), shape)
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_11 = __Pyx_GetItemInt_List(__pyx_v_times, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4477; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_11 = __Pyx_GetItemInt_List(__pyx_v_times, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_r = __pyx_t_11;
       __pyx_t_11 = 0;
@@ -49439,7 +49633,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4479
+      /* "netCDF4/_netCDF4.pyx":4590
  *             return times[0]
  *         else:
  *             return numpy.reshape(numpy.array(times), shape)             # <<<<<<<<<<<<<<
@@ -49447,14 +49641,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
  *         cdftime = netcdftime.utime(units,calendar=calendar)
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_1 = NULL;
@@ -49468,21 +49662,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
         }
       }
       if (!__pyx_t_1) {
-        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_times); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_times); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
       } else {
-        __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
         __Pyx_INCREF(__pyx_v_times);
         PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_v_times);
         __Pyx_GIVEREF(__pyx_v_times);
-        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (unlikely(!__pyx_v_shape)) { __Pyx_RaiseUnboundLocalError("shape"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+      if (unlikely(!__pyx_v_shape)) { __Pyx_RaiseUnboundLocalError("shape"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
       __pyx_t_4 = NULL;
       __pyx_t_12 = 0;
       if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -49495,7 +49689,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
           __pyx_t_12 = 1;
         }
       }
-      __pyx_t_15 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       if (__pyx_t_4) {
         PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -49506,7 +49700,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
       PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_12, __pyx_v_shape);
       __Pyx_GIVEREF(__pyx_v_shape);
       __pyx_t_3 = 0;
-      __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_15, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_15, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -49517,27 +49711,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4481
+    /* "netCDF4/_netCDF4.pyx":4592
  *             return numpy.reshape(numpy.array(times), shape)
  *     else: # use netcdftime module for other calendars
  *         cdftime = netcdftime.utime(units,calendar=calendar)             # <<<<<<<<<<<<<<
  *         return cdftime.date2num(dates)
  * 
  */
-    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_utime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_utime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_INCREF(__pyx_v_units);
     PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_units);
     __Pyx_GIVEREF(__pyx_v_units);
-    __pyx_t_15 = PyDict_New(); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = PyDict_New(); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
-    if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_calendar, __pyx_v_calendar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, __pyx_t_15); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_15, __pyx_n_s_calendar, __pyx_v_calendar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_11, __pyx_t_15); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
@@ -49545,7 +49739,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     __pyx_v_cdftime = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4482
+    /* "netCDF4/_netCDF4.pyx":4593
  *     else: # use netcdftime module for other calendars
  *         cdftime = netcdftime.utime(units,calendar=calendar)
  *         return cdftime.date2num(dates)             # <<<<<<<<<<<<<<
@@ -49553,7 +49747,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
  * def num2date(times,units,calendar='standard'):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdftime, __pyx_n_s_date2num); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdftime, __pyx_n_s_date2num); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
     __pyx_t_11 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_15))) {
@@ -49566,16 +49760,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
       }
     }
     if (!__pyx_t_11) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_v_dates); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_v_dates); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
     } else {
-      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_11); __pyx_t_11 = NULL;
       __Pyx_INCREF(__pyx_v_dates);
       PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_dates);
       __Pyx_GIVEREF(__pyx_v_dates);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
@@ -49585,12 +49779,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4405
+  /* "netCDF4/_netCDF4.pyx":4516
  *     return a
  * 
  * def date2num(dates,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * date2num(dates,units,calendar='standard')
+ * **`date2num(dates,units,calendar='standard')`**
  */
 
   /* function exit code */
@@ -49619,17 +49813,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_14date2num(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4484
+/* "netCDF4/_netCDF4.pyx":4595
  *         return cdftime.date2num(dates)
  * 
  * def num2date(times,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * num2date(times,units,calendar='standard')
+ * **`num2date(times,units,calendar='standard')`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_17num2date(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_16num2date[] = "\nnum2date(times,units,calendar='standard')\n\nReturn datetime objects given numeric time values. The units\nof the numeric time values are described by the C{units} argument\nand the C{calendar} keyword. The returned datetime objects represent\nUTC with no time-zone offset, even if the specified\nC{units} contain a time-zone offset.\n\n at param times: numeric time values.\n\n at param units: a string of the form C{'B{time units} since  [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_16num2date[] = "\n**`num2date(times,units,calendar='standard')`**\n\nReturn datetime objects given numeric time values. The units\nof the numeric time values are described by the `units` argument\nand the `calendar` keyword. The returned datetime objects represent\nUTC with no time-zone offset, even if the specified\n`units` contain a time-zone offset.\n\n**`times`**: numeric time values.\n\n**`units`**: a string of the form `<time units> since <r [...]
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_17num2date = {"num2date", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_17num2date, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_16num2date};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_17num2date(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_times = 0;
@@ -49663,7 +49857,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_17num2date(PyObject *__pyx_self, Py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_units)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("num2date", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4484; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("num2date", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4595; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -49672,7 +49866,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_17num2date(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "num2date") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4484; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "num2date") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4595; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -49689,7 +49883,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_17num2date(PyObject *__pyx_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("num2date", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4484; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("num2date", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4595; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.num2date", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -49743,14 +49937,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
   __Pyx_INCREF(__pyx_v_times);
   __Pyx_INCREF(__pyx_v_calendar);
 
-  /* "netCDF4/_netCDF4.pyx":4521
+  /* "netCDF4/_netCDF4.pyx":4632
  * contains one.
  *     """
  *     calendar = calendar.lower()             # <<<<<<<<<<<<<<
  *     basedate = _dateparse(units)
  *     unit = units.split()[0].lower()
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_calendar, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_calendar, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -49763,24 +49957,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_calendar, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4522
+  /* "netCDF4/_netCDF4.pyx":4633
  *     """
  *     calendar = calendar.lower()
  *     basedate = _dateparse(units)             # <<<<<<<<<<<<<<
  *     unit = units.split()[0].lower()
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_dateparse); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_dateparse); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
@@ -49793,16 +49987,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_units);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_units);
     __Pyx_GIVEREF(__pyx_v_units);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -49810,14 +50004,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
   __pyx_v_basedate = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4523
+  /* "netCDF4/_netCDF4.pyx":4634
  *     calendar = calendar.lower()
  *     basedate = _dateparse(units)
  *     unit = units.split()[0].lower()             # <<<<<<<<<<<<<<
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_units, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_units, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -49830,17 +50024,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4523; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4634; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -49854,36 +50048,36 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_unit = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4525
+  /* "netCDF4/_netCDF4.pyx":4636
  *     unit = units.split()[0].lower()
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \             # <<<<<<<<<<<<<<
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):
  *         # use python datetime module,
  */
-  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_calendar, __pyx_n_s_proleptic_gregorian, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_v_calendar, __pyx_n_s_proleptic_gregorian, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_6) {
     goto __pyx_L5_next_or;
   } else {
   }
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_basedate, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_basedate, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   if (!__pyx_t_6) {
   } else {
@@ -49892,7 +50086,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
   }
   __pyx_L5_next_or:;
 
-  /* "netCDF4/_netCDF4.pyx":4526
+  /* "netCDF4/_netCDF4.pyx":4637
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):             # <<<<<<<<<<<<<<
@@ -49901,13 +50095,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
  */
   __Pyx_INCREF(__pyx_v_calendar);
   __pyx_t_4 = __pyx_v_calendar;
-  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_gregorian, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_gregorian, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_7) {
   } else {
     __pyx_t_6 = __pyx_t_7;
     goto __pyx_L8_bool_binop_done;
   }
-  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_standard, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_standard, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_6 = __pyx_t_7;
   __pyx_L8_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -49917,17 +50111,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     __pyx_t_5 = __pyx_t_7;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_gregorian); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_gregorian); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyObject_RichCompare(__pyx_v_basedate, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_basedate, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_5 = __pyx_t_7;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_5) {
 
-    /* "netCDF4/_netCDF4.pyx":4528
+    /* "netCDF4/_netCDF4.pyx":4639
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):
  *         # use python datetime module,
  *         isscalar = False             # <<<<<<<<<<<<<<
@@ -49936,7 +50130,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
  */
     __pyx_v_isscalar = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4529
+    /* "netCDF4/_netCDF4.pyx":4640
  *         # use python datetime module,
  *         isscalar = False
  *         try:             # <<<<<<<<<<<<<<
@@ -49950,14 +50144,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
       __Pyx_XGOTREF(__pyx_t_10);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4530
+        /* "netCDF4/_netCDF4.pyx":4641
  *         isscalar = False
  *         try:
  *             times[0]             # <<<<<<<<<<<<<<
  *         except:
  *             isscalar = True
  */
-        __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_times, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4530; __pyx_clineno = __LINE__; goto __pyx_L10_error;};
+        __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_times, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4641; __pyx_clineno = __LINE__; goto __pyx_L10_error;};
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       }
@@ -49971,7 +50165,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4531
+      /* "netCDF4/_netCDF4.pyx":4642
  *         try:
  *             times[0]
  *         except:             # <<<<<<<<<<<<<<
@@ -49980,12 +50174,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
  */
       /*except:*/ {
         __Pyx_AddTraceback("netCDF4._netCDF4.num2date", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4531; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
+        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4642; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_GOTREF(__pyx_t_1);
 
-        /* "netCDF4/_netCDF4.pyx":4532
+        /* "netCDF4/_netCDF4.pyx":4643
  *             times[0]
  *         except:
  *             isscalar = True             # <<<<<<<<<<<<<<
@@ -50012,7 +50206,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
       __pyx_L17_try_end:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4533
+    /* "netCDF4/_netCDF4.pyx":4644
  *         except:
  *             isscalar = True
  *         if isscalar:             # <<<<<<<<<<<<<<
@@ -50022,32 +50216,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     __pyx_t_5 = (__pyx_v_isscalar != 0);
     if (__pyx_t_5) {
 
-      /* "netCDF4/_netCDF4.pyx":4534
+      /* "netCDF4/_netCDF4.pyx":4645
  *             isscalar = True
  *         if isscalar:
  *             times = numpy.array([times],dtype='d')             # <<<<<<<<<<<<<<
  *         else:
  *             times = numpy.array(times, dtype='d')
  */
-      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_times);
       PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_times);
       __Pyx_GIVEREF(__pyx_v_times);
-      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
       __Pyx_GIVEREF(__pyx_t_1);
       __pyx_t_1 = 0;
-      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_d) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_d) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4645; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -50058,27 +50252,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4536
+      /* "netCDF4/_netCDF4.pyx":4647
  *             times = numpy.array([times],dtype='d')
  *         else:
  *             times = numpy.array(times, dtype='d')             # <<<<<<<<<<<<<<
  *             shape = times.shape
  *         ismasked = False
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_times);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_times);
       __Pyx_GIVEREF(__pyx_v_times);
-      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_d) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_d) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -50086,21 +50280,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
       __Pyx_DECREF_SET(__pyx_v_times, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4537
+      /* "netCDF4/_netCDF4.pyx":4648
  *         else:
  *             times = numpy.array(times, dtype='d')
  *             shape = times.shape             # <<<<<<<<<<<<<<
  *         ismasked = False
  *         if hasattr(times,'mask'):
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_times, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_times, __pyx_n_s_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_shape = __pyx_t_4;
       __pyx_t_4 = 0;
     }
     __pyx_L20:;
 
-    /* "netCDF4/_netCDF4.pyx":4538
+    /* "netCDF4/_netCDF4.pyx":4649
  *             times = numpy.array(times, dtype='d')
  *             shape = times.shape
  *         ismasked = False             # <<<<<<<<<<<<<<
@@ -50109,30 +50303,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
  */
     __pyx_v_ismasked = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4539
+    /* "netCDF4/_netCDF4.pyx":4650
  *             shape = times.shape
  *         ismasked = False
  *         if hasattr(times,'mask'):             # <<<<<<<<<<<<<<
  *             mask = times.mask
  *             ismasked = True
  */
-    __pyx_t_5 = PyObject_HasAttr(__pyx_v_times, __pyx_n_s_mask); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_HasAttr(__pyx_v_times, __pyx_n_s_mask); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_7 = (__pyx_t_5 != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":4540
+      /* "netCDF4/_netCDF4.pyx":4651
  *         ismasked = False
  *         if hasattr(times,'mask'):
  *             mask = times.mask             # <<<<<<<<<<<<<<
  *             ismasked = True
  *         dates = []
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_times, __pyx_n_s_mask); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_times, __pyx_n_s_mask); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_mask = __pyx_t_4;
       __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4541
+      /* "netCDF4/_netCDF4.pyx":4652
  *         if hasattr(times,'mask'):
  *             mask = times.mask
  *             ismasked = True             # <<<<<<<<<<<<<<
@@ -50144,34 +50338,34 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
     __pyx_L21:;
 
-    /* "netCDF4/_netCDF4.pyx":4542
+    /* "netCDF4/_netCDF4.pyx":4653
  *             mask = times.mask
  *             ismasked = True
  *         dates = []             # <<<<<<<<<<<<<<
  *         for time in times.flat:
  *             if ismasked and not time:
  */
-    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_dates = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4543
+    /* "netCDF4/_netCDF4.pyx":4654
  *             ismasked = True
  *         dates = []
  *         for time in times.flat:             # <<<<<<<<<<<<<<
  *             if ismasked and not time:
  *                 dates.append(None)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_times, __pyx_n_s_flat); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_times, __pyx_n_s_flat); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
       __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     for (;;) {
@@ -50179,16 +50373,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
         if (likely(PyList_CheckExact(__pyx_t_2))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -50197,7 +50391,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -50206,7 +50400,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
       __Pyx_XDECREF_SET(__pyx_v_time, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4544
+      /* "netCDF4/_netCDF4.pyx":4655
  *         dates = []
  *         for time in times.flat:
  *             if ismasked and not time:             # <<<<<<<<<<<<<<
@@ -50219,95 +50413,95 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
         __pyx_t_7 = __pyx_t_5;
         goto __pyx_L25_bool_binop_done;
       }
-      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_time); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_time); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_6 = ((!__pyx_t_5) != 0);
       __pyx_t_7 = __pyx_t_6;
       __pyx_L25_bool_binop_done:;
       if (__pyx_t_7) {
 
-        /* "netCDF4/_netCDF4.pyx":4545
+        /* "netCDF4/_netCDF4.pyx":4656
  *         for time in times.flat:
  *             if ismasked and not time:
  *                 dates.append(None)             # <<<<<<<<<<<<<<
  *             else:
  *                 # convert to total seconds
  */
-        __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_dates, Py_None); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_dates, Py_None); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         goto __pyx_L24;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4548
+        /* "netCDF4/_netCDF4.pyx":4659
  *             else:
  *                 # convert to total seconds
  *                 if unit in microsec_units:             # <<<<<<<<<<<<<<
  *                     tsecs = time/1.e6
  *                 elif unit in millisec_units:
  */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_microsec_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_microsec_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_6 = (__pyx_t_7 != 0);
         if (__pyx_t_6) {
 
-          /* "netCDF4/_netCDF4.pyx":4549
+          /* "netCDF4/_netCDF4.pyx":4660
  *                 # convert to total seconds
  *                 if unit in microsec_units:
  *                     tsecs = time/1.e6             # <<<<<<<<<<<<<<
  *                 elif unit in millisec_units:
  *                     tsecs = time/1.e3
  */
-          __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_v_time, __pyx_float_1_e6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_v_time, __pyx_float_1_e6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_XDECREF_SET(__pyx_v_tsecs, __pyx_t_4);
           __pyx_t_4 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4550
+        /* "netCDF4/_netCDF4.pyx":4661
  *                 if unit in microsec_units:
  *                     tsecs = time/1.e6
  *                 elif unit in millisec_units:             # <<<<<<<<<<<<<<
  *                     tsecs = time/1.e3
  *                 elif unit in sec_units:
  */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_millisec_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_millisec_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
 
-          /* "netCDF4/_netCDF4.pyx":4551
+          /* "netCDF4/_netCDF4.pyx":4662
  *                     tsecs = time/1.e6
  *                 elif unit in millisec_units:
  *                     tsecs = time/1.e3             # <<<<<<<<<<<<<<
  *                 elif unit in sec_units:
  *                     tsecs = time
  */
-          __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_v_time, __pyx_float_1_e3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_v_time, __pyx_float_1_e3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_XDECREF_SET(__pyx_v_tsecs, __pyx_t_4);
           __pyx_t_4 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4552
+        /* "netCDF4/_netCDF4.pyx":4663
  *                 elif unit in millisec_units:
  *                     tsecs = time/1.e3
  *                 elif unit in sec_units:             # <<<<<<<<<<<<<<
  *                     tsecs = time
  *                 elif unit in min_units:
  */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sec_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sec_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_6 = (__pyx_t_7 != 0);
         if (__pyx_t_6) {
 
-          /* "netCDF4/_netCDF4.pyx":4553
+          /* "netCDF4/_netCDF4.pyx":4664
  *                     tsecs = time/1.e3
  *                 elif unit in sec_units:
  *                     tsecs = time             # <<<<<<<<<<<<<<
@@ -50319,84 +50513,84 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4554
+        /* "netCDF4/_netCDF4.pyx":4665
  *                 elif unit in sec_units:
  *                     tsecs = time
  *                 elif unit in min_units:             # <<<<<<<<<<<<<<
  *                     tsecs = time*60.
  *                 elif unit in hr_units:
  */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_min_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_min_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
 
-          /* "netCDF4/_netCDF4.pyx":4555
+          /* "netCDF4/_netCDF4.pyx":4666
  *                     tsecs = time
  *                 elif unit in min_units:
  *                     tsecs = time*60.             # <<<<<<<<<<<<<<
  *                 elif unit in hr_units:
  *                     tsecs = time*3600.
  */
-          __pyx_t_4 = PyNumber_Multiply(__pyx_v_time, __pyx_float_60_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyNumber_Multiply(__pyx_v_time, __pyx_float_60_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_XDECREF_SET(__pyx_v_tsecs, __pyx_t_4);
           __pyx_t_4 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4556
+        /* "netCDF4/_netCDF4.pyx":4667
  *                 elif unit in min_units:
  *                     tsecs = time*60.
  *                 elif unit in hr_units:             # <<<<<<<<<<<<<<
  *                     tsecs = time*3600.
  *                 elif unit in day_units:
  */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_hr_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_hr_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_6 = (__pyx_t_7 != 0);
         if (__pyx_t_6) {
 
-          /* "netCDF4/_netCDF4.pyx":4557
+          /* "netCDF4/_netCDF4.pyx":4668
  *                     tsecs = time*60.
  *                 elif unit in hr_units:
  *                     tsecs = time*3600.             # <<<<<<<<<<<<<<
  *                 elif unit in day_units:
  *                     tsecs = time*86400.
  */
-          __pyx_t_4 = PyNumber_Multiply(__pyx_v_time, __pyx_float_3600_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyNumber_Multiply(__pyx_v_time, __pyx_float_3600_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_XDECREF_SET(__pyx_v_tsecs, __pyx_t_4);
           __pyx_t_4 = 0;
           goto __pyx_L27;
         }
 
-        /* "netCDF4/_netCDF4.pyx":4558
+        /* "netCDF4/_netCDF4.pyx":4669
  *                 elif unit in hr_units:
  *                     tsecs = time*3600.
  *                 elif unit in day_units:             # <<<<<<<<<<<<<<
  *                     tsecs = time*86400.
  *                 else:
  */
-        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_day_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_day_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = (__Pyx_PySequence_Contains(__pyx_v_unit, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_7 = (__pyx_t_6 != 0);
         if (__pyx_t_7) {
 
-          /* "netCDF4/_netCDF4.pyx":4559
+          /* "netCDF4/_netCDF4.pyx":4670
  *                     tsecs = time*3600.
  *                 elif unit in day_units:
  *                     tsecs = time*86400.             # <<<<<<<<<<<<<<
  *                 else:
  *                     raise ValueError('unsupported time units')
  */
-          __pyx_t_4 = PyNumber_Multiply(__pyx_v_time, __pyx_float_86400_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyNumber_Multiply(__pyx_v_time, __pyx_float_86400_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_XDECREF_SET(__pyx_v_tsecs, __pyx_t_4);
           __pyx_t_4 = 0;
@@ -50404,81 +50598,81 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
         }
         /*else*/ {
 
-          /* "netCDF4/_netCDF4.pyx":4561
+          /* "netCDF4/_netCDF4.pyx":4672
  *                     tsecs = time*86400.
  *                 else:
  *                     raise ValueError('unsupported time units')             # <<<<<<<<<<<<<<
  *                 # compute time delta.
  *                 days = tsecs // 86400.
  */
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__102, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_Raise(__pyx_t_4, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         __pyx_L27:;
 
-        /* "netCDF4/_netCDF4.pyx":4563
+        /* "netCDF4/_netCDF4.pyx":4674
  *                     raise ValueError('unsupported time units')
  *                 # compute time delta.
  *                 days = tsecs // 86400.             # <<<<<<<<<<<<<<
  *                 msecsd = tsecs*1.e6 - days*86400.*1.e6
  *                 secs = msecsd // 1.e6
  */
-        __pyx_t_4 = PyNumber_FloorDivide(__pyx_v_tsecs, __pyx_float_86400_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyNumber_FloorDivide(__pyx_v_tsecs, __pyx_float_86400_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_XDECREF_SET(__pyx_v_days, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4564
+        /* "netCDF4/_netCDF4.pyx":4675
  *                 # compute time delta.
  *                 days = tsecs // 86400.
  *                 msecsd = tsecs*1.e6 - days*86400.*1.e6             # <<<<<<<<<<<<<<
  *                 secs = msecsd // 1.e6
  *                 msecs = numpy.round(msecsd - secs*1.e6)
  */
-        __pyx_t_4 = PyNumber_Multiply(__pyx_v_tsecs, __pyx_float_1_e6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyNumber_Multiply(__pyx_v_tsecs, __pyx_float_1_e6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_3 = PyNumber_Multiply(__pyx_v_days, __pyx_float_86400_); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Multiply(__pyx_v_days, __pyx_float_86400_); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_float_1_e6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_float_1_e6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_XDECREF_SET(__pyx_v_msecsd, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4565
+        /* "netCDF4/_netCDF4.pyx":4676
  *                 days = tsecs // 86400.
  *                 msecsd = tsecs*1.e6 - days*86400.*1.e6
  *                 secs = msecsd // 1.e6             # <<<<<<<<<<<<<<
  *                 msecs = numpy.round(msecsd - secs*1.e6)
  *                 td = timedelta(days=days,seconds=secs,microseconds=msecs)
  */
-        __pyx_t_3 = PyNumber_FloorDivide(__pyx_v_msecsd, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyNumber_FloorDivide(__pyx_v_msecsd, __pyx_float_1_e6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_secs, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4566
+        /* "netCDF4/_netCDF4.pyx":4677
  *                 msecsd = tsecs*1.e6 - days*86400.*1.e6
  *                 secs = msecsd // 1.e6
  *                 msecs = numpy.round(msecsd - secs*1.e6)             # <<<<<<<<<<<<<<
  *                 td = timedelta(days=days,seconds=secs,microseconds=msecs)
  *                 # add time delta to base date.
  */
-        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_round); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_round); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = PyNumber_Multiply(__pyx_v_secs, __pyx_float_1_e6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyNumber_Multiply(__pyx_v_secs, __pyx_float_1_e6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_14 = PyNumber_Subtract(__pyx_v_msecsd, __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PyNumber_Subtract(__pyx_v_msecsd, __pyx_t_1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __pyx_t_1 = NULL;
@@ -50492,17 +50686,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
           }
         }
         if (!__pyx_t_1) {
-          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_14); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
           __Pyx_GOTREF(__pyx_t_3);
         } else {
-          __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_15);
           PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
           PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_14);
           __Pyx_GIVEREF(__pyx_t_14);
           __pyx_t_14 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         }
@@ -50510,51 +50704,51 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
         __Pyx_XDECREF_SET(__pyx_v_msecs, __pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4567
+        /* "netCDF4/_netCDF4.pyx":4678
  *                 secs = msecsd // 1.e6
  *                 msecs = numpy.round(msecsd - secs*1.e6)
  *                 td = timedelta(days=days,seconds=secs,microseconds=msecs)             # <<<<<<<<<<<<<<
  *                 # add time delta to base date.
  *                 date = basedate + td
  */
-        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_timedelta); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_timedelta); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_days, __pyx_v_days) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_seconds, __pyx_v_secs) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_microseconds, __pyx_v_msecs) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_days, __pyx_v_days) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_seconds, __pyx_v_secs) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_microseconds, __pyx_v_msecs) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_XDECREF_SET(__pyx_v_td, __pyx_t_15);
         __pyx_t_15 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4569
+        /* "netCDF4/_netCDF4.pyx":4680
  *                 td = timedelta(days=days,seconds=secs,microseconds=msecs)
  *                 # add time delta to base date.
  *                 date = basedate + td             # <<<<<<<<<<<<<<
  *                 dates.append(date)
  *         if isscalar:
  */
-        __pyx_t_15 = PyNumber_Add(__pyx_v_basedate, __pyx_v_td); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = PyNumber_Add(__pyx_v_basedate, __pyx_v_td); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         __Pyx_XDECREF_SET(__pyx_v_date, __pyx_t_15);
         __pyx_t_15 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4570
+        /* "netCDF4/_netCDF4.pyx":4681
  *                 # add time delta to base date.
  *                 date = basedate + td
  *                 dates.append(date)             # <<<<<<<<<<<<<<
  *         if isscalar:
  *             return dates[0]
  */
-        __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_dates, __pyx_v_date); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_dates, __pyx_v_date); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __pyx_L24:;
 
-      /* "netCDF4/_netCDF4.pyx":4543
+      /* "netCDF4/_netCDF4.pyx":4654
  *             ismasked = True
  *         dates = []
  *         for time in times.flat:             # <<<<<<<<<<<<<<
@@ -50564,7 +50758,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4571
+    /* "netCDF4/_netCDF4.pyx":4682
  *                 date = basedate + td
  *                 dates.append(date)
  *         if isscalar:             # <<<<<<<<<<<<<<
@@ -50574,7 +50768,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     __pyx_t_7 = (__pyx_v_isscalar != 0);
     if (__pyx_t_7) {
 
-      /* "netCDF4/_netCDF4.pyx":4572
+      /* "netCDF4/_netCDF4.pyx":4683
  *                 dates.append(date)
  *         if isscalar:
  *             return dates[0]             # <<<<<<<<<<<<<<
@@ -50582,7 +50776,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
  *             return numpy.reshape(numpy.array(dates), shape)
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_dates, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4572; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_dates, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4683; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -50590,7 +50784,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4574
+      /* "netCDF4/_netCDF4.pyx":4685
  *             return dates[0]
  *         else:
  *             return numpy.reshape(numpy.array(dates), shape)             # <<<<<<<<<<<<<<
@@ -50598,14 +50792,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
  *         cdftime = netcdftime.utime(units,calendar=calendar)
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -50619,21 +50813,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
         }
       }
       if (!__pyx_t_3) {
-        __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_dates); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_dates); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
       } else {
-        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
         __Pyx_INCREF(__pyx_v_dates);
         PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_dates);
         __Pyx_GIVEREF(__pyx_v_dates);
-        __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_1, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_1, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       }
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-      if (unlikely(!__pyx_v_shape)) { __Pyx_RaiseUnboundLocalError("shape"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+      if (unlikely(!__pyx_v_shape)) { __Pyx_RaiseUnboundLocalError("shape"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
       __pyx_t_14 = NULL;
       __pyx_t_11 = 0;
       if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -50646,7 +50840,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
           __pyx_t_11 = 1;
         }
       }
-      __pyx_t_1 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       if (__pyx_t_14) {
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14); __Pyx_GIVEREF(__pyx_t_14); __pyx_t_14 = NULL;
@@ -50657,7 +50851,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
       PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_11, __pyx_v_shape);
       __Pyx_GIVEREF(__pyx_v_shape);
       __pyx_t_15 = 0;
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -50668,27 +50862,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4576
+    /* "netCDF4/_netCDF4.pyx":4687
  *             return numpy.reshape(numpy.array(dates), shape)
  *     else: # use netcdftime for other calendars
  *         cdftime = netcdftime.utime(units,calendar=calendar)             # <<<<<<<<<<<<<<
  *         return cdftime.num2date(times)
  * 
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utime); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utime); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_units);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_units);
     __Pyx_GIVEREF(__pyx_v_units);
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_calendar, __pyx_v_calendar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_calendar, __pyx_v_calendar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -50696,7 +50890,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     __pyx_v_cdftime = __pyx_t_15;
     __pyx_t_15 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4577
+    /* "netCDF4/_netCDF4.pyx":4688
  *     else: # use netcdftime for other calendars
  *         cdftime = netcdftime.utime(units,calendar=calendar)
  *         return cdftime.num2date(times)             # <<<<<<<<<<<<<<
@@ -50704,7 +50898,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
  * def date2index(dates, nctime, calendar=None, select='exact'):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdftime, __pyx_n_s_num2date); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdftime, __pyx_n_s_num2date); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -50717,16 +50911,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
       }
     }
     if (!__pyx_t_2) {
-      __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_times); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_times); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
     } else {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
       __Pyx_INCREF(__pyx_v_times);
       PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_times);
       __Pyx_GIVEREF(__pyx_v_times);
-      __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
@@ -50736,12 +50930,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4484
+  /* "netCDF4/_netCDF4.pyx":4595
  *         return cdftime.date2num(dates)
  * 
  * def num2date(times,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * num2date(times,units,calendar='standard')
+ * **`num2date(times,units,calendar='standard')`**
  */
 
   /* function exit code */
@@ -50776,17 +50970,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_16num2date(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4579
+/* "netCDF4/_netCDF4.pyx":4690
  *         return cdftime.num2date(times)
  * 
  * def date2index(dates, nctime, calendar=None, select='exact'):             # <<<<<<<<<<<<<<
  *     """
- * date2index(dates, nctime, calendar=None, select='exact')
+ * **`date2index(dates, nctime, calendar=None, select='exact')`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_19date2index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_18date2index[] = "\ndate2index(dates, nctime, calendar=None, select='exact')\n\nReturn indices of a netCDF time variable corresponding to the given dates.\n\n at param dates: A datetime object or a sequence of datetime objects.\nThe datetime objects should not include a time-zone offset.\n\n at param nctime: A netCDF time variable object. The nctime object must have a\nC{units} attribute.\n\n at keyword calendar: Describes the calendar used in the time cal [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_18date2index[] = "\n**`date2index(dates, nctime, calendar=None, select='exact')`**\n\nReturn indices of a netCDF time variable corresponding to the given dates.\n\n**`dates`**: A datetime object or a sequence of datetime objects.\nThe datetime objects should not include a time-zone offset.\n\n**`nctime`**: A netCDF time variable object. The nctime object must have a\n`units` attribute.\n\n**`calendar`**: describes the calendar used in the time cal [...]
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_19date2index = {"date2index", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_19date2index, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_18date2index};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_19date2index(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_dates = 0;
@@ -50823,7 +51017,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_19date2index(PyObject *__pyx_self,
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nctime)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("date2index", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("date2index", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4690; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -50837,7 +51031,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_19date2index(PyObject *__pyx_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "date2index") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "date2index") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4690; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -50856,7 +51050,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_19date2index(PyObject *__pyx_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("date2index", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("date2index", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4690; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.date2index", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -50889,26 +51083,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
   __Pyx_RefNannySetupContext("date2index", 0);
   __Pyx_INCREF(__pyx_v_calendar);
 
-  /* "netCDF4/_netCDF4.pyx":4608
+  /* "netCDF4/_netCDF4.pyx":4721
  * to the given datetime object(s).
  *     """
  *     if calendar == None:             # <<<<<<<<<<<<<<
  *         calendar = getattr(nctime, 'calendar', 'standard')
  *     calendar = calendar.lower()
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_calendar, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_calendar, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4609
+    /* "netCDF4/_netCDF4.pyx":4722
  *     """
  *     if calendar == None:
  *         calendar = getattr(nctime, 'calendar', 'standard')             # <<<<<<<<<<<<<<
  *     calendar = calendar.lower()
  *     basedate = _dateparse(nctime.units)
  */
-    __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_nctime, __pyx_n_s_calendar, __pyx_n_s_standard); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_nctime, __pyx_n_s_calendar, __pyx_n_s_standard); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_calendar, __pyx_t_1);
     __pyx_t_1 = 0;
@@ -50916,14 +51110,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4610
+  /* "netCDF4/_netCDF4.pyx":4723
  *     if calendar == None:
  *         calendar = getattr(nctime, 'calendar', 'standard')
  *     calendar = calendar.lower()             # <<<<<<<<<<<<<<
  *     basedate = _dateparse(nctime.units)
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_calendar, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_calendar, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -50936,26 +51130,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF_SET(__pyx_v_calendar, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4611
+  /* "netCDF4/_netCDF4.pyx":4724
  *         calendar = getattr(nctime, 'calendar', 'standard')
  *     calendar = calendar.lower()
  *     basedate = _dateparse(nctime.units)             # <<<<<<<<<<<<<<
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_dateparse); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_dateparse); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nctime, __pyx_n_s_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_nctime, __pyx_n_s_units); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -50968,17 +51162,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
     PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -50986,26 +51180,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
   __pyx_v_basedate = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4613
+  /* "netCDF4/_netCDF4.pyx":4726
  *     basedate = _dateparse(nctime.units)
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \             # <<<<<<<<<<<<<<
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):
  *         # use python datetime
  */
-  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_calendar, __pyx_n_s_proleptic_gregorian, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_v_calendar, __pyx_n_s_proleptic_gregorian, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_7) {
     goto __pyx_L6_next_or;
   } else {
   }
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_basedate, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_basedate, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   if (!__pyx_t_7) {
   } else {
@@ -51014,7 +51208,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
   }
   __pyx_L6_next_or:;
 
-  /* "netCDF4/_netCDF4.pyx":4614
+  /* "netCDF4/_netCDF4.pyx":4727
  * 
  *     if (calendar == 'proleptic_gregorian' and basedate.year >= MINYEAR) or \
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):             # <<<<<<<<<<<<<<
@@ -51023,13 +51217,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
  */
   __Pyx_INCREF(__pyx_v_calendar);
   __pyx_t_6 = __pyx_v_calendar;
-  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_gregorian, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_gregorian, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_8) {
   } else {
     __pyx_t_7 = __pyx_t_8;
     goto __pyx_L9_bool_binop_done;
   }
-  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_standard, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_standard, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_7 = __pyx_t_8;
   __pyx_L9_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -51039,28 +51233,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     __pyx_t_2 = __pyx_t_8;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_gregorian); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_gregorian); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = PyObject_RichCompare(__pyx_v_basedate, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_RichCompare(__pyx_v_basedate, __pyx_t_6, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = __pyx_t_8;
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4616
+    /* "netCDF4/_netCDF4.pyx":4729
  *        (calendar in ['gregorian','standard'] and basedate > gregorian):
  *         # use python datetime
  *         times = date2num(dates,nctime.units,calendar=calendar)             # <<<<<<<<<<<<<<
  *         return netcdftime.time2index(times, nctime, calendar, select)
  *     else: # use netcdftime module for other cases
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_date2num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_date2num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nctime, __pyx_n_s_units); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nctime, __pyx_n_s_units); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_dates);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dates);
@@ -51068,10 +51262,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_6);
     __pyx_t_6 = 0;
-    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_calendar, __pyx_v_calendar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_calendar, __pyx_v_calendar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -51079,7 +51273,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     __pyx_v_times = __pyx_t_4;
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4617
+    /* "netCDF4/_netCDF4.pyx":4730
  *         # use python datetime
  *         times = date2num(dates,nctime.units,calendar=calendar)
  *         return netcdftime.time2index(times, nctime, calendar, select)             # <<<<<<<<<<<<<<
@@ -51087,9 +51281,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
  *         return netcdftime.date2index(dates, nctime, calendar, select)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time2index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time2index); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -51104,7 +51298,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
         __pyx_t_9 = 1;
       }
     }
-    __pyx_t_3 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     if (__pyx_t_6) {
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
@@ -51121,7 +51315,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v_select);
     PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_9, __pyx_v_select);
     __Pyx_GIVEREF(__pyx_v_select);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -51131,7 +51325,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4619
+    /* "netCDF4/_netCDF4.pyx":4732
  *         return netcdftime.time2index(times, nctime, calendar, select)
  *     else: # use netcdftime module for other cases
  *         return netcdftime.date2index(dates, nctime, calendar, select)             # <<<<<<<<<<<<<<
@@ -51139,9 +51333,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
  * class MFDataset(Dataset):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_netcdftime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_date2index); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_date2index); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_1 = NULL;
@@ -51156,7 +51350,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
         __pyx_t_9 = 1;
       }
     }
-    __pyx_t_6 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_1) {
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -51173,7 +51367,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v_select);
     PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_9, __pyx_v_select);
     __Pyx_GIVEREF(__pyx_v_select);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -51182,12 +51376,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4579
+  /* "netCDF4/_netCDF4.pyx":4690
  *         return cdftime.num2date(times)
  * 
  * def date2index(dates, nctime, calendar=None, select='exact'):             # <<<<<<<<<<<<<<
  *     """
- * date2index(dates, nctime, calendar=None, select='exact')
+ * **`date2index(dates, nctime, calendar=None, select='exact')`**
  */
 
   /* function exit code */
@@ -51208,12 +51402,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_18date2index(CYTHON_UNUSED PyObject
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4653
+/* "netCDF4/_netCDF4.pyx":4764
  *     """
  * 
  *     def __init__(self, files, check=False, aggdim=None, exclude=[]):             # <<<<<<<<<<<<<<
  *         """
- * Open a Dataset spanning multiple files, making it look as if it was a
+ *         **`__init__(self, files, check=False, aggdim=None, exclude=[])`**
  */
 
 static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
@@ -51226,7 +51420,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__defaults__(CYTHON_UN
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__defaults__", 0);
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)Py_False));
   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_False));
@@ -51237,7 +51431,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__defaults__(CYTHON_UN
   __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_exclude);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_exclude);
   __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_exclude);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -51263,7 +51457,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__defaults__(CYTHON_UN
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_9MFDataset___init__[] = "\nOpen a Dataset spanning multiple files, making it look as if it was a\nsingle file. Variables in the list of files that share the same\ndimension (specified with the keyword C{aggdim}) are aggregated. If\nC{aggdim} is not specified, the unlimited is aggregated.  Currently,\nC{aggdim} must be the leftmost (slowest varying) dimension of each\nof the variables to be aggregated.\n\nAdapted from U{pycdf <http://pysclint.sourc [...]
+static char __pyx_doc_7netCDF4_8_netCDF4_9MFDataset___init__[] = "\n        **`__init__(self, files, check=False, aggdim=None, exclude=[])`**\n\n        Open a Dataset spanning multiple files, making it look as if it was a\n        single file. Variables in the list of files that share the same\n        dimension (specified with the keyword `aggdim`) are aggregated. If\n        `aggdim` is not specified, the unlimited is aggregated.  Currently,\n        `aggdim` must be the leftmost (slo [...]
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_1__init__ = {"__init__", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset___init__};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_self = 0;
@@ -51304,7 +51498,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_1__init__(PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_files)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -51323,7 +51517,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_1__init__(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -51344,7 +51538,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_1__init__(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -51414,7 +51608,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_files);
 
-  /* "netCDF4/_netCDF4.pyx":4690
+  /* "netCDF4/_netCDF4.pyx":4797
  *         # Open the master file in the base class, so that the CDFMF instance
  *         # can be used like a CDF instance.
  *         if isinstance(files, str):             # <<<<<<<<<<<<<<
@@ -51425,23 +51619,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4691
+    /* "netCDF4/_netCDF4.pyx":4798
  *         # can be used like a CDF instance.
  *         if isinstance(files, str):
  *             if files.startswith('http'):             # <<<<<<<<<<<<<<
  *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
  *                 raise ValueError(msg)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_files, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_files, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_2) {
 
-      /* "netCDF4/_netCDF4.pyx":4692
+      /* "netCDF4/_netCDF4.pyx":4799
  *         if isinstance(files, str):
  *             if files.startswith('http'):
  *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'             # <<<<<<<<<<<<<<
@@ -51451,35 +51645,35 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_kp_s_cannot_using_file_globbing_for_r);
       __pyx_v_msg = __pyx_kp_s_cannot_using_file_globbing_for_r;
 
-      /* "netCDF4/_netCDF4.pyx":4693
+      /* "netCDF4/_netCDF4.pyx":4800
  *             if files.startswith('http'):
  *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
  *                 raise ValueError(msg)             # <<<<<<<<<<<<<<
  *             else:
  *                 files = sorted(glob(files))
  */
-      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4693; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_v_msg);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_msg);
       __Pyx_GIVEREF(__pyx_v_msg);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4693; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4693; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4695
+      /* "netCDF4/_netCDF4.pyx":4802
  *                 raise ValueError(msg)
  *             else:
  *                 files = sorted(glob(files))             # <<<<<<<<<<<<<<
  * 
  *         master = files[0]
  */
-      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_glob); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_glob); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
@@ -51492,26 +51686,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         }
       }
       if (!__pyx_t_6) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_files); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_files); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
         __Pyx_INCREF(__pyx_v_files);
         PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_files);
         __Pyx_GIVEREF(__pyx_v_files);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PySequence_List(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_3 = ((PyObject*)__pyx_t_5);
       __pyx_t_5 = 0;
-      __pyx_t_8 = PyList_Sort(__pyx_t_3); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyList_Sort(__pyx_t_3); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF_SET(__pyx_v_files, __pyx_t_3);
       __pyx_t_3 = 0;
     }
@@ -51519,46 +51713,46 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4697
+  /* "netCDF4/_netCDF4.pyx":4804
  *                 files = sorted(glob(files))
  * 
  *         master = files[0]             # <<<<<<<<<<<<<<
  * 
  *         # Open the master again, this time as a classic CDF instance. This will avoid
  */
-  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_files, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4697; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_files, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4804; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_master = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4701
+  /* "netCDF4/_netCDF4.pyx":4808
  *         # Open the master again, this time as a classic CDF instance. This will avoid
  *         # calling methods of the CDFMF subclass when querying the master file.
  *         cdfm = Dataset(master)             # <<<<<<<<<<<<<<
  *         # copy attributes from master.
  *         for name, value in cdfm.__dict__.items():
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_master);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_master);
   __Pyx_GIVEREF(__pyx_v_master);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_cdfm = ((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4703
+  /* "netCDF4/_netCDF4.pyx":4810
  *         cdfm = Dataset(master)
  *         # copy attributes from master.
  *         for name, value in cdfm.__dict__.items():             # <<<<<<<<<<<<<<
  *             self.__dict__[name] = value
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cdfm), __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_cdfm), __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -51572,10 +51766,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -51583,9 +51777,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   for (;;) {
@@ -51593,16 +51787,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -51611,7 +51805,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -51627,7 +51821,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -51640,15 +51834,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext;
@@ -51656,7 +51850,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_GOTREF(__pyx_t_3);
       index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L7_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       goto __pyx_L8_unpacking_done;
@@ -51664,7 +51858,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L8_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
@@ -51672,19 +51866,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4704
+    /* "netCDF4/_netCDF4.pyx":4811
  *         # copy attributes from master.
  *         for name, value in cdfm.__dict__.items():
  *             self.__dict__[name] = value             # <<<<<<<<<<<<<<
  * 
  *         # Make sure the master defines a dim with name aggdim,
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyObject_SetItem(__pyx_t_5, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4703
+    /* "netCDF4/_netCDF4.pyx":4810
  *         cdfm = Dataset(master)
  *         # copy attributes from master.
  *         for name, value in cdfm.__dict__.items():             # <<<<<<<<<<<<<<
@@ -51694,7 +51888,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4708
+  /* "netCDF4/_netCDF4.pyx":4815
  *         # Make sure the master defines a dim with name aggdim,
  *         # or an unlimited dimension.
  *         aggDimId = None             # <<<<<<<<<<<<<<
@@ -51704,14 +51898,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   __Pyx_INCREF(Py_None);
   __pyx_v_aggDimId = Py_None;
 
-  /* "netCDF4/_netCDF4.pyx":4709
+  /* "netCDF4/_netCDF4.pyx":4816
  *         # or an unlimited dimension.
  *         aggDimId = None
  *         for dimname,dim in cdfm.dimensions.items():             # <<<<<<<<<<<<<<
  *             if aggdim is None:
  *                 if dim.isunlimited():
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdfm->dimensions, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdfm->dimensions, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_7 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -51724,10 +51918,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_7) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   } else {
-    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -51735,9 +51929,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_10 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   for (;;) {
@@ -51745,16 +51939,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -51763,7 +51957,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -51779,7 +51973,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -51792,15 +51986,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_t_7);
       __Pyx_INCREF(__pyx_t_3);
       #else
-      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       #endif
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext;
@@ -51808,7 +52002,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_GOTREF(__pyx_t_7);
       index = 1; __pyx_t_3 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L11_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_3);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       goto __pyx_L12_unpacking_done;
@@ -51816,7 +52010,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L12_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_7);
@@ -51824,7 +52018,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4710
+    /* "netCDF4/_netCDF4.pyx":4817
  *         aggDimId = None
  *         for dimname,dim in cdfm.dimensions.items():
  *             if aggdim is None:             # <<<<<<<<<<<<<<
@@ -51835,14 +52029,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":4711
+      /* "netCDF4/_netCDF4.pyx":4818
  *         for dimname,dim in cdfm.dimensions.items():
  *             if aggdim is None:
  *                 if dim.isunlimited():             # <<<<<<<<<<<<<<
  *                     aggDimId = dim
  *                     aggDimName = dimname
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_7 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -51855,18 +52049,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         }
       }
       if (__pyx_t_7) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       } else {
-        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":4712
+        /* "netCDF4/_netCDF4.pyx":4819
  *             if aggdim is None:
  *                 if dim.isunlimited():
  *                     aggDimId = dim             # <<<<<<<<<<<<<<
@@ -51876,7 +52070,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         __Pyx_INCREF(__pyx_v_dim);
         __Pyx_DECREF_SET(__pyx_v_aggDimId, __pyx_v_dim);
 
-        /* "netCDF4/_netCDF4.pyx":4713
+        /* "netCDF4/_netCDF4.pyx":4820
  *                 if dim.isunlimited():
  *                     aggDimId = dim
  *                     aggDimName = dimname             # <<<<<<<<<<<<<<
@@ -51892,19 +52086,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4715
+      /* "netCDF4/_netCDF4.pyx":4822
  *                     aggDimName = dimname
  *             else:
  *                 if dimname == aggdim:             # <<<<<<<<<<<<<<
  *                     aggDimId = dim
  *                     aggDimName = dimname
  */
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_dimname, __pyx_v_aggdim, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_dimname, __pyx_v_aggdim, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":4716
+        /* "netCDF4/_netCDF4.pyx":4823
  *             else:
  *                 if dimname == aggdim:
  *                     aggDimId = dim             # <<<<<<<<<<<<<<
@@ -51914,7 +52108,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         __Pyx_INCREF(__pyx_v_dim);
         __Pyx_DECREF_SET(__pyx_v_aggDimId, __pyx_v_dim);
 
-        /* "netCDF4/_netCDF4.pyx":4717
+        /* "netCDF4/_netCDF4.pyx":4824
  *                 if dimname == aggdim:
  *                     aggDimId = dim
  *                     aggDimName = dimname             # <<<<<<<<<<<<<<
@@ -51929,7 +52123,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
     __pyx_L13:;
 
-    /* "netCDF4/_netCDF4.pyx":4709
+    /* "netCDF4/_netCDF4.pyx":4816
  *         # or an unlimited dimension.
  *         aggDimId = None
  *         for dimname,dim in cdfm.dimensions.items():             # <<<<<<<<<<<<<<
@@ -51939,7 +52133,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4718
+  /* "netCDF4/_netCDF4.pyx":4825
  *                     aggDimId = dim
  *                     aggDimName = dimname
  *         if aggDimId is None:             # <<<<<<<<<<<<<<
@@ -51950,48 +52144,48 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "netCDF4/_netCDF4.pyx":4719
+    /* "netCDF4/_netCDF4.pyx":4826
  *                     aggDimName = dimname
  *         if aggDimId is None:
  *             raise IOError("master dataset %s does not have a aggregation dimension" % master)             # <<<<<<<<<<<<<<
  * 
  *         # Get info on all aggregation variables defined in the master.
  */
-    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_master_dataset_s_does_not_have_a, __pyx_v_master); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_master_dataset_s_does_not_have_a, __pyx_v_master); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_t_5, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4723
+  /* "netCDF4/_netCDF4.pyx":4830
  *         # Get info on all aggregation variables defined in the master.
  *         # Make sure the master defines at least one aggregation variable.
  *         masterRecVar = {}             # <<<<<<<<<<<<<<
  *         for vName,v in cdfm.variables.items():
  *             # skip variables specified in exclude list.
  */
-  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_v_masterRecVar = ((PyObject*)__pyx_t_5);
   __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4724
+  /* "netCDF4/_netCDF4.pyx":4831
  *         # Make sure the master defines at least one aggregation variable.
  *         masterRecVar = {}
  *         for vName,v in cdfm.variables.items():             # <<<<<<<<<<<<<<
  *             # skip variables specified in exclude list.
  *             if vName in exclude: continue
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdfm->variables, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_cdfm->variables, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -52004,10 +52198,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -52015,9 +52209,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   for (;;) {
@@ -52025,16 +52219,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -52043,7 +52237,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -52059,7 +52253,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -52072,15 +52266,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext;
@@ -52088,7 +52282,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_GOTREF(__pyx_t_3);
       index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L19_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       goto __pyx_L20_unpacking_done;
@@ -52096,7 +52290,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L20_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_vName, __pyx_t_3);
@@ -52104,88 +52298,88 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4726
+    /* "netCDF4/_netCDF4.pyx":4833
  *         for vName,v in cdfm.variables.items():
  *             # skip variables specified in exclude list.
  *             if vName in exclude: continue             # <<<<<<<<<<<<<<
  *             dims = v.dimensions
  *             shape = v.shape
  */
-    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_vName, __pyx_v_exclude, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_vName, __pyx_v_exclude, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
       goto __pyx_L17_continue;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4727
+    /* "netCDF4/_netCDF4.pyx":4834
  *             # skip variables specified in exclude list.
  *             if vName in exclude: continue
  *             dims = v.dimensions             # <<<<<<<<<<<<<<
  *             shape = v.shape
  *             dtype = v.dtype
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_XDECREF_SET(__pyx_v_dims, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4728
+    /* "netCDF4/_netCDF4.pyx":4835
  *             if vName in exclude: continue
  *             dims = v.dimensions
  *             shape = v.shape             # <<<<<<<<<<<<<<
  *             dtype = v.dtype
  *             # Be carefull: we may deal with a scalar (dimensionless) variable.
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_shape); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_XDECREF_SET(__pyx_v_shape, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4729
+    /* "netCDF4/_netCDF4.pyx":4836
  *             dims = v.dimensions
  *             shape = v.shape
  *             dtype = v.dtype             # <<<<<<<<<<<<<<
  *             # Be carefull: we may deal with a scalar (dimensionless) variable.
  *             # Unlimited dimension always occupies index 0.
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_XDECREF_SET(__pyx_v_dtype, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4732
+    /* "netCDF4/_netCDF4.pyx":4839
  *             # Be carefull: we may deal with a scalar (dimensionless) variable.
  *             # Unlimited dimension always occupies index 0.
  *             if (len(dims) > 0 and aggDimName == dims[0]):             # <<<<<<<<<<<<<<
  *                 masterRecVar[vName] = (dims, shape, dtype)
  *         if len(masterRecVar) == 0:
  */
-    __pyx_t_12 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_2 = ((__pyx_t_12 > 0) != 0);
     if (__pyx_t_2) {
     } else {
       __pyx_t_1 = __pyx_t_2;
       goto __pyx_L23_bool_binop_done;
     }
-    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_dims, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_dims, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4839; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_7 = PyObject_RichCompare(__pyx_v_aggDimName, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyObject_RichCompare(__pyx_v_aggDimName, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = __pyx_t_2;
     __pyx_L23_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":4733
+      /* "netCDF4/_netCDF4.pyx":4840
  *             # Unlimited dimension always occupies index 0.
  *             if (len(dims) > 0 and aggDimName == dims[0]):
  *                 masterRecVar[vName] = (dims, shape, dtype)             # <<<<<<<<<<<<<<
  *         if len(masterRecVar) == 0:
  *             raise IOError("master dataset %s does not have any variables to aggregate" % master)
  */
-      __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_INCREF(__pyx_v_dims);
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_dims);
@@ -52196,13 +52390,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_v_dtype);
       PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_dtype);
       __Pyx_GIVEREF(__pyx_v_dtype);
-      if (unlikely(PyDict_SetItem(__pyx_v_masterRecVar, __pyx_v_vName, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyDict_SetItem(__pyx_v_masterRecVar, __pyx_v_vName, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L22;
     }
     __pyx_L22:;
 
-    /* "netCDF4/_netCDF4.pyx":4724
+    /* "netCDF4/_netCDF4.pyx":4831
  *         # Make sure the master defines at least one aggregation variable.
  *         masterRecVar = {}
  *         for vName,v in cdfm.variables.items():             # <<<<<<<<<<<<<<
@@ -52213,47 +52407,47 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4734
+  /* "netCDF4/_netCDF4.pyx":4841
  *             if (len(dims) > 0 and aggDimName == dims[0]):
  *                 masterRecVar[vName] = (dims, shape, dtype)
  *         if len(masterRecVar) == 0:             # <<<<<<<<<<<<<<
  *             raise IOError("master dataset %s does not have any variables to aggregate" % master)
  * 
  */
-  __pyx_t_9 = PyDict_Size(__pyx_v_masterRecVar); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyDict_Size(__pyx_v_masterRecVar); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_1 = ((__pyx_t_9 == 0) != 0);
   if (__pyx_t_1) {
 
-    /* "netCDF4/_netCDF4.pyx":4735
+    /* "netCDF4/_netCDF4.pyx":4842
  *                 masterRecVar[vName] = (dims, shape, dtype)
  *         if len(masterRecVar) == 0:
  *             raise IOError("master dataset %s does not have any variables to aggregate" % master)             # <<<<<<<<<<<<<<
  * 
  *         # Create the following:
  */
-    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_master_dataset_s_does_not_have_a_2, __pyx_v_master); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_master_dataset_s_does_not_have_a_2, __pyx_v_master); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":4743
+  /* "netCDF4/_netCDF4.pyx":4850
  *         #             a list of the corresponding Variable instance, one for each
  *         #             cdf file of the file set
  *         cdf = [cdfm]             # <<<<<<<<<<<<<<
  *         self._cdf = cdf        # Store this now, because dim() method needs it
  *         cdfVLen = [len(aggDimId)]
  */
-  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_cdfm));
   PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_cdfm));
@@ -52261,26 +52455,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   __pyx_v_cdf = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4744
+  /* "netCDF4/_netCDF4.pyx":4851
  *         #             cdf file of the file set
  *         cdf = [cdfm]
  *         self._cdf = cdf        # Store this now, because dim() method needs it             # <<<<<<<<<<<<<<
  *         cdfVLen = [len(aggDimId)]
  *         cdfRecVar = {}
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdf, __pyx_v_cdf) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdf, __pyx_v_cdf) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4745
+  /* "netCDF4/_netCDF4.pyx":4852
  *         cdf = [cdfm]
  *         self._cdf = cdf        # Store this now, because dim() method needs it
  *         cdfVLen = [len(aggDimId)]             # <<<<<<<<<<<<<<
  *         cdfRecVar = {}
  *         for v in masterRecVar.keys():
  */
-  __pyx_t_9 = PyObject_Length(__pyx_v_aggDimId); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = PyObject_Length(__pyx_v_aggDimId); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
@@ -52288,34 +52482,34 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   __pyx_v_cdfVLen = ((PyObject*)__pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4746
+  /* "netCDF4/_netCDF4.pyx":4853
  *         self._cdf = cdf        # Store this now, because dim() method needs it
  *         cdfVLen = [len(aggDimId)]
  *         cdfRecVar = {}             # <<<<<<<<<<<<<<
  *         for v in masterRecVar.keys():
  *             cdfRecVar[v] = [cdfm.variables[v]]
  */
-  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_v_cdfRecVar = ((PyObject*)__pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4747
+  /* "netCDF4/_netCDF4.pyx":4854
  *         cdfVLen = [len(aggDimId)]
  *         cdfRecVar = {}
  *         for v in masterRecVar.keys():             # <<<<<<<<<<<<<<
  *             cdfRecVar[v] = [cdfm.variables[v]]
  * 
  */
-  __pyx_t_7 = __Pyx_PyDict_Keys(__pyx_v_masterRecVar); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyDict_Keys(__pyx_v_masterRecVar); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
     __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   for (;;) {
@@ -52323,16 +52517,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -52341,7 +52535,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -52350,24 +52544,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4748
+    /* "netCDF4/_netCDF4.pyx":4855
  *         cdfRecVar = {}
  *         for v in masterRecVar.keys():
  *             cdfRecVar[v] = [cdfm.variables[v]]             # <<<<<<<<<<<<<<
  * 
  *         # Open each remaining file in read-only mode.
  */
-    __pyx_t_7 = PyObject_GetItem(__pyx_v_cdfm->variables, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4748; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_7 = PyObject_GetItem(__pyx_v_cdfm->variables, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4855; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_7);
     __Pyx_GIVEREF(__pyx_t_7);
     __pyx_t_7 = 0;
-    if (unlikely(PyDict_SetItem(__pyx_v_cdfRecVar, __pyx_v_v, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyDict_SetItem(__pyx_v_cdfRecVar, __pyx_v_v, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4747
+    /* "netCDF4/_netCDF4.pyx":4854
  *         cdfVLen = [len(aggDimId)]
  *         cdfRecVar = {}
  *         for v in masterRecVar.keys():             # <<<<<<<<<<<<<<
@@ -52377,22 +52571,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4753
+  /* "netCDF4/_netCDF4.pyx":4860
  *         # Make sure each file defines the same aggregation variables as the master
  *         # and that the variables are defined in the same way (name, shape and type)
  *         for f in files[1:]:             # <<<<<<<<<<<<<<
  *             part = Dataset(f)
  *             varInfo = part.variables
  */
-  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_files, 1, 0, NULL, NULL, &__pyx_slice__104, 1, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_files, 1, 0, NULL, NULL, &__pyx_slice__105, 1, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
     __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_10 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   for (;;) {
@@ -52400,16 +52594,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_5))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -52418,7 +52612,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -52427,25 +52621,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4754
+    /* "netCDF4/_netCDF4.pyx":4861
  *         # and that the variables are defined in the same way (name, shape and type)
  *         for f in files[1:]:
  *             part = Dataset(f)             # <<<<<<<<<<<<<<
  *             varInfo = part.variables
  *             for v in masterRecVar.keys():
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_f);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_f);
     __Pyx_GIVEREF(__pyx_v_f);
-    __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_XDECREF_SET(__pyx_v_part, ((struct __pyx_obj_7netCDF4_8_netCDF4_Dataset *)__pyx_t_7));
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4755
+    /* "netCDF4/_netCDF4.pyx":4862
  *         for f in files[1:]:
  *             part = Dataset(f)
  *             varInfo = part.variables             # <<<<<<<<<<<<<<
@@ -52457,22 +52651,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_varInfo, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4756
+    /* "netCDF4/_netCDF4.pyx":4863
  *             part = Dataset(f)
  *             varInfo = part.variables
  *             for v in masterRecVar.keys():             # <<<<<<<<<<<<<<
  *                 if check:
  *                     # Make sure master rec var is also defined here.
  */
-    __pyx_t_7 = __Pyx_PyDict_Keys(__pyx_v_masterRecVar); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyDict_Keys(__pyx_v_masterRecVar); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
       __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_12 = 0;
       __pyx_t_13 = NULL;
     } else {
-      __pyx_t_12 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -52480,16 +52674,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         if (likely(PyList_CheckExact(__pyx_t_4))) {
           if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_7); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_7); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_7); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_7); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -52498,7 +52692,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -52507,24 +52701,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4757
+      /* "netCDF4/_netCDF4.pyx":4864
  *             varInfo = part.variables
  *             for v in masterRecVar.keys():
  *                 if check:             # <<<<<<<<<<<<<<
  *                     # Make sure master rec var is also defined here.
  *                     if v not in varInfo.keys():
  */
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_check); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_check); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__pyx_t_1) {
 
-        /* "netCDF4/_netCDF4.pyx":4759
+        /* "netCDF4/_netCDF4.pyx":4866
  *                 if check:
  *                     # Make sure master rec var is also defined here.
  *                     if v not in varInfo.keys():             # <<<<<<<<<<<<<<
  *                         raise IOError("aggregation variable %s not defined in %s" % (v, f))
  * 
  */
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_varInfo, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_varInfo, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_t_6 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -52537,26 +52731,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           }
         }
         if (__pyx_t_6) {
-          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         } else {
-          __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_v, __pyx_t_7, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = (__Pyx_PySequence_Contains(__pyx_v_v, __pyx_t_7, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":4760
+          /* "netCDF4/_netCDF4.pyx":4867
  *                     # Make sure master rec var is also defined here.
  *                     if v not in varInfo.keys():
  *                         raise IOError("aggregation variable %s not defined in %s" % (v, f))             # <<<<<<<<<<<<<<
  * 
  *                     #if not vInst.dimensions[0] != aggDimName:
  */
-          __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_INCREF(__pyx_v_v);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_v);
@@ -52564,32 +52758,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           __Pyx_INCREF(__pyx_v_f);
           PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_f);
           __Pyx_GIVEREF(__pyx_v_f);
-          __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_aggregation_variable_s_not_defin, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_aggregation_variable_s_not_defin, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-          __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
           __Pyx_GIVEREF(__pyx_t_3);
           __pyx_t_3 = 0;
-          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __Pyx_Raise(__pyx_t_3, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
 
-        /* "netCDF4/_netCDF4.pyx":4764
+        /* "netCDF4/_netCDF4.pyx":4871
  *                     #if not vInst.dimensions[0] != aggDimName:
  * 
  *                     masterDims, masterShape, masterType = masterRecVar[v][:3]             # <<<<<<<<<<<<<<
  *                     extDims = varInfo[v].dimensions
  *                     extShape = varInfo[v].shape
  */
-        __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_masterRecVar, __pyx_v_v); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_masterRecVar, __pyx_v_v); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 3, NULL, NULL, &__pyx_slice__105, 0, 1, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 3, NULL, NULL, &__pyx_slice__106, 0, 1, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
@@ -52602,7 +52796,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           if (unlikely(size != 3)) {
             if (size > 3) __Pyx_RaiseTooManyValuesError(3);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -52618,17 +52812,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           __Pyx_INCREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_t_14);
           #else
-          __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_14 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           #endif
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_15 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_15 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_15);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_t_11 = Py_TYPE(__pyx_t_15)->tp_iternext;
@@ -52638,7 +52832,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           __Pyx_GOTREF(__pyx_t_6);
           index = 2; __pyx_t_14 = __pyx_t_11(__pyx_t_15); if (unlikely(!__pyx_t_14)) goto __pyx_L34_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_14);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_15), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_15), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_11 = NULL;
           __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
           goto __pyx_L35_unpacking_done;
@@ -52646,7 +52840,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
           __pyx_t_11 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L35_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_masterDims, __pyx_t_3);
@@ -52656,71 +52850,71 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         __Pyx_XDECREF_SET(__pyx_v_masterType, __pyx_t_14);
         __pyx_t_14 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4765
+        /* "netCDF4/_netCDF4.pyx":4872
  * 
  *                     masterDims, masterShape, masterType = masterRecVar[v][:3]
  *                     extDims = varInfo[v].dimensions             # <<<<<<<<<<<<<<
  *                     extShape = varInfo[v].shape
  *                     extType = varInfo[v].dtype
  */
-        __pyx_t_7 = PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4765; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_7 = PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_XDECREF_SET(__pyx_v_extDims, __pyx_t_14);
         __pyx_t_14 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4766
+        /* "netCDF4/_netCDF4.pyx":4873
  *                     masterDims, masterShape, masterType = masterRecVar[v][:3]
  *                     extDims = varInfo[v].dimensions
  *                     extShape = varInfo[v].shape             # <<<<<<<<<<<<<<
  *                     extType = varInfo[v].dtype
  *                     # Check that dimension names are identical.
  */
-        __pyx_t_14 = PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4766; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_14 = PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         __Pyx_XDECREF_SET(__pyx_v_extShape, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4767
+        /* "netCDF4/_netCDF4.pyx":4874
  *                     extDims = varInfo[v].dimensions
  *                     extShape = varInfo[v].shape
  *                     extType = varInfo[v].dtype             # <<<<<<<<<<<<<<
  *                     # Check that dimension names are identical.
  *                     if masterDims != extDims:
  */
-        __pyx_t_7 = PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4767; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_7 = PyObject_GetItem(__pyx_v_varInfo, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4874; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dtype); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4767; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dtype); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_XDECREF_SET(__pyx_v_extType, __pyx_t_14);
         __pyx_t_14 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4769
+        /* "netCDF4/_netCDF4.pyx":4876
  *                     extType = varInfo[v].dtype
  *                     # Check that dimension names are identical.
  *                     if masterDims != extDims:             # <<<<<<<<<<<<<<
  *                         raise IOError("variable %s : dimensions mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  */
-        __pyx_t_14 = PyObject_RichCompare(__pyx_v_masterDims, __pyx_v_extDims, Py_NE); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PyObject_RichCompare(__pyx_v_masterDims, __pyx_v_extDims, Py_NE); __Pyx_XGOTREF(__pyx_t_14); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_14); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":4772
+          /* "netCDF4/_netCDF4.pyx":4879
  *                         raise IOError("variable %s : dimensions mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, masterDims, f, extDims))             # <<<<<<<<<<<<<<
  * 
  *                     # Check that the ranks are identical, and the dimension lengths are
  */
-          __pyx_t_14 = PyTuple_New(5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = PyTuple_New(5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_INCREF(__pyx_v_v);
           PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_v);
@@ -52738,63 +52932,63 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           PyTuple_SET_ITEM(__pyx_t_14, 4, __pyx_v_extDims);
           __Pyx_GIVEREF(__pyx_v_extDims);
 
-          /* "netCDF4/_netCDF4.pyx":4771
+          /* "netCDF4/_netCDF4.pyx":4878
  *                     if masterDims != extDims:
  *                         raise IOError("variable %s : dimensions mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %             # <<<<<<<<<<<<<<
  *                                        (v, master, masterDims, f, extDims))
  * 
  */
-          __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_dimensions_mismatch_b, __pyx_t_14); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_dimensions_mismatch_b, __pyx_t_14); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4770
+          /* "netCDF4/_netCDF4.pyx":4877
  *                     # Check that dimension names are identical.
  *                     if masterDims != extDims:
  *                         raise IOError("variable %s : dimensions mismatch between "             # <<<<<<<<<<<<<<
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, masterDims, f, extDims))
  */
-          __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7);
           __Pyx_GIVEREF(__pyx_t_7);
           __pyx_t_7 = 0;
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
           __Pyx_Raise(__pyx_t_7, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
 
-        /* "netCDF4/_netCDF4.pyx":4777
+        /* "netCDF4/_netCDF4.pyx":4884
  *                     # identical (except for that of the unlimited dimension, which of
  *                     # course may vary.
  *                     if len(masterShape) != len(extShape):             # <<<<<<<<<<<<<<
  *                         raise IOError("variable %s : rank mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  */
-        __pyx_t_16 = PyObject_Length(__pyx_v_masterShape); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_17 = PyObject_Length(__pyx_v_extShape); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_16 = PyObject_Length(__pyx_v_masterShape); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_17 = PyObject_Length(__pyx_v_extShape); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_2 = ((__pyx_t_16 != __pyx_t_17) != 0);
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":4780
+          /* "netCDF4/_netCDF4.pyx":4887
  *                         raise IOError("variable %s : rank mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, len(masterShape), f, len(extShape)))             # <<<<<<<<<<<<<<
  *                     if masterShape[1:] != extShape[1:]:
  *                         raise IOError("variable %s : shape mismatch between "
  */
-          __pyx_t_17 = PyObject_Length(__pyx_v_masterShape); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_17 = PyObject_Length(__pyx_v_masterShape); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_17); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
-          __pyx_t_17 = PyObject_Length(__pyx_v_extShape); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_14 = PyInt_FromSsize_t(__pyx_t_17); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_17 = PyObject_Length(__pyx_v_extShape); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = PyInt_FromSsize_t(__pyx_t_17); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
-          __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_v_v);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_v);
@@ -52812,63 +53006,63 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           __pyx_t_7 = 0;
           __pyx_t_14 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4779
+          /* "netCDF4/_netCDF4.pyx":4886
  *                     if len(masterShape) != len(extShape):
  *                         raise IOError("variable %s : rank mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %             # <<<<<<<<<<<<<<
  *                                        (v, master, len(masterShape), f, len(extShape)))
  *                     if masterShape[1:] != extShape[1:]:
  */
-          __pyx_t_14 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_rank_mismatch_between, __pyx_t_6); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_rank_mismatch_between, __pyx_t_6); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4778
+          /* "netCDF4/_netCDF4.pyx":4885
  *                     # course may vary.
  *                     if len(masterShape) != len(extShape):
  *                         raise IOError("variable %s : rank mismatch between "             # <<<<<<<<<<<<<<
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, len(masterShape), f, len(extShape)))
  */
-          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_14);
           __Pyx_GIVEREF(__pyx_t_14);
           __pyx_t_14 = 0;
-          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_Raise(__pyx_t_14, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
 
-        /* "netCDF4/_netCDF4.pyx":4781
+        /* "netCDF4/_netCDF4.pyx":4888
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, len(masterShape), f, len(extShape)))
  *                     if masterShape[1:] != extShape[1:]:             # <<<<<<<<<<<<<<
  *                         raise IOError("variable %s : shape mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  */
-        __pyx_t_14 = __Pyx_PyObject_GetSlice(__pyx_v_masterShape, 1, 0, NULL, NULL, &__pyx_slice__106, 1, 0, 1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_PyObject_GetSlice(__pyx_v_masterShape, 1, 0, NULL, NULL, &__pyx_slice__107, 1, 0, 1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_extShape, 1, 0, NULL, NULL, &__pyx_slice__107, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_extShape, 1, 0, NULL, NULL, &__pyx_slice__108, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_7 = PyObject_RichCompare(__pyx_t_14, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyObject_RichCompare(__pyx_t_14, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":4784
+          /* "netCDF4/_netCDF4.pyx":4891
  *                         raise IOError("variable %s : shape mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, masterShape, f, extShape))             # <<<<<<<<<<<<<<
  * 
  *                     # Check that the data types are identical.
  */
-          __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_INCREF(__pyx_v_v);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_v);
@@ -52886,57 +53080,57 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_v_extShape);
           __Pyx_GIVEREF(__pyx_v_extShape);
 
-          /* "netCDF4/_netCDF4.pyx":4783
+          /* "netCDF4/_netCDF4.pyx":4890
  *                     if masterShape[1:] != extShape[1:]:
  *                         raise IOError("variable %s : shape mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %             # <<<<<<<<<<<<<<
  *                                        (v, master, masterShape, f, extShape))
  * 
  */
-          __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_shape_mismatch_betwee, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_shape_mismatch_betwee, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4782
+          /* "netCDF4/_netCDF4.pyx":4889
  *                                        (v, master, len(masterShape), f, len(extShape)))
  *                     if masterShape[1:] != extShape[1:]:
  *                         raise IOError("variable %s : shape mismatch between "             # <<<<<<<<<<<<<<
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, masterShape, f, extShape))
  */
-          __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
           __Pyx_GIVEREF(__pyx_t_6);
           __pyx_t_6 = 0;
-          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __Pyx_Raise(__pyx_t_6, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
 
-        /* "netCDF4/_netCDF4.pyx":4787
+        /* "netCDF4/_netCDF4.pyx":4894
  * 
  *                     # Check that the data types are identical.
  *                     if masterType != extType:             # <<<<<<<<<<<<<<
  *                         raise IOError("variable %s : data type mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  */
-        __pyx_t_6 = PyObject_RichCompare(__pyx_v_masterType, __pyx_v_extType, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyObject_RichCompare(__pyx_v_masterType, __pyx_v_extType, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         if (__pyx_t_2) {
 
-          /* "netCDF4/_netCDF4.pyx":4790
+          /* "netCDF4/_netCDF4.pyx":4897
  *                         raise IOError("variable %s : data type mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, masterType, f, extType))             # <<<<<<<<<<<<<<
  * 
  *                     # Everythig ok.
  */
-          __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_INCREF(__pyx_v_v);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_v);
@@ -52954,91 +53148,91 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_v_extType);
           __Pyx_GIVEREF(__pyx_v_extType);
 
-          /* "netCDF4/_netCDF4.pyx":4789
+          /* "netCDF4/_netCDF4.pyx":4896
  *                     if masterType != extType:
  *                         raise IOError("variable %s : data type mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %             # <<<<<<<<<<<<<<
  *                                        (v, master, masterType, f, extType))
  * 
  */
-          __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_data_type_mismatch_be, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_variable_s_data_type_mismatch_be, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-          /* "netCDF4/_netCDF4.pyx":4788
+          /* "netCDF4/_netCDF4.pyx":4895
  *                     # Check that the data types are identical.
  *                     if masterType != extType:
  *                         raise IOError("variable %s : data type mismatch between "             # <<<<<<<<<<<<<<
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, masterType, f, extType))
  */
-          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_6);
           PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
           __Pyx_GIVEREF(__pyx_t_7);
           __pyx_t_7 = 0;
-          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_IOError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __Pyx_Raise(__pyx_t_7, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
 
-        /* "netCDF4/_netCDF4.pyx":4793
+        /* "netCDF4/_netCDF4.pyx":4900
  * 
  *                     # Everythig ok.
  *                     vInst = part.variables[v]             # <<<<<<<<<<<<<<
  *                     cdfRecVar[v].append(vInst)
  *                 else:
  */
-        __pyx_t_7 = PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4793; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_7 = PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4900; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_XDECREF_SET(__pyx_v_vInst, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4794
+        /* "netCDF4/_netCDF4.pyx":4901
  *                     # Everythig ok.
  *                     vInst = part.variables[v]
  *                     cdfRecVar[v].append(vInst)             # <<<<<<<<<<<<<<
  *                 else:
  *                     # No making sure of anything -- assume this is ok..
  */
-        __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_cdfRecVar, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4794; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_cdfRecVar, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4901; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_7, __pyx_v_vInst); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_7, __pyx_v_vInst); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         goto __pyx_L32;
       }
       /*else*/ {
 
-        /* "netCDF4/_netCDF4.pyx":4797
+        /* "netCDF4/_netCDF4.pyx":4904
  *                 else:
  *                     # No making sure of anything -- assume this is ok..
  *                     vInst = part.variables[v]             # <<<<<<<<<<<<<<
  *                     cdfRecVar[v].append(vInst)
  * 
  */
-        __pyx_t_7 = PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4797; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_7 = PyObject_GetItem(__pyx_v_part->variables, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4904; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_XDECREF_SET(__pyx_v_vInst, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":4798
+        /* "netCDF4/_netCDF4.pyx":4905
  *                     # No making sure of anything -- assume this is ok..
  *                     vInst = part.variables[v]
  *                     cdfRecVar[v].append(vInst)             # <<<<<<<<<<<<<<
  * 
  *             cdf.append(part)
  */
-        __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_cdfRecVar, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4798; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_cdfRecVar, __pyx_v_v); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_7, __pyx_v_vInst); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_7, __pyx_v_vInst); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       }
       __pyx_L32:;
 
-      /* "netCDF4/_netCDF4.pyx":4756
+      /* "netCDF4/_netCDF4.pyx":4863
  *             part = Dataset(f)
  *             varInfo = part.variables
  *             for v in masterRecVar.keys():             # <<<<<<<<<<<<<<
@@ -53048,33 +53242,33 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4800
+    /* "netCDF4/_netCDF4.pyx":4907
  *                     cdfRecVar[v].append(vInst)
  * 
  *             cdf.append(part)             # <<<<<<<<<<<<<<
  *             cdfVLen.append(len(part.dimensions[aggDimName]))
  * 
  */
-    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_cdf, ((PyObject *)__pyx_v_part)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_cdf, ((PyObject *)__pyx_v_part)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "netCDF4/_netCDF4.pyx":4801
+    /* "netCDF4/_netCDF4.pyx":4908
  * 
  *             cdf.append(part)
  *             cdfVLen.append(len(part.dimensions[aggDimName]))             # <<<<<<<<<<<<<<
  * 
  *         # Attach attributes to the MFDataset instance.
  */
-    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4801; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-    __pyx_t_4 = PyObject_GetItem(__pyx_v_part->dimensions, __pyx_v_aggDimName); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4801; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4908; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_part->dimensions, __pyx_v_aggDimName); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4908; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_12 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_cdfVLen, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_cdfVLen, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4908; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4753
+    /* "netCDF4/_netCDF4.pyx":4860
  *         # Make sure each file defines the same aggregation variables as the master
  *         # and that the variables are defined in the same way (name, shape and type)
  *         for f in files[1:]:             # <<<<<<<<<<<<<<
@@ -53084,52 +53278,52 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4805
+  /* "netCDF4/_netCDF4.pyx":4912
  *         # Attach attributes to the MFDataset instance.
  *         # A local __setattr__() method is required for them.
  *         self._files = files            # list of cdf file names in the set             # <<<<<<<<<<<<<<
  *         self._cdfVLen = cdfVLen              # list of unlimited lengths
  *         self._cdfTLen = sum(cdfVLen) # total length
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_files_2, __pyx_v_files) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_files_2, __pyx_v_files) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4806
+  /* "netCDF4/_netCDF4.pyx":4913
  *         # A local __setattr__() method is required for them.
  *         self._files = files            # list of cdf file names in the set
  *         self._cdfVLen = cdfVLen              # list of unlimited lengths             # <<<<<<<<<<<<<<
  *         self._cdfTLen = sum(cdfVLen) # total length
  *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdfVLen, __pyx_v_cdfVLen) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdfVLen, __pyx_v_cdfVLen) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4807
+  /* "netCDF4/_netCDF4.pyx":4914
  *         self._files = files            # list of cdf file names in the set
  *         self._cdfVLen = cdfVLen              # list of unlimited lengths
  *         self._cdfTLen = sum(cdfVLen) # total length             # <<<<<<<<<<<<<<
  *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all
  *                                              # the aggregation variables
  */
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(__pyx_v_cdfVLen);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_cdfVLen);
   __Pyx_GIVEREF(__pyx_v_cdfVLen);
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdfTLen, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdfTLen, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4808
+  /* "netCDF4/_netCDF4.pyx":4915
  *         self._cdfVLen = cdfVLen              # list of unlimited lengths
  *         self._cdfTLen = sum(cdfVLen) # total length
  *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all             # <<<<<<<<<<<<<<
  *                                              # the aggregation variables
  *         self._dims = cdfm.dimensions
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdfRecVar, __pyx_v_cdfRecVar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cdfRecVar, __pyx_v_cdfRecVar) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4810
+  /* "netCDF4/_netCDF4.pyx":4917
  *         self._cdfRecVar = cdfRecVar          # dictionary of Variable instances for all
  *                                              # the aggregation variables
  *         self._dims = cdfm.dimensions             # <<<<<<<<<<<<<<
@@ -53138,10 +53332,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
  */
   __pyx_t_4 = __pyx_v_cdfm->dimensions;
   __Pyx_INCREF(__pyx_t_4);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dims, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dims, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4811
+  /* "netCDF4/_netCDF4.pyx":4918
  *                                              # the aggregation variables
  *         self._dims = cdfm.dimensions
  *         self._grps = cdfm.groups             # <<<<<<<<<<<<<<
@@ -53150,19 +53344,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
  */
   __pyx_t_4 = __pyx_v_cdfm->groups;
   __Pyx_INCREF(__pyx_t_4);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_grps, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_grps, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4812
+  /* "netCDF4/_netCDF4.pyx":4919
  *         self._dims = cdfm.dimensions
  *         self._grps = cdfm.groups
  *         for dimname, dim in self._dims.items():             # <<<<<<<<<<<<<<
  *             if dimname == aggDimName:
  *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dims); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_items); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_items); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_5 = NULL;
@@ -53176,10 +53370,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -53187,9 +53381,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __pyx_t_7 = __pyx_t_4; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   for (;;) {
@@ -53197,16 +53391,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_7))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_4); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -53215,7 +53409,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -53231,7 +53425,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -53244,15 +53438,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_6);
       #else
-      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       #endif
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_14 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_11 = Py_TYPE(__pyx_t_14)->tp_iternext;
@@ -53260,7 +53454,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_GOTREF(__pyx_t_5);
       index = 1; __pyx_t_6 = __pyx_t_11(__pyx_t_14); if (unlikely(!__pyx_t_6)) goto __pyx_L42_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_6);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_14), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_14), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       goto __pyx_L43_unpacking_done;
@@ -53268,7 +53462,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L43_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_5);
@@ -53276,31 +53470,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4813
+    /* "netCDF4/_netCDF4.pyx":4920
  *         self._grps = cdfm.groups
  *         for dimname, dim in self._dims.items():
  *             if dimname == aggDimName:             # <<<<<<<<<<<<<<
  *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
  *         self._vars = cdfm.variables
  */
-    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4813; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
-    __pyx_t_4 = PyObject_RichCompare(__pyx_v_dimname, __pyx_v_aggDimName, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4920; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    __pyx_t_4 = PyObject_RichCompare(__pyx_v_dimname, __pyx_v_aggDimName, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (__pyx_t_2) {
 
-      /* "netCDF4/_netCDF4.pyx":4814
+      /* "netCDF4/_netCDF4.pyx":4921
  *         for dimname, dim in self._dims.items():
  *             if dimname == aggDimName:
  *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)             # <<<<<<<<<<<<<<
  *         self._vars = cdfm.variables
  *         for varname,var in self._vars.items():
  */
-      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_Dimension); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_Dimension); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdfVLen); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdfVLen); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdfTLen); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdfTLen); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       __pyx_t_3 = NULL;
       __pyx_t_12 = 0;
@@ -53314,7 +53508,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           __pyx_t_12 = 1;
         }
       }
-      __pyx_t_15 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       if (__pyx_t_3) {
         PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -53331,20 +53525,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_GIVEREF(__pyx_t_14);
       __pyx_t_5 = 0;
       __pyx_t_14 = 0;
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_15, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_15, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dims); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dims); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_v_dimname, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_t_6, __pyx_v_dimname, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       goto __pyx_L44;
     }
     __pyx_L44:;
 
-    /* "netCDF4/_netCDF4.pyx":4812
+    /* "netCDF4/_netCDF4.pyx":4919
  *         self._dims = cdfm.dimensions
  *         self._grps = cdfm.groups
  *         for dimname, dim in self._dims.items():             # <<<<<<<<<<<<<<
@@ -53354,7 +53548,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4815
+  /* "netCDF4/_netCDF4.pyx":4922
  *             if dimname == aggDimName:
  *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
  *         self._vars = cdfm.variables             # <<<<<<<<<<<<<<
@@ -53363,19 +53557,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
  */
   __pyx_t_7 = __pyx_v_cdfm->variables;
   __Pyx_INCREF(__pyx_t_7);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vars, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vars, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4816
+  /* "netCDF4/_netCDF4.pyx":4923
  *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
  *         self._vars = cdfm.variables
  *         for varname,var in self._vars.items():             # <<<<<<<<<<<<<<
  *             if varname in self._cdfRecVar.keys():
  *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vars); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vars); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -53389,10 +53583,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_4) {
-    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -53400,9 +53594,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   for (;;) {
@@ -53410,16 +53604,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -53428,7 +53622,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -53444,7 +53638,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -53457,15 +53651,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_15);
       #else
-      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_15 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_15);
       #endif
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_14 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_11 = Py_TYPE(__pyx_t_14)->tp_iternext;
@@ -53473,7 +53667,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_GOTREF(__pyx_t_4);
       index = 1; __pyx_t_15 = __pyx_t_11(__pyx_t_14); if (unlikely(!__pyx_t_15)) goto __pyx_L47_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_15);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_14), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_14), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       goto __pyx_L48_unpacking_done;
@@ -53481,7 +53675,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L48_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_varname, __pyx_t_4);
@@ -53489,16 +53683,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_var, __pyx_t_15);
     __pyx_t_15 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4817
+    /* "netCDF4/_netCDF4.pyx":4924
  *         self._vars = cdfm.variables
  *         for varname,var in self._vars.items():
  *             if varname in self._cdfRecVar.keys():             # <<<<<<<<<<<<<<
  *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
  *         self._file_format = []
  */
-    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdfRecVar); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdfRecVar); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
     __pyx_t_15 = NULL;
@@ -53512,28 +53706,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       }
     }
     if (__pyx_t_15) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_15); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
     } else {
-      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_varname, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_varname, __pyx_t_7, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":4818
+      /* "netCDF4/_netCDF4.pyx":4925
  *         for varname,var in self._vars.items():
  *             if varname in self._cdfRecVar.keys():
  *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)             # <<<<<<<<<<<<<<
  *         self._file_format = []
  *         self._data_model = []
  */
-      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_Variable); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_Variable); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+      if (unlikely(!__pyx_v_aggDimName)) { __Pyx_RaiseUnboundLocalError("aggDimName"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
       __pyx_t_15 = NULL;
       __pyx_t_12 = 0;
       if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -53546,7 +53740,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
           __pyx_t_12 = 1;
         }
       }
-      __pyx_t_14 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = PyTuple_New(4+__pyx_t_12); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       if (__pyx_t_15) {
         PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __Pyx_GIVEREF(__pyx_t_15); __pyx_t_15 = NULL;
@@ -53563,20 +53757,20 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_v_aggDimName);
       PyTuple_SET_ITEM(__pyx_t_14, 3+__pyx_t_12, __pyx_v_aggDimName);
       __Pyx_GIVEREF(__pyx_v_aggDimName);
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vars); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vars); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_v_varname, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_t_4, __pyx_v_varname, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L49;
     }
     __pyx_L49:;
 
-    /* "netCDF4/_netCDF4.pyx":4816
+    /* "netCDF4/_netCDF4.pyx":4923
  *                 self._dims[dimname] = _Dimension(dimname, dim, self._cdfVLen, self._cdfTLen)
  *         self._vars = cdfm.variables
  *         for varname,var in self._vars.items():             # <<<<<<<<<<<<<<
@@ -53586,58 +53780,58 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4819
+  /* "netCDF4/_netCDF4.pyx":4926
  *             if varname in self._cdfRecVar.keys():
  *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
  *         self._file_format = []             # <<<<<<<<<<<<<<
  *         self._data_model = []
  *         self._disk_format = []
  */
-  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_file_format_2, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_file_format_2, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4820
+  /* "netCDF4/_netCDF4.pyx":4927
  *                 self._vars[varname] = _Variable(self, varname, var, aggDimName)
  *         self._file_format = []
  *         self._data_model = []             # <<<<<<<<<<<<<<
  *         self._disk_format = []
  *         for dset in self._cdf:
  */
-  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data_model_2, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_data_model_2, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4821
+  /* "netCDF4/_netCDF4.pyx":4928
  *         self._file_format = []
  *         self._data_model = []
  *         self._disk_format = []             # <<<<<<<<<<<<<<
  *         for dset in self._cdf:
  *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
  */
-  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_disk_format, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_disk_format_2, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4822
+  /* "netCDF4/_netCDF4.pyx":4929
  *         self._data_model = []
  *         self._disk_format = []
  *         for dset in self._cdf:             # <<<<<<<<<<<<<<
  *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
  *                 raise ValueError('MFNetCDF4 only works with NETCDF3_CLASSIC, NETCDF3_64BIT and NETCDF4_CLASSIC formatted files, not NETCDF4')
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdf); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdf); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
     __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
     __pyx_t_10 = NULL;
   } else {
-    __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   for (;;) {
@@ -53645,16 +53839,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_7))) {
         if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -53663,7 +53857,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -53672,90 +53866,90 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_dset, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4823
+    /* "netCDF4/_netCDF4.pyx":4930
  *         self._disk_format = []
  *         for dset in self._cdf:
  *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':             # <<<<<<<<<<<<<<
  *                 raise ValueError('MFNetCDF4 only works with NETCDF3_CLASSIC, NETCDF3_64BIT and NETCDF4_CLASSIC formatted files, not NETCDF4')
  *             self._file_format.append(dset.file_format)
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_file_format); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_file_format); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (!__pyx_t_2) {
     } else {
       __pyx_t_1 = __pyx_t_2;
       goto __pyx_L53_bool_binop_done;
     }
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_data_model); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_data_model); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_6, __pyx_n_s_NETCDF4, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_1 = __pyx_t_2;
     __pyx_L53_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "netCDF4/_netCDF4.pyx":4824
+      /* "netCDF4/_netCDF4.pyx":4931
  *         for dset in self._cdf:
  *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
  *                 raise ValueError('MFNetCDF4 only works with NETCDF3_CLASSIC, NETCDF3_64BIT and NETCDF4_CLASSIC formatted files, not NETCDF4')             # <<<<<<<<<<<<<<
  *             self._file_format.append(dset.file_format)
  *             self._data_model.append(dset.data_model)
  */
-      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_Raise(__pyx_t_6, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":4825
+    /* "netCDF4/_netCDF4.pyx":4932
  *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
  *                 raise ValueError('MFNetCDF4 only works with NETCDF3_CLASSIC, NETCDF3_64BIT and NETCDF4_CLASSIC formatted files, not NETCDF4')
  *             self._file_format.append(dset.file_format)             # <<<<<<<<<<<<<<
  *             self._data_model.append(dset.data_model)
  *             self._disk_format.append(dset.disk_format)
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_format_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_format_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_file_format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_file_format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_6, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_6, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4826
+    /* "netCDF4/_netCDF4.pyx":4933
  *                 raise ValueError('MFNetCDF4 only works with NETCDF3_CLASSIC, NETCDF3_64BIT and NETCDF4_CLASSIC formatted files, not NETCDF4')
  *             self._file_format.append(dset.file_format)
  *             self._data_model.append(dset.data_model)             # <<<<<<<<<<<<<<
  *             self._disk_format.append(dset.disk_format)
  *         self._path = '/'
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data_model_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data_model_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_data_model); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_data_model); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_6); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_6); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4827
+    /* "netCDF4/_netCDF4.pyx":4934
  *             self._file_format.append(dset.file_format)
  *             self._data_model.append(dset.data_model)
  *             self._disk_format.append(dset.disk_format)             # <<<<<<<<<<<<<<
  *         self._path = '/'
  * 
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_disk_format); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_disk_format_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_disk_format_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_disk_format); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_6, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_Append(__pyx_t_6, __pyx_t_4); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4822
+    /* "netCDF4/_netCDF4.pyx":4929
  *         self._data_model = []
  *         self._disk_format = []
  *         for dset in self._cdf:             # <<<<<<<<<<<<<<
@@ -53765,21 +53959,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4828
+  /* "netCDF4/_netCDF4.pyx":4935
  *             self._data_model.append(dset.data_model)
  *             self._disk_format.append(dset.disk_format)
  *         self._path = '/'             # <<<<<<<<<<<<<<
  * 
  *     def __setattr__(self, name, value):
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_path_2, __pyx_kp_s__14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_path_2, __pyx_kp_s__14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4653
+  /* "netCDF4/_netCDF4.pyx":4764
  *     """
  * 
  *     def __init__(self, files, check=False, aggdim=None, exclude=[]):             # <<<<<<<<<<<<<<
  *         """
- * Open a Dataset spanning multiple files, making it look as if it was a
+ *         **`__init__(self, files, check=False, aggdim=None, exclude=[])`**
  */
 
   /* function exit code */
@@ -53833,7 +54027,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset___init__(CYTHON_UNUSED P
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4830
+/* "netCDF4/_netCDF4.pyx":4937
  *         self._path = '/'
  * 
  *     def __setattr__(self, name, value):             # <<<<<<<<<<<<<<
@@ -53876,16 +54070,16 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_3__setattr__(PyObject *_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__setattr__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__setattr__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -53900,7 +54094,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_3__setattr__(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__setattr__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__setattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -53922,19 +54116,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_2__setattr__(CYTHON_UNUS
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__setattr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4832
+  /* "netCDF4/_netCDF4.pyx":4939
  *     def __setattr__(self, name, value):
  *         """override base class attribute creation"""
  *         self.__dict__[name] = value             # <<<<<<<<<<<<<<
  * 
  *     def __getattribute__(self, name):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4830
+  /* "netCDF4/_netCDF4.pyx":4937
  *         self._path = '/'
  * 
  *     def __setattr__(self, name, value):             # <<<<<<<<<<<<<<
@@ -53955,7 +54149,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_2__setattr__(CYTHON_UNUS
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4834
+/* "netCDF4/_netCDF4.pyx":4941
  *         self.__dict__[name] = value
  * 
  *     def __getattribute__(self, name):             # <<<<<<<<<<<<<<
@@ -53995,11 +54189,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__(PyObje
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__getattribute__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__getattribute__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getattribute__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getattribute__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -54012,7 +54206,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__(PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__getattribute__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__getattribute__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.MFDataset.__getattribute__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -54040,7 +54234,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getattribute__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4835
+  /* "netCDF4/_netCDF4.pyx":4942
  * 
  *     def __getattribute__(self, name):
  *         if name in ['variables','dimensions','file_format','groups',\             # <<<<<<<<<<<<<<
@@ -54049,162 +54243,162 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
  */
   __Pyx_INCREF(__pyx_v_name);
   __pyx_t_1 = __pyx_v_name;
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_variables, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_variables, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_dimensions, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_dimensions, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file_format, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file_format, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_groups, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_groups, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_data_model, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_data_model, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk_format_2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk_format, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_path, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_path, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "netCDF4/_netCDF4.pyx":4837
+    /* "netCDF4/_netCDF4.pyx":4944
  *         if name in ['variables','dimensions','file_format','groups',\
  *                     'data_model','disk_format','path']:
  *             if name == 'dimensions': return self._dims             # <<<<<<<<<<<<<<
  *             if name == 'variables': return self._vars
  *             if name == 'file_format': return self._file_format
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dimensions, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_dimensions, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_r = __pyx_t_1;
       __pyx_t_1 = 0;
       goto __pyx_L0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4838
+    /* "netCDF4/_netCDF4.pyx":4945
  *                     'data_model','disk_format','path']:
  *             if name == 'dimensions': return self._dims
  *             if name == 'variables': return self._vars             # <<<<<<<<<<<<<<
  *             if name == 'file_format': return self._file_format
  *             if name == 'data_model': return self._data_model
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_variables, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_variables, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vars); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vars); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_r = __pyx_t_1;
       __pyx_t_1 = 0;
       goto __pyx_L0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4839
+    /* "netCDF4/_netCDF4.pyx":4946
  *             if name == 'dimensions': return self._dims
  *             if name == 'variables': return self._vars
  *             if name == 'file_format': return self._file_format             # <<<<<<<<<<<<<<
  *             if name == 'data_model': return self._data_model
  *             if name == 'disk_format': return self._disk_format
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_file_format, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_file_format, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_format_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_file_format_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_r = __pyx_t_1;
       __pyx_t_1 = 0;
       goto __pyx_L0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4840
+    /* "netCDF4/_netCDF4.pyx":4947
  *             if name == 'variables': return self._vars
  *             if name == 'file_format': return self._file_format
  *             if name == 'data_model': return self._data_model             # <<<<<<<<<<<<<<
  *             if name == 'disk_format': return self._disk_format
  *             if name == 'path': return self._path
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_data_model, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_data_model, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data_model_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data_model_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_r = __pyx_t_1;
       __pyx_t_1 = 0;
       goto __pyx_L0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4841
+    /* "netCDF4/_netCDF4.pyx":4948
  *             if name == 'file_format': return self._file_format
  *             if name == 'data_model': return self._data_model
  *             if name == 'disk_format': return self._disk_format             # <<<<<<<<<<<<<<
  *             if name == 'path': return self._path
  *             if name == 'groups': return self._grps
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_disk_format_2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_disk_format, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_disk_format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_disk_format_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_r = __pyx_t_1;
       __pyx_t_1 = 0;
       goto __pyx_L0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4842
+    /* "netCDF4/_netCDF4.pyx":4949
  *             if name == 'data_model': return self._data_model
  *             if name == 'disk_format': return self._disk_format
  *             if name == 'path': return self._path             # <<<<<<<<<<<<<<
  *             if name == 'groups': return self._grps
  *         else:
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_path, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_path, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_path_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_path_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_r = __pyx_t_1;
       __pyx_t_1 = 0;
       goto __pyx_L0;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4843
+    /* "netCDF4/_netCDF4.pyx":4950
  *             if name == 'disk_format': return self._disk_format
  *             if name == 'path': return self._path
  *             if name == 'groups': return self._grps             # <<<<<<<<<<<<<<
  *         else:
  *             return Dataset.__getattribute__(self, name)
  */
-    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_groups, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_groups, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_r = __pyx_t_1;
       __pyx_t_1 = 0;
@@ -54214,7 +54408,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4845
+    /* "netCDF4/_netCDF4.pyx":4952
  *             if name == 'groups': return self._grps
  *         else:
  *             return Dataset.__getattribute__(self, name)             # <<<<<<<<<<<<<<
@@ -54222,7 +54416,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
  *     def ncattrs(self):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)), __pyx_n_s_getattribute); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)), __pyx_n_s_getattribute); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     __pyx_t_6 = 0;
@@ -54236,7 +54430,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); __pyx_t_5 = NULL;
@@ -54247,7 +54441,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_name);
     __Pyx_GIVEREF(__pyx_v_name);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -54257,7 +54451,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
   }
   __pyx_L3:;
 
-  /* "netCDF4/_netCDF4.pyx":4834
+  /* "netCDF4/_netCDF4.pyx":4941
  *         self.__dict__[name] = value
  * 
  *     def __getattribute__(self, name):             # <<<<<<<<<<<<<<
@@ -54281,17 +54475,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_4__getattribute__(CYTHON
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4847
+/* "netCDF4/_netCDF4.pyx":4954
  *             return Dataset.__getattribute__(self, name)
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
- *         return self._cdf[0].__dict__.keys()
- * 
+ *         """
+ *         **`ncattrs(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_7ncattrs(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
-static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_7ncattrs = {"ncattrs", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_7ncattrs, METH_O, 0};
+static char __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_6ncattrs[] = "\n        **`ncattrs(self)`**\n\n        return the netcdf attribute names from the master file.\n        ";
+static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_7ncattrs = {"ncattrs", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_7ncattrs, METH_O, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_6ncattrs};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_7ncattrs(PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -54314,23 +54509,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_6ncattrs(CYTHON_UNUSED P
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("ncattrs", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4848
- * 
- *     def ncattrs(self):
+  /* "netCDF4/_netCDF4.pyx":4960
+ *         return the netcdf attribute names from the master file.
+ *         """
  *         return self._cdf[0].__dict__.keys()             # <<<<<<<<<<<<<<
  * 
  *     def close(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4848; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_keys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -54344,10 +54539,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_6ncattrs(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -54355,12 +54550,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_6ncattrs(CYTHON_UNUSED P
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4847
+  /* "netCDF4/_netCDF4.pyx":4954
  *             return Dataset.__getattribute__(self, name)
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
- *         return self._cdf[0].__dict__.keys()
- * 
+ *         """
+ *         **`ncattrs(self)`**
  */
 
   /* function exit code */
@@ -54376,17 +54571,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_6ncattrs(CYTHON_UNUSED P
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4850
+/* "netCDF4/_netCDF4.pyx":4962
  *         return self._cdf[0].__dict__.keys()
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
- *         for dset in self._cdf:
- *             dset.close()
+ *         """
+ *         **`close(self)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_9close(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
-static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_9close = {"close", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_9close, METH_O, 0};
+static char __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_8close[] = "\n        **`close(self)`**\n\n        close all the open files.\n        ";
+static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_9close = {"close", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_9close, METH_O, __pyx_doc_7netCDF4_8_netCDF4_9MFDataset_8close};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9MFDataset_9close(PyObject *__pyx_self, PyObject *__pyx_v_self) {
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
@@ -54413,22 +54609,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyO
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("close", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4851
- * 
- *     def close(self):
+  /* "netCDF4/_netCDF4.pyx":4968
+ *         close all the open files.
+ *         """
  *         for dset in self._cdf:             # <<<<<<<<<<<<<<
  *             dset.close()
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cdf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
   } else {
-    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -54436,16 +54632,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyO
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -54454,7 +54650,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyO
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -54463,14 +54659,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyO
     __Pyx_XDECREF_SET(__pyx_v_dset, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4852
- *     def close(self):
+    /* "netCDF4/_netCDF4.pyx":4969
+ *         """
  *         for dset in self._cdf:
  *             dset.close()             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -54483,18 +54679,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyO
       }
     }
     if (__pyx_t_6) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4851
- * 
- *     def close(self):
+    /* "netCDF4/_netCDF4.pyx":4968
+ *         close all the open files.
+ *         """
  *         for dset in self._cdf:             # <<<<<<<<<<<<<<
  *             dset.close()
  * 
@@ -54502,12 +54698,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyO
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4850
+  /* "netCDF4/_netCDF4.pyx":4962
  *         return self._cdf[0].__dict__.keys()
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
- *         for dset in self._cdf:
- *             dset.close()
+ *         """
+ *         **`close(self)`**
  */
 
   /* function exit code */
@@ -54527,7 +54723,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_8close(CYTHON_UNUSED PyO
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4854
+/* "netCDF4/_netCDF4.pyx":4971
  *             dset.close()
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -54573,16 +54769,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4855
+  /* "netCDF4/_netCDF4.pyx":4972
  * 
  *     def __repr__(self):
  *         ncdump = ['%r\n' % type(self)]             # <<<<<<<<<<<<<<
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions.keys()])
  *         varnames = tuple([str(varname) for varname in self.variables.keys()])
  */
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -54590,18 +54786,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
   __pyx_v_ncdump = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4856
+  /* "netCDF4/_netCDF4.pyx":4973
  *     def __repr__(self):
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions.keys()])             # <<<<<<<<<<<<<<
  *         varnames = tuple([str(varname) for varname in self.variables.keys()])
  *         grpnames = ()
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -54615,10 +54811,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -54626,9 +54822,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -54636,16 +54832,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -54654,7 +54850,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -54662,36 +54858,36 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     }
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_dimname);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dimname);
     __Pyx_GIVEREF(__pyx_v_dimname);
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_dimnames = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4857
+  /* "netCDF4/_netCDF4.pyx":4974
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions.keys()])
  *         varnames = tuple([str(varname) for varname in self.variables.keys()])             # <<<<<<<<<<<<<<
  *         grpnames = ()
  *         if self.path == '/':
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_variables); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -54705,10 +54901,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -54716,9 +54912,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -54726,16 +54922,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -54744,7 +54940,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -54752,25 +54948,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     }
     __Pyx_XDECREF_SET(__pyx_v_varname, __pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_varname);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_varname);
     __Pyx_GIVEREF(__pyx_v_varname);
-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_AsTuple(((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_varnames = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4858
+  /* "netCDF4/_netCDF4.pyx":4975
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions.keys()])
  *         varnames = tuple([str(varname) for varname in self.variables.keys()])
  *         grpnames = ()             # <<<<<<<<<<<<<<
@@ -54780,37 +54976,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
   __Pyx_INCREF(__pyx_empty_tuple);
   __pyx_v_grpnames = __pyx_empty_tuple;
 
-  /* "netCDF4/_netCDF4.pyx":4859
+  /* "netCDF4/_netCDF4.pyx":4976
  *         varnames = tuple([str(varname) for varname in self.variables.keys()])
  *         grpnames = ()
  *         if self.path == '/':             # <<<<<<<<<<<<<<
  *             ncdump.append('root group (%s data model, file format %s):\n' %
  *                     (self.data_model[0], self.disk_format[0]))
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__14, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__14, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_7) {
 
-    /* "netCDF4/_netCDF4.pyx":4861
+    /* "netCDF4/_netCDF4.pyx":4978
  *         if self.path == '/':
  *             ncdump.append('root group (%s data model, file format %s):\n' %
  *                     (self.data_model[0], self.disk_format[0]))             # <<<<<<<<<<<<<<
  *         else:
  *             ncdump.append('group %s:\n' % self.path)
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_data_model); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4861; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4978; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_disk_format_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_disk_format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4861; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4978; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4861; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
@@ -54819,57 +55015,57 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     __pyx_t_4 = 0;
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4860
+    /* "netCDF4/_netCDF4.pyx":4977
  *         grpnames = ()
  *         if self.path == '/':
  *             ncdump.append('root group (%s data model, file format %s):\n' %             # <<<<<<<<<<<<<<
  *                     (self.data_model[0], self.disk_format[0]))
  *         else:
  */
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_root_group_s_data_model_file_for, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_root_group_s_data_model_file_for, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_3); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_3); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     goto __pyx_L7;
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4863
+    /* "netCDF4/_netCDF4.pyx":4980
  *                     (self.data_model[0], self.disk_format[0]))
  *         else:
  *             ncdump.append('group %s:\n' % self.path)             # <<<<<<<<<<<<<<
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\
  *                 self.ncattrs()]
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_group_s, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_group_s, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __pyx_L7:;
 
-  /* "netCDF4/_netCDF4.pyx":4864
+  /* "netCDF4/_netCDF4.pyx":4981
  *         else:
  *             ncdump.append('group %s:\n' % self.path)
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "netCDF4/_netCDF4.pyx":4865
+  /* "netCDF4/_netCDF4.pyx":4982
  *             ncdump.append('group %s:\n' % self.path)
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\
  *                 self.ncattrs()]             # <<<<<<<<<<<<<<
  *         ncdump = ncdump + attrs
  *         ncdump.append('    dimensions = %s\n' % str(dimnames))
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -54882,10 +55078,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -54893,9 +55089,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   for (;;) {
@@ -54903,16 +55099,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -54921,7 +55117,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -54930,19 +55126,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4864
+    /* "netCDF4/_netCDF4.pyx":4981
  *         else:
  *             ncdump.append('group %s:\n' % self.path)
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_v_name); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4864; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_v_name); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4981; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
@@ -54950,92 +55146,92 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
     __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_attrs = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4866
+  /* "netCDF4/_netCDF4.pyx":4983
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs             # <<<<<<<<<<<<<<
  *         ncdump.append('    dimensions = %s\n' % str(dimnames))
  *         ncdump.append('    variables = %s\n' % str(varnames))
  */
-  __pyx_t_1 = PyNumber_Add(__pyx_v_ncdump, __pyx_v_attrs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Add(__pyx_v_ncdump, __pyx_v_attrs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_ncdump, ((PyObject*)__pyx_t_1));
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4867
+  /* "netCDF4/_netCDF4.pyx":4984
  *                 self.ncattrs()]
  *         ncdump = ncdump + attrs
  *         ncdump.append('    dimensions = %s\n' % str(dimnames))             # <<<<<<<<<<<<<<
  *         ncdump.append('    variables = %s\n' % str(varnames))
  *         ncdump.append('    groups = %s\n' % str(grpnames))
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_dimnames);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dimnames);
   __Pyx_GIVEREF(__pyx_v_dimnames);
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_dimensions_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_dimensions_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4868
+  /* "netCDF4/_netCDF4.pyx":4985
  *         ncdump = ncdump + attrs
  *         ncdump.append('    dimensions = %s\n' % str(dimnames))
  *         ncdump.append('    variables = %s\n' % str(varnames))             # <<<<<<<<<<<<<<
  *         ncdump.append('    groups = %s\n' % str(grpnames))
  *         return ''.join(ncdump)
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_varnames);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_varnames);
   __Pyx_GIVEREF(__pyx_v_varnames);
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_variables_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_variables_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4869
+  /* "netCDF4/_netCDF4.pyx":4986
  *         ncdump.append('    dimensions = %s\n' % str(dimnames))
  *         ncdump.append('    variables = %s\n' % str(varnames))
  *         ncdump.append('    groups = %s\n' % str(grpnames))             # <<<<<<<<<<<<<<
  *         return ''.join(ncdump)
  * 
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_grpnames);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_grpnames);
   __Pyx_GIVEREF(__pyx_v_grpnames);
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_groups_s_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_groups_s_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_ncdump, __pyx_t_1); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4870
+  /* "netCDF4/_netCDF4.pyx":4987
  *         ncdump.append('    variables = %s\n' % str(varnames))
  *         ncdump.append('    groups = %s\n' % str(grpnames))
  *         return ''.join(ncdump)             # <<<<<<<<<<<<<<
@@ -55043,13 +55239,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
  * class _Dimension(object):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4854
+  /* "netCDF4/_netCDF4.pyx":4971
  *             dset.close()
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -55079,7 +55275,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9MFDataset_10__repr__(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4873
+/* "netCDF4/_netCDF4.pyx":4990
  * 
  * class _Dimension(object):
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):             # <<<<<<<<<<<<<<
@@ -55125,26 +55321,26 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_1__init__(PyObject *__
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dim)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimlens)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dimtotlen)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
       goto __pyx_L5_argtuple_error;
@@ -55163,7 +55359,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_10_Dimension_1__init__(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4._Dimension.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -55184,34 +55380,34 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension___init__(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4874
+  /* "netCDF4/_netCDF4.pyx":4991
  * class _Dimension(object):
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):
  *         self.dimlens = dimlens             # <<<<<<<<<<<<<<
  *         self.dimtotlen = dimtotlen
  *         self._name = dimname
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dimlens, __pyx_v_dimlens) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dimlens, __pyx_v_dimlens) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4875
+  /* "netCDF4/_netCDF4.pyx":4992
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):
  *         self.dimlens = dimlens
  *         self.dimtotlen = dimtotlen             # <<<<<<<<<<<<<<
  *         self._name = dimname
  *     def __len__(self):
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dimtotlen, __pyx_v_dimtotlen) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dimtotlen, __pyx_v_dimtotlen) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4876
+  /* "netCDF4/_netCDF4.pyx":4993
  *         self.dimlens = dimlens
  *         self.dimtotlen = dimtotlen
  *         self._name = dimname             # <<<<<<<<<<<<<<
  *     def __len__(self):
  *         return self.dimtotlen
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_name_2, __pyx_v_dimname) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_name_2, __pyx_v_dimname) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4873
+  /* "netCDF4/_netCDF4.pyx":4990
  * 
  * class _Dimension(object):
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):             # <<<<<<<<<<<<<<
@@ -55231,7 +55427,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension___init__(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4877
+/* "netCDF4/_netCDF4.pyx":4994
  *         self.dimtotlen = dimtotlen
  *         self._name = dimname
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -55262,7 +55458,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_2__len__(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__len__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4878
+  /* "netCDF4/_netCDF4.pyx":4995
  *         self._name = dimname
  *     def __len__(self):
  *         return self.dimtotlen             # <<<<<<<<<<<<<<
@@ -55270,13 +55466,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_2__len__(CYTHON_UNUSED
  *         return True
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimtotlen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimtotlen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4877
+  /* "netCDF4/_netCDF4.pyx":4994
  *         self.dimtotlen = dimtotlen
  *         self._name = dimname
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -55295,7 +55491,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_2__len__(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4879
+/* "netCDF4/_netCDF4.pyx":4996
  *     def __len__(self):
  *         return self.dimtotlen
  *     def isunlimited(self):             # <<<<<<<<<<<<<<
@@ -55322,7 +55518,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_4isunlimited(CYTHON_UN
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("isunlimited", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4880
+  /* "netCDF4/_netCDF4.pyx":4997
  *         return self.dimtotlen
  *     def isunlimited(self):
  *         return True             # <<<<<<<<<<<<<<
@@ -55334,7 +55530,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_4isunlimited(CYTHON_UN
   __pyx_r = Py_True;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4879
+  /* "netCDF4/_netCDF4.pyx":4996
  *     def __len__(self):
  *         return self.dimtotlen
  *     def isunlimited(self):             # <<<<<<<<<<<<<<
@@ -55349,7 +55545,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_4isunlimited(CYTHON_UN
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4881
+/* "netCDF4/_netCDF4.pyx":4998
  *     def isunlimited(self):
  *         return True
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -55385,14 +55581,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4882
+  /* "netCDF4/_netCDF4.pyx":4999
  *         return True
  *     def __repr__(self):
  *         if self.isunlimited():             # <<<<<<<<<<<<<<
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))
  *         else:
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
@@ -55405,18 +55601,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_4) {
 
-    /* "netCDF4/_netCDF4.pyx":4883
+    /* "netCDF4/_netCDF4.pyx":5000
  *     def __repr__(self):
  *         if self.isunlimited():
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))             # <<<<<<<<<<<<<<
@@ -55424,14 +55620,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_2);
@@ -55439,10 +55635,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
     __Pyx_GIVEREF(__pyx_t_3);
     __pyx_t_2 = 0;
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_name_s_size_s, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_name_s_size_s, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -55452,7 +55648,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
   }
   /*else*/ {
 
-    /* "netCDF4/_netCDF4.pyx":4885
+    /* "netCDF4/_netCDF4.pyx":5002
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))
  *         else:
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))             # <<<<<<<<<<<<<<
@@ -55460,14 +55656,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
  * class _Variable(object):
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_6 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
@@ -55475,10 +55671,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_3 = 0;
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_name_s_size_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_name_s_size_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -55487,7 +55683,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4881
+  /* "netCDF4/_netCDF4.pyx":4998
  *     def isunlimited(self):
  *         return True
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -55509,7 +55705,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_10_Dimension_6__repr__(CYTHON_UNUSE
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4888
+/* "netCDF4/_netCDF4.pyx":5005
  * 
  * class _Variable(object):
  *     def __init__(self, dset, varname, var, recdimname):             # <<<<<<<<<<<<<<
@@ -55555,26 +55751,26 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_1__init__(PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dset)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_varname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_var)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recdimname)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
       goto __pyx_L5_argtuple_error;
@@ -55593,7 +55789,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_1__init__(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -55624,115 +55820,115 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4889
+  /* "netCDF4/_netCDF4.pyx":5006
  * class _Variable(object):
  *     def __init__(self, dset, varname, var, recdimname):
  *         self.dimensions = var.dimensions             # <<<<<<<<<<<<<<
  *         self._dset = dset
  *         self._grp = dset
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dimensions, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dimensions, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4890
+  /* "netCDF4/_netCDF4.pyx":5007
  *     def __init__(self, dset, varname, var, recdimname):
  *         self.dimensions = var.dimensions
  *         self._dset = dset             # <<<<<<<<<<<<<<
  *         self._grp = dset
  *         self._mastervar = var
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dset_2, __pyx_v_dset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dset_2, __pyx_v_dset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4891
+  /* "netCDF4/_netCDF4.pyx":5008
  *         self.dimensions = var.dimensions
  *         self._dset = dset
  *         self._grp = dset             # <<<<<<<<<<<<<<
  *         self._mastervar = var
  *         self._recVar = dset._cdfRecVar[varname]
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_grp_2, __pyx_v_dset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_grp_2, __pyx_v_dset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4892
+  /* "netCDF4/_netCDF4.pyx":5009
  *         self._dset = dset
  *         self._grp = dset
  *         self._mastervar = var             # <<<<<<<<<<<<<<
  *         self._recVar = dset._cdfRecVar[varname]
  *         self._recdimname = recdimname
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mastervar, __pyx_v_var) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mastervar, __pyx_v_var) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4893
+  /* "netCDF4/_netCDF4.pyx":5010
  *         self._grp = dset
  *         self._mastervar = var
  *         self._recVar = dset._cdfRecVar[varname]             # <<<<<<<<<<<<<<
  *         self._recdimname = recdimname
  *         self._recLen = dset._cdfVLen
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_cdfRecVar); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_cdfRecVar); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_varname); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4893; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_varname); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5010; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_recVar, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_recVar, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4894
+  /* "netCDF4/_netCDF4.pyx":5011
  *         self._mastervar = var
  *         self._recVar = dset._cdfRecVar[varname]
  *         self._recdimname = recdimname             # <<<<<<<<<<<<<<
  *         self._recLen = dset._cdfVLen
  *         self.dtype = var.dtype
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_recdimname_2, __pyx_v_recdimname) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_recdimname_2, __pyx_v_recdimname) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4895
+  /* "netCDF4/_netCDF4.pyx":5012
  *         self._recVar = dset._cdfRecVar[varname]
  *         self._recdimname = recdimname
  *         self._recLen = dset._cdfVLen             # <<<<<<<<<<<<<<
  *         self.dtype = var.dtype
  *         self._name = var._name
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_cdfVLen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dset, __pyx_n_s_cdfVLen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_recLen, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_recLen, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4896
+  /* "netCDF4/_netCDF4.pyx":5013
  *         self._recdimname = recdimname
  *         self._recLen = dset._cdfVLen
  *         self.dtype = var.dtype             # <<<<<<<<<<<<<<
  *         self._name = var._name
  *         # copy attributes from master.
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dtype, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4897
+  /* "netCDF4/_netCDF4.pyx":5014
  *         self._recLen = dset._cdfVLen
  *         self.dtype = var.dtype
  *         self._name = var._name             # <<<<<<<<<<<<<<
  *         # copy attributes from master.
  *         for name, value in var.__dict__.items():
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_name_2, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_name_2, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4899
+  /* "netCDF4/_netCDF4.pyx":5016
  *         self._name = var._name
  *         # copy attributes from master.
  *         for name, value in var.__dict__.items():             # <<<<<<<<<<<<<<
  *             self.__dict__[name] = value
  *     def typecode(self):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_var, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = NULL;
@@ -55746,10 +55942,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -55757,9 +55953,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
     __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -55767,16 +55963,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -55785,7 +55981,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -55801,7 +55997,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -55814,15 +56010,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
       __Pyx_INCREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_t_6);
       #else
-      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       #endif
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -55830,7 +56026,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
       __Pyx_GOTREF(__pyx_t_1);
       index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_6);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = NULL;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L6_unpacking_done;
@@ -55838,7 +56034,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L6_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
@@ -55846,19 +56042,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
     __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4900
+    /* "netCDF4/_netCDF4.pyx":5017
  *         # copy attributes from master.
  *         for name, value in var.__dict__.items():
  *             self.__dict__[name] = value             # <<<<<<<<<<<<<<
  *     def typecode(self):
  *         return self.dtype
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4899
+    /* "netCDF4/_netCDF4.pyx":5016
  *         self._name = var._name
  *         # copy attributes from master.
  *         for name, value in var.__dict__.items():             # <<<<<<<<<<<<<<
@@ -55868,7 +56064,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4888
+  /* "netCDF4/_netCDF4.pyx":5005
  * 
  * class _Variable(object):
  *     def __init__(self, dset, varname, var, recdimname):             # <<<<<<<<<<<<<<
@@ -55895,7 +56091,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable___init__(CYTHON_UNUSED P
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4901
+/* "netCDF4/_netCDF4.pyx":5018
  *         for name, value in var.__dict__.items():
  *             self.__dict__[name] = value
  *     def typecode(self):             # <<<<<<<<<<<<<<
@@ -55926,7 +56122,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_2typecode(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("typecode", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4902
+  /* "netCDF4/_netCDF4.pyx":5019
  *             self.__dict__[name] = value
  *     def typecode(self):
  *         return self.dtype             # <<<<<<<<<<<<<<
@@ -55934,13 +56130,13 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_2typecode(CYTHON_UNUSED
  *         return self._mastervar.__dict__.keys()
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4901
+  /* "netCDF4/_netCDF4.pyx":5018
  *         for name, value in var.__dict__.items():
  *             self.__dict__[name] = value
  *     def typecode(self):             # <<<<<<<<<<<<<<
@@ -55959,7 +56155,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_2typecode(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4903
+/* "netCDF4/_netCDF4.pyx":5020
  *     def typecode(self):
  *         return self.dtype
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
@@ -55992,7 +56188,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_4ncattrs(CYTHON_UNUSED P
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("ncattrs", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4904
+  /* "netCDF4/_netCDF4.pyx":5021
  *         return self.dtype
  *     def ncattrs(self):
  *         return self._mastervar.__dict__.keys()             # <<<<<<<<<<<<<<
@@ -56000,12 +56196,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_4ncattrs(CYTHON_UNUSED P
  *         if name == 'shape': return self._shape()
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mastervar); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mastervar); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dict); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -56019,10 +56215,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_4ncattrs(CYTHON_UNUSED P
     }
   }
   if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -56030,7 +56226,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_4ncattrs(CYTHON_UNUSED P
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4903
+  /* "netCDF4/_netCDF4.pyx":5020
  *     def typecode(self):
  *         return self.dtype
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
@@ -56051,7 +56247,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_4ncattrs(CYTHON_UNUSED P
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4905
+/* "netCDF4/_netCDF4.pyx":5022
  *     def ncattrs(self):
  *         return self._mastervar.__dict__.keys()
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
@@ -56091,11 +56287,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_7__getattr__(PyObject *_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__getattr__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__getattr__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getattr__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getattr__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -56108,7 +56304,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_7__getattr__(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__getattr__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__getattr__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -56139,17 +56335,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4906
+  /* "netCDF4/_netCDF4.pyx":5023
  *         return self._mastervar.__dict__.keys()
  *     def __getattr__(self,name):
  *         if name == 'shape': return self._shape()             # <<<<<<<<<<<<<<
  *         if name == 'ndim': return len(self._shape())
  *         try:
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_shape, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_shape, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -56162,10 +56358,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -56174,17 +56370,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4907
+  /* "netCDF4/_netCDF4.pyx":5024
  *     def __getattr__(self,name):
  *         if name == 'shape': return self._shape()
  *         if name == 'ndim': return len(self._shape())             # <<<<<<<<<<<<<<
  *         try:
  *             return self.__dict__[name]
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ndim, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_name, __pyx_n_s_ndim, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -56197,23 +56393,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
       }
     }
     if (__pyx_t_4) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4908
+  /* "netCDF4/_netCDF4.pyx":5025
  *         if name == 'shape': return self._shape()
  *         if name == 'ndim': return len(self._shape())
  *         try:             # <<<<<<<<<<<<<<
@@ -56227,7 +56423,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
     __Pyx_XGOTREF(__pyx_t_8);
     /*try:*/ {
 
-      /* "netCDF4/_netCDF4.pyx":4909
+      /* "netCDF4/_netCDF4.pyx":5026
  *         if name == 'ndim': return len(self._shape())
  *         try:
  *             return self.__dict__[name]             # <<<<<<<<<<<<<<
@@ -56235,9 +56431,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
  *             raise AttributeError(name)
  */
       __Pyx_XDECREF(__pyx_r);
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4909; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5026; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4909; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
+      __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5026; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_r = __pyx_t_3;
@@ -56249,7 +56445,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4910
+    /* "netCDF4/_netCDF4.pyx":5027
  *         try:
  *             return self.__dict__[name]
  *         except:             # <<<<<<<<<<<<<<
@@ -56258,29 +56454,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
  */
     /*except:*/ {
       __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getattr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4910; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5027; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_GOTREF(__pyx_t_4);
 
-      /* "netCDF4/_netCDF4.pyx":4911
+      /* "netCDF4/_netCDF4.pyx":5028
  *             return self.__dict__[name]
  *         except:
  *             raise AttributeError(name)             # <<<<<<<<<<<<<<
  *     def __repr__(self):
  *         ncdump_var = ['%r\n' % type(self)]
  */
-      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4911; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5028; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_INCREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
-      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4911; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_builtin_AttributeError, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5028; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_Raise(__pyx_t_10, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4911; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5028; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
     }
     __pyx_L7_except_error:;
     __Pyx_XGIVEREF(__pyx_t_6);
@@ -56296,7 +56492,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
     goto __pyx_L0;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4905
+  /* "netCDF4/_netCDF4.pyx":5022
  *     def ncattrs(self):
  *         return self._mastervar.__dict__.keys()
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
@@ -56319,7 +56515,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_6__getattr__(CYTHON_UNUS
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4912
+/* "netCDF4/_netCDF4.pyx":5029
  *         except:
  *             raise AttributeError(name)
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -56367,16 +56563,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4913
+  /* "netCDF4/_netCDF4.pyx":5030
  *             raise AttributeError(name)
  *     def __repr__(self):
  *         ncdump_var = ['%r\n' % type(self)]             # <<<<<<<<<<<<<<
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\
  */
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_r_3, ((PyObject *)Py_TYPE(__pyx_v_self))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -56384,24 +56580,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
   __pyx_v_ncdump_var = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4914
+  /* "netCDF4/_netCDF4.pyx":5031
  *     def __repr__(self):
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions])             # <<<<<<<<<<<<<<
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\
  *                 self.ncattrs()]
  */
-  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -56409,16 +56605,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -56427,7 +56623,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -56435,42 +56631,42 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
     }
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_dimname);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dimname);
     __Pyx_GIVEREF(__pyx_v_dimname);
-    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_dimnames = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4915
+  /* "netCDF4/_netCDF4.pyx":5032
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         ncdump_var.append('%s %s%s\n' %\
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
 
-  /* "netCDF4/_netCDF4.pyx":4916
+  /* "netCDF4/_netCDF4.pyx":5033
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\
  *                 self.ncattrs()]             # <<<<<<<<<<<<<<
  *         ncdump_var.append('%s %s%s\n' %\
  *         (self.dtype,self._name,dimnames))
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ncattrs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_1 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -56483,10 +56679,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -56494,9 +56690,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
     __pyx_t_6 = __pyx_t_2; __Pyx_INCREF(__pyx_t_6); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_5 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -56504,16 +56700,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -56522,7 +56718,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -56531,19 +56727,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4915
+    /* "netCDF4/_netCDF4.pyx":5032
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions])
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\             # <<<<<<<<<<<<<<
  *                 self.ncattrs()]
  *         ncdump_var.append('%s %s%s\n' %\
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4915; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5032; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_INCREF(__pyx_v_name);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_name);
@@ -56551,28 +56747,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_attrs = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4918
+  /* "netCDF4/_netCDF4.pyx":5035
  *                 self.ncattrs()]
  *         ncdump_var.append('%s %s%s\n' %\
  *         (self.dtype,self._name,dimnames))             # <<<<<<<<<<<<<<
  *         ncdump_var = ncdump_var + attrs
  *         unlimdims = []
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -56584,59 +56780,59 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
   __pyx_t_3 = 0;
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4917
+  /* "netCDF4/_netCDF4.pyx":5034
  *         attrs = ['    %s: %s\n' % (name,self.__dict__[name]) for name in\
  *                 self.ncattrs()]
  *         ncdump_var.append('%s %s%s\n' %\             # <<<<<<<<<<<<<<
  *         (self.dtype,self._name,dimnames))
  *         ncdump_var = ncdump_var + attrs
  */
-  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_s_s_s_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_6); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_6); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4919
+  /* "netCDF4/_netCDF4.pyx":5036
  *         ncdump_var.append('%s %s%s\n' %\
  *         (self.dtype,self._name,dimnames))
  *         ncdump_var = ncdump_var + attrs             # <<<<<<<<<<<<<<
  *         unlimdims = []
  *         for dimname in self.dimensions:
  */
-  __pyx_t_6 = PyNumber_Add(__pyx_v_ncdump_var, __pyx_v_attrs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyNumber_Add(__pyx_v_ncdump_var, __pyx_v_attrs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF_SET(__pyx_v_ncdump_var, ((PyObject*)__pyx_t_6));
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4920
+  /* "netCDF4/_netCDF4.pyx":5037
  *         (self.dtype,self._name,dimnames))
  *         ncdump_var = ncdump_var + attrs
  *         unlimdims = []             # <<<<<<<<<<<<<<
  *         for dimname in self.dimensions:
  *             dim = _find_dim(self._grp, dimname)
  */
-  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_v_unlimdims = ((PyObject*)__pyx_t_6);
   __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4921
+  /* "netCDF4/_netCDF4.pyx":5038
  *         ncdump_var = ncdump_var + attrs
  *         unlimdims = []
  *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
  *             dim = _find_dim(self._grp, dimname)
  *             if dim.isunlimited():
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
     __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   for (;;) {
@@ -56644,16 +56840,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -56662,7 +56858,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -56671,16 +56867,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
     __Pyx_XDECREF_SET(__pyx_v_dimname, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4922
+    /* "netCDF4/_netCDF4.pyx":5039
  *         unlimdims = []
  *         for dimname in self.dimensions:
  *             dim = _find_dim(self._grp, dimname)             # <<<<<<<<<<<<<<
  *             if dim.isunlimited():
  *                 unlimdims.append(str(dimname))
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_find_dim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_grp_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_grp_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_8 = NULL;
     __pyx_t_9 = 0;
@@ -56694,7 +56890,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
         __pyx_t_9 = 1;
       }
     }
-    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     if (__pyx_t_8) {
       PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = NULL;
@@ -56705,21 +56901,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_v_dimname);
     __Pyx_GIVEREF(__pyx_v_dimname);
     __pyx_t_2 = 0;
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_XDECREF_SET(__pyx_v_dim, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4923
+    /* "netCDF4/_netCDF4.pyx":5040
  *         for dimname in self.dimensions:
  *             dim = _find_dim(self._grp, dimname)
  *             if dim.isunlimited():             # <<<<<<<<<<<<<<
  *                 unlimdims.append(str(dimname))
  *         ncdump_var.append('unlimited dimensions = %s\n' % repr(tuple(unlimdims)))
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dim, __pyx_n_s_isunlimited); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_10 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -56732,39 +56928,39 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
       }
     }
     if (__pyx_t_10) {
-      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     } else {
-      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (__pyx_t_11) {
 
-      /* "netCDF4/_netCDF4.pyx":4924
+      /* "netCDF4/_netCDF4.pyx":5041
  *             dim = _find_dim(self._grp, dimname)
  *             if dim.isunlimited():
  *                 unlimdims.append(str(dimname))             # <<<<<<<<<<<<<<
  *         ncdump_var.append('unlimited dimensions = %s\n' % repr(tuple(unlimdims)))
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))
  */
-      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_v_dimname);
       PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_dimname);
       __Pyx_GIVEREF(__pyx_v_dimname);
-      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_unlimdims, __pyx_t_3); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_unlimdims, __pyx_t_3); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       goto __pyx_L9;
     }
     __pyx_L9:;
 
-    /* "netCDF4/_netCDF4.pyx":4921
+    /* "netCDF4/_netCDF4.pyx":5038
  *         ncdump_var = ncdump_var + attrs
  *         unlimdims = []
  *         for dimname in self.dimensions:             # <<<<<<<<<<<<<<
@@ -56774,57 +56970,57 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4925
+  /* "netCDF4/_netCDF4.pyx":5042
  *             if dim.isunlimited():
  *                 unlimdims.append(str(dimname))
  *         ncdump_var.append('unlimited dimensions = %s\n' % repr(tuple(unlimdims)))             # <<<<<<<<<<<<<<
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))
  *         return ''.join(ncdump_var)
  */
-  __pyx_t_1 = PyList_AsTuple(__pyx_v_unlimdims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_AsTuple(__pyx_v_unlimdims); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_dimensions_s_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_unlimited_dimensions_s_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4926
+  /* "netCDF4/_netCDF4.pyx":5043
  *                 unlimdims.append(str(dimname))
  *         ncdump_var.append('unlimited dimensions = %s\n' % repr(tuple(unlimdims)))
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))             # <<<<<<<<<<<<<<
  *         return ''.join(ncdump_var)
  *     def __len__(self):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_current_size_s, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_current_size_s, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_ncdump_var, __pyx_t_1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4927
+  /* "netCDF4/_netCDF4.pyx":5044
  *         ncdump_var.append('unlimited dimensions = %s\n' % repr(tuple(unlimdims)))
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))
  *         return ''.join(ncdump_var)             # <<<<<<<<<<<<<<
  *     def __len__(self):
- *         return self._shape()[0]
+ *         if not self._shape:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump_var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyString_Join(__pyx_kp_s__2, __pyx_v_ncdump_var); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4912
+  /* "netCDF4/_netCDF4.pyx":5029
  *         except:
  *             raise AttributeError(name)
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -56855,12 +57051,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_8__repr__(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4928
+/* "netCDF4/_netCDF4.pyx":5045
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))
  *         return ''.join(ncdump_var)
  *     def __len__(self):             # <<<<<<<<<<<<<<
- *         return self._shape()[0]
- *     def _shape(self):
+ *         if not self._shape:
+ *             raise TypeError('len() of unsized object')
  */
 
 /* Python wrapper */
@@ -56881,61 +57077,93 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_10__len__(CYTHON_UNUSED
   PyObject *__pyx_r = NULL;
   __Pyx_RefNannyDeclarations
   PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
   int __pyx_lineno = 0;
   const char *__pyx_filename = NULL;
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__len__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4929
+  /* "netCDF4/_netCDF4.pyx":5046
  *         return ''.join(ncdump_var)
  *     def __len__(self):
- *         return self._shape()[0]             # <<<<<<<<<<<<<<
+ *         if not self._shape:             # <<<<<<<<<<<<<<
+ *             raise TypeError('len() of unsized object')
+ *         else:
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = ((!__pyx_t_2) != 0);
+  if (__pyx_t_3) {
+
+    /* "netCDF4/_netCDF4.pyx":5047
+ *     def __len__(self):
+ *         if not self._shape:
+ *             raise TypeError('len() of unsized object')             # <<<<<<<<<<<<<<
+ *         else:
+ *             return self._shape()[0]
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  /*else*/ {
+
+    /* "netCDF4/_netCDF4.pyx":5049
+ *             raise TypeError('len() of unsized object')
+ *         else:
+ *             return self._shape()[0]             # <<<<<<<<<<<<<<
  *     def _shape(self):
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
     }
+    if (__pyx_t_5) {
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    } else {
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5049; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
   }
-  if (__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4929; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4928
+  /* "netCDF4/_netCDF4.pyx":5045
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))
  *         return ''.join(ncdump_var)
  *     def __len__(self):             # <<<<<<<<<<<<<<
- *         return self._shape()[0]
- *     def _shape(self):
+ *         if not self._shape:
+ *             raise TypeError('len() of unsized object')
  */
 
   /* function exit code */
   __pyx_L1_error:;
   __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
   __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __pyx_r = NULL;
   __pyx_L0:;
@@ -56944,9 +57172,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_10__len__(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4930
- *     def __len__(self):
- *         return self._shape()[0]
+/* "netCDF4/_netCDF4.pyx":5050
+ *         else:
+ *             return self._shape()[0]
  *     def _shape(self):             # <<<<<<<<<<<<<<
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
@@ -56979,29 +57207,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_12_shape(CYTHON_UNUSED P
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_shape", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4931
- *         return self._shape()[0]
+  /* "netCDF4/_netCDF4.pyx":5051
+ *             return self._shape()[0]
  *     def _shape(self):
  *         recdimlen = len(self._dset.dimensions[self._recdimname])             # <<<<<<<<<<<<<<
  *         return (recdimlen,) + self._mastervar.shape[1:]
  *     def set_auto_maskandscale(self,val):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dset_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dset_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dimensions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recdimname_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recdimname_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5051; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_recdimlen = __pyx_t_4;
 
-  /* "netCDF4/_netCDF4.pyx":4932
+  /* "netCDF4/_netCDF4.pyx":5052
  *     def _shape(self):
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]             # <<<<<<<<<<<<<<
@@ -57009,22 +57237,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_12_shape(CYTHON_UNUSED P
  *         for v in self._recVar:
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_recdimlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_recdimlen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mastervar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mastervar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_slice__109, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_slice__111, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -57032,9 +57260,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_12_shape(CYTHON_UNUSED P
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4930
- *     def __len__(self):
- *         return self._shape()[0]
+  /* "netCDF4/_netCDF4.pyx":5050
+ *         else:
+ *             return self._shape()[0]
  *     def _shape(self):             # <<<<<<<<<<<<<<
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
@@ -57053,7 +57281,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_12_shape(CYTHON_UNUSED P
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4933
+/* "netCDF4/_netCDF4.pyx":5053
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
  *     def set_auto_maskandscale(self,val):             # <<<<<<<<<<<<<<
@@ -57093,11 +57321,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_15set_auto_maskandscale(
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_val)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5053; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_auto_maskandscale") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_auto_maskandscale") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5053; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -57110,7 +57338,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_15set_auto_maskandscale(
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("set_auto_maskandscale", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5053; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4._Variable.set_auto_maskandscale", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -57139,22 +57367,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_maskandscale(
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("set_auto_maskandscale", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4934
+  /* "netCDF4/_netCDF4.pyx":5054
  *         return (recdimlen,) + self._mastervar.shape[1:]
  *     def set_auto_maskandscale(self,val):
  *         for v in self._recVar:             # <<<<<<<<<<<<<<
  *             v.set_auto_maskandscale(val)
  *     def __getitem__(self, elem):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
   } else {
-    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -57162,16 +57390,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_maskandscale(
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -57180,7 +57408,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_maskandscale(
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -57189,14 +57417,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_maskandscale(
     __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4935
+    /* "netCDF4/_netCDF4.pyx":5055
  *     def set_auto_maskandscale(self,val):
  *         for v in self._recVar:
  *             v.set_auto_maskandscale(val)             # <<<<<<<<<<<<<<
  *     def __getitem__(self, elem):
  *         """Get records from a concatenated set of variables."""
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_set_auto_maskandscale); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_set_auto_maskandscale); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -57209,23 +57437,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_maskandscale(
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_val); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_val); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_val);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_val);
       __Pyx_GIVEREF(__pyx_v_val);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4934
+    /* "netCDF4/_netCDF4.pyx":5054
  *         return (recdimlen,) + self._mastervar.shape[1:]
  *     def set_auto_maskandscale(self,val):
  *         for v in self._recVar:             # <<<<<<<<<<<<<<
@@ -57235,7 +57463,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_maskandscale(
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4933
+  /* "netCDF4/_netCDF4.pyx":5053
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
  *     def set_auto_maskandscale(self,val):             # <<<<<<<<<<<<<<
@@ -57261,7 +57489,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_14set_auto_maskandscale(
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":4936
+/* "netCDF4/_netCDF4.pyx":5056
  *         for v in self._recVar:
  *             v.set_auto_maskandscale(val)
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -57302,11 +57530,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_17__getitem__(PyObject *
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_elem)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4936; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5056; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getitem__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4936; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getitem__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5056; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -57319,7 +57547,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_9_Variable_17__getitem__(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4936; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5056; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -57391,16 +57619,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":4945
+  /* "netCDF4/_netCDF4.pyx":5065
  *         # to use.
  *         start, count, stride, put_ind =\
  *         _StartCountStride(elem, self.shape)             # <<<<<<<<<<<<<<
  *         datashape = _out_array_shape(count)
  *         data = ma.empty(datashape, dtype=self.dtype)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_5 = 0;
@@ -57414,7 +57642,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __pyx_t_5 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_4) {
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -57425,7 +57653,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5065; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -57439,7 +57667,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     if (unlikely(size != 4)) {
       if (size > 4) __Pyx_RaiseTooManyValuesError(4);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     #if CYTHON_COMPILING_IN_CPYTHON
     if (likely(PyTuple_CheckExact(sequence))) {
@@ -57462,7 +57690,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       Py_ssize_t i;
       PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_4};
       for (i=0; i < 4; i++) {
-        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(item);
         *(temps[i]) = item;
       }
@@ -57472,7 +57700,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   } else {
     Py_ssize_t index = -1;
     PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_6,&__pyx_t_3,&__pyx_t_4};
-    __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -57481,7 +57709,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_GOTREF(item);
       *(temps[index]) = item;
     }
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_8 = NULL;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     goto __pyx_L4_unpacking_done;
@@ -57489,11 +57717,11 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __pyx_t_8 = NULL;
     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_L4_unpacking_done:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":4944
+  /* "netCDF4/_netCDF4.pyx":5064
  *         # arguments to the nc_get_var() function, and is much more easy
  *         # to use.
  *         start, count, stride, put_ind =\             # <<<<<<<<<<<<<<
@@ -57509,14 +57737,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __pyx_v_put_ind = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4946
+  /* "netCDF4/_netCDF4.pyx":5066
  *         start, count, stride, put_ind =\
  *         _StartCountStride(elem, self.shape)
  *         datashape = _out_array_shape(count)             # <<<<<<<<<<<<<<
  *         data = ma.empty(datashape, dtype=self.dtype)
  * 
  */
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -57529,16 +57757,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_count); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_count);
     PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_count);
     __Pyx_GIVEREF(__pyx_v_count);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -57546,30 +57774,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __pyx_v_datashape = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4947
+  /* "netCDF4/_netCDF4.pyx":5067
  *         _StartCountStride(elem, self.shape)
  *         datashape = _out_array_shape(count)
  *         data = ma.empty(datashape, dtype=self.dtype)             # <<<<<<<<<<<<<<
  * 
  *         # Determine which dimensions need to be squeezed
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_datashape);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_datashape);
   __Pyx_GIVEREF(__pyx_v_datashape);
-  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -57577,28 +57805,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __pyx_v_data = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4953
+  /* "netCDF4/_netCDF4.pyx":5073
  *         # The convention used is that for those cases,
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]             # <<<<<<<<<<<<<<
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_ndim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_INCREF(__pyx_slice__110);
-  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_slice__110);
-  __Pyx_GIVEREF(__pyx_slice__110);
-  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_slice__112);
+  PyList_SET_ITEM(__pyx_t_6, 0, __pyx_slice__112);
+  __Pyx_GIVEREF(__pyx_slice__112);
+  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_squeeze = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4954
+  /* "netCDF4/_netCDF4.pyx":5074
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
@@ -57607,18 +57835,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
  */
   __Pyx_INCREF(__pyx_int_0);
   __pyx_t_1 = __pyx_int_0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_6, 0, -1, NULL, NULL, &__pyx_slice__111, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_6, 0, -1, NULL, NULL, &__pyx_slice__113, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
     __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6); __pyx_t_5 = 0;
     __pyx_t_9 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   for (;;) {
@@ -57626,16 +57854,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -57644,7 +57872,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -57654,28 +57882,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __pyx_t_3 = 0;
     __Pyx_INCREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
-    __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1);
     __pyx_t_1 = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4955
+    /* "netCDF4/_netCDF4.pyx":5075
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:             # <<<<<<<<<<<<<<
  *                 squeeze[i] = 0
  * 
  */
-    __pyx_t_3 = PyObject_RichCompare(__pyx_v_n, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_v_n, __pyx_int_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (__pyx_t_11) {
     } else {
       __pyx_t_10 = __pyx_t_11;
       goto __pyx_L8_bool_binop_done;
     }
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(Py_Ellipsis);
     PyTuple_SET_ITEM(__pyx_t_4, 0, Py_Ellipsis);
@@ -57683,10 +57911,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_INCREF(__pyx_v_i);
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_i);
     __Pyx_GIVEREF(__pyx_v_i);
-    __pyx_t_2 = PyObject_GetItem(__pyx_v_put_ind, __pyx_t_4); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_2 = PyObject_GetItem(__pyx_v_put_ind, __pyx_t_4); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -57700,37 +57928,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_10 = __pyx_t_11;
     __pyx_L8_bool_binop_done:;
     if (__pyx_t_10) {
 
-      /* "netCDF4/_netCDF4.pyx":4956
+      /* "netCDF4/_netCDF4.pyx":5076
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  *                 squeeze[i] = 0             # <<<<<<<<<<<<<<
  * 
  *         # Reshape the arrays so we can iterate over them.
  */
-      if (unlikely(PyObject_SetItem(__pyx_v_squeeze, __pyx_v_i, __pyx_int_0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(PyObject_SetItem(__pyx_v_squeeze, __pyx_v_i, __pyx_int_0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L7;
     }
     __pyx_L7:;
 
-    /* "netCDF4/_netCDF4.pyx":4954
+    /* "netCDF4/_netCDF4.pyx":5074
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
@@ -57741,18 +57969,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4959
+  /* "netCDF4/_netCDF4.pyx":5079
  * 
  *         # Reshape the arrays so we can iterate over them.
  *         strt = start.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         cnt = count.reshape((-1, self.ndim or 1))
  *         strd = stride.reshape((-1, self.ndim or 1))
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_10) {
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
@@ -57761,12 +57989,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     goto __pyx_L10_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = __pyx_t_4;
   __pyx_t_4 = 0;
   __pyx_L10_bool_binop_done:;
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_neg_1);
@@ -57785,17 +58013,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -57803,18 +58031,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __pyx_v_strt = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4960
+  /* "netCDF4/_netCDF4.pyx":5080
  *         # Reshape the arrays so we can iterate over them.
  *         strt = start.reshape((-1, self.ndim or 1))
  *         cnt = count.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         strd = stride.reshape((-1, self.ndim or 1))
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_count, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_count, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_10) {
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
@@ -57823,12 +58051,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     goto __pyx_L12_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = __pyx_t_4;
   __pyx_t_4 = 0;
   __pyx_L12_bool_binop_done:;
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_neg_1);
@@ -57847,17 +58075,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
@@ -57865,18 +58093,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __pyx_v_cnt = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4961
+  /* "netCDF4/_netCDF4.pyx":5081
  *         strt = start.reshape((-1, self.ndim or 1))
  *         cnt = count.reshape((-1, self.ndim or 1))
  *         strd = stride.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))
  * 
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_stride, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_stride, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_10) {
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
@@ -57885,12 +58113,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     goto __pyx_L14_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = __pyx_t_4;
   __pyx_t_4 = 0;
   __pyx_L14_bool_binop_done:;
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_neg_1);
@@ -57909,17 +58137,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -57927,18 +58155,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __pyx_v_strd = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4962
+  /* "netCDF4/_netCDF4.pyx":5082
  *         cnt = count.reshape((-1, self.ndim or 1))
  *         strd = stride.reshape((-1, self.ndim or 1))
  *         put_ind = put_ind.reshape((-1, self.ndim or 1))             # <<<<<<<<<<<<<<
  * 
  *         # Fill output array with data chunks.
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_put_ind, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ndim); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_10) {
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
@@ -57947,12 +58175,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     goto __pyx_L16_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_From_long(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_2 = __pyx_t_4;
   __pyx_t_4 = 0;
   __pyx_L16_bool_binop_done:;
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_int_neg_1);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_int_neg_1);
@@ -57971,17 +58199,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
@@ -57989,27 +58217,27 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __Pyx_DECREF_SET(__pyx_v_put_ind, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4966
+  /* "netCDF4/_netCDF4.pyx":5086
  *         # Fill output array with data chunks.
  *         # Number of variables making up the MFVariable.Variable.
  *         nv = len(self._recLen)             # <<<<<<<<<<<<<<
  *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):
  *             # make sure count=-1 becomes count=1
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recLen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recLen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_nv = __pyx_t_5;
 
-  /* "netCDF4/_netCDF4.pyx":4967
+  /* "netCDF4/_netCDF4.pyx":5087
  *         # Number of variables making up the MFVariable.Variable.
  *         nv = len(self._recLen)
  *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):             # <<<<<<<<<<<<<<
  *             # make sure count=-1 becomes count=1
  *             count = [abs(cnt) for cnt in count]
  */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_t_3 = NULL;
   __pyx_t_5 = 0;
@@ -58023,7 +58251,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __pyx_t_5 = 1;
     }
   }
-  __pyx_t_4 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   if (__pyx_t_3) {
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -58040,7 +58268,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __Pyx_INCREF(__pyx_v_put_ind);
   PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_5, __pyx_v_put_ind);
   __Pyx_GIVEREF(__pyx_v_put_ind);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -58048,9 +58276,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_5 = 0;
     __pyx_t_9 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -58058,16 +58286,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -58076,7 +58304,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -58092,7 +58320,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       if (unlikely(size != 4)) {
         if (size > 4) __Pyx_RaiseTooManyValuesError(4);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -58115,7 +58343,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         Py_ssize_t i;
         PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_3,&__pyx_t_2,&__pyx_t_7};
         for (i=0; i < 4; i++) {
-          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(item);
           *(temps[i]) = item;
         }
@@ -58125,7 +58353,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     } else {
       Py_ssize_t index = -1;
       PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_3,&__pyx_t_2,&__pyx_t_7};
-      __pyx_t_12 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_8 = Py_TYPE(__pyx_t_12)->tp_iternext;
@@ -58134,7 +58362,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         __Pyx_GOTREF(item);
         *(temps[index]) = item;
       }
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_12), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_12), 4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = NULL;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       goto __pyx_L21_unpacking_done;
@@ -58142,7 +58370,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       __pyx_t_8 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L21_unpacking_done:;
     }
     __Pyx_DECREF_SET(__pyx_v_start, __pyx_t_4);
@@ -58154,38 +58382,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_XDECREF_SET(__pyx_v_ind, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4969
+    /* "netCDF4/_netCDF4.pyx":5089
  *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):
  *             # make sure count=-1 becomes count=1
  *             count = [abs(cnt) for cnt in count]             # <<<<<<<<<<<<<<
  *             if (numpy.array(stride) < 0).any():
  *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')
  */
-    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     if (likely(PyList_CheckExact(__pyx_v_count)) || PyTuple_CheckExact(__pyx_v_count)) {
       __pyx_t_7 = __pyx_v_count; __Pyx_INCREF(__pyx_t_7); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
     } else {
-      __pyx_t_13 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_count); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_count); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_14 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_14)) {
         if (likely(PyList_CheckExact(__pyx_t_7))) {
           if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_2); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_2); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_2); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_2); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -58194,7 +58422,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -58202,25 +58430,25 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       }
       __Pyx_DECREF_SET(__pyx_v_cnt, __pyx_t_2);
       __pyx_t_2 = 0;
-      __pyx_t_2 = PyNumber_Absolute(__pyx_v_cnt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyNumber_Absolute(__pyx_v_cnt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF_SET(__pyx_v_count, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4970
+    /* "netCDF4/_netCDF4.pyx":5090
  *             # make sure count=-1 becomes count=1
  *             count = [abs(cnt) for cnt in count]
  *             if (numpy.array(stride) < 0).any():             # <<<<<<<<<<<<<<
  *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')
  *             # Start, stop and step along 1st dimension, eg the unlimited
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -58234,23 +58462,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       }
     }
     if (!__pyx_t_2) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_stride); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_stride); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
     } else {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
       __Pyx_INCREF(__pyx_v_stride);
       PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_stride);
       __Pyx_GIVEREF(__pyx_v_stride);
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_any); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_any); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_3 = NULL;
@@ -58264,121 +58492,121 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       }
     }
     if (__pyx_t_3) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_10) {
 
-      /* "netCDF4/_netCDF4.pyx":4971
+      /* "netCDF4/_netCDF4.pyx":5091
  *             count = [abs(cnt) for cnt in count]
  *             if (numpy.array(stride) < 0).any():
  *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')             # <<<<<<<<<<<<<<
  *             # Start, stop and step along 1st dimension, eg the unlimited
  *             # dimension.
  */
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_Raise(__pyx_t_1, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":4974
+    /* "netCDF4/_netCDF4.pyx":5094
  *             # Start, stop and step along 1st dimension, eg the unlimited
  *             # dimension.
  *             sta = start[0]             # <<<<<<<<<<<<<<
  *             step = stride[0]
  *             stop = sta + count[0] * step
  */
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_start, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4974; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_start, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_sta, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4975
+    /* "netCDF4/_netCDF4.pyx":5095
  *             # dimension.
  *             sta = start[0]
  *             step = stride[0]             # <<<<<<<<<<<<<<
  *             stop = sta + count[0] * step
  * 
  */
-    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4975; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stride, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5095; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_step, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4976
+    /* "netCDF4/_netCDF4.pyx":5096
  *             sta = start[0]
  *             step = stride[0]
  *             stop = sta + count[0] * step             # <<<<<<<<<<<<<<
  * 
  *             # Build a list representing the concatenated list of all records in
  */
-    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_count, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4976; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_count, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5096; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = PyNumber_Multiply(__pyx_t_1, __pyx_v_step); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyNumber_Multiply(__pyx_t_1, __pyx_v_step); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = PyNumber_Add(__pyx_v_sta, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(__pyx_v_sta, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF_SET(__pyx_v_stop, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4983
+    /* "netCDF4/_netCDF4.pyx":5103
  *             #  the record index inside the variables, from 0 to n
  *             #  the index of the Variable instance to which each record belongs
  *             idx = []    # list of record indices             # <<<<<<<<<<<<<<
  *             vid = []    # list of Variable indices
  *             for n in range(nv):
  */
-    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_idx, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4984
+    /* "netCDF4/_netCDF4.pyx":5104
  *             #  the index of the Variable instance to which each record belongs
  *             idx = []    # list of record indices
  *             vid = []    # list of Variable indices             # <<<<<<<<<<<<<<
  *             for n in range(nv):
  *                 k = self._recLen[n]     # number of records in this variable
  */
-    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_vid, ((PyObject*)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4985
+    /* "netCDF4/_netCDF4.pyx":5105
  *             idx = []    # list of record indices
  *             vid = []    # list of Variable indices
  *             for n in range(nv):             # <<<<<<<<<<<<<<
  *                 k = self._recLen[n]     # number of records in this variable
  *                 idx.extend(range(k))
  */
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
       __pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
     } else {
-      __pyx_t_13 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_14 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     for (;;) {
@@ -58386,16 +58614,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         if (likely(PyList_CheckExact(__pyx_t_7))) {
           if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -58404,7 +58632,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -58413,60 +58641,60 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4986
+      /* "netCDF4/_netCDF4.pyx":5106
  *             vid = []    # list of Variable indices
  *             for n in range(nv):
  *                 k = self._recLen[n]     # number of records in this variable             # <<<<<<<<<<<<<<
  *                 idx.extend(range(k))
  *                 vid.extend([n] * k)
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recLen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recLen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_v_n); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4986; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_v_n); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5106; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4987
+      /* "netCDF4/_netCDF4.pyx":5107
  *             for n in range(nv):
  *                 k = self._recLen[n]     # number of records in this variable
  *                 idx.extend(range(k))             # <<<<<<<<<<<<<<
  *                 vid.extend([n] * k)
  * 
  */
-      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_k);
       PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_k);
       __Pyx_GIVEREF(__pyx_v_k);
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __pyx_t_15 = __Pyx_PyList_Extend(__pyx_v_idx, __pyx_t_1); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_PyList_Extend(__pyx_v_idx, __pyx_t_1); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4988
+      /* "netCDF4/_netCDF4.pyx":5108
  *                 k = self._recLen[n]     # number of records in this variable
  *                 idx.extend(range(k))
  *                 vid.extend([n] * k)             # <<<<<<<<<<<<<<
  * 
  *             # Merge the two lists to get a list of 2-elem lists.
  */
-      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_n);
       PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_n);
       __Pyx_GIVEREF(__pyx_v_n);
-      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_v_k); if (unlikely(!__pyx_temp)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_temp);
         __Pyx_DECREF(__pyx_t_1);
         __pyx_t_1 = __pyx_temp;
       }
-      __pyx_t_15 = __Pyx_PyList_Extend(__pyx_v_vid, __pyx_t_1); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_PyList_Extend(__pyx_v_vid, __pyx_t_1); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4985
+      /* "netCDF4/_netCDF4.pyx":5105
  *             idx = []    # list of record indices
  *             vid = []    # list of Variable indices
  *             for n in range(nv):             # <<<<<<<<<<<<<<
@@ -58476,14 +58704,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4992
+    /* "netCDF4/_netCDF4.pyx":5112
  *             # Merge the two lists to get a list of 2-elem lists.
  *             # Slice this list along the first dimension.
  *             lst = list(zip(idx, vid)).__getitem__(slice(sta, stop, step))             # <<<<<<<<<<<<<<
  * 
  *             # Rebuild the slicing expression for dimensions 1 and ssq.
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_zip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     __pyx_t_13 = 0;
@@ -58497,7 +58725,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         __pyx_t_13 = 1;
       }
     }
-    __pyx_t_2 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     if (__pyx_t_4) {
       PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); __pyx_t_4 = NULL;
@@ -58508,17 +58736,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_INCREF(__pyx_v_vid);
     PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_13, __pyx_v_vid);
     __Pyx_GIVEREF(__pyx_v_vid);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getitem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getitem); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PySlice_New(__pyx_v_sta, __pyx_v_stop, __pyx_v_step); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySlice_New(__pyx_v_sta, __pyx_v_stop, __pyx_v_step); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_2 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -58531,17 +58759,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       }
     }
     if (!__pyx_t_2) {
-      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_GOTREF(__pyx_t_7);
     } else {
-      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
       PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     }
@@ -58549,32 +58777,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __Pyx_XDECREF_SET(__pyx_v_lst, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4995
+    /* "netCDF4/_netCDF4.pyx":5115
  * 
  *             # Rebuild the slicing expression for dimensions 1 and ssq.
  *             newSlice = [slice(None, None, None)]             # <<<<<<<<<<<<<<
  *             for n in range(1, len(start)):   # skip dimension 0
  *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
  */
-    __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_INCREF(__pyx_slice__113);
-    PyList_SET_ITEM(__pyx_t_7, 0, __pyx_slice__113);
-    __Pyx_GIVEREF(__pyx_slice__113);
+    __Pyx_INCREF(__pyx_slice__115);
+    PyList_SET_ITEM(__pyx_t_7, 0, __pyx_slice__115);
+    __Pyx_GIVEREF(__pyx_slice__115);
     __Pyx_XDECREF_SET(__pyx_v_newSlice, ((PyObject*)__pyx_t_7));
     __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":4996
+    /* "netCDF4/_netCDF4.pyx":5116
  *             # Rebuild the slicing expression for dimensions 1 and ssq.
  *             newSlice = [slice(None, None, None)]
  *             for n in range(1, len(start)):   # skip dimension 0             # <<<<<<<<<<<<<<
  *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
  *                 newSlice.append(s)
  */
-    __pyx_t_13 = PyObject_Length(__pyx_v_start); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = PyObject_Length(__pyx_v_start); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_int_1);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_int_1);
@@ -58582,16 +58810,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7);
     __Pyx_GIVEREF(__pyx_t_7);
     __pyx_t_7 = 0;
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
       __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
     } else {
-      __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_14 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     for (;;) {
@@ -58599,16 +58827,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         if (likely(PyList_CheckExact(__pyx_t_1))) {
           if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_13); __Pyx_INCREF(__pyx_t_7); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -58617,7 +58845,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -58626,32 +58854,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4997
+      /* "netCDF4/_netCDF4.pyx":5117
  *             newSlice = [slice(None, None, None)]
  *             for n in range(1, len(start)):   # skip dimension 0
  *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])             # <<<<<<<<<<<<<<
  *                 newSlice.append(s)
  * 
  */
-      __pyx_t_7 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_7 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_4 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_4 = PyObject_GetItem(__pyx_v_start, __pyx_v_n); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_3 = PyObject_GetItem(__pyx_v_count, __pyx_v_n); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_2 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_2 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_12 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyNumber_Add(__pyx_t_4, __pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-      __pyx_t_12 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+      __pyx_t_12 = PyObject_GetItem(__pyx_v_stride, __pyx_v_n); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_4 = PySlice_New(__pyx_t_7, __pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySlice_New(__pyx_t_7, __pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -58659,16 +58887,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_XDECREF_SET(__pyx_v_s, ((PyObject*)__pyx_t_4));
       __pyx_t_4 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":4998
+      /* "netCDF4/_netCDF4.pyx":5118
  *             for n in range(1, len(start)):   # skip dimension 0
  *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
  *                 newSlice.append(s)             # <<<<<<<<<<<<<<
  * 
  *             # Apply the slicing expression to each var in turn, extracting records
  */
-      __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_newSlice, __pyx_v_s); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_newSlice, __pyx_v_s); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-      /* "netCDF4/_netCDF4.pyx":4996
+      /* "netCDF4/_netCDF4.pyx":5116
  *             # Rebuild the slicing expression for dimensions 1 and ssq.
  *             newSlice = [slice(None, None, None)]
  *             for n in range(1, len(start)):   # skip dimension 0             # <<<<<<<<<<<<<<
@@ -58678,19 +58906,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5002
+    /* "netCDF4/_netCDF4.pyx":5122
  *             # Apply the slicing expression to each var in turn, extracting records
  *             # in a list of arrays.
  *             lstArr = []             # <<<<<<<<<<<<<<
  *             ismasked = False
  *             for n in range(nv):
  */
-    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_lstArr, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5003
+    /* "netCDF4/_netCDF4.pyx":5123
  *             # in a list of arrays.
  *             lstArr = []
  *             ismasked = False             # <<<<<<<<<<<<<<
@@ -58699,30 +58927,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
  */
     __pyx_v_ismasked = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5004
+    /* "netCDF4/_netCDF4.pyx":5124
  *             lstArr = []
  *             ismasked = False
  *             for n in range(nv):             # <<<<<<<<<<<<<<
  *                 # Get the list of indices for variable 'n'.
  *                 idx = [i for i,numv in lst if numv == n]
  */
-    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
       __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
     } else {
-      __pyx_t_13 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     for (;;) {
@@ -58730,16 +58958,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         if (likely(PyList_CheckExact(__pyx_t_4))) {
           if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         } else {
           if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_13); __Pyx_INCREF(__pyx_t_1); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #endif
         }
       } else {
@@ -58748,7 +58976,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -58757,38 +58985,38 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":5006
+      /* "netCDF4/_netCDF4.pyx":5126
  *             for n in range(nv):
  *                 # Get the list of indices for variable 'n'.
  *                 idx = [i for i,numv in lst if numv == n]             # <<<<<<<<<<<<<<
  *                 if idx:
  *                     # Rebuild slicing expression for dimension 0.
  */
-      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       if (likely(PyList_CheckExact(__pyx_v_lst)) || PyTuple_CheckExact(__pyx_v_lst)) {
         __pyx_t_12 = __pyx_v_lst; __Pyx_INCREF(__pyx_t_12); __pyx_t_16 = 0;
         __pyx_t_17 = NULL;
       } else {
-        __pyx_t_16 = -1; __pyx_t_12 = PyObject_GetIter(__pyx_v_lst); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_16 = -1; __pyx_t_12 = PyObject_GetIter(__pyx_v_lst); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_17 = Py_TYPE(__pyx_t_12)->tp_iternext; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_17 = Py_TYPE(__pyx_t_12)->tp_iternext; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       for (;;) {
         if (likely(!__pyx_t_17)) {
           if (likely(PyList_CheckExact(__pyx_t_12))) {
             if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_12)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_12, __pyx_t_16); __Pyx_INCREF(__pyx_t_2); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_12, __pyx_t_16); __Pyx_INCREF(__pyx_t_2); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_2 = PySequence_ITEM(__pyx_t_12, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = PySequence_ITEM(__pyx_t_12, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           } else {
             if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_12)) break;
             #if CYTHON_COMPILING_IN_CPYTHON
-            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_12, __pyx_t_16); __Pyx_INCREF(__pyx_t_2); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_12, __pyx_t_16); __Pyx_INCREF(__pyx_t_2); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #else
-            __pyx_t_2 = PySequence_ITEM(__pyx_t_12, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_2 = PySequence_ITEM(__pyx_t_12, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             #endif
           }
         } else {
@@ -58797,7 +59025,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             break;
           }
@@ -58813,7 +59041,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -58826,15 +59054,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           __Pyx_INCREF(__pyx_t_7);
           __Pyx_INCREF(__pyx_t_3);
           #else
-          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_7);
-          __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
           #endif
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_18 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_18 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_18);
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
           __pyx_t_8 = Py_TYPE(__pyx_t_18)->tp_iternext;
@@ -58842,7 +59070,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           __Pyx_GOTREF(__pyx_t_7);
           index = 1; __pyx_t_3 = __pyx_t_8(__pyx_t_18); if (unlikely(!__pyx_t_3)) goto __pyx_L33_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_3);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_18), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_18), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_8 = NULL;
           __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
           goto __pyx_L34_unpacking_done;
@@ -58850,18 +59078,18 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
           __pyx_t_8 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L34_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_7);
         __pyx_t_7 = 0;
         __Pyx_XDECREF_SET(__pyx_v_numv, __pyx_t_3);
         __pyx_t_3 = 0;
-        __pyx_t_2 = PyObject_RichCompare(__pyx_v_numv, __pyx_v_n, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyObject_RichCompare(__pyx_v_numv, __pyx_v_n, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         if (__pyx_t_10) {
-          if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_i))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_i))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           goto __pyx_L35;
         }
         __pyx_L35:;
@@ -58870,7 +59098,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_DECREF_SET(__pyx_v_idx, ((PyObject*)__pyx_t_1));
       __pyx_t_1 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":5007
+      /* "netCDF4/_netCDF4.pyx":5127
  *                 # Get the list of indices for variable 'n'.
  *                 idx = [i for i,numv in lst if numv == n]
  *                 if idx:             # <<<<<<<<<<<<<<
@@ -58880,42 +59108,42 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __pyx_t_10 = (__pyx_v_idx != Py_None) && (PyList_GET_SIZE(__pyx_v_idx) != 0);
       if (__pyx_t_10) {
 
-        /* "netCDF4/_netCDF4.pyx":5009
+        /* "netCDF4/_netCDF4.pyx":5129
  *                 if idx:
  *                     # Rebuild slicing expression for dimension 0.
  *                     newSlice[0] = slice(idx[0], idx[-1] + 1, step)             # <<<<<<<<<<<<<<
  *                     # Extract records from the var, and append them to a list
  *                     # of arrays.
  */
-        __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_idx, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5009; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_idx, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5129; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_12 = __Pyx_GetItemInt_List(__pyx_v_idx, -1, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5009; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_12 = __Pyx_GetItemInt_List(__pyx_v_idx, -1, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5129; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_2 = PyNumber_Add(__pyx_t_12, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyNumber_Add(__pyx_t_12, __pyx_int_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-        __pyx_t_12 = PySlice_New(__pyx_t_1, __pyx_t_2, __pyx_v_step); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = PySlice_New(__pyx_t_1, __pyx_t_2, __pyx_v_step); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        if (unlikely(__Pyx_SetItemInt(__pyx_v_newSlice, 0, __pyx_t_12, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (unlikely(__Pyx_SetItemInt(__pyx_v_newSlice, 0, __pyx_t_12, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":5012
+        /* "netCDF4/_netCDF4.pyx":5132
  *                     # Extract records from the var, and append them to a list
  *                     # of arrays.
  *                     dat = Variable.__getitem__(self._recVar[n],tuple(newSlice))             # <<<<<<<<<<<<<<
  *                     if ma.isMA(dat) and not ismasked:
  *                         ismasked=True
  */
-        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Variable)), __pyx_n_s_getitem); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_v_n); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+        __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_v_n); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5132; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = PyList_AsTuple(__pyx_v_newSlice); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_AsTuple(__pyx_v_newSlice); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_7 = NULL;
         __pyx_t_16 = 0;
@@ -58929,7 +59157,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
             __pyx_t_16 = 1;
           }
         }
-        __pyx_t_18 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_18 = PyTuple_New(2+__pyx_t_16); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_18);
         if (__pyx_t_7) {
           PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -58940,23 +59168,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         __Pyx_GIVEREF(__pyx_t_1);
         __pyx_t_3 = 0;
         __pyx_t_1 = 0;
-        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_18, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_18, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __Pyx_XDECREF_SET(__pyx_v_dat, __pyx_t_12);
         __pyx_t_12 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":5013
+        /* "netCDF4/_netCDF4.pyx":5133
  *                     # of arrays.
  *                     dat = Variable.__getitem__(self._recVar[n],tuple(newSlice))
  *                     if ma.isMA(dat) and not ismasked:             # <<<<<<<<<<<<<<
  *                         ismasked=True
  *                         fill_value = dat.fill_value
  */
-        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isMA); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_isMA); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_18);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __pyx_t_2 = NULL;
@@ -58970,21 +59198,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           }
         }
         if (!__pyx_t_2) {
-          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_v_dat); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_v_dat); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_12);
         } else {
-          __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_1);
           PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
           __Pyx_INCREF(__pyx_v_dat);
           PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_dat);
           __Pyx_GIVEREF(__pyx_v_dat);
-          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         }
         __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
-        __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         if (__pyx_t_11) {
         } else {
@@ -58996,7 +59224,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         __pyx_L38_bool_binop_done:;
         if (__pyx_t_10) {
 
-          /* "netCDF4/_netCDF4.pyx":5014
+          /* "netCDF4/_netCDF4.pyx":5134
  *                     dat = Variable.__getitem__(self._recVar[n],tuple(newSlice))
  *                     if ma.isMA(dat) and not ismasked:
  *                         ismasked=True             # <<<<<<<<<<<<<<
@@ -59005,14 +59233,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
  */
           __pyx_v_ismasked = 1;
 
-          /* "netCDF4/_netCDF4.pyx":5015
+          /* "netCDF4/_netCDF4.pyx":5135
  *                     if ma.isMA(dat) and not ismasked:
  *                         ismasked=True
  *                         fill_value = dat.fill_value             # <<<<<<<<<<<<<<
  *                     lstArr.append(dat)
  *             if ismasked:
  */
-          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_dat, __pyx_n_s_fill_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_dat, __pyx_n_s_fill_value); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_XDECREF_SET(__pyx_v_fill_value, __pyx_t_12);
           __pyx_t_12 = 0;
@@ -59020,19 +59248,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         }
         __pyx_L37:;
 
-        /* "netCDF4/_netCDF4.pyx":5016
+        /* "netCDF4/_netCDF4.pyx":5136
  *                         ismasked=True
  *                         fill_value = dat.fill_value
  *                     lstArr.append(dat)             # <<<<<<<<<<<<<<
  *             if ismasked:
  *                 lstArr = ma.concatenate(lstArr)
  */
-        __pyx_t_15 = __Pyx_PyObject_Append(__pyx_v_lstArr, __pyx_v_dat); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = __Pyx_PyObject_Append(__pyx_v_lstArr, __pyx_v_dat); if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         goto __pyx_L36;
       }
       __pyx_L36:;
 
-      /* "netCDF4/_netCDF4.pyx":5004
+      /* "netCDF4/_netCDF4.pyx":5124
  *             lstArr = []
  *             ismasked = False
  *             for n in range(nv):             # <<<<<<<<<<<<<<
@@ -59042,7 +59270,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5017
+    /* "netCDF4/_netCDF4.pyx":5137
  *                         fill_value = dat.fill_value
  *                     lstArr.append(dat)
  *             if ismasked:             # <<<<<<<<<<<<<<
@@ -59052,16 +59280,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     __pyx_t_10 = (__pyx_v_ismasked != 0);
     if (__pyx_t_10) {
 
-      /* "netCDF4/_netCDF4.pyx":5018
+      /* "netCDF4/_netCDF4.pyx":5138
  *                     lstArr.append(dat)
  *             if ismasked:
  *                 lstArr = ma.concatenate(lstArr)             # <<<<<<<<<<<<<<
  *             else:
  *                 lstArr = numpy.concatenate(lstArr)
  */
-      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
-      __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_18);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       __pyx_t_12 = NULL;
@@ -59075,16 +59303,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         }
       }
       if (!__pyx_t_12) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_v_lstArr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_v_lstArr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_1);
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
         __Pyx_INCREF(__pyx_v_lstArr);
         PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_lstArr);
         __Pyx_GIVEREF(__pyx_v_lstArr);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_18, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       }
@@ -59095,16 +59323,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
     /*else*/ {
 
-      /* "netCDF4/_netCDF4.pyx":5020
+      /* "netCDF4/_netCDF4.pyx":5140
  *                 lstArr = ma.concatenate(lstArr)
  *             else:
  *                 lstArr = numpy.concatenate(lstArr)             # <<<<<<<<<<<<<<
  *             if lstArr.dtype != data.dtype: data = data.astype(lstArr.dtype)
  *             # sometimes there are legitimate singleton dimensions, in which
  */
-      __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_18);
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
       __pyx_t_18 = NULL;
@@ -59118,16 +59346,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         }
       }
       if (!__pyx_t_18) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_lstArr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_lstArr); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
         PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_18); __Pyx_GIVEREF(__pyx_t_18); __pyx_t_18 = NULL;
         __Pyx_INCREF(__pyx_v_lstArr);
         PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_lstArr);
         __Pyx_GIVEREF(__pyx_v_lstArr);
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       }
@@ -59137,26 +59365,26 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
     __pyx_L40:;
 
-    /* "netCDF4/_netCDF4.pyx":5021
+    /* "netCDF4/_netCDF4.pyx":5141
  *             else:
  *                 lstArr = numpy.concatenate(lstArr)
  *             if lstArr.dtype != data.dtype: data = data.astype(lstArr.dtype)             # <<<<<<<<<<<<<<
  *             # sometimes there are legitimate singleton dimensions, in which
  *             # case the array shapes won't conform. If so, a ValueError will
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_12 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     if (__pyx_t_10) {
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_n_s_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_18 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -59169,17 +59397,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
         }
       }
       if (!__pyx_t_18) {
-        __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_GOTREF(__pyx_t_12);
       } else {
-        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_2);
         PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_18); __Pyx_GIVEREF(__pyx_t_18); __pyx_t_18 = NULL;
         PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_4);
         __Pyx_GIVEREF(__pyx_t_4);
         __pyx_t_4 = 0;
-        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       }
@@ -59190,7 +59418,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
     __pyx_L41:;
 
-    /* "netCDF4/_netCDF4.pyx":5025
+    /* "netCDF4/_netCDF4.pyx":5145
  *             # case the array shapes won't conform. If so, a ValueError will
  *             # result, and no squeeze will be done.
  *             try:             # <<<<<<<<<<<<<<
@@ -59204,14 +59432,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_XGOTREF(__pyx_t_21);
       /*try:*/ {
 
-        /* "netCDF4/_netCDF4.pyx":5026
+        /* "netCDF4/_netCDF4.pyx":5146
  *             # result, and no squeeze will be done.
  *             try:
  *                 data[tuple(ind)] = lstArr.squeeze()             # <<<<<<<<<<<<<<
  *             except ValueError:
  *                 data[tuple(ind)] = lstArr
  */
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5026; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_lstArr, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5146; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_2 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
@@ -59224,16 +59452,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
           }
         }
         if (__pyx_t_2) {
-          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5026; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
+          __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5146; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
           __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         } else {
-          __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5026; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
+          __pyx_t_12 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5146; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
         }
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = PySequence_Tuple(__pyx_v_ind); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5026; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
+        __pyx_t_1 = PySequence_Tuple(__pyx_v_ind); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5146; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
         __Pyx_GOTREF(__pyx_t_1);
-        if (unlikely(PyObject_SetItem(__pyx_v_data, __pyx_t_1, __pyx_t_12) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5026; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v_data, __pyx_t_1, __pyx_t_12) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5146; __pyx_clineno = __LINE__; goto __pyx_L42_error;}
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       }
@@ -59250,7 +59478,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-      /* "netCDF4/_netCDF4.pyx":5027
+      /* "netCDF4/_netCDF4.pyx":5147
  *             try:
  *                 data[tuple(ind)] = lstArr.squeeze()
  *             except ValueError:             # <<<<<<<<<<<<<<
@@ -59260,21 +59488,21 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __pyx_t_22 = PyErr_ExceptionMatches(__pyx_builtin_ValueError);
       if (__pyx_t_22) {
         __Pyx_AddTraceback("netCDF4._netCDF4._Variable.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5027; __pyx_clineno = __LINE__; goto __pyx_L44_except_error;}
+        if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5147; __pyx_clineno = __LINE__; goto __pyx_L44_except_error;}
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_GOTREF(__pyx_t_2);
 
-        /* "netCDF4/_netCDF4.pyx":5028
+        /* "netCDF4/_netCDF4.pyx":5148
  *                 data[tuple(ind)] = lstArr.squeeze()
  *             except ValueError:
  *                 data[tuple(ind)] = lstArr             # <<<<<<<<<<<<<<
  * 
  *         # Remove extra singleton dimensions.
  */
-        __pyx_t_4 = PySequence_Tuple(__pyx_v_ind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5028; __pyx_clineno = __LINE__; goto __pyx_L44_except_error;}
+        __pyx_t_4 = PySequence_Tuple(__pyx_v_ind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5148; __pyx_clineno = __LINE__; goto __pyx_L44_except_error;}
         __Pyx_GOTREF(__pyx_t_4);
-        if (unlikely(PyObject_SetItem(__pyx_v_data, __pyx_t_4, __pyx_v_lstArr) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5028; __pyx_clineno = __LINE__; goto __pyx_L44_except_error;}
+        if (unlikely(PyObject_SetItem(__pyx_v_data, __pyx_t_4, __pyx_v_lstArr) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5148; __pyx_clineno = __LINE__; goto __pyx_L44_except_error;}
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -59296,7 +59524,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       __pyx_L49_try_end:;
     }
 
-    /* "netCDF4/_netCDF4.pyx":4967
+    /* "netCDF4/_netCDF4.pyx":5087
  *         # Number of variables making up the MFVariable.Variable.
  *         nv = len(self._recLen)
  *         for (start,count,stride,ind) in zip(strt, cnt, strd, put_ind):             # <<<<<<<<<<<<<<
@@ -59306,31 +59534,31 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5031
+  /* "netCDF4/_netCDF4.pyx":5151
  * 
  *         # Remove extra singleton dimensions.
  *         data = data[tuple(squeeze)]             # <<<<<<<<<<<<<<
  * 
  *         # if no masked elements, return numpy array.
  */
-  __pyx_t_6 = PySequence_Tuple(__pyx_v_squeeze); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PySequence_Tuple(__pyx_v_squeeze); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_2 = PyObject_GetItem(__pyx_v_data, __pyx_t_6); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5031; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = PyObject_GetItem(__pyx_v_data, __pyx_t_6); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5151; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF_SET(__pyx_v_data, __pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5034
+  /* "netCDF4/_netCDF4.pyx":5154
  * 
  *         # if no masked elements, return numpy array.
  *         if ma.isMA(data) and not data.mask.any():             # <<<<<<<<<<<<<<
  *             data = data.filled()
  * 
  */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ma); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_isMA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_isMA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_6 = NULL;
@@ -59344,30 +59572,30 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
   }
   if (!__pyx_t_6) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_data); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
     PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_6); __pyx_t_6 = NULL;
     __Pyx_INCREF(__pyx_v_data);
     PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_data);
     __Pyx_GIVEREF(__pyx_v_data);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_11) {
   } else {
     __pyx_t_10 = __pyx_t_11;
     goto __pyx_L53_bool_binop_done;
   }
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_mask); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_mask); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_any); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_any); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_12);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = NULL;
@@ -59381,28 +59609,28 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_23 = ((!__pyx_t_11) != 0);
   __pyx_t_10 = __pyx_t_23;
   __pyx_L53_bool_binop_done:;
   if (__pyx_t_10) {
 
-    /* "netCDF4/_netCDF4.pyx":5035
+    /* "netCDF4/_netCDF4.pyx":5155
  *         # if no masked elements, return numpy array.
  *         if ma.isMA(data) and not data.mask.any():
  *             data = data.filled()             # <<<<<<<<<<<<<<
  * 
  *         return data
  */
-    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_filled); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_data, __pyx_n_s_filled); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
     __pyx_t_1 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_12))) {
@@ -59415,10 +59643,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
       }
     }
     if (__pyx_t_1) {
-      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
-      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
@@ -59428,7 +59656,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   }
   __pyx_L52:;
 
-  /* "netCDF4/_netCDF4.pyx":5037
+  /* "netCDF4/_netCDF4.pyx":5157
  *             data = data.filled()
  * 
  *         return data             # <<<<<<<<<<<<<<
@@ -59440,7 +59668,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   __pyx_r = __pyx_v_data;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":4936
+  /* "netCDF4/_netCDF4.pyx":5056
  *         for v in self._recVar:
  *             v.set_auto_maskandscale(val)
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -59492,17 +59720,17 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_9_Variable_16__getitem__(CYTHON_UNU
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":5076
+/* "netCDF4/_netCDF4.pyx":5195
  *     """
  * 
  *     def __init__(self, time, units=None):             # <<<<<<<<<<<<<<
  *         """
- * Create a time Variable with units consistent across a multifile
+ *         **`__init__(self, time, units=None)`**
  */
 
 /* Python wrapper */
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static char __pyx_doc_7netCDF4_8_netCDF4_6MFTime___init__[] = "\nCreate a time Variable with units consistent across a multifile\ndataset.\n\n at param time: Time variable from a MFDataset.\n\n at keyword units: Time units, for example, 'days since 1979-01-01'. If None, use\nthe units from the master variable.\n        ";
+static char __pyx_doc_7netCDF4_8_netCDF4_6MFTime___init__[] = "\n        **`__init__(self, time, units=None)`**\n\n        Create a time Variable with units consistent across a multifile\n        dataset.\n        \n        **`time`**: Time variable from a `netCDF4.MFDataset`.\n        \n        **`units`**: Time units, for example, `days since 1979-01-01`. If None, use\n        the units from the master variable.\n        ";
 static PyMethodDef __pyx_mdef_7netCDF4_8_netCDF4_6MFTime_1__init__ = {"__init__", (PyCFunction)__pyx_pw_7netCDF4_8_netCDF4_6MFTime_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7netCDF4_8_netCDF4_6MFTime___init__};
 static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
   PyObject *__pyx_v_self = 0;
@@ -59536,7 +59764,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_1__init__(PyObject *__pyx_s
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (kw_args > 0) {
@@ -59545,7 +59773,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_1__init__(PyObject *__pyx_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -59562,7 +59790,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_1__init__(PyObject *__pyx_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.MFTime.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -59609,37 +59837,37 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":5086
- * the units from the master variable.
+  /* "netCDF4/_netCDF4.pyx":5207
+ *         the units from the master variable.
  *         """
  *         import datetime             # <<<<<<<<<<<<<<
  *         self.__time = time
  * 
  */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_datetime, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_datetime, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_datetime = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5087
+  /* "netCDF4/_netCDF4.pyx":5208
  *         """
  *         import datetime
  *         self.__time = time             # <<<<<<<<<<<<<<
  * 
  *         # copy attributes from master time variable.
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__time, __pyx_v_time) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__time, __pyx_v_time) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":5090
+  /* "netCDF4/_netCDF4.pyx":5211
  * 
  *         # copy attributes from master time variable.
  *         for name, value in time.__dict__.items():             # <<<<<<<<<<<<<<
  *             self.__dict__[name] = value
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_n_s_dict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -59653,10 +59881,10 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -59664,9 +59892,9 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -59674,16 +59902,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -59692,7 +59920,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -59708,7 +59936,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -59721,15 +59949,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       __Pyx_INCREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_t_6);
       #else
-      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -59737,7 +59965,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       __Pyx_GOTREF(__pyx_t_2);
       index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_6);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_8 = NULL;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       goto __pyx_L6_unpacking_done;
@@ -59745,7 +59973,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L6_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_2);
@@ -59753,19 +59981,19 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
     __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5091
+    /* "netCDF4/_netCDF4.pyx":5212
  *         # copy attributes from master time variable.
  *         for name, value in time.__dict__.items():
  *             self.__dict__[name] = value             # <<<<<<<<<<<<<<
  * 
  *         # make sure calendar attribute present in all files.
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dict); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_v_name, __pyx_v_value) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5090
+    /* "netCDF4/_netCDF4.pyx":5211
  * 
  *         # copy attributes from master time variable.
  *         for name, value in time.__dict__.items():             # <<<<<<<<<<<<<<
@@ -59775,22 +60003,22 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5094
+  /* "netCDF4/_netCDF4.pyx":5215
  * 
  *         # make sure calendar attribute present in all files.
  *         for t in self._recVar:             # <<<<<<<<<<<<<<
  *             if not hasattr(t,'calendar'):
  *                 raise ValueError('MFTime requires that the time variable in all files have a calendar attribute')
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
     __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   for (;;) {
@@ -59798,16 +60026,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -59816,7 +60044,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -59825,32 +60053,32 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
     __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5095
+    /* "netCDF4/_netCDF4.pyx":5216
  *         # make sure calendar attribute present in all files.
  *         for t in self._recVar:
  *             if not hasattr(t,'calendar'):             # <<<<<<<<<<<<<<
  *                 raise ValueError('MFTime requires that the time variable in all files have a calendar attribute')
  * 
  */
-    __pyx_t_9 = PyObject_HasAttr(__pyx_v_t, __pyx_n_s_calendar); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyObject_HasAttr(__pyx_v_t, __pyx_n_s_calendar); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_10 = ((!(__pyx_t_9 != 0)) != 0);
     if (__pyx_t_10) {
 
-      /* "netCDF4/_netCDF4.pyx":5096
+      /* "netCDF4/_netCDF4.pyx":5217
  *         for t in self._recVar:
  *             if not hasattr(t,'calendar'):
  *                 raise ValueError('MFTime requires that the time variable in all files have a calendar attribute')             # <<<<<<<<<<<<<<
  * 
  *         # Check that calendar is the same in all files.
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__116, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
 
-    /* "netCDF4/_netCDF4.pyx":5094
+    /* "netCDF4/_netCDF4.pyx":5215
  * 
  *         # make sure calendar attribute present in all files.
  *         for t in self._recVar:             # <<<<<<<<<<<<<<
@@ -59860,24 +60088,24 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5099
+  /* "netCDF4/_netCDF4.pyx":5220
  * 
  *         # Check that calendar is the same in all files.
  *         if len(set([t.calendar for t in self._recVar])) > 1:             # <<<<<<<<<<<<<<
  *             raise ValueError('MFTime requires that the same time calendar is used by all files.')
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
     __pyx_t_6 = __pyx_t_3; __Pyx_INCREF(__pyx_t_6); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_5 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   for (;;) {
@@ -59885,16 +60113,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       if (likely(PyList_CheckExact(__pyx_t_6))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -59903,7 +60131,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -59911,84 +60139,84 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
     }
     __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_calendar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_calendar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PySet_New(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_4 = PySet_Size(__pyx_t_6); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PySet_Size(__pyx_t_6); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_10 = ((__pyx_t_4 > 1) != 0);
   if (__pyx_t_10) {
 
-    /* "netCDF4/_netCDF4.pyx":5100
+    /* "netCDF4/_netCDF4.pyx":5221
  *         # Check that calendar is the same in all files.
  *         if len(set([t.calendar for t in self._recVar])) > 1:
  *             raise ValueError('MFTime requires that the same time calendar is used by all files.')             # <<<<<<<<<<<<<<
  * 
  *         # Override units if units is specified.
  */
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__117, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_Raise(__pyx_t_6, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":5103
+  /* "netCDF4/_netCDF4.pyx":5224
  * 
  *         # Override units if units is specified.
  *         self.units = units or time.units             # <<<<<<<<<<<<<<
  * 
  *         # Reference date to compute the difference between different time units.
  */
-  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_units); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_units); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (!__pyx_t_10) {
   } else {
     __Pyx_INCREF(__pyx_v_units);
     __pyx_t_6 = __pyx_v_units;
     goto __pyx_L13_bool_binop_done;
   }
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_n_s_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_n_s_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_6 = __pyx_t_1;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_L13_bool_binop_done:;
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_units, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_units, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5106
+  /* "netCDF4/_netCDF4.pyx":5227
  * 
  *         # Reference date to compute the difference between different time units.
  *         ref_date = datetime.datetime(1900,1,1)             # <<<<<<<<<<<<<<
  *         ref_num = date2num(ref_date, self.units, self.calendar)
  * 
  */
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_datetime, __pyx_n_s_datetime); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_datetime, __pyx_n_s_datetime); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__116, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__118, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_ref_date = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5107
+  /* "netCDF4/_netCDF4.pyx":5228
  *         # Reference date to compute the difference between different time units.
  *         ref_date = datetime.datetime(1900,1,1)
  *         ref_num = date2num(ref_date, self.units, self.calendar)             # <<<<<<<<<<<<<<
  * 
  *         # Create delta vector: delta = ref_num(ref_date) - num(ref_date)
  */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_date2num); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_date2num); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_units); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calendar); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calendar); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_7 = NULL;
   __pyx_t_4 = 0;
@@ -60002,7 +60230,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       __pyx_t_4 = 1;
     }
   }
-  __pyx_t_11 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_11);
   if (__pyx_t_7) {
     PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = NULL;
@@ -60016,29 +60244,29 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_3 = 0;
   __pyx_t_2 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_v_ref_num = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5111
+  /* "netCDF4/_netCDF4.pyx":5232
  *         # Create delta vector: delta = ref_num(ref_date) - num(ref_date)
  *         # So that ref_num(date) = num(date) + delta
  *         self.__delta = numpy.empty(len(self), time.dtype)             # <<<<<<<<<<<<<<
  * 
  *         i0 = 0; i1 = 0
  */
-  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_11);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_4 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_Length(__pyx_v_self); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_time, __pyx_n_s_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   __pyx_t_4 = 0;
@@ -60052,7 +60280,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       __pyx_t_4 = 1;
     }
   }
-  __pyx_t_7 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (__pyx_t_3) {
     PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -60063,14 +60291,14 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_6 = 0;
   __pyx_t_2 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__delta, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__delta, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5113
+  /* "netCDF4/_netCDF4.pyx":5234
  *         self.__delta = numpy.empty(len(self), time.dtype)
  * 
  *         i0 = 0; i1 = 0             # <<<<<<<<<<<<<<
@@ -60082,7 +60310,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   __Pyx_INCREF(__pyx_int_0);
   __pyx_v_i1 = __pyx_int_0;
 
-  /* "netCDF4/_netCDF4.pyx":5114
+  /* "netCDF4/_netCDF4.pyx":5235
  * 
  *         i0 = 0; i1 = 0
  *         for i,v in enumerate(self._recVar):             # <<<<<<<<<<<<<<
@@ -60091,15 +60319,15 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
  */
   __Pyx_INCREF(__pyx_int_0);
   __pyx_t_1 = __pyx_int_0;
-  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recVar); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_11);
   if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
     __pyx_t_7 = __pyx_t_11; __Pyx_INCREF(__pyx_t_7); __pyx_t_4 = 0;
     __pyx_t_5 = NULL;
   } else {
-    __pyx_t_4 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_5 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
   for (;;) {
@@ -60107,16 +60335,16 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
       if (likely(PyList_CheckExact(__pyx_t_7))) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_11 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_11); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_11); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_11 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_11); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_4); __Pyx_INCREF(__pyx_t_11); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_11 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PySequence_ITEM(__pyx_t_7, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -60125,7 +60353,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -60135,39 +60363,39 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
     __pyx_t_11 = 0;
     __Pyx_INCREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
-    __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyNumber_Add(__pyx_t_1, __pyx_int_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_DECREF(__pyx_t_1);
     __pyx_t_1 = __pyx_t_11;
     __pyx_t_11 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5115
+    /* "netCDF4/_netCDF4.pyx":5236
  *         i0 = 0; i1 = 0
  *         for i,v in enumerate(self._recVar):
  *             n = self._recLen[i] # Length of time vector.             # <<<<<<<<<<<<<<
  *             num = date2num(ref_date, v.units, self.calendar)
  *             i1 += n
  */
-    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recLen); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_recLen); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
-    __pyx_t_2 = PyObject_GetItem(__pyx_t_11, __pyx_v_i); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5115; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_2 = PyObject_GetItem(__pyx_t_11, __pyx_v_i); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5236; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5116
+    /* "netCDF4/_netCDF4.pyx":5237
  *         for i,v in enumerate(self._recVar):
  *             n = self._recLen[i] # Length of time vector.
  *             num = date2num(ref_date, v.units, self.calendar)             # <<<<<<<<<<<<<<
  *             i1 += n
  *             self.__delta[i0:i1] = ref_num - num
  */
-    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_date2num); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_date2num); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_units); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_units); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calendar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_calendar); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_12 = NULL;
     __pyx_t_13 = 0;
@@ -60181,7 +60409,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
         __pyx_t_13 = 1;
       }
     }
-    __pyx_t_14 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_14);
     if (__pyx_t_12) {
       PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_12); __pyx_t_12 = NULL;
@@ -60195,53 +60423,53 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
     __Pyx_GIVEREF(__pyx_t_3);
     __pyx_t_6 = 0;
     __pyx_t_3 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_14, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_XDECREF_SET(__pyx_v_num, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5117
+    /* "netCDF4/_netCDF4.pyx":5238
  *             n = self._recLen[i] # Length of time vector.
  *             num = date2num(ref_date, v.units, self.calendar)
  *             i1 += n             # <<<<<<<<<<<<<<
  *             self.__delta[i0:i1] = ref_num - num
  *             i0 += n
  */
-    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i1, __pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i1, __pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF_SET(__pyx_v_i1, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5118
+    /* "netCDF4/_netCDF4.pyx":5239
  *             num = date2num(ref_date, v.units, self.calendar)
  *             i1 += n
  *             self.__delta[i0:i1] = ref_num - num             # <<<<<<<<<<<<<<
  *             i0 += n
  * 
  */
-    __pyx_t_2 = PyNumber_Subtract(__pyx_v_ref_num, __pyx_v_num); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_Subtract(__pyx_v_ref_num, __pyx_v_num); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__delta); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__delta); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
-    if (__Pyx_PyObject_SetSlice(__pyx_t_11, __pyx_t_2, 0, 0, &__pyx_v_i0, &__pyx_v_i1, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_PyObject_SetSlice(__pyx_t_11, __pyx_t_2, 0, 0, &__pyx_v_i0, &__pyx_v_i1, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5119
+    /* "netCDF4/_netCDF4.pyx":5240
  *             i1 += n
  *             self.__delta[i0:i1] = ref_num - num
  *             i0 += n             # <<<<<<<<<<<<<<
  * 
  * 
  */
-    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i0, __pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_i0, __pyx_v_n); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF_SET(__pyx_v_i0, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":5114
+    /* "netCDF4/_netCDF4.pyx":5235
  * 
  *         i0 = 0; i1 = 0
  *         for i,v in enumerate(self._recVar):             # <<<<<<<<<<<<<<
@@ -60252,12 +60480,12 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5076
+  /* "netCDF4/_netCDF4.pyx":5195
  *     """
  * 
  *     def __init__(self, time, units=None):             # <<<<<<<<<<<<<<
  *         """
- * Create a time Variable with units consistent across a multifile
+ *         **`__init__(self, time, units=None)`**
  */
 
   /* function exit code */
@@ -60292,7 +60520,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime___init__(CYTHON_UNUSED PyOb
   return __pyx_r;
 }
 
-/* "netCDF4/_netCDF4.pyx":5122
+/* "netCDF4/_netCDF4.pyx":5243
  * 
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -60331,11 +60559,11 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_3__getitem__(PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_elem)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getitem__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getitem__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -60348,7 +60576,7 @@ static PyObject *__pyx_pw_7netCDF4_8_netCDF4_6MFTime_3__getitem__(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__getitem__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netCDF4._netCDF4.MFTime.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -60372,23 +60600,23 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime_2__getitem__(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "netCDF4/_netCDF4.pyx":5123
+  /* "netCDF4/_netCDF4.pyx":5244
  * 
  *     def __getitem__(self, elem):
  *         return self.__time[elem] + self.__delta[elem]             # <<<<<<<<<<<<<<
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_elem); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5123; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_elem); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5244; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__delta); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_MFTime__delta); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_v_elem); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5123; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_v_elem); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5244; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -60396,7 +60624,7 @@ static PyObject *__pyx_pf_7netCDF4_8_netCDF4_6MFTime_2__getitem__(CYTHON_UNUSED
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "netCDF4/_netCDF4.pyx":5122
+  /* "netCDF4/_netCDF4.pyx":5243
  * 
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
@@ -60436,8 +60664,8 @@ static PyObject *__pyx_tp_new_7netCDF4_8_netCDF4_Dataset(PyTypeObject *t, CYTHON
   p->data_model = Py_None; Py_INCREF(Py_None);
   p->cmptypes = Py_None; Py_INCREF(Py_None);
   p->vltypes = Py_None; Py_INCREF(Py_None);
-  p->keepweakref = Py_None; Py_INCREF(Py_None);
   p->__orthogonal_indexing__ = Py_None; Py_INCREF(Py_None);
+  p->keepweakref = Py_None; Py_INCREF(Py_None);
   return o;
 }
 
@@ -60468,8 +60696,8 @@ static void __pyx_tp_dealloc_7netCDF4_8_netCDF4_Dataset(PyObject *o) {
   Py_CLEAR(p->data_model);
   Py_CLEAR(p->cmptypes);
   Py_CLEAR(p->vltypes);
-  Py_CLEAR(p->keepweakref);
   Py_CLEAR(p->__orthogonal_indexing__);
+  Py_CLEAR(p->keepweakref);
   (*Py_TYPE(o)->tp_free)(o);
 }
 
@@ -60506,12 +60734,12 @@ static int __pyx_tp_traverse_7netCDF4_8_netCDF4_Dataset(PyObject *o, visitproc v
   if (p->vltypes) {
     e = (*v)(p->vltypes, a); if (e) return e;
   }
-  if (p->keepweakref) {
-    e = (*v)(p->keepweakref, a); if (e) return e;
-  }
   if (p->__orthogonal_indexing__) {
     e = (*v)(p->__orthogonal_indexing__, a); if (e) return e;
   }
+  if (p->keepweakref) {
+    e = (*v)(p->keepweakref, a); if (e) return e;
+  }
   return 0;
 }
 
@@ -60548,12 +60776,12 @@ static int __pyx_tp_clear_7netCDF4_8_netCDF4_Dataset(PyObject *o) {
   tmp = ((PyObject*)p->vltypes);
   p->vltypes = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
-  tmp = ((PyObject*)p->keepweakref);
-  p->keepweakref = Py_None; Py_INCREF(Py_None);
-  Py_XDECREF(tmp);
   tmp = ((PyObject*)p->__orthogonal_indexing__);
   p->__orthogonal_indexing__ = Py_None; Py_INCREF(Py_None);
   Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->keepweakref);
+  p->keepweakref = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
   return 0;
 }
 static PyObject *__pyx_sq_item_7netCDF4_8_netCDF4_Dataset(PyObject *o, Py_ssize_t i) {
@@ -60740,29 +60968,29 @@ static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_vltypes(PyObject *o, PyObje
   }
 }
 
-static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_keepweakref(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(o);
+static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(o);
 }
 
-static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_keepweakref(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
   if (v) {
-    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(o, v);
+    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(o, v);
   }
   else {
-    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(o);
+    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(o);
   }
 }
 
-static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__(PyObject *o, CYTHON_UNUSED void *x) {
-  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___1__get__(o);
+static PyObject *__pyx_getprop_7netCDF4_8_netCDF4_7Dataset_keepweakref(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_1__get__(o);
 }
 
-static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+static int __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_keepweakref(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
   if (v) {
-    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___3__set__(o, v);
+    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_3__set__(o, v);
   }
   else {
-    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_23__orthogonal_indexing___5__del__(o);
+    return __pyx_pw_7netCDF4_8_netCDF4_7Dataset_11keepweakref_5__del__(o);
   }
 }
 
@@ -60811,8 +61039,8 @@ static struct PyGetSetDef __pyx_getsets_7netCDF4_8_netCDF4_Dataset[] = {
   {(char *)"data_model", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_data_model, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_data_model, 0, 0},
   {(char *)"cmptypes", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_cmptypes, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_cmptypes, 0, 0},
   {(char *)"vltypes", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_vltypes, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_vltypes, 0, 0},
-  {(char *)"keepweakref", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_keepweakref, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_keepweakref, 0, 0},
   {(char *)"__orthogonal_indexing__", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset___orthogonal_indexing__, 0, 0},
+  {(char *)"keepweakref", __pyx_getprop_7netCDF4_8_netCDF4_7Dataset_keepweakref, __pyx_setprop_7netCDF4_8_netCDF4_7Dataset_keepweakref, 0, 0},
   {0, 0, 0, 0, 0}
 };
 
@@ -60860,7 +61088,7 @@ static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Dataset = {
   __pyx_tp_setattro_7netCDF4_8_netCDF4_Dataset, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "\nDataset(self, filename, mode=\"r\", clobber=True, diskless=False, persist=False, keepweakref=False, format='NETCDF4')\n\nA netCDF L{Dataset} is a collection of dimensions, groups, variables and\nattributes. Together they describe the meaning of data and relations among\ndata fields stored in a netCDF file.\n\nB{Parameters:}\n\nB{C{filename}} - Name of netCDF file to hold dataset.\n\nB{Keywords}:\n\nB{C{mode}} - access mode. C{r} means read-only; no data can be\nmodified. C{w} means  [...]
+  "\nA netCDF `netCDF4.Dataset` is a collection of dimensions, groups, variables and\nattributes. Together they describe the meaning of data and relations among\ndata fields stored in a netCDF file. See `netCDF4.Dataset.__init__` for more\ndetails.\n\nA list of attribute names corresponding to global netCDF attributes\ndefined for the `netCDF4.Dataset` can be obtained with the\n`netCDF4.Dataset.ncattrs` method.\nThese attributes can be created by assigning to an attribute of the\n`netCDF [...]
   __pyx_tp_traverse_7netCDF4_8_netCDF4_Dataset, /*tp_traverse*/
   __pyx_tp_clear_7netCDF4_8_netCDF4_Dataset, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -60952,7 +61180,7 @@ static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Group = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "\nGroup(self, parent, name)\n\nGroups define a hierarchical namespace within a netCDF file. They are\nanalagous to directories in a unix filesystem. Each L{Group} behaves like\na L{Dataset} within a Dataset, and can contain it's own variables,\ndimensions and attributes (and other Groups).\n\nL{Group} instances should be created using the\nL{createGroup<Dataset.createGroup>} method of a L{Dataset} instance, or\nanother L{Group} instance, not using this class directly.\n\nB{Parameters: [...]
+  "\nGroups define a hierarchical namespace within a netCDF file. They are\nanalagous to directories in a unix filesystem. Each `netCDF4.Group` behaves like\na `netCDF4.Dataset` within a Dataset, and can contain it's own variables,\ndimensions and attributes (and other Groups). See `netCDF4.Group.__init__`\nfor more details.\n\n`netCDF4.Group` inherits from `netCDF4.Dataset`, so all the \n`netCDF4.Dataset` class methods and variables are available\nto a `netCDF4.Group` instance (except t [...]
   __pyx_tp_traverse_7netCDF4_8_netCDF4_Dataset, /*tp_traverse*/
   __pyx_tp_clear_7netCDF4_8_netCDF4_Dataset, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -61187,7 +61415,7 @@ static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Dimension = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "\nDimension(self, group, name, size=None)\n\nA netCDF L{Dimension} is used to describe the coordinates of a L{Variable}.\n\nL{Dimension} instances should be created using the\nL{createDimension<Dataset.createDimension>} method of a L{Group} or\nL{Dataset} instance, not using this class directly.\n\nB{Parameters:}\n\nB{C{group}} - L{Group} instance to associate with dimension.\n\nB{C{name}}  - Name of the dimension.\n\nB{Keywords:}\n\nB{C{size}}  - Size of the dimension. C{None} or 0 m [...]
+  "\nA netCDF `netCDF4.Dimension` is used to describe the coordinates of a `netCDF4.Variable`.\nSee `netCDF4.Dimension.__init__` for more details.\n\nThe current maximum size of a `netCDF4.Dimension` instance can be obtained by\ncalling the python `len` function on the `netCDF4.Dimension` instance. The\n`netCDF4.Dimension.isunlimited` method of a `netCDF4.Dimension` instance can be used to\ndetermine if the dimension is unlimited.\n\nRead-only class variables:\n\n**`name`**: String name, [...]
   __pyx_tp_traverse_7netCDF4_8_netCDF4_Dimension, /*tp_traverse*/
   __pyx_tp_clear_7netCDF4_8_netCDF4_Dimension, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -61733,7 +61961,7 @@ static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_Variable = {
   __pyx_tp_setattro_7netCDF4_8_netCDF4_Variable, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "\nVariable(self, group, name, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None,fill_value=None)\n\nA netCDF L{Variable} is used to read and write netCDF data.  They are\nanalagous to numpy array objects.\n\nL{Variable} instances should be created using the\nL{createVariable<Dataset.createVariable>} method of a L{Dataset} or\nL{Group} instance, not using this class directly [...]
+  "\nA netCDF `netCDF4.Variable` is used to read and write netCDF data.  They are\nanalagous to numpy array objects. See `netCDF4.Variable.__init__` for more\ndetails.\n\nA list of attribute names corresponding to netCDF attributes defined for\nthe variable can be obtained with the `netCDF4.Variable.ncattrs` method. These\nattributes can be created by assigning to an attribute of the\n`netCDF4.Variable` instance. A dictionary containing all the netCDF attribute\nname/value pairs is provi [...]
   __pyx_tp_traverse_7netCDF4_8_netCDF4_Variable, /*tp_traverse*/
   __pyx_tp_clear_7netCDF4_8_netCDF4_Variable, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -61894,7 +62122,7 @@ static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_CompoundType = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "\nA L{CompoundType} instance is used to describe a compound data type.\n\nConstructor: C{CompoundType(group, datatype, datatype_name)}\n\n at attention: When creating nested compound data types,\nthe inner compound data types must already be associated with CompoundType\ninstances (so create CompoundType instances for the innermost structures\nfirst).\n\nL{CompoundType} instances should be created using the\nL{createCompoundType<Dataset.createCompoundType>}\nmethod of a Dataset or L{Grou [...]
+  "\nA `netCDF4.CompoundType` instance is used to describe a compound data\ntype, and can be passed to the the `netCDF4.Dataset.createVariable` method of\na `netCDF4.Dataset` or `netCDF4.Group` instance. \nCompound data types map to numpy structured arrays.\nSee `netCDF4.CompoundType.__init__` for more details.\n\nThe instance variables `dtype` and `name` should not be modified by\nthe user.\n", /*tp_doc*/
   __pyx_tp_traverse_7netCDF4_8_netCDF4_CompoundType, /*tp_traverse*/
   __pyx_tp_clear_7netCDF4_8_netCDF4_CompoundType, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -62055,7 +62283,7 @@ static PyTypeObject __pyx_type_7netCDF4_8_netCDF4_VLType = {
   0, /*tp_setattro*/
   0, /*tp_as_buffer*/
   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-  "\nA L{VLType} instance is used to describe a variable length (VLEN) data type.\n\nConstructor: C{VLType(group, datatype, datatype_name)}\n\nL{VLType} instances should be created using the\nL{createVLType<Dataset.createVLType>}\nmethod of a Dataset or L{Group} instance, not using this class directly.\n\nB{Parameters:}\n\nB{C{group}} - L{Group} instance to associate with the VLEN datatype.\n\nB{C{datatype}} - An numpy dtype object describing a the component type for the\nvariable length [...]
+  "\nA `netCDF4.VLType` instance is used to describe a variable length (VLEN) data\ntype, and can be passed to the the `netCDF4.Dataset.createVariable` method of\na `netCDF4.Dataset` or `netCDF4.Group` instance. See \n`netCDF4.VLType.__init__` for more details.\n\nThe instance variables `dtype` and `name` should not be modified by\nthe user.\n", /*tp_doc*/
   __pyx_tp_traverse_7netCDF4_8_netCDF4_VLType, /*tp_traverse*/
   __pyx_tp_clear_7netCDF4_8_netCDF4_VLType, /*tp_clear*/
   0, /*tp_richcompare*/
@@ -62099,7 +62327,7 @@ static struct PyModuleDef __pyx_moduledef = {
     PyModuleDef_HEAD_INIT,
   #endif
     "_netCDF4",
-    __pyx_k_Introduction_Python_interface_t, /* m_doc */
+    __pyx_k_Introduction_netcdf4_python_is, /* m_doc */
     -1, /* m_size */
     __pyx_methods /* m_methods */,
     NULL, /* m_reload */
@@ -62113,19 +62341,48 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
   {&__pyx_kp_s_0m, __pyx_k_0m, sizeof(__pyx_k_0m), 0, 0, 1, 0},
   {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
-  {&__pyx_kp_s_1_1_8, __pyx_k_1_1_8, sizeof(__pyx_k_1_1_8), 0, 0, 1, 0},
+  {&__pyx_kp_s_1_1_9, __pyx_k_1_1_9, sizeof(__pyx_k_1_1_9), 0, 0, 1, 0},
   {&__pyx_kp_s_4_2_1, __pyx_k_4_2_1, sizeof(__pyx_k_4_2_1), 0, 0, 1, 0},
   {&__pyx_kp_s_4m, __pyx_k_4m, sizeof(__pyx_k_4m), 0, 0, 1, 0},
+  {&__pyx_kp_s_A_numpy_dtype_object_describing, __pyx_k_A_numpy_dtype_object_describing, sizeof(__pyx_k_A_numpy_dtype_object_describing), 0, 0, 1, 0},
+  {&__pyx_kp_s_A_numpy_dtype_object_describing_2, __pyx_k_A_numpy_dtype_object_describing_2, sizeof(__pyx_k_A_numpy_dtype_object_describing_2), 0, 0, 1, 0},
+  {&__pyx_kp_s_A_numpy_dtype_object_describing_3, __pyx_k_A_numpy_dtype_object_describing_3, sizeof(__pyx_k_A_numpy_dtype_object_describing_3), 0, 0, 1, 0},
+  {&__pyx_kp_s_A_string_describing_the_name_of, __pyx_k_A_string_describing_the_name_of, sizeof(__pyx_k_A_string_describing_the_name_of), 0, 0, 1, 0},
+  {&__pyx_kp_s_A_string_describing_the_name_of_2, __pyx_k_A_string_describing_the_name_of_2, sizeof(__pyx_k_A_string_describing_the_name_of_2), 0, 0, 1, 0},
+  {&__pyx_kp_s_A_tuple_containing_the_names_of, __pyx_k_A_tuple_containing_the_names_of, sizeof(__pyx_k_A_tuple_containing_the_names_of), 0, 0, 1, 0},
+  {&__pyx_kp_s_A_tuple_with_the_current_shape_l, __pyx_k_A_tuple_with_the_current_shape_l, sizeof(__pyx_k_A_tuple_with_the_current_shape_l), 0, 0, 1, 0},
+  {&__pyx_kp_s_Always_True_Indicates_to_client, __pyx_k_Always_True_Indicates_to_client, sizeof(__pyx_k_Always_True_Indicates_to_client), 0, 0, 1, 0},
   {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
+  {&__pyx_kp_s_Class_for_reading_multi_file_ne, __pyx_k_Class_for_reading_multi_file_ne, sizeof(__pyx_k_Class_for_reading_multi_file_ne), 0, 0, 1, 0},
+  {&__pyx_kp_s_Class_providing_an_interface_to, __pyx_k_Class_providing_an_interface_to, sizeof(__pyx_k_Class_providing_an_interface_to), 0, 0, 1, 0},
+  {&__pyx_kp_s_CompoundType_dtype, __pyx_k_CompoundType_dtype, sizeof(__pyx_k_CompoundType_dtype), 0, 0, 1, 0},
+  {&__pyx_kp_s_CompoundType_name, __pyx_k_CompoundType_name, sizeof(__pyx_k_CompoundType_name), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_cmptypes, __pyx_k_Dataset_cmptypes, sizeof(__pyx_k_Dataset_cmptypes), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_data_model, __pyx_k_Dataset_data_model, sizeof(__pyx_k_Dataset_data_model), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_dimensions, __pyx_k_Dataset_dimensions, sizeof(__pyx_k_Dataset_dimensions), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_disk_format, __pyx_k_Dataset_disk_format, sizeof(__pyx_k_Dataset_disk_format), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_file_format, __pyx_k_Dataset_file_format, sizeof(__pyx_k_Dataset_file_format), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_groups, __pyx_k_Dataset_groups, sizeof(__pyx_k_Dataset_groups), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_keepweakref, __pyx_k_Dataset_keepweakref, sizeof(__pyx_k_Dataset_keepweakref), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_parent, __pyx_k_Dataset_parent, sizeof(__pyx_k_Dataset_parent), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_path, __pyx_k_Dataset_path, sizeof(__pyx_k_Dataset_path), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_variables, __pyx_k_Dataset_variables, sizeof(__pyx_k_Dataset_variables), 0, 0, 1, 0},
+  {&__pyx_kp_s_Dataset_vltypes, __pyx_k_Dataset_vltypes, sizeof(__pyx_k_Dataset_vltypes), 0, 0, 1, 0},
+  {&__pyx_kp_s_Describes_the_power_of_ten_of_th, __pyx_k_Describes_the_power_of_ten_of_th, sizeof(__pyx_k_Describes_the_power_of_ten_of_th), 0, 0, 1, 0},
   {&__pyx_n_s_Dimension, __pyx_k_Dimension, sizeof(__pyx_k_Dimension), 0, 0, 1, 1},
   {&__pyx_n_s_Dimension___init, __pyx_k_Dimension___init, sizeof(__pyx_k_Dimension___init), 0, 0, 1, 1},
   {&__pyx_n_s_Dimension___len, __pyx_k_Dimension___len, sizeof(__pyx_k_Dimension___len), 0, 0, 1, 1},
   {&__pyx_n_s_Dimension___repr, __pyx_k_Dimension___repr, sizeof(__pyx_k_Dimension___repr), 0, 0, 1, 1},
   {&__pyx_n_s_Dimension_isunlimited, __pyx_k_Dimension_isunlimited, sizeof(__pyx_k_Dimension_isunlimited), 0, 0, 1, 1},
+  {&__pyx_kp_s_Dimension_name, __pyx_k_Dimension_name, sizeof(__pyx_k_Dimension_name), 0, 0, 1, 0},
   {&__pyx_kp_s_Dimension_object_no_longer_valid, __pyx_k_Dimension_object_no_longer_valid, sizeof(__pyx_k_Dimension_object_no_longer_valid), 0, 0, 1, 0},
   {&__pyx_n_s_FillValue, __pyx_k_FillValue, sizeof(__pyx_k_FillValue), 0, 0, 1, 1},
   {&__pyx_kp_s_FillValue_attribute_must_be_set, __pyx_k_FillValue_attribute_must_be_set, sizeof(__pyx_k_FillValue_attribute_must_be_set), 0, 0, 1, 0},
+  {&__pyx_kp_s_Group_name, __pyx_k_Group_name, sizeof(__pyx_k_Group_name), 0, 0, 1, 0},
+  {&__pyx_n_s_HDF4, __pyx_k_HDF4, sizeof(__pyx_k_HDF4), 0, 0, 1, 1},
   {&__pyx_n_s_IOError, __pyx_k_IOError, sizeof(__pyx_k_IOError), 0, 0, 1, 1},
+  {&__pyx_kp_s_If_True_child_Dimension_and_Vari, __pyx_k_If_True_child_Dimension_and_Vari, sizeof(__pyx_k_If_True_child_Dimension_and_Vari), 0, 0, 1, 0},
+  {&__pyx_kp_s_If_True_data_is_automatically_co, __pyx_k_If_True_data_is_automatically_co, sizeof(__pyx_k_If_True_data_is_automatically_co), 0, 0, 1, 0},
   {&__pyx_kp_s_Illegal_index, __pyx_k_Illegal_index, sizeof(__pyx_k_Illegal_index), 0, 0, 1, 0},
   {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
   {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
@@ -62137,7 +62394,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_MFDataset___setattr, __pyx_k_MFDataset___setattr, sizeof(__pyx_k_MFDataset___setattr), 0, 0, 1, 1},
   {&__pyx_n_s_MFDataset_close, __pyx_k_MFDataset_close, sizeof(__pyx_k_MFDataset_close), 0, 0, 1, 1},
   {&__pyx_n_s_MFDataset_ncattrs, __pyx_k_MFDataset_ncattrs, sizeof(__pyx_k_MFDataset_ncattrs), 0, 0, 1, 1},
-  {&__pyx_kp_s_MFDataset_self_files_check_Fals, __pyx_k_MFDataset_self_files_check_Fals, sizeof(__pyx_k_MFDataset_self_files_check_Fals), 0, 0, 1, 0},
   {&__pyx_kp_s_MFNetCDF4_only_works_with_NETCDF, __pyx_k_MFNetCDF4_only_works_with_NETCDF, sizeof(__pyx_k_MFNetCDF4_only_works_with_NETCDF), 0, 0, 1, 0},
   {&__pyx_n_s_MFTime, __pyx_k_MFTime, sizeof(__pyx_k_MFTime), 0, 0, 1, 1},
   {&__pyx_n_s_MFTime___getitem, __pyx_k_MFTime___getitem, sizeof(__pyx_k_MFTime___getitem), 0, 0, 1, 1},
@@ -62146,7 +62402,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_MFTime__time, __pyx_k_MFTime__time, sizeof(__pyx_k_MFTime__time), 0, 0, 1, 1},
   {&__pyx_kp_s_MFTime_requires_that_the_same_ti, __pyx_k_MFTime_requires_that_the_same_ti, sizeof(__pyx_k_MFTime_requires_that_the_same_ti), 0, 0, 1, 0},
   {&__pyx_kp_s_MFTime_requires_that_the_time_va, __pyx_k_MFTime_requires_that_the_time_va, sizeof(__pyx_k_MFTime_requires_that_the_time_va), 0, 0, 1, 0},
-  {&__pyx_kp_s_MFTime_self_time_units_None_Cla, __pyx_k_MFTime_self_time_units_None_Cla, sizeof(__pyx_k_MFTime_self_time_units_None_Cla), 0, 0, 1, 0},
   {&__pyx_n_s_MINYEAR, __pyx_k_MINYEAR, sizeof(__pyx_k_MINYEAR), 0, 0, 1, 1},
   {&__pyx_n_s_NC_DISKLESS, __pyx_k_NC_DISKLESS, sizeof(__pyx_k_NC_DISKLESS), 0, 0, 1, 1},
   {&__pyx_n_s_NETCDF3, __pyx_k_NETCDF3, sizeof(__pyx_k_NETCDF3), 0, 0, 1, 1},
@@ -62161,29 +62416,49 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_S, __pyx_k_S, sizeof(__pyx_k_S), 0, 0, 1, 1},
   {&__pyx_n_s_S1, __pyx_k_S1, sizeof(__pyx_k_S1), 0, 0, 1, 1},
   {&__pyx_n_s_StartCountStride, __pyx_k_StartCountStride, sizeof(__pyx_k_StartCountStride), 0, 0, 1, 1},
+  {&__pyx_kp_s_String_name, __pyx_k_String_name, sizeof(__pyx_k_String_name), 0, 0, 1, 0},
+  {&__pyx_kp_s_The_cmptypes_dictionary_maps_the, __pyx_k_The_cmptypes_dictionary_maps_the, sizeof(__pyx_k_The_cmptypes_dictionary_maps_the), 0, 0, 1, 0},
+  {&__pyx_kp_s_The_dimensions_dictionary_maps_t, __pyx_k_The_dimensions_dictionary_maps_t, sizeof(__pyx_k_The_dimensions_dictionary_maps_t), 0, 0, 1, 0},
+  {&__pyx_kp_s_The_groups_dictionary_maps_the_n, __pyx_k_The_groups_dictionary_maps_the_n, sizeof(__pyx_k_The_groups_dictionary_maps_the_n), 0, 0, 1, 0},
+  {&__pyx_kp_s_The_number_of_stored_elements, __pyx_k_The_number_of_stored_elements, sizeof(__pyx_k_The_number_of_stored_elements), 0, 0, 1, 0},
+  {&__pyx_kp_s_The_number_of_variable_dimension, __pyx_k_The_number_of_variable_dimension, sizeof(__pyx_k_The_number_of_variable_dimension), 0, 0, 1, 0},
+  {&__pyx_kp_s_The_variables_dictionary_maps_th, __pyx_k_The_variables_dictionary_maps_th, sizeof(__pyx_k_The_variables_dictionary_maps_th), 0, 0, 1, 0},
+  {&__pyx_kp_s_The_vltypes_dictionary_maps_the, __pyx_k_The_vltypes_dictionary_maps_the, sizeof(__pyx_k_The_vltypes_dictionary_maps_the), 0, 0, 1, 0},
   {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
   {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
   {&__pyx_n_s_U1, __pyx_k_U1, sizeof(__pyx_k_U1), 0, 0, 1, 1},
   {&__pyx_n_s_UNDEFINED, __pyx_k_UNDEFINED, sizeof(__pyx_k_UNDEFINED), 0, 0, 1, 1},
   {&__pyx_n_s_UnicodeDecodeError, __pyx_k_UnicodeDecodeError, sizeof(__pyx_k_UnicodeDecodeError), 0, 0, 1, 1},
   {&__pyx_kp_s_Unsupported_compound_type_elemen, __pyx_k_Unsupported_compound_type_elemen, sizeof(__pyx_k_Unsupported_compound_type_elemen), 0, 0, 1, 0},
-  {&__pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_k_Users_jsw_python_netcdf4_python, sizeof(__pyx_k_Users_jsw_python_netcdf4_python), 0, 0, 1, 0},
   {&__pyx_n_s_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 0, 1, 1},
+  {&__pyx_kp_s_VLType_dtype, __pyx_k_VLType_dtype, sizeof(__pyx_k_VLType_dtype), 0, 0, 1, 0},
+  {&__pyx_kp_s_VLType_name, __pyx_k_VLType_name, sizeof(__pyx_k_VLType_name), 0, 0, 1, 0},
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
   {&__pyx_n_s_Variable, __pyx_k_Variable, sizeof(__pyx_k_Variable), 0, 0, 1, 1},
   {&__pyx_n_s_Variable___getattr, __pyx_k_Variable___getattr, sizeof(__pyx_k_Variable___getattr), 0, 0, 1, 1},
   {&__pyx_n_s_Variable___getitem, __pyx_k_Variable___getitem, sizeof(__pyx_k_Variable___getitem), 0, 0, 1, 1},
   {&__pyx_n_s_Variable___init, __pyx_k_Variable___init, sizeof(__pyx_k_Variable___init), 0, 0, 1, 1},
   {&__pyx_n_s_Variable___len, __pyx_k_Variable___len, sizeof(__pyx_k_Variable___len), 0, 0, 1, 1},
+  {&__pyx_kp_s_Variable___orthogonal_indexing, __pyx_k_Variable___orthogonal_indexing, sizeof(__pyx_k_Variable___orthogonal_indexing), 0, 0, 1, 0},
   {&__pyx_n_s_Variable___repr, __pyx_k_Variable___repr, sizeof(__pyx_k_Variable___repr), 0, 0, 1, 1},
   {&__pyx_n_s_Variable__shape, __pyx_k_Variable__shape, sizeof(__pyx_k_Variable__shape), 0, 0, 1, 1},
+  {&__pyx_kp_s_Variable_datatype, __pyx_k_Variable_datatype, sizeof(__pyx_k_Variable_datatype), 0, 0, 1, 0},
+  {&__pyx_kp_s_Variable_dimensions, __pyx_k_Variable_dimensions, sizeof(__pyx_k_Variable_dimensions), 0, 0, 1, 0},
+  {&__pyx_kp_s_Variable_dtype, __pyx_k_Variable_dtype, sizeof(__pyx_k_Variable_dtype), 0, 0, 1, 0},
+  {&__pyx_kp_s_Variable_least_significant_digit, __pyx_k_Variable_least_significant_digit, sizeof(__pyx_k_Variable_least_significant_digit), 0, 0, 1, 0},
   {&__pyx_kp_s_Variable_length_strings_are_only, __pyx_k_Variable_length_strings_are_only, sizeof(__pyx_k_Variable_length_strings_are_only), 0, 0, 1, 0},
+  {&__pyx_kp_s_Variable_mask, __pyx_k_Variable_mask, sizeof(__pyx_k_Variable_mask), 0, 0, 1, 0},
+  {&__pyx_kp_s_Variable_name, __pyx_k_Variable_name, sizeof(__pyx_k_Variable_name), 0, 0, 1, 0},
   {&__pyx_n_s_Variable_ncattrs, __pyx_k_Variable_ncattrs, sizeof(__pyx_k_Variable_ncattrs), 0, 0, 1, 1},
+  {&__pyx_kp_s_Variable_ndim, __pyx_k_Variable_ndim, sizeof(__pyx_k_Variable_ndim), 0, 0, 1, 0},
   {&__pyx_kp_s_Variable_object_no_longer_valid, __pyx_k_Variable_object_no_longer_valid, sizeof(__pyx_k_Variable_object_no_longer_valid), 0, 0, 1, 0},
+  {&__pyx_kp_s_Variable_scale, __pyx_k_Variable_scale, sizeof(__pyx_k_Variable_scale), 0, 0, 1, 0},
   {&__pyx_n_s_Variable_set_auto_maskandscale, __pyx_k_Variable_set_auto_maskandscale, sizeof(__pyx_k_Variable_set_auto_maskandscale), 0, 0, 1, 1},
+  {&__pyx_kp_s_Variable_shape, __pyx_k_Variable_shape, sizeof(__pyx_k_Variable_shape), 0, 0, 1, 0},
+  {&__pyx_kp_s_Variable_size, __pyx_k_Variable_size, sizeof(__pyx_k_Variable_size), 0, 0, 1, 0},
   {&__pyx_n_s_Variable_typecode, __pyx_k_Variable_typecode, sizeof(__pyx_k_Variable_typecode), 0, 0, 1, 1},
-  {&__pyx_kp_s__118, __pyx_k__118, sizeof(__pyx_k__118), 0, 0, 1, 0},
   {&__pyx_kp_s__12, __pyx_k__12, sizeof(__pyx_k__12), 0, 0, 1, 0},
+  {&__pyx_kp_s__120, __pyx_k__120, sizeof(__pyx_k__120), 0, 0, 1, 0},
   {&__pyx_kp_s__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 0, 1, 0},
   {&__pyx_kp_s__14, __pyx_k__14, sizeof(__pyx_k__14), 0, 0, 1, 0},
   {&__pyx_kp_s__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 0, 1, 0},
@@ -62225,7 +62500,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_byteswap, __pyx_k_byteswap, sizeof(__pyx_k_byteswap), 0, 0, 1, 1},
   {&__pyx_n_s_calendar, __pyx_k_calendar, sizeof(__pyx_k_calendar), 0, 0, 1, 1},
   {&__pyx_kp_s_cannot_assign_fill_value_for_mas, __pyx_k_cannot_assign_fill_value_for_mas, sizeof(__pyx_k_cannot_assign_fill_value_for_mas), 0, 0, 1, 0},
-  {&__pyx_kp_s_cannot_close_a_L_Group_only_appl, __pyx_k_cannot_close_a_L_Group_only_appl, sizeof(__pyx_k_cannot_close_a_L_Group_only_appl), 0, 0, 1, 0},
+  {&__pyx_kp_s_cannot_close_a_netCDF4_Group_onl, __pyx_k_cannot_close_a_netCDF4_Group_onl, sizeof(__pyx_k_cannot_close_a_netCDF4_Group_onl), 0, 0, 1, 0},
   {&__pyx_kp_s_cannot_find_compound_type_in_thi, __pyx_k_cannot_find_compound_type_in_thi, sizeof(__pyx_k_cannot_find_compound_type_in_thi), 0, 0, 1, 0},
   {&__pyx_kp_s_cannot_set__FillValue_attribute, __pyx_k_cannot_set__FillValue_attribute, sizeof(__pyx_k_cannot_set__FillValue_attribute), 0, 0, 1, 0},
   {&__pyx_kp_s_cannot_specify_chunksizes_for_a, __pyx_k_cannot_specify_chunksizes_for_a, sizeof(__pyx_k_cannot_specify_chunksizes_for_a), 0, 0, 1, 0},
@@ -62270,6 +62545,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
   {&__pyx_n_s_data_model, __pyx_k_data_model, sizeof(__pyx_k_data_model), 0, 0, 1, 1},
   {&__pyx_n_s_data_model_2, __pyx_k_data_model_2, sizeof(__pyx_k_data_model_2), 0, 0, 1, 1},
+  {&__pyx_kp_s_data_model_describes_the_netCDF, __pyx_k_data_model_describes_the_netCDF, sizeof(__pyx_k_data_model_describes_the_netCDF), 0, 0, 1, 0},
   {&__pyx_kp_s_data_to_put_in_string_variable_m, __pyx_k_data_to_put_in_string_variable_m, sizeof(__pyx_k_data_to_put_in_string_variable_m), 0, 0, 1, 0},
   {&__pyx_n_s_datashape, __pyx_k_datashape, sizeof(__pyx_k_datashape), 0, 0, 1, 1},
   {&__pyx_n_s_datatype, __pyx_k_datatype, sizeof(__pyx_k_datatype), 0, 0, 1, 1},
@@ -62303,6 +62579,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_dimtotlen, __pyx_k_dimtotlen, sizeof(__pyx_k_dimtotlen), 0, 0, 1, 1},
   {&__pyx_n_s_disk_format, __pyx_k_disk_format, sizeof(__pyx_k_disk_format), 0, 0, 1, 1},
   {&__pyx_n_s_disk_format_2, __pyx_k_disk_format_2, sizeof(__pyx_k_disk_format_2), 0, 0, 1, 1},
+  {&__pyx_kp_s_disk_format_describes_the_under, __pyx_k_disk_format_describes_the_under, sizeof(__pyx_k_disk_format_describes_the_under), 0, 0, 1, 0},
   {&__pyx_n_s_diskless, __pyx_k_diskless, sizeof(__pyx_k_diskless), 0, 0, 1, 1},
   {&__pyx_kp_s_diskless_mode_requires_netcdf_li, __pyx_k_diskless_mode_requires_netcdf_li, sizeof(__pyx_k_diskless_mode_requires_netcdf_li), 0, 0, 1, 0},
   {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
@@ -62389,6 +62666,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_i8, __pyx_k_i8, sizeof(__pyx_k_i8), 0, 0, 1, 1},
   {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
   {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1},
+  {&__pyx_kp_s_if_True_scale_factor_and_add_off, __pyx_k_if_True_scale_factor_and_add_off, sizeof(__pyx_k_if_True_scale_factor_and_add_off), 0, 0, 1, 0},
   {&__pyx_kp_s_illegal_data_type_for_attribute, __pyx_k_illegal_data_type_for_attribute, sizeof(__pyx_k_illegal_data_type_for_attribute), 0, 0, 1, 0},
   {&__pyx_kp_s_illegal_primitive_data_type_must, __pyx_k_illegal_primitive_data_type_must, sizeof(__pyx_k_illegal_primitive_data_type_must), 0, 0, 1, 0},
   {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
@@ -62411,6 +62689,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
   {&__pyx_n_s_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 0, 1, 1},
   {&__pyx_n_s_itertools, __pyx_k_itertools, sizeof(__pyx_k_itertools), 0, 0, 1, 1},
+  {&__pyx_n_s_iu, __pyx_k_iu, sizeof(__pyx_k_iu), 0, 0, 1, 1},
   {&__pyx_n_s_izip, __pyx_k_izip, sizeof(__pyx_k_izip), 0, 0, 1, 1},
   {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1},
   {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
@@ -62420,6 +62699,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_kind, __pyx_k_kind, sizeof(__pyx_k_kind), 0, 0, 1, 1},
   {&__pyx_n_s_least_significant_digit, __pyx_k_least_significant_digit, sizeof(__pyx_k_least_significant_digit), 0, 0, 1, 1},
   {&__pyx_n_s_len, __pyx_k_len, sizeof(__pyx_k_len), 0, 0, 1, 1},
+  {&__pyx_kp_s_len_of_unsized_object, __pyx_k_len_of_unsized_object, sizeof(__pyx_k_len_of_unsized_object), 0, 0, 1, 0},
   {&__pyx_n_s_little, __pyx_k_little, sizeof(__pyx_k_little), 0, 0, 1, 1},
   {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
   {&__pyx_n_s_lst, __pyx_k_lst, sizeof(__pyx_k_lst), 0, 0, 1, 1},
@@ -62471,6 +62751,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_kp_s_negative_strides_not_allowed_whe, __pyx_k_negative_strides_not_allowed_whe, sizeof(__pyx_k_negative_strides_not_allowed_whe), 0, 0, 1, 0},
   {&__pyx_n_s_nelems, __pyx_k_nelems, sizeof(__pyx_k_nelems), 0, 0, 1, 1},
   {&__pyx_n_s_netCDF4__netCDF4, __pyx_k_netCDF4__netCDF4, sizeof(__pyx_k_netCDF4__netCDF4), 0, 0, 1, 1},
+  {&__pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_k_net_bio_c2sm_hvwaldow_git_netcd, sizeof(__pyx_k_net_bio_c2sm_hvwaldow_git_netcd), 0, 0, 1, 0},
   {&__pyx_n_s_netcdf4libversion, __pyx_k_netcdf4libversion, sizeof(__pyx_k_netcdf4libversion), 0, 0, 1, 1},
   {&__pyx_n_s_netcdftime, __pyx_k_netcdftime, sizeof(__pyx_k_netcdftime), 0, 0, 1, 1},
   {&__pyx_n_s_newSlice, __pyx_k_newSlice, sizeof(__pyx_k_newSlice), 0, 0, 1, 1},
@@ -62482,6 +62763,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_num, __pyx_k_num, sizeof(__pyx_k_num), 0, 0, 1, 1},
   {&__pyx_n_s_num2date, __pyx_k_num2date, sizeof(__pyx_k_num2date), 0, 0, 1, 1},
   {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
+  {&__pyx_kp_s_numpy_data_type_for_primitive_da_2, __pyx_k_numpy_data_type_for_primitive_da_2, sizeof(__pyx_k_numpy_data_type_for_primitive_da_2), 0, 0, 1, 0},
   {&__pyx_n_s_numv, __pyx_k_numv, sizeof(__pyx_k_numv), 0, 0, 1, 1},
   {&__pyx_n_s_nunlimdim, __pyx_k_nunlimdim, sizeof(__pyx_k_nunlimdim), 0, 0, 1, 1},
   {&__pyx_n_s_nv, __pyx_k_nv, sizeof(__pyx_k_nv), 0, 0, 1, 1},
@@ -62494,12 +62776,15 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_orthogoral_indexing, __pyx_k_orthogoral_indexing, sizeof(__pyx_k_orthogoral_indexing), 0, 0, 1, 1},
   {&__pyx_n_s_out_array_shape, __pyx_k_out_array_shape, sizeof(__pyx_k_out_array_shape), 0, 0, 1, 1},
   {&__pyx_n_s_parent, __pyx_k_parent, sizeof(__pyx_k_parent), 0, 0, 1, 1},
+  {&__pyx_kp_s_parent_is_a_reference_to_the_pa, __pyx_k_parent_is_a_reference_to_the_pa, sizeof(__pyx_k_parent_is_a_reference_to_the_pa), 0, 0, 1, 0},
   {&__pyx_n_s_parse_date, __pyx_k_parse_date, sizeof(__pyx_k_parse_date), 0, 0, 1, 1},
   {&__pyx_n_s_part, __pyx_k_part, sizeof(__pyx_k_part), 0, 0, 1, 1},
   {&__pyx_n_s_patchstring, __pyx_k_patchstring, sizeof(__pyx_k_patchstring), 0, 0, 1, 1},
   {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
   {&__pyx_n_s_path_2, __pyx_k_path_2, sizeof(__pyx_k_path_2), 0, 0, 1, 1},
   {&__pyx_kp_s_path_s, __pyx_k_path_s, sizeof(__pyx_k_path_s), 0, 0, 1, 0},
+  {&__pyx_kp_s_path_shows_the_location_of_the, __pyx_k_path_shows_the_location_of_the, sizeof(__pyx_k_path_shows_the_location_of_the), 0, 0, 1, 0},
+  {&__pyx_n_s_pdoc, __pyx_k_pdoc, sizeof(__pyx_k_pdoc), 0, 0, 1, 1},
   {&__pyx_n_s_persist, __pyx_k_persist, sizeof(__pyx_k_persist), 0, 0, 1, 1},
   {&__pyx_kp_s_please_install_ordereddict_https, __pyx_k_please_install_ordereddict_https, sizeof(__pyx_k_please_install_ordereddict_https), 0, 0, 1, 0},
   {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
@@ -62548,6 +62833,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0},
   {&__pyx_kp_s_s_s_s, __pyx_k_s_s_s, sizeof(__pyx_k_s_s_s), 0, 0, 1, 0},
   {&__pyx_kp_s_s_s_s_2, __pyx_k_s_s_s_2, sizeof(__pyx_k_s_s_s_2), 0, 0, 1, 0},
+  {&__pyx_kp_s_same_as_data_model_retained_for, __pyx_k_same_as_data_model_retained_for, sizeof(__pyx_k_same_as_data_model_retained_for), 0, 0, 1, 0},
   {&__pyx_n_s_scale, __pyx_k_scale, sizeof(__pyx_k_scale), 0, 0, 1, 1},
   {&__pyx_n_s_scale_factor, __pyx_k_scale_factor, sizeof(__pyx_k_scale_factor), 0, 0, 1, 1},
   {&__pyx_n_s_sec_units, __pyx_k_sec_units, sizeof(__pyx_k_sec_units), 0, 0, 1, 1},
@@ -62681,19 +62967,19 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {0, 0, 0, 0, 0, 0, 0}
 };
 static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -62703,1551 +62989,1573 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
 
-  /* "netCDF4/_netCDF4.pyx":975
+  /* "netCDF4/_netCDF4.pyx":993
  *         else:
  *             pstring =\
  *             value_arr.tostring().decode(default_encoding,unicode_error).replace('\x00','')             # <<<<<<<<<<<<<<
  *         return pstring
  *     elif att_type == NC_STRING:
  */
-  __pyx_tuple__3 = PyTuple_Pack(2, __pyx_kp_s_, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__3 = PyTuple_Pack(2, __pyx_kp_s_, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__3);
   __Pyx_GIVEREF(__pyx_tuple__3);
 
-  /* "netCDF4/_netCDF4.pyx":981
+  /* "netCDF4/_netCDF4.pyx":999
  *             with nogil:
  *                 ierr = nc_get_att_string(_grpid, varid, attname, &stratt)
  *             pstring = stratt.decode(default_encoding,unicode_error).replace('\x00','')             # <<<<<<<<<<<<<<
  *             return pstring
  *         else:
  */
-  __pyx_tuple__4 = PyTuple_Pack(2, __pyx_kp_s_, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__4 = PyTuple_Pack(2, __pyx_kp_s_, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__4);
   __Pyx_GIVEREF(__pyx_tuple__4);
 
-  /* "netCDF4/_netCDF4.pyx":984
+  /* "netCDF4/_netCDF4.pyx":1002
  *             return pstring
  *         else:
  *             raise KeyError('vlen string array attributes not supported')             # <<<<<<<<<<<<<<
  *     else:
  *     # a regular numeric or compound type.
  */
-  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_vlen_string_array_attributes_not); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_vlen_string_array_attributes_not); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1002; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__5);
   __Pyx_GIVEREF(__pyx_tuple__5);
 
-  /* "netCDF4/_netCDF4.pyx":1078
+  /* "netCDF4/_netCDF4.pyx":1096
  *     # if 64-bit datatype not supported, cast to 32 bit integers.
  *     fmt = _get_format(grp._grpid)
  *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'             # <<<<<<<<<<<<<<
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
  *        is_netcdf3):
  */
-  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_NETCDF3); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_NETCDF3); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__6);
   __Pyx_GIVEREF(__pyx_tuple__6);
 
-  /* "netCDF4/_netCDF4.pyx":1079
+  /* "netCDF4/_netCDF4.pyx":1097
  *     fmt = _get_format(grp._grpid)
  *     is_netcdf3 = fmt.startswith('NETCDF3') or fmt == 'NETCDF4_CLASSIC'
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\             # <<<<<<<<<<<<<<
  *        is_netcdf3):
  *         value_arr = value_arr.astype('i4')
  */
-  __pyx_slice__7 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__7 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__7);
   __Pyx_GIVEREF(__pyx_slice__7);
 
-  /* "netCDF4/_netCDF4.pyx":1081
+  /* "netCDF4/_netCDF4.pyx":1099
  *     if value_arr.dtype.str[1:] == 'i8' and ('i8' not in _supportedtypes or\
  *        is_netcdf3):
  *         value_arr = value_arr.astype('i4')             # <<<<<<<<<<<<<<
  *     # if array contains ascii strings, write a text attribute (stored as bytes).
  *     # if array contains unicode strings, and data model is NETCDF4,
  */
-  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_i4); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_i4); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__8);
   __Pyx_GIVEREF(__pyx_tuple__8);
 
-  /* "netCDF4/_netCDF4.pyx":1107
+  /* "netCDF4/_netCDF4.pyx":1125
  *         if value_arr.dtype.kind == 'V': # compound attribute.
  *             xtype = _find_cmptype(grp,value_arr.dtype)
  *         elif value_arr.dtype.str[1:] not in _supportedtypes:             # <<<<<<<<<<<<<<
  *             raise TypeError, 'illegal data type for attribute, must be one of %s, got %s' % (_supportedtypes, value_arr.dtype.str[1:])
  *         else:
  */
-  __pyx_slice__9 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__9 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__9);
   __Pyx_GIVEREF(__pyx_slice__9);
 
-  /* "netCDF4/_netCDF4.pyx":1108
+  /* "netCDF4/_netCDF4.pyx":1126
  *             xtype = _find_cmptype(grp,value_arr.dtype)
  *         elif value_arr.dtype.str[1:] not in _supportedtypes:
  *             raise TypeError, 'illegal data type for attribute, must be one of %s, got %s' % (_supportedtypes, value_arr.dtype.str[1:])             # <<<<<<<<<<<<<<
  *         else:
  *             xtype = _nptonctype[value_arr.dtype.str[1:]]
  */
-  __pyx_slice__10 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__10 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__10);
   __Pyx_GIVEREF(__pyx_slice__10);
 
-  /* "netCDF4/_netCDF4.pyx":1110
+  /* "netCDF4/_netCDF4.pyx":1128
  *             raise TypeError, 'illegal data type for attribute, must be one of %s, got %s' % (_supportedtypes, value_arr.dtype.str[1:])
  *         else:
  *             xtype = _nptonctype[value_arr.dtype.str[1:]]             # <<<<<<<<<<<<<<
  *         lenarr = PyArray_SIZE(value_arr)
  *         ierr = nc_put_att(grp._grpid, varid, attname, xtype, lenarr, value_arr.data)
  */
-  __pyx_slice__11 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__11 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__11);
   __Pyx_GIVEREF(__pyx_slice__11);
 
-  /* "netCDF4/_netCDF4.pyx":1587
+  /* "netCDF4/_netCDF4.pyx":1656
  *         # last name in path, could be a variable or group
  *         dirname, lastname = posixpath.split(elem)
  *         nestedgroups = dirname.split('/')             # <<<<<<<<<<<<<<
  *         group = self
  *         # iterate over groups in path.
  */
-  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s__14); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s__14); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__15);
   __Pyx_GIVEREF(__pyx_tuple__15);
 
-  /* "netCDF4/_netCDF4.pyx":1632
+  /* "netCDF4/_netCDF4.pyx":1701
  *         [_tostr(self.variables[varname].dtype)+' \033[4m'+_tostr(varname)+'\033[0m'+
  *         (((_tostr(self.variables[varname].dimensions)
  *         .replace("u'",""))\             # <<<<<<<<<<<<<<
  *         .replace("'",""))\
  *         .replace(", ",","))\
  */
-  __pyx_tuple__16 = PyTuple_Pack(2, __pyx_kp_s_u, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__16 = PyTuple_Pack(2, __pyx_kp_s_u, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__16);
   __Pyx_GIVEREF(__pyx_tuple__16);
 
-  /* "netCDF4/_netCDF4.pyx":1633
+  /* "netCDF4/_netCDF4.pyx":1702
  *         (((_tostr(self.variables[varname].dimensions)
  *         .replace("u'",""))\
  *         .replace("'",""))\             # <<<<<<<<<<<<<<
  *         .replace(", ",","))\
  *         .replace(",)",")") for varname in self.variables.keys()])
  */
-  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_kp_s__17, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_kp_s__17, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__18);
   __Pyx_GIVEREF(__pyx_tuple__18);
 
-  /* "netCDF4/_netCDF4.pyx":1634
+  /* "netCDF4/_netCDF4.pyx":1703
  *         .replace("u'",""))\
  *         .replace("'",""))\
  *         .replace(", ",","))\             # <<<<<<<<<<<<<<
  *         .replace(",)",")") for varname in self.variables.keys()])
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])
  */
-  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_kp_s__19, __pyx_kp_s__20); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_kp_s__19, __pyx_kp_s__20); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1703; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__21);
   __Pyx_GIVEREF(__pyx_tuple__21);
 
-  /* "netCDF4/_netCDF4.pyx":1635
+  /* "netCDF4/_netCDF4.pyx":1704
  *         .replace("'",""))\
  *         .replace(", ",","))\
  *         .replace(",)",")") for varname in self.variables.keys()])             # <<<<<<<<<<<<<<
  *         grpnames = tuple([_tostr(grpname) for grpname in self.groups.keys()])
  *         if self.path == '/':
  */
-  __pyx_tuple__24 = PyTuple_Pack(2, __pyx_kp_s__22, __pyx_kp_s__23); if (unlikely(!__pyx_tuple__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__24 = PyTuple_Pack(2, __pyx_kp_s__22, __pyx_kp_s__23); if (unlikely(!__pyx_tuple__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__24);
   __Pyx_GIVEREF(__pyx_tuple__24);
 
-  /* "netCDF4/_netCDF4.pyx":1966
+  /* "netCDF4/_netCDF4.pyx":2038
  *         # if group specified as a path, split out group names
  *         groupname = posixpath.normpath(groupname)
  *         nestedgroups = groupname.split('/')             # <<<<<<<<<<<<<<
  *         group = self
  *         # loop over group names, create parent groups if they do not already
  */
-  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s__14); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s__14); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__25);
   __Pyx_GIVEREF(__pyx_tuple__25);
 
-  /* "netCDF4/_netCDF4.pyx":2049
+  /* "netCDF4/_netCDF4.pyx":2121
  *         if name not in _private_atts:
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
  *             if hasattr(self,name):
  *                 raise AttributeError(
  */
-  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__27);
   __Pyx_GIVEREF(__pyx_tuple__27);
 
-  /* "netCDF4/_netCDF4.pyx":2059
+  /* "netCDF4/_netCDF4.pyx":2131
  *         # if name in _private_atts, it is stored at the python
  *         # level and not in the netCDF file.
  *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':
  */
-  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__28);
   __Pyx_GIVEREF(__pyx_tuple__28);
-  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__29);
   __Pyx_GIVEREF(__pyx_tuple__29);
 
-  /* "netCDF4/_netCDF4.pyx":2267
- * overrides L{Dataset} close method which does not apply to L{Group}
+  /* "netCDF4/_netCDF4.pyx":2331
+ * overrides `netCDF4.Dataset` close method which does not apply to `netCDF4.Group`
  * instances, raises IOError."""
- *         raise IOError('cannot close a L{Group} (only applies to Dataset)')             # <<<<<<<<<<<<<<
+ *         raise IOError('cannot close a `netCDF4.Group` (only applies to Dataset)')             # <<<<<<<<<<<<<<
  * 
  *     def _getname(self):
  */
-  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_cannot_close_a_L_Group_only_appl); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_cannot_close_a_netCDF4_Group_onl); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__30);
   __Pyx_GIVEREF(__pyx_tuple__30);
 
-  /* "netCDF4/_netCDF4.pyx":2284
+  /* "netCDF4/_netCDF4.pyx":2348
  *             return self._getname()
  *         def __set__(self,value):
  *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_name_cannot_be_altered); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_name_cannot_be_altered); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__31);
   __Pyx_GIVEREF(__pyx_tuple__31);
 
-  /* "netCDF4/_netCDF4.pyx":2363
+  /* "netCDF4/_netCDF4.pyx":2432
  *             return self._getname()
  *         def __set__(self,value):
  *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_name_cannot_be_altered); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_name_cannot_be_altered); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__32);
   __Pyx_GIVEREF(__pyx_tuple__32);
 
-  /* "netCDF4/_netCDF4.pyx":2640
+  /* "netCDF4/_netCDF4.pyx":2751
  *             if datatype==str:
  *                 if grp.data_model != 'NETCDF4':
  *                     raise ValueError(             # <<<<<<<<<<<<<<
  *                         'Variable length strings are only supported for the '
  *                         'NETCDF4 format. For other formats, consider using '
  */
-  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_Variable_length_strings_are_only); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_Variable_length_strings_are_only); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__35);
   __Pyx_GIVEREF(__pyx_tuple__35);
 
-  /* "netCDF4/_netCDF4.pyx":2650
+  /* "netCDF4/_netCDF4.pyx":2761
  *             # dtype variable attribute is a numpy datatype object.
  *             self.dtype = datatype.dtype
  *         elif datatype.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
  *             self._isprimitive = True
  *             # find netCDF primitive data type corresponding to
  */
-  __pyx_slice__36 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__36 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__36);
   __Pyx_GIVEREF(__pyx_slice__36);
 
-  /* "netCDF4/_netCDF4.pyx":2654
+  /* "netCDF4/_netCDF4.pyx":2765
  *             # find netCDF primitive data type corresponding to
  *             # specified numpy data type.
  *             xtype = _nptonctype[datatype.str[1:]]             # <<<<<<<<<<<<<<
  *             # dtype variable attribute is a numpy datatype object.
  *             self.dtype = datatype
  */
-  __pyx_slice__37 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__37 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__37);
   __Pyx_GIVEREF(__pyx_slice__37);
 
-  /* "netCDF4/_netCDF4.pyx":2690
+  /* "netCDF4/_netCDF4.pyx":2801
  *             # of vars are created.  This change only lasts as long as file is
  *             # open.
  *             if grp.data_model.startswith('NETCDF4') and chunk_cache is not None:             # <<<<<<<<<<<<<<
  *                 ierr = nc_get_var_chunk_cache(self._grpid, self._varid, &sizep,
  *                         &nelemsp, &preemptionp)
  */
-  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_NETCDF4); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_NETCDF4); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__38);
   __Pyx_GIVEREF(__pyx_tuple__38);
 
-  /* "netCDF4/_netCDF4.pyx":2732
+  /* "netCDF4/_netCDF4.pyx":2843
  *                         icontiguous = NC_CONTIGUOUS
  *                         if chunksizes is not None:
  *                             raise ValueError('cannot specify chunksizes for a contiguous dataset')             # <<<<<<<<<<<<<<
  *                     else:
  *                         icontiguous = NC_CHUNKED
  */
-  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_cannot_specify_chunksizes_for_a); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_cannot_specify_chunksizes_for_a); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__39);
   __Pyx_GIVEREF(__pyx_tuple__39);
 
-  /* "netCDF4/_netCDF4.pyx":2740
+  /* "netCDF4/_netCDF4.pyx":2851
  *                         if len(chunksizes) != len(dimensions):
  *                             if grp.data_model != 'NETCDF4': grp._enddef()
  *                             raise ValueError('chunksizes must be a sequence with the same length as dimensions')             # <<<<<<<<<<<<<<
  *                         chunksizesp = <size_t *>malloc(sizeof(size_t) * ndims)
  *                         for n from 0 <= n < ndims:
  */
-  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_chunksizes_must_be_a_sequence_wi); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_chunksizes_must_be_a_sequence_wi); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__40);
   __Pyx_GIVEREF(__pyx_tuple__40);
 
-  /* "netCDF4/_netCDF4.pyx":2787
+  /* "netCDF4/_netCDF4.pyx":2898
  *                         _set_att(self._grp, self._varid, '_FillValue', fillval)
  *                     else:
  *                         raise AttributeError("cannot set _FillValue attribute for VLEN or compound variable")             # <<<<<<<<<<<<<<
  *             if least_significant_digit is not None:
  *                 self.least_significant_digit = least_significant_digit
  */
-  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_cannot_set__FillValue_attribute); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_cannot_set__FillValue_attribute); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__41);
   __Pyx_GIVEREF(__pyx_tuple__41);
 
-  /* "netCDF4/_netCDF4.pyx":2862
+  /* "netCDF4/_netCDF4.pyx":2973
  *                     msg = 'filling on'
  *                 except AttributeError:
  *                     fillval = default_fillvals[self.dtype.str[1:]]             # <<<<<<<<<<<<<<
  *                     if self.dtype.str[1:] in ['u1','i1']:
  *                         msg = 'filling on, default _FillValue of %s ignored\n' % fillval
  */
-  __pyx_slice__42 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__42 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__42);
   __Pyx_GIVEREF(__pyx_slice__42);
 
-  /* "netCDF4/_netCDF4.pyx":2863
+  /* "netCDF4/_netCDF4.pyx":2974
  *                 except AttributeError:
  *                     fillval = default_fillvals[self.dtype.str[1:]]
  *                     if self.dtype.str[1:] in ['u1','i1']:             # <<<<<<<<<<<<<<
  *                         msg = 'filling on, default _FillValue of %s ignored\n' % fillval
  *                     else:
  */
-  __pyx_slice__43 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__43 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__43);
   __Pyx_GIVEREF(__pyx_slice__43);
 
-  /* "netCDF4/_netCDF4.pyx":2916
+  /* "netCDF4/_netCDF4.pyx":3027
  *             return self._getname()
  *         def __set__(self,value):
  *             raise AttributeError("name cannot be altered")             # <<<<<<<<<<<<<<
  * 
  *     property datatype:
  */
-  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_name_cannot_be_altered); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_name_cannot_be_altered); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__44);
   __Pyx_GIVEREF(__pyx_tuple__44);
 
-  /* "netCDF4/_netCDF4.pyx":2938
+  /* "netCDF4/_netCDF4.pyx":3049
  *             return shape
  *         def __set__(self,value):
  *             raise AttributeError("shape cannot be altered")             # <<<<<<<<<<<<<<
  * 
  *     property size:
  */
-  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_shape_cannot_be_altered); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_shape_cannot_be_altered); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__45);
   __Pyx_GIVEREF(__pyx_tuple__45);
 
-  /* "netCDF4/_netCDF4.pyx":2950
+  /* "netCDF4/_netCDF4.pyx":3061
  *             return self._getdims()
  *         def __set__(self,value):
  *             raise AttributeError("dimensions cannot be altered")             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_dimensions_cannot_be_altered); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_dimensions_cannot_be_altered); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__46);
   __Pyx_GIVEREF(__pyx_tuple__46);
 
-  /* "netCDF4/_netCDF4.pyx":3160
+  /* "netCDF4/_netCDF4.pyx":3271
  *                 value = numpy.array(value, self.dtype)
  *             self.setncattr(name, value)
  *         elif not name.endswith('__'):             # <<<<<<<<<<<<<<
  *             if hasattr(self,name):
  *                 raise AttributeError(
  */
-  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__47);
   __Pyx_GIVEREF(__pyx_tuple__47);
 
-  /* "netCDF4/_netCDF4.pyx":3170
+  /* "netCDF4/_netCDF4.pyx":3281
  *         # if name in _private_atts, it is stored at the python
  *         # level and not in the netCDF file.
  *         if name.startswith('__') and name.endswith('__'):             # <<<<<<<<<<<<<<
  *             # if __dict__ requested, return a dict with netCDF attributes.
  *             if name == '__dict__':
  */
-  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__48);
   __Pyx_GIVEREF(__pyx_tuple__48);
-  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s__26); if (unlikely(!__pyx_tuple__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__49);
   __Pyx_GIVEREF(__pyx_tuple__49);
 
-  /* "netCDF4/_netCDF4.pyx":3218
+  /* "netCDF4/_netCDF4.pyx":3329
  *         # The convention used is that for those cases,
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]             # <<<<<<<<<<<<<<
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  */
-  __pyx_slice__50 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__50 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__50);
   __Pyx_GIVEREF(__pyx_slice__50);
 
-  /* "netCDF4/_netCDF4.pyx":3219
+  /* "netCDF4/_netCDF4.pyx":3330
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  *                 squeeze[i] = 0
  */
-  __pyx_slice__51 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__51 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__51);
   __Pyx_GIVEREF(__pyx_slice__51);
 
-  /* "netCDF4/_netCDF4.pyx":3288
+  /* "netCDF4/_netCDF4.pyx":3399
  *             if (self.endian() == 'big' and is_native_little) or\
  *                (self.endian() == 'little' and is_native_big):
  *                 mval.byteswap(True)             # <<<<<<<<<<<<<<
  *             if mval.shape == (): # mval a scalar.
  *                 hasmval = data==mval
  */
-  __pyx_tuple__52 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__52 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__52);
   __Pyx_GIVEREF(__pyx_tuple__52);
 
-  /* "netCDF4/_netCDF4.pyx":3316
+  /* "netCDF4/_netCDF4.pyx":3427
  *             if (self.endian() == 'big' and is_native_little) or\
  *                (self.endian() == 'little' and is_native_big):
  *                 fval.byteswap(True)             # <<<<<<<<<<<<<<
  *             # is _FillValue a NaN?
  *             try:
  */
-  __pyx_tuple__53 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__53 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__53);
   __Pyx_GIVEREF(__pyx_tuple__53);
 
-  /* "netCDF4/_netCDF4.pyx":3351
+  /* "netCDF4/_netCDF4.pyx":3462
  *             # small to assume one of the values should appear as a missing
  *             # value unless a _FillValue attribute is set explicitly."
  *             if no_fill != 1 and self.dtype.str[1:] not in ['u1','i1']:             # <<<<<<<<<<<<<<
  *                 fillval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)
  *                 # byte swap the _FillValue if endian-ness of the variable
  */
-  __pyx_slice__54 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__54 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__54);
   __Pyx_GIVEREF(__pyx_slice__54);
 
-  /* "netCDF4/_netCDF4.pyx":3352
+  /* "netCDF4/_netCDF4.pyx":3463
  *             # value unless a _FillValue attribute is set explicitly."
  *             if no_fill != 1 and self.dtype.str[1:] not in ['u1','i1']:
  *                 fillval = numpy.array(default_fillvals[self.dtype.str[1:]],self.dtype)             # <<<<<<<<<<<<<<
  *                 # byte swap the _FillValue if endian-ness of the variable
  *                 # is not native.
  */
-  __pyx_slice__55 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__55 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__55);
   __Pyx_GIVEREF(__pyx_slice__55);
 
-  /* "netCDF4/_netCDF4.pyx":3357
+  /* "netCDF4/_netCDF4.pyx":3468
  *                 if (self.endian() == 'big' and is_native_little) or\
  *                    (self.endian() == 'little' and is_native_big):
  *                     fillval.byteswap(True)             # <<<<<<<<<<<<<<
  *                 has_fillval = data == fillval
  *                 # if data is an array scalar, has_fillval will be a boolean.
  */
-  __pyx_tuple__56 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__56 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__56);
   __Pyx_GIVEREF(__pyx_tuple__56);
 
-  /* "netCDF4/_netCDF4.pyx":3383
+  /* "netCDF4/_netCDF4.pyx":3494
  *         cdef ndarray data2
  *         if not self._isvlen:
  *             raise TypeError('_assign_vlen method only for use with VLEN variables')             # <<<<<<<<<<<<<<
  *         ndims = self.ndim
  *         msg="single element VLEN slices must be specified by integers only"
  */
-  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_assign_vlen_method_only_for_use); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_assign_vlen_method_only_for_use); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__57);
   __Pyx_GIVEREF(__pyx_tuple__57);
 
-  /* "netCDF4/_netCDF4.pyx":3395
+  /* "netCDF4/_netCDF4.pyx":3506
  *                     elem = self.shape[0]+elem
  *                 else:
  *                     raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
  *         elif isinstance(elem, tuple):
  *             if len(elem) != ndims:
  */
-  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Illegal_index); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Illegal_index); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__58);
   __Pyx_GIVEREF(__pyx_tuple__58);
 
-  /* "netCDF4/_netCDF4.pyx":3398
+  /* "netCDF4/_netCDF4.pyx":3509
  *         elif isinstance(elem, tuple):
  *             if len(elem) != ndims:
  *                 raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
  *             elemnew = []
  *             for n,e in enumerate(elem):
  */
-  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_Illegal_index); if (unlikely(!__pyx_tuple__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_Illegal_index); if (unlikely(!__pyx_tuple__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__59);
   __Pyx_GIVEREF(__pyx_tuple__59);
 
-  /* "netCDF4/_netCDF4.pyx":3406
+  /* "netCDF4/_netCDF4.pyx":3517
  *                     enew = self.shape[n]+e
  *                     if enew < 0:
  *                         raise IndexError("Illegal index")             # <<<<<<<<<<<<<<
  *                     else:
  *                         elemnew.append(self.shape[n]+e)
  */
-  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_Illegal_index); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_Illegal_index); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__60);
   __Pyx_GIVEREF(__pyx_tuple__60);
 
-  /* "netCDF4/_netCDF4.pyx":3554
+  /* "netCDF4/_netCDF4.pyx":3665
  *                         fillval = self._FillValue
  *                     else:
  *                         fillval = default_fillvals[self.dtype.str[1:]]             # <<<<<<<<<<<<<<
  *                     data = data.filled(fill_value=fillval)
  * 
  */
-  __pyx_slice__61 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__61 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__61);
   __Pyx_GIVEREF(__pyx_slice__61);
 
-  /* "netCDF4/_netCDF4.pyx":3581
- * Scientific.IO.NetCDF, can also be done by assigning to a slice ([:])."""
+  /* "netCDF4/_netCDF4.pyx":3683
+ *     def __len__(self):
+ *         if not self.shape:
+ *             raise TypeError('len() of unsized object')             # <<<<<<<<<<<<<<
+ *         else:
+ *             return self.shape[0]
+ */
+  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_len_of_unsized_object); if (unlikely(!__pyx_tuple__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3683; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__62);
+  __Pyx_GIVEREF(__pyx_tuple__62);
+
+  /* "netCDF4/_netCDF4.pyx":3695
+ * Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...])."""
  *         if len(self.dimensions):
  *             raise IndexError('to assign values to a non-scalar variable, use a slice')             # <<<<<<<<<<<<<<
  *         self[:]=val
  * 
  */
-  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_to_assign_values_to_a_non_scalar); if (unlikely(!__pyx_tuple__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__62);
-  __Pyx_GIVEREF(__pyx_tuple__62);
+  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_to_assign_values_to_a_non_scalar); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__63);
+  __Pyx_GIVEREF(__pyx_tuple__63);
 
-  /* "netCDF4/_netCDF4.pyx":3582
+  /* "netCDF4/_netCDF4.pyx":3696
  *         if len(self.dimensions):
  *             raise IndexError('to assign values to a non-scalar variable, use a slice')
  *         self[:]=val             # <<<<<<<<<<<<<<
  * 
  *     def getValue(self):
  */
-  __pyx_slice__63 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__63);
-  __Pyx_GIVEREF(__pyx_slice__63);
+  __pyx_slice__64 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__64);
+  __Pyx_GIVEREF(__pyx_slice__64);
 
-  /* "netCDF4/_netCDF4.pyx":3591
- * Scientific.IO.NetCDF, can also be done by slicing ([:])."""
+  /* "netCDF4/_netCDF4.pyx":3705
+ * Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...])."""
  *         if len(self.dimensions):
  *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')             # <<<<<<<<<<<<<<
  *         return self[slice(None)]
  * 
  */
-  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_to_retrieve_values_from_a_non_sc); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__64);
-  __Pyx_GIVEREF(__pyx_tuple__64);
+  __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_to_retrieve_values_from_a_non_sc); if (unlikely(!__pyx_tuple__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__65);
+  __Pyx_GIVEREF(__pyx_tuple__65);
 
-  /* "netCDF4/_netCDF4.pyx":3592
+  /* "netCDF4/_netCDF4.pyx":3706
  *         if len(self.dimensions):
  *             raise IndexError('to retrieve values from a non-scalar variable, use slicing')
  *         return self[slice(None)]             # <<<<<<<<<<<<<<
  * 
  *     def set_auto_maskandscale(self,maskandscale):
  */
-  __pyx_slice__65 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__65);
-  __Pyx_GIVEREF(__pyx_slice__65);
+  __pyx_slice__66 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__66);
+  __Pyx_GIVEREF(__pyx_slice__66);
 
-  /* "netCDF4/_netCDF4.pyx":3730
+  /* "netCDF4/_netCDF4.pyx":3842
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data             # <<<<<<<<<<<<<<
  *             else:
  *                 startp[n] = start[n]
  */
-  __pyx_slice__66 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__66);
-  __Pyx_GIVEREF(__pyx_slice__66);
+  __pyx_slice__67 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__67);
+  __Pyx_GIVEREF(__pyx_slice__67);
 
-  /* "netCDF4/_netCDF4.pyx":3734
+  /* "netCDF4/_netCDF4.pyx":3846
  *                 startp[n] = start[n]
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))             # <<<<<<<<<<<<<<
  *             totelem = totelem*countp[n]
  *         # check to see that size of data array is what is expected
  */
-  __pyx_slice__67 = PySlice_New(Py_None, Py_None, __pyx_int_1); if (unlikely(!__pyx_slice__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__67);
-  __Pyx_GIVEREF(__pyx_slice__67);
+  __pyx_slice__68 = PySlice_New(Py_None, Py_None, __pyx_int_1); if (unlikely(!__pyx_slice__68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__68);
+  __Pyx_GIVEREF(__pyx_slice__68);
 
-  /* "netCDF4/_netCDF4.pyx":3740
+  /* "netCDF4/_netCDF4.pyx":3852
  *         dataelem = PyArray_SIZE(data)
  *         if totelem != dataelem:
  *             raise IndexError('size of data array does not conform to slice')             # <<<<<<<<<<<<<<
  *         if negstride:
  *             # reverse data along axes with negative strides.
  */
-  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s_size_of_data_array_does_not_conf); if (unlikely(!__pyx_tuple__68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__68);
-  __Pyx_GIVEREF(__pyx_tuple__68);
+  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_size_of_data_array_does_not_conf); if (unlikely(!__pyx_tuple__69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__69);
+  __Pyx_GIVEREF(__pyx_tuple__69);
 
-  /* "netCDF4/_netCDF4.pyx":3754
+  /* "netCDF4/_netCDF4.pyx":3866
  *             if self.endian() == 'native':
  *                 if is_native_little and data.dtype.byteorder == '>':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *                 if is_native_big and data.dtype.byteorder == '<':
  *                     data.byteswap(True)
  */
-  __pyx_tuple__69 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__69);
-  __Pyx_GIVEREF(__pyx_tuple__69);
+  __pyx_tuple__70 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__70);
+  __Pyx_GIVEREF(__pyx_tuple__70);
 
-  /* "netCDF4/_netCDF4.pyx":3756
+  /* "netCDF4/_netCDF4.pyx":3868
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '<':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *             if self.endian() == 'big':
  *                 if is_native_big and data.dtype.byteorder not in ['=','|']:
  */
-  __pyx_tuple__70 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__70);
-  __Pyx_GIVEREF(__pyx_tuple__70);
+  __pyx_tuple__71 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__71);
+  __Pyx_GIVEREF(__pyx_tuple__71);
 
-  /* "netCDF4/_netCDF4.pyx":3759
+  /* "netCDF4/_netCDF4.pyx":3871
  *             if self.endian() == 'big':
  *                 if is_native_big and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *                 if is_native_little and data.dtype.byteorder == '=':
  *                     data.byteswap(True)
  */
-  __pyx_tuple__71 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__71);
-  __Pyx_GIVEREF(__pyx_tuple__71);
+  __pyx_tuple__72 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__72);
+  __Pyx_GIVEREF(__pyx_tuple__72);
 
-  /* "netCDF4/_netCDF4.pyx":3761
+  /* "netCDF4/_netCDF4.pyx":3873
  *                     data.byteswap(True)
  *                 if is_native_little and data.dtype.byteorder == '=':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *             if self.endian() == 'little':
  *                 if is_native_little and data.dtype.byteorder not in ['=','|']:
  */
-  __pyx_tuple__72 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__72);
-  __Pyx_GIVEREF(__pyx_tuple__72);
+  __pyx_tuple__73 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__73);
+  __Pyx_GIVEREF(__pyx_tuple__73);
 
-  /* "netCDF4/_netCDF4.pyx":3764
+  /* "netCDF4/_netCDF4.pyx":3876
  *             if self.endian() == 'little':
  *                 if is_native_little and data.dtype.byteorder not in ['=','|']:
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *                 if is_native_big and data.dtype.byteorder == '=':
  *                     data.byteswap(True)
  */
-  __pyx_tuple__73 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__73);
-  __Pyx_GIVEREF(__pyx_tuple__73);
+  __pyx_tuple__74 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__74);
+  __Pyx_GIVEREF(__pyx_tuple__74);
 
-  /* "netCDF4/_netCDF4.pyx":3766
+  /* "netCDF4/_netCDF4.pyx":3878
  *                     data.byteswap(True)
  *                 if is_native_big and data.dtype.byteorder == '=':
  *                     data.byteswap(True)             # <<<<<<<<<<<<<<
  *             # strides all 1 or scalar variable, use put_vara (faster)
  *             if sum(stride) == ndims or ndims == 0:
  */
-  __pyx_tuple__74 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__74);
-  __Pyx_GIVEREF(__pyx_tuple__74);
+  __pyx_tuple__75 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__75);
+  __Pyx_GIVEREF(__pyx_tuple__75);
 
-  /* "netCDF4/_netCDF4.pyx":3778
+  /* "netCDF4/_netCDF4.pyx":3890
  *         elif self._isvlen:
  *             if data.dtype.char !='O':
  *                 raise TypeError('data to put in string variable must be an object array containing Python strings')             # <<<<<<<<<<<<<<
  *             # flatten data array.
  *             data = data.flatten()
  */
-  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_s_data_to_put_in_string_variable_m); if (unlikely(!__pyx_tuple__75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__75);
-  __Pyx_GIVEREF(__pyx_tuple__75);
+  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_kp_s_data_to_put_in_string_variable_m); if (unlikely(!__pyx_tuple__76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__76);
+  __Pyx_GIVEREF(__pyx_tuple__76);
 
-  /* "netCDF4/_netCDF4.pyx":3797
+  /* "netCDF4/_netCDF4.pyx":3909
  *                                        startp, countp, strdata)
  *                 else:
  *                     raise IndexError('strides must all be 1 for string variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_put_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, strdata)
  */
-  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_string); if (unlikely(!__pyx_tuple__76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__76);
-  __Pyx_GIVEREF(__pyx_tuple__76);
+  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_string); if (unlikely(!__pyx_tuple__77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__77);
+  __Pyx_GIVEREF(__pyx_tuple__77);
 
-  /* "netCDF4/_netCDF4.pyx":3813
+  /* "netCDF4/_netCDF4.pyx":3925
  *                     elptr = (<void**>databuff)[0]
  *                     dataarr = <ndarray>elptr
  *                     if self.dtype != dataarr.dtype.str[1:]:             # <<<<<<<<<<<<<<
  *                         #dataarr = dataarr.astype(self.dtype) # cast data, if necessary.
  *                         # casting doesn't work ?? just raise TypeError
  */
-  __pyx_slice__77 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__77);
-  __Pyx_GIVEREF(__pyx_slice__77);
+  __pyx_slice__78 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__78);
+  __Pyx_GIVEREF(__pyx_slice__78);
 
-  /* "netCDF4/_netCDF4.pyx":3825
+  /* "netCDF4/_netCDF4.pyx":3937
  *                                        startp, countp, vldata)
  *                 else:
  *                     raise IndexError('strides must all be 1 for vlen variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_put_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, vldata)
  */
-  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_vlen_v); if (unlikely(!__pyx_tuple__78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__78);
-  __Pyx_GIVEREF(__pyx_tuple__78);
+  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_vlen_v); if (unlikely(!__pyx_tuple__79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__79);
+  __Pyx_GIVEREF(__pyx_tuple__79);
 
-  /* "netCDF4/_netCDF4.pyx":3850
+  /* "netCDF4/_netCDF4.pyx":3962
  *         for lendim in count:
  *             if lendim == -1:
  *                 shapeout = shapeout + (1,)             # <<<<<<<<<<<<<<
  *                 squeeze_out = True
  *             else:
  */
-  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__79);
-  __Pyx_GIVEREF(__pyx_tuple__79);
+  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__80);
+  __Pyx_GIVEREF(__pyx_tuple__80);
 
-  /* "netCDF4/_netCDF4.pyx":3868
+  /* "netCDF4/_netCDF4.pyx":3980
  *                 startp[n] = start[n]+stride[n]*(count[n]-1)
  *                 stride[n] = -stride[n]
  *                 sl.append(slice(None, None, -1)) # this slice will reverse the data             # <<<<<<<<<<<<<<
  *             else:
  *                 startp[n] = start[n]
  */
-  __pyx_slice__80 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice__80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__80);
-  __Pyx_GIVEREF(__pyx_slice__80);
+  __pyx_slice__81 = PySlice_New(Py_None, Py_None, __pyx_int_neg_1); if (unlikely(!__pyx_slice__81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__81);
+  __Pyx_GIVEREF(__pyx_slice__81);
 
-  /* "netCDF4/_netCDF4.pyx":3872
+  /* "netCDF4/_netCDF4.pyx":3984
  *                 startp[n] = start[n]
  *                 stridep[n] = stride[n]
  *                 sl.append(slice(None,None, 1))             # <<<<<<<<<<<<<<
  *         if self._isprimitive or self._iscompound:
  *             data = numpy.empty(shapeout, self.dtype)
  */
-  __pyx_slice__81 = PySlice_New(Py_None, Py_None, __pyx_int_1); if (unlikely(!__pyx_slice__81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__81);
-  __Pyx_GIVEREF(__pyx_slice__81);
+  __pyx_slice__82 = PySlice_New(Py_None, Py_None, __pyx_int_1); if (unlikely(!__pyx_slice__82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__82);
+  __Pyx_GIVEREF(__pyx_slice__82);
 
-  /* "netCDF4/_netCDF4.pyx":3905
+  /* "netCDF4/_netCDF4.pyx":4017
  *                 else:
  *                     # FIXME: is this a bug in netCDF4?
  *                     raise IndexError('strides must all be 1 for string variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_get_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, strdata)
  */
-  __pyx_tuple__82 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_string); if (unlikely(!__pyx_tuple__82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__82);
-  __Pyx_GIVEREF(__pyx_tuple__82);
+  __pyx_tuple__83 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_string); if (unlikely(!__pyx_tuple__83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__83);
+  __Pyx_GIVEREF(__pyx_tuple__83);
 
-  /* "netCDF4/_netCDF4.pyx":3929
+  /* "netCDF4/_netCDF4.pyx":4041
  *                                            startp, countp, vldata)
  *                 else:
  *                     raise IndexError('strides must all be 1 for vlen variables')             # <<<<<<<<<<<<<<
  *                     #ierr = nc_get_vars(self._grpid, self._varid,
  *                     #                   startp, countp, stridep, vldata)
  */
-  __pyx_tuple__83 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_vlen_v); if (unlikely(!__pyx_tuple__83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__83);
-  __Pyx_GIVEREF(__pyx_tuple__83);
+  __pyx_tuple__84 = PyTuple_Pack(1, __pyx_kp_s_strides_must_all_be_1_for_vlen_v); if (unlikely(!__pyx_tuple__84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__84);
+  __Pyx_GIVEREF(__pyx_tuple__84);
 
-  /* "netCDF4/_netCDF4.pyx":4048
+  /* "netCDF4/_netCDF4.pyx":4160
  *         if format.kind != 'V': # scalar primitive type
  *             try:
  *                 xtype_tmp = _nptonctype[format.str[1:]]             # <<<<<<<<<<<<<<
  *             except KeyError:
  *                 raise ValueError('Unsupported compound type element')
  */
-  __pyx_slice__84 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__84);
-  __Pyx_GIVEREF(__pyx_slice__84);
+  __pyx_slice__85 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__85);
+  __Pyx_GIVEREF(__pyx_slice__85);
 
-  /* "netCDF4/_netCDF4.pyx":4050
+  /* "netCDF4/_netCDF4.pyx":4162
  *                 xtype_tmp = _nptonctype[format.str[1:]]
  *             except KeyError:
  *                 raise ValueError('Unsupported compound type element')             # <<<<<<<<<<<<<<
  *             ierr = nc_insert_compound(grp._grpid, xtype, namstring,
  *                                       offset, xtype_tmp)
  */
-  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_kp_s_Unsupported_compound_type_elemen); if (unlikely(!__pyx_tuple__85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__85);
-  __Pyx_GIVEREF(__pyx_tuple__85);
+  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_kp_s_Unsupported_compound_type_elemen); if (unlikely(!__pyx_tuple__86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__86);
+  __Pyx_GIVEREF(__pyx_tuple__86);
 
-  /* "netCDF4/_netCDF4.pyx":4072
+  /* "netCDF4/_netCDF4.pyx":4184
  *                 if format.subdtype[0].str[1] != 'V': # primitive type.
  *                     try:
  *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]             # <<<<<<<<<<<<<<
  *                     except KeyError:
  *                         raise ValueError('Unsupported compound type element')
  */
-  __pyx_slice__86 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__86);
-  __Pyx_GIVEREF(__pyx_slice__86);
+  __pyx_slice__87 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__87)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__87);
+  __Pyx_GIVEREF(__pyx_slice__87);
 
-  /* "netCDF4/_netCDF4.pyx":4074
+  /* "netCDF4/_netCDF4.pyx":4186
  *                         xtype_tmp = _nptonctype[format.subdtype[0].str[1:]]
  *                     except KeyError:
  *                         raise ValueError('Unsupported compound type element')             # <<<<<<<<<<<<<<
  *                     ierr = nc_insert_array_compound(grp._grpid,xtype,namstring,
  *                            offset,xtype_tmp,ndims,dim_sizes)
  */
-  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_kp_s_Unsupported_compound_type_elemen); if (unlikely(!__pyx_tuple__87)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__87);
-  __Pyx_GIVEREF(__pyx_tuple__87);
+  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_kp_s_Unsupported_compound_type_elemen); if (unlikely(!__pyx_tuple__88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__88);
+  __Pyx_GIVEREF(__pyx_tuple__88);
 
-  /* "netCDF4/_netCDF4.pyx":4111
+  /* "netCDF4/_netCDF4.pyx":4223
  *             parent_grp = grp.parent
  *         except AttributeError:
  *             raise ValueError("cannot find compound type in this group or parent groups")             # <<<<<<<<<<<<<<
  *         if parent_grp is None:
  *             raise ValueError("cannot find compound type in this group or parent groups")
  */
-  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_kp_s_cannot_find_compound_type_in_thi); if (unlikely(!__pyx_tuple__88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__88);
-  __Pyx_GIVEREF(__pyx_tuple__88);
+  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_kp_s_cannot_find_compound_type_in_thi); if (unlikely(!__pyx_tuple__89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__89);
+  __Pyx_GIVEREF(__pyx_tuple__89);
 
-  /* "netCDF4/_netCDF4.pyx":4113
+  /* "netCDF4/_netCDF4.pyx":4225
  *             raise ValueError("cannot find compound type in this group or parent groups")
  *         if parent_grp is None:
  *             raise ValueError("cannot find compound type in this group or parent groups")             # <<<<<<<<<<<<<<
  *         else:
  *             xtype = _find_cmptype(parent_grp,dtype)
  */
-  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_kp_s_cannot_find_compound_type_in_thi); if (unlikely(!__pyx_tuple__89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__89);
-  __Pyx_GIVEREF(__pyx_tuple__89);
+  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_s_cannot_find_compound_type_in_thi); if (unlikely(!__pyx_tuple__90)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__90);
+  __Pyx_GIVEREF(__pyx_tuple__90);
 
-  /* "netCDF4/_netCDF4.pyx":4174
+  /* "netCDF4/_netCDF4.pyx":4286
  *                 field_type = _read_compound(group, field_typeid, endian=endian)
  *             else:
  *                 raise KeyError('compound field of an unsupported data type')             # <<<<<<<<<<<<<<
  *         if field_shape != ():
  *             formats.append((field_type,field_shape))
  */
-  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_s_compound_field_of_an_unsupported); if (unlikely(!__pyx_tuple__90)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__90);
-  __Pyx_GIVEREF(__pyx_tuple__90);
+  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_kp_s_compound_field_of_an_unsupported); if (unlikely(!__pyx_tuple__91)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__91);
+  __Pyx_GIVEREF(__pyx_tuple__91);
 
-  /* "netCDF4/_netCDF4.pyx":4265
+  /* "netCDF4/_netCDF4.pyx":4376
  *         namstring = bytestr
  *         dt = numpy.dtype(dt) # convert to numpy datatype.
  *         if dt.str[1:] in _supportedtypes:             # <<<<<<<<<<<<<<
  *             # find netCDF primitive data type corresponding to
  *             # specified numpy data type.
  */
-  __pyx_slice__91 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__91)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__91);
-  __Pyx_GIVEREF(__pyx_slice__91);
+  __pyx_slice__92 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__92)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__92);
+  __Pyx_GIVEREF(__pyx_slice__92);
 
-  /* "netCDF4/_netCDF4.pyx":4268
+  /* "netCDF4/_netCDF4.pyx":4379
  *             # find netCDF primitive data type corresponding to
  *             # specified numpy data type.
  *             xtype_tmp = _nptonctype[dt.str[1:]]             # <<<<<<<<<<<<<<
  *             ierr = nc_def_vlen(grp._grpid, namstring, xtype_tmp, &xtype);
  *             if ierr != NC_NOERR:
  */
-  __pyx_slice__92 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__92)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__92);
-  __Pyx_GIVEREF(__pyx_slice__92);
+  __pyx_slice__93 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__93)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__93);
+  __Pyx_GIVEREF(__pyx_slice__93);
 
-  /* "netCDF4/_netCDF4.pyx":4273
+  /* "netCDF4/_netCDF4.pyx":4384
  *                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
  *         else:
  *             raise KeyError("unsupported datatype specified for VLEN")             # <<<<<<<<<<<<<<
  *     return xtype, dt
  * 
  */
-  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_kp_s_unsupported_datatype_specified_f); if (unlikely(!__pyx_tuple__93)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__93);
-  __Pyx_GIVEREF(__pyx_tuple__93);
+  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_s_unsupported_datatype_specified_f); if (unlikely(!__pyx_tuple__94)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__94);
+  __Pyx_GIVEREF(__pyx_tuple__94);
 
-  /* "netCDF4/_netCDF4.pyx":4300
+  /* "netCDF4/_netCDF4.pyx":4411
  *             dt = numpy.dtype(datatype) # see if it is a primitive type
  *         except KeyError:
  *             raise KeyError("unsupported component type for VLEN")             # <<<<<<<<<<<<<<
  *     return VLType(group, dt, name, typeid=xtype)
  * 
  */
-  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_s_unsupported_component_type_for_V); if (unlikely(!__pyx_tuple__94)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__94);
-  __Pyx_GIVEREF(__pyx_tuple__94);
+  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_kp_s_unsupported_component_type_for_V); if (unlikely(!__pyx_tuple__95)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__95);
+  __Pyx_GIVEREF(__pyx_tuple__95);
 
-  /* "netCDF4/_netCDF4.pyx":4331
+  /* "netCDF4/_netCDF4.pyx":4442
  *     units = timestr_split[0].lower()
  *     if timestr_split[1].lower() != 'since':
  *         raise ValueError("no 'since' in unit_string")             # <<<<<<<<<<<<<<
  *     # parse the date string.
  *     n = timestr.find('since')+6
  */
-  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_kp_s_no_since_in_unit_string); if (unlikely(!__pyx_tuple__95)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__95);
-  __Pyx_GIVEREF(__pyx_tuple__95);
+  __pyx_tuple__96 = PyTuple_Pack(1, __pyx_kp_s_no_since_in_unit_string); if (unlikely(!__pyx_tuple__96)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__96);
+  __Pyx_GIVEREF(__pyx_tuple__96);
 
-  /* "netCDF4/_netCDF4.pyx":4333
+  /* "netCDF4/_netCDF4.pyx":4444
  *         raise ValueError("no 'since' in unit_string")
  *     # parse the date string.
  *     n = timestr.find('since')+6             # <<<<<<<<<<<<<<
  *     isostring = timestr[n:]
  *     year, month, day, hour, minute, second, utc_offset =\
  */
-  __pyx_tuple__96 = PyTuple_Pack(1, __pyx_n_s_since); if (unlikely(!__pyx_tuple__96)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__96);
-  __Pyx_GIVEREF(__pyx_tuple__96);
+  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_n_s_since); if (unlikely(!__pyx_tuple__97)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__97);
+  __Pyx_GIVEREF(__pyx_tuple__97);
 
-  /* "netCDF4/_netCDF4.pyx":4360
- * (default) or 'U1' (if dtype='U')"""
+  /* "netCDF4/_netCDF4.pyx":4471
+ * (default) or `'U1'` (if dtype=`'U'`)"""
  *     if dtype not in ["S","U"]:
  *         raise ValueError("dtype must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
  *     arr = numpy.zeros(NUMCHARS,dtype+'1')
  *     arr[0:len(string)] = tuple(string)
  */
-  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_kp_s_dtype_must_string_or_unicode_S_o); if (unlikely(!__pyx_tuple__97)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4360; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__97);
-  __Pyx_GIVEREF(__pyx_tuple__97);
+  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_kp_s_dtype_must_string_or_unicode_S_o); if (unlikely(!__pyx_tuple__98)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__98);
+  __Pyx_GIVEREF(__pyx_tuple__98);
 
-  /* "netCDF4/_netCDF4.pyx":4379
+  /* "netCDF4/_netCDF4.pyx":4490
  *     dtype = a.dtype.kind
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
  *     b = numpy.array(tuple(a.tostring().decode(default_encoding)),dtype+'1')
  *     b.shape = a.shape + (a.itemsize,)
  */
-  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_kp_s_type_must_string_or_unicode_S_or); if (unlikely(!__pyx_tuple__98)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__98);
-  __Pyx_GIVEREF(__pyx_tuple__98);
+  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_kp_s_type_must_string_or_unicode_S_or); if (unlikely(!__pyx_tuple__99)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__99);
+  __Pyx_GIVEREF(__pyx_tuple__99);
 
-  /* "netCDF4/_netCDF4.pyx":4398
+  /* "netCDF4/_netCDF4.pyx":4509
  *     dtype = b.dtype.kind
  *     if dtype not in ["S","U"]:
  *         raise ValueError("type must string or unicode ('S' or 'U')")             # <<<<<<<<<<<<<<
  *     bs = b.tostring().decode(default_encoding)
  *     slen = int(b.shape[-1])
  */
-  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_kp_s_type_must_string_or_unicode_S_or); if (unlikely(!__pyx_tuple__99)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__99);
-  __Pyx_GIVEREF(__pyx_tuple__99);
+  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_kp_s_type_must_string_or_unicode_S_or); if (unlikely(!__pyx_tuple__100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__100);
+  __Pyx_GIVEREF(__pyx_tuple__100);
 
-  /* "netCDF4/_netCDF4.pyx":4402
+  /* "netCDF4/_netCDF4.pyx":4513
  *     slen = int(b.shape[-1])
  *     a = numpy.array([bs[n1:n1+slen] for n1 in range(0,len(bs),slen)],dtype+repr(slen))
  *     a.shape = b.shape[:-1]             # <<<<<<<<<<<<<<
  *     return a
  * 
  */
-  __pyx_slice__100 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__100);
-  __Pyx_GIVEREF(__pyx_slice__100);
+  __pyx_slice__101 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__101)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__101);
+  __Pyx_GIVEREF(__pyx_slice__101);
 
-  /* "netCDF4/_netCDF4.pyx":4475
+  /* "netCDF4/_netCDF4.pyx":4586
  *                     times.append(totaltime/1.e6/3600./24.)
  *                 else:
  *                     raise ValueError('unsupported time units')             # <<<<<<<<<<<<<<
  *         if isscalar:
  *             return times[0]
  */
-  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_kp_s_unsupported_time_units); if (unlikely(!__pyx_tuple__101)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__101);
-  __Pyx_GIVEREF(__pyx_tuple__101);
+  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_kp_s_unsupported_time_units); if (unlikely(!__pyx_tuple__102)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__102);
+  __Pyx_GIVEREF(__pyx_tuple__102);
 
-  /* "netCDF4/_netCDF4.pyx":4561
+  /* "netCDF4/_netCDF4.pyx":4672
  *                     tsecs = time*86400.
  *                 else:
  *                     raise ValueError('unsupported time units')             # <<<<<<<<<<<<<<
  *                 # compute time delta.
  *                 days = tsecs // 86400.
  */
-  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_kp_s_unsupported_time_units); if (unlikely(!__pyx_tuple__102)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__102);
-  __Pyx_GIVEREF(__pyx_tuple__102);
+  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_kp_s_unsupported_time_units); if (unlikely(!__pyx_tuple__103)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__103);
+  __Pyx_GIVEREF(__pyx_tuple__103);
 
-  /* "netCDF4/_netCDF4.pyx":4691
+  /* "netCDF4/_netCDF4.pyx":4798
  *         # can be used like a CDF instance.
  *         if isinstance(files, str):
  *             if files.startswith('http'):             # <<<<<<<<<<<<<<
  *                 msg='cannot using file globbing for remote (OPeNDAP) datasets'
  *                 raise ValueError(msg)
  */
-  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_n_s_http); if (unlikely(!__pyx_tuple__103)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__103);
-  __Pyx_GIVEREF(__pyx_tuple__103);
+  __pyx_tuple__104 = PyTuple_Pack(1, __pyx_n_s_http); if (unlikely(!__pyx_tuple__104)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__104);
+  __Pyx_GIVEREF(__pyx_tuple__104);
 
-  /* "netCDF4/_netCDF4.pyx":4753
+  /* "netCDF4/_netCDF4.pyx":4860
  *         # Make sure each file defines the same aggregation variables as the master
  *         # and that the variables are defined in the same way (name, shape and type)
  *         for f in files[1:]:             # <<<<<<<<<<<<<<
  *             part = Dataset(f)
  *             varInfo = part.variables
  */
-  __pyx_slice__104 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__104)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__104);
-  __Pyx_GIVEREF(__pyx_slice__104);
+  __pyx_slice__105 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__105);
+  __Pyx_GIVEREF(__pyx_slice__105);
 
-  /* "netCDF4/_netCDF4.pyx":4764
+  /* "netCDF4/_netCDF4.pyx":4871
  *                     #if not vInst.dimensions[0] != aggDimName:
  * 
  *                     masterDims, masterShape, masterType = masterRecVar[v][:3]             # <<<<<<<<<<<<<<
  *                     extDims = varInfo[v].dimensions
  *                     extShape = varInfo[v].shape
  */
-  __pyx_slice__105 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__105);
-  __Pyx_GIVEREF(__pyx_slice__105);
+  __pyx_slice__106 = PySlice_New(Py_None, __pyx_int_3, Py_None); if (unlikely(!__pyx_slice__106)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__106);
+  __Pyx_GIVEREF(__pyx_slice__106);
 
-  /* "netCDF4/_netCDF4.pyx":4781
+  /* "netCDF4/_netCDF4.pyx":4888
  *                                        "master %s (%s) and extension %s (%s)" %
  *                                        (v, master, len(masterShape), f, len(extShape)))
  *                     if masterShape[1:] != extShape[1:]:             # <<<<<<<<<<<<<<
  *                         raise IOError("variable %s : shape mismatch between "
  *                                        "master %s (%s) and extension %s (%s)" %
  */
-  __pyx_slice__106 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__106)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__106);
-  __Pyx_GIVEREF(__pyx_slice__106);
-  __pyx_slice__107 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__107)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__107 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__107)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__107);
   __Pyx_GIVEREF(__pyx_slice__107);
+  __pyx_slice__108 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__108)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__108);
+  __Pyx_GIVEREF(__pyx_slice__108);
 
-  /* "netCDF4/_netCDF4.pyx":4824
+  /* "netCDF4/_netCDF4.pyx":4931
  *         for dset in self._cdf:
  *             if dset.file_format == 'NETCDF4' or dset.data_model == 'NETCDF4':
  *                 raise ValueError('MFNetCDF4 only works with NETCDF3_CLASSIC, NETCDF3_64BIT and NETCDF4_CLASSIC formatted files, not NETCDF4')             # <<<<<<<<<<<<<<
  *             self._file_format.append(dset.file_format)
  *             self._data_model.append(dset.data_model)
  */
-  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_kp_s_MFNetCDF4_only_works_with_NETCDF); if (unlikely(!__pyx_tuple__108)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__108);
-  __Pyx_GIVEREF(__pyx_tuple__108);
+  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_kp_s_MFNetCDF4_only_works_with_NETCDF); if (unlikely(!__pyx_tuple__109)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__109);
+  __Pyx_GIVEREF(__pyx_tuple__109);
+
+  /* "netCDF4/_netCDF4.pyx":5047
+ *     def __len__(self):
+ *         if not self._shape:
+ *             raise TypeError('len() of unsized object')             # <<<<<<<<<<<<<<
+ *         else:
+ *             return self._shape()[0]
+ */
+  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_s_len_of_unsized_object); if (unlikely(!__pyx_tuple__110)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__110);
+  __Pyx_GIVEREF(__pyx_tuple__110);
 
-  /* "netCDF4/_netCDF4.pyx":4932
+  /* "netCDF4/_netCDF4.pyx":5052
  *     def _shape(self):
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]             # <<<<<<<<<<<<<<
  *     def set_auto_maskandscale(self,val):
  *         for v in self._recVar:
  */
-  __pyx_slice__109 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__109)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__109);
-  __Pyx_GIVEREF(__pyx_slice__109);
+  __pyx_slice__111 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__111)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__111);
+  __Pyx_GIVEREF(__pyx_slice__111);
 
-  /* "netCDF4/_netCDF4.pyx":4953
+  /* "netCDF4/_netCDF4.pyx":5073
  *         # The convention used is that for those cases,
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]             # <<<<<<<<<<<<<<
  *         for i,n in enumerate(put_ind.shape[:-1]):
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  */
-  __pyx_slice__110 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__110)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__110);
-  __Pyx_GIVEREF(__pyx_slice__110);
+  __pyx_slice__112 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__112)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__112);
+  __Pyx_GIVEREF(__pyx_slice__112);
 
-  /* "netCDF4/_netCDF4.pyx":4954
+  /* "netCDF4/_netCDF4.pyx":5074
  *         # put_ind for this dimension is set to -1 by _StartCountStride.
  *         squeeze = data.ndim * [slice(None),]
  *         for i,n in enumerate(put_ind.shape[:-1]):             # <<<<<<<<<<<<<<
  *             if n == 1 and put_ind[...,i].ravel()[0] == -1:
  *                 squeeze[i] = 0
  */
-  __pyx_slice__111 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__111)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__111);
-  __Pyx_GIVEREF(__pyx_slice__111);
+  __pyx_slice__113 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__113)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__113);
+  __Pyx_GIVEREF(__pyx_slice__113);
 
-  /* "netCDF4/_netCDF4.pyx":4971
+  /* "netCDF4/_netCDF4.pyx":5091
  *             count = [abs(cnt) for cnt in count]
  *             if (numpy.array(stride) < 0).any():
  *                 raise IndexError('negative strides not allowed when slicing MFVariable Variable instance')             # <<<<<<<<<<<<<<
  *             # Start, stop and step along 1st dimension, eg the unlimited
  *             # dimension.
  */
-  __pyx_tuple__112 = PyTuple_Pack(1, __pyx_kp_s_negative_strides_not_allowed_whe); if (unlikely(!__pyx_tuple__112)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__112);
-  __Pyx_GIVEREF(__pyx_tuple__112);
+  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_s_negative_strides_not_allowed_whe); if (unlikely(!__pyx_tuple__114)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__114);
+  __Pyx_GIVEREF(__pyx_tuple__114);
 
-  /* "netCDF4/_netCDF4.pyx":4995
+  /* "netCDF4/_netCDF4.pyx":5115
  * 
  *             # Rebuild the slicing expression for dimensions 1 and ssq.
  *             newSlice = [slice(None, None, None)]             # <<<<<<<<<<<<<<
  *             for n in range(1, len(start)):   # skip dimension 0
  *                 s = slice(start[n],start[n] + count[n] * stride[n], stride[n])
  */
-  __pyx_slice__113 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__113)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_slice__113);
-  __Pyx_GIVEREF(__pyx_slice__113);
+  __pyx_slice__115 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__115)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_slice__115);
+  __Pyx_GIVEREF(__pyx_slice__115);
 
-  /* "netCDF4/_netCDF4.pyx":5096
+  /* "netCDF4/_netCDF4.pyx":5217
  *         for t in self._recVar:
  *             if not hasattr(t,'calendar'):
  *                 raise ValueError('MFTime requires that the time variable in all files have a calendar attribute')             # <<<<<<<<<<<<<<
  * 
  *         # Check that calendar is the same in all files.
  */
-  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_s_MFTime_requires_that_the_time_va); if (unlikely(!__pyx_tuple__114)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__114);
-  __Pyx_GIVEREF(__pyx_tuple__114);
+  __pyx_tuple__116 = PyTuple_Pack(1, __pyx_kp_s_MFTime_requires_that_the_time_va); if (unlikely(!__pyx_tuple__116)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__116);
+  __Pyx_GIVEREF(__pyx_tuple__116);
 
-  /* "netCDF4/_netCDF4.pyx":5100
+  /* "netCDF4/_netCDF4.pyx":5221
  *         # Check that calendar is the same in all files.
  *         if len(set([t.calendar for t in self._recVar])) > 1:
  *             raise ValueError('MFTime requires that the same time calendar is used by all files.')             # <<<<<<<<<<<<<<
  * 
  *         # Override units if units is specified.
  */
-  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s_MFTime_requires_that_the_same_ti); if (unlikely(!__pyx_tuple__115)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__115);
-  __Pyx_GIVEREF(__pyx_tuple__115);
+  __pyx_tuple__117 = PyTuple_Pack(1, __pyx_kp_s_MFTime_requires_that_the_same_ti); if (unlikely(!__pyx_tuple__117)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__117);
+  __Pyx_GIVEREF(__pyx_tuple__117);
 
-  /* "netCDF4/_netCDF4.pyx":5106
+  /* "netCDF4/_netCDF4.pyx":5227
  * 
  *         # Reference date to compute the difference between different time units.
  *         ref_date = datetime.datetime(1900,1,1)             # <<<<<<<<<<<<<<
  *         ref_num = date2num(ref_date, self.units, self.calendar)
  * 
  */
-  __pyx_tuple__116 = PyTuple_Pack(3, __pyx_int_1900, __pyx_int_1, __pyx_int_1); if (unlikely(!__pyx_tuple__116)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__116);
-  __Pyx_GIVEREF(__pyx_tuple__116);
+  __pyx_tuple__118 = PyTuple_Pack(3, __pyx_int_1900, __pyx_int_1, __pyx_int_1); if (unlikely(!__pyx_tuple__118)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__118);
+  __Pyx_GIVEREF(__pyx_tuple__118);
 
-  /* "netCDF4/_netCDF4.pyx":820
+  /* "netCDF4/_netCDF4.pyx":838
  *         from ordereddict import OrderedDict
  *     except ImportError:
  *         raise ImportError('please install ordereddict (https://pypi.python.org/pypi/ordereddict)')             # <<<<<<<<<<<<<<
  * try:
  *     from itertools import izip as zip
  */
-  __pyx_tuple__117 = PyTuple_Pack(1, __pyx_kp_s_please_install_ordereddict_https); if (unlikely(!__pyx_tuple__117)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__117);
-  __Pyx_GIVEREF(__pyx_tuple__117);
+  __pyx_tuple__119 = PyTuple_Pack(1, __pyx_kp_s_please_install_ordereddict_https); if (unlikely(!__pyx_tuple__119)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__119);
+  __Pyx_GIVEREF(__pyx_tuple__119);
 
-  /* "netCDF4/_netCDF4.pyx":839
+  /* "netCDF4/_netCDF4.pyx":857
  * from numpy import ma
  * from numpy import __version__ as _npversion
  * if _npversion.split('.')[0] < '1':             # <<<<<<<<<<<<<<
  *     raise ImportError('requires numpy version 1.0rc1 or later')
  * import_array()
  */
-  __pyx_tuple__119 = PyTuple_Pack(1, __pyx_kp_s__118); if (unlikely(!__pyx_tuple__119)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__119);
-  __Pyx_GIVEREF(__pyx_tuple__119);
+  __pyx_tuple__121 = PyTuple_Pack(1, __pyx_kp_s__120); if (unlikely(!__pyx_tuple__121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__121);
+  __Pyx_GIVEREF(__pyx_tuple__121);
 
-  /* "netCDF4/_netCDF4.pyx":840
+  /* "netCDF4/_netCDF4.pyx":858
  * from numpy import __version__ as _npversion
  * if _npversion.split('.')[0] < '1':
  *     raise ImportError('requires numpy version 1.0rc1 or later')             # <<<<<<<<<<<<<<
  * import_array()
  * include "netCDF4.pxi"
  */
-  __pyx_tuple__120 = PyTuple_Pack(1, __pyx_kp_s_requires_numpy_version_1_0rc1_or); if (unlikely(!__pyx_tuple__120)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__120);
-  __Pyx_GIVEREF(__pyx_tuple__120);
+  __pyx_tuple__122 = PyTuple_Pack(1, __pyx_kp_s_requires_numpy_version_1_0rc1_or); if (unlikely(!__pyx_tuple__122)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__122);
+  __Pyx_GIVEREF(__pyx_tuple__122);
 
-  /* "netCDF4/_netCDF4.pyx":847
+  /* "netCDF4/_netCDF4.pyx":865
  * # check for required version of netcdf-4 and hdf5.
  * 
  * def _gethdf5libversion():             # <<<<<<<<<<<<<<
  *     majorvers = H5_VERS_MAJOR
  *     minorvers = H5_VERS_MINOR
  */
-  __pyx_tuple__121 = PyTuple_Pack(4, __pyx_n_s_majorvers, __pyx_n_s_minorvers, __pyx_n_s_releasevers, __pyx_n_s_patchstring); if (unlikely(!__pyx_tuple__121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__121);
-  __Pyx_GIVEREF(__pyx_tuple__121);
-  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(0, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_gethdf5libversion, 847, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__123 = PyTuple_Pack(4, __pyx_n_s_majorvers, __pyx_n_s_minorvers, __pyx_n_s_releasevers, __pyx_n_s_patchstring); if (unlikely(!__pyx_tuple__123)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__123);
+  __Pyx_GIVEREF(__pyx_tuple__123);
+  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(0, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_gethdf5libversion, 865, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":857
+  /* "netCDF4/_netCDF4.pyx":875
  *         return '%d.%d.%d-%s' % (majorvers,minorvers,releasevers,patchstring)
  * 
  * def getlibversion():             # <<<<<<<<<<<<<<
  *     """
- * getlibversion()
+ * **`getlibversion()`**
  */
-  __pyx_codeobj__123 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_getlibversion, 857, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__123)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__125 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_getlibversion, 875, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__125)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":902
+  /* "netCDF4/_netCDF4.pyx":920
  *                      'f8':NC_FILL_DOUBLE}
  * 
  * is_native_little = numpy.dtype('<f4').byteorder == '='             # <<<<<<<<<<<<<<
  * is_native_big = numpy.dtype('>f4').byteorder == '='
  * 
  */
-  __pyx_tuple__124 = PyTuple_Pack(1, __pyx_kp_s_f4_2); if (unlikely(!__pyx_tuple__124)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__124);
-  __Pyx_GIVEREF(__pyx_tuple__124);
+  __pyx_tuple__126 = PyTuple_Pack(1, __pyx_kp_s_f4_2); if (unlikely(!__pyx_tuple__126)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__126);
+  __Pyx_GIVEREF(__pyx_tuple__126);
 
-  /* "netCDF4/_netCDF4.pyx":903
+  /* "netCDF4/_netCDF4.pyx":921
  * 
  * is_native_little = numpy.dtype('<f4').byteorder == '='
  * is_native_big = numpy.dtype('>f4').byteorder == '='             # <<<<<<<<<<<<<<
  * 
  * # hard code this here, instead of importing from netcdf.h
  */
-  __pyx_tuple__125 = PyTuple_Pack(1, __pyx_kp_s_f4_3); if (unlikely(!__pyx_tuple__125)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__125);
-  __Pyx_GIVEREF(__pyx_tuple__125);
+  __pyx_tuple__127 = PyTuple_Pack(1, __pyx_kp_s_f4_3); if (unlikely(!__pyx_tuple__127)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__127);
+  __Pyx_GIVEREF(__pyx_tuple__127);
 
-  /* "netCDF4/_netCDF4.pyx":1011
+  /* "netCDF4/_netCDF4.pyx":1029
  *             return value_arr
  * 
  * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
  *     # Private function to set the netCDF file format
  *     if format == 'NETCDF4':
  */
-  __pyx_tuple__126 = PyTuple_Pack(1, __pyx_n_s_format); if (unlikely(!__pyx_tuple__126)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__126);
-  __Pyx_GIVEREF(__pyx_tuple__126);
-  __pyx_codeobj__127 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__126, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_set_default_format, 1011, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__128 = PyTuple_Pack(1, __pyx_n_s_format); if (unlikely(!__pyx_tuple__128)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__128);
+  __Pyx_GIVEREF(__pyx_tuple__128);
+  __pyx_codeobj__129 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__128, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_set_default_format, 1029, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4321
+  /* "netCDF4/_netCDF4.pyx":4432
  * 
  * # start of the gregorian calendar
  * gregorian = datetime(1582,10,15)             # <<<<<<<<<<<<<<
  * 
  * def _dateparse(timestr):
  */
-  __pyx_tuple__128 = PyTuple_Pack(3, __pyx_int_1582, __pyx_int_10, __pyx_int_15); if (unlikely(!__pyx_tuple__128)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__128);
-  __Pyx_GIVEREF(__pyx_tuple__128);
+  __pyx_tuple__130 = PyTuple_Pack(3, __pyx_int_1582, __pyx_int_10, __pyx_int_15); if (unlikely(!__pyx_tuple__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__130);
+  __Pyx_GIVEREF(__pyx_tuple__130);
 
-  /* "netCDF4/_netCDF4.pyx":4323
+  /* "netCDF4/_netCDF4.pyx":4434
  * gregorian = datetime(1582,10,15)
  * 
  * def _dateparse(timestr):             # <<<<<<<<<<<<<<
  *     """parse a string of the form time-units since yyyy-mm-dd hh:mm:ss,
  *     return a datetime instance"""
  */
-  __pyx_tuple__129 = PyTuple_Pack(13, __pyx_n_s_timestr, __pyx_n_s_timestr_split, __pyx_n_s_units, __pyx_n_s_n, __pyx_n_s_isostring, __pyx_n_s_year, __pyx_n_s_month, __pyx_n_s_day, __pyx_n_s_hour, __pyx_n_s_minute, __pyx_n_s_second, __pyx_n_s_utc_offset, __pyx_n_s_basedate); if (unlikely(!__pyx_tuple__129)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__129);
-  __Pyx_GIVEREF(__pyx_tuple__129);
-  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_dateparse, 4323, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__131 = PyTuple_Pack(13, __pyx_n_s_timestr, __pyx_n_s_timestr_split, __pyx_n_s_units, __pyx_n_s_n, __pyx_n_s_isostring, __pyx_n_s_year, __pyx_n_s_month, __pyx_n_s_day, __pyx_n_s_hour, __pyx_n_s_minute, __pyx_n_s_second, __pyx_n_s_utc_offset, __pyx_n_s_basedate); if (unlikely(!__pyx_tuple__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__131);
+  __Pyx_GIVEREF(__pyx_tuple__131);
+  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(1, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_dateparse, 4434, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4342
+  /* "netCDF4/_netCDF4.pyx":4453
  *     return basedate
  * 
  * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
  *     """
- * stringtoarr(a, NUMCHARS,dtype='S')
+ * **`stringtoarr(a, NUMCHARS,dtype='S')`**
  */
-  __pyx_tuple__131 = PyTuple_Pack(4, __pyx_n_s_string, __pyx_n_s_NUMCHARS, __pyx_n_s_dtype, __pyx_n_s_arr); if (unlikely(!__pyx_tuple__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__131);
-  __Pyx_GIVEREF(__pyx_tuple__131);
-  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_stringtoarr, 4342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__133 = PyTuple_Pack(4, __pyx_n_s_string, __pyx_n_s_NUMCHARS, __pyx_n_s_dtype, __pyx_n_s_arr); if (unlikely(!__pyx_tuple__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__133);
+  __Pyx_GIVEREF(__pyx_tuple__133);
+  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_stringtoarr, 4453, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4365
+  /* "netCDF4/_netCDF4.pyx":4476
  *     return arr
  * 
  * def stringtochar(a):             # <<<<<<<<<<<<<<
  *     """
- * stringtochar(a)
+ * **`stringtochar(a)`**
  */
-  __pyx_tuple__133 = PyTuple_Pack(3, __pyx_n_s_a, __pyx_n_s_dtype, __pyx_n_s_b); if (unlikely(!__pyx_tuple__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__133);
-  __Pyx_GIVEREF(__pyx_tuple__133);
-  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_stringtochar, 4365, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__135 = PyTuple_Pack(3, __pyx_n_s_a, __pyx_n_s_dtype, __pyx_n_s_b); if (unlikely(!__pyx_tuple__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__135);
+  __Pyx_GIVEREF(__pyx_tuple__135);
+  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_stringtochar, 4476, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4384
+  /* "netCDF4/_netCDF4.pyx":4495
  *     return b
  * 
  * def chartostring(b):             # <<<<<<<<<<<<<<
  *     """
- * chartostring(b)
+ * **`chartostring(b)`**
  */
-  __pyx_tuple__135 = PyTuple_Pack(6, __pyx_n_s_b, __pyx_n_s_dtype, __pyx_n_s_bs, __pyx_n_s_slen, __pyx_n_s_a, __pyx_n_s_n1); if (unlikely(!__pyx_tuple__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__135);
-  __Pyx_GIVEREF(__pyx_tuple__135);
-  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_chartostring, 4384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__137 = PyTuple_Pack(6, __pyx_n_s_b, __pyx_n_s_dtype, __pyx_n_s_bs, __pyx_n_s_slen, __pyx_n_s_a, __pyx_n_s_n1); if (unlikely(!__pyx_tuple__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__137);
+  __Pyx_GIVEREF(__pyx_tuple__137);
+  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_chartostring, 4495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4405
+  /* "netCDF4/_netCDF4.pyx":4516
  *     return a
  * 
  * def date2num(dates,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * date2num(dates,units,calendar='standard')
+ * **`date2num(dates,units,calendar='standard')`**
  */
-  __pyx_tuple__137 = PyTuple_Pack(14, __pyx_n_s_dates, __pyx_n_s_units, __pyx_n_s_calendar, __pyx_n_s_basedate, __pyx_n_s_unit, __pyx_n_s_isscalar, __pyx_n_s_shape, __pyx_n_s_ismasked, __pyx_n_s_mask, __pyx_n_s_times, __pyx_n_s_date, __pyx_n_s_td, __pyx_n_s_totaltime, __pyx_n_s_cdftime); if (unlikely(!__pyx_tuple__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__137);
-  __Pyx_GIVEREF(__pyx_tuple__137);
-  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(3, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_date2num, 4405, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__139 = PyTuple_Pack(14, __pyx_n_s_dates, __pyx_n_s_units, __pyx_n_s_calendar, __pyx_n_s_basedate, __pyx_n_s_unit, __pyx_n_s_isscalar, __pyx_n_s_shape, __pyx_n_s_ismasked, __pyx_n_s_mask, __pyx_n_s_times, __pyx_n_s_date, __pyx_n_s_td, __pyx_n_s_totaltime, __pyx_n_s_cdftime); if (unlikely(!__pyx_tuple__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__139);
+  __Pyx_GIVEREF(__pyx_tuple__139);
+  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(3, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_date2num, 4516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4484
+  /* "netCDF4/_netCDF4.pyx":4595
  *         return cdftime.date2num(dates)
  * 
  * def num2date(times,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * num2date(times,units,calendar='standard')
+ * **`num2date(times,units,calendar='standard')`**
  */
-  __pyx_tuple__139 = PyTuple_Pack(19, __pyx_n_s_times, __pyx_n_s_units, __pyx_n_s_calendar, __pyx_n_s_basedate, __pyx_n_s_unit, __pyx_n_s_isscalar, __pyx_n_s_shape, __pyx_n_s_ismasked, __pyx_n_s_mask, __pyx_n_s_dates, __pyx_n_s_time, __pyx_n_s_tsecs, __pyx_n_s_days, __pyx_n_s_msecsd, __pyx_n_s_secs, __pyx_n_s_msecs, __pyx_n_s_td, __pyx_n_s_date, __pyx_n_s_cdftime); if (unlikely(!__pyx_tuple__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__139);
-  __Pyx_GIVEREF(__pyx_tuple__139);
-  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(3, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_num2date, 4484, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__141 = PyTuple_Pack(19, __pyx_n_s_times, __pyx_n_s_units, __pyx_n_s_calendar, __pyx_n_s_basedate, __pyx_n_s_unit, __pyx_n_s_isscalar, __pyx_n_s_shape, __pyx_n_s_ismasked, __pyx_n_s_mask, __pyx_n_s_dates, __pyx_n_s_time, __pyx_n_s_tsecs, __pyx_n_s_days, __pyx_n_s_msecsd, __pyx_n_s_secs, __pyx_n_s_msecs, __pyx_n_s_td, __pyx_n_s_date, __pyx_n_s_cdftime); if (unlikely(!__pyx_tuple__141)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__141);
+  __Pyx_GIVEREF(__pyx_tuple__141);
+  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(3, 0, 19, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_num2date, 4595, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4579
+  /* "netCDF4/_netCDF4.pyx":4690
  *         return cdftime.num2date(times)
  * 
  * def date2index(dates, nctime, calendar=None, select='exact'):             # <<<<<<<<<<<<<<
  *     """
- * date2index(dates, nctime, calendar=None, select='exact')
+ * **`date2index(dates, nctime, calendar=None, select='exact')`**
  */
-  __pyx_tuple__141 = PyTuple_Pack(6, __pyx_n_s_dates, __pyx_n_s_nctime, __pyx_n_s_calendar, __pyx_n_s_select, __pyx_n_s_basedate, __pyx_n_s_times); if (unlikely(!__pyx_tuple__141)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__141);
-  __Pyx_GIVEREF(__pyx_tuple__141);
-  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_date2index, 4579, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__143 = PyTuple_Pack(6, __pyx_n_s_dates, __pyx_n_s_nctime, __pyx_n_s_calendar, __pyx_n_s_select, __pyx_n_s_basedate, __pyx_n_s_times); if (unlikely(!__pyx_tuple__143)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__143);
+  __Pyx_GIVEREF(__pyx_tuple__143);
+  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_date2index, 4690, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4653
+  /* "netCDF4/_netCDF4.pyx":4764
  *     """
  * 
  *     def __init__(self, files, check=False, aggdim=None, exclude=[]):             # <<<<<<<<<<<<<<
  *         """
- * Open a Dataset spanning multiple files, making it look as if it was a
+ *         **`__init__(self, files, check=False, aggdim=None, exclude=[])`**
  */
-  __pyx_tuple__143 = PyTuple_Pack(36, __pyx_n_s_self, __pyx_n_s_files, __pyx_n_s_check, __pyx_n_s_aggdim, __pyx_n_s_exclude, __pyx_n_s_msg, __pyx_n_s_master, __pyx_n_s_cdfm, __pyx_n_s_name, __pyx_n_s_value, __pyx_n_s_aggDimId, __pyx_n_s_dimname, __pyx_n_s_dim, __pyx_n_s_aggDimName, __pyx_n_s_masterRecVar, __pyx_n_s_vName, __pyx_n_s_v, __pyx_n_s_dims_2, __pyx_n_s_shape, __pyx_n_s_dtype, __pyx_n_s_cdf_2, __pyx_n_s_cdfVLen_2, __pyx_n_s_cdfRecVar_2, __pyx_n_s_f, __pyx_n_s_part, __pyx_n_s_var [...]
-  __Pyx_GOTREF(__pyx_tuple__143);
-  __Pyx_GIVEREF(__pyx_tuple__143);
-  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(5, 0, 36, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_init, 4653, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__145 = PyTuple_Pack(36, __pyx_n_s_self, __pyx_n_s_files, __pyx_n_s_check, __pyx_n_s_aggdim, __pyx_n_s_exclude, __pyx_n_s_msg, __pyx_n_s_master, __pyx_n_s_cdfm, __pyx_n_s_name, __pyx_n_s_value, __pyx_n_s_aggDimId, __pyx_n_s_dimname, __pyx_n_s_dim, __pyx_n_s_aggDimName, __pyx_n_s_masterRecVar, __pyx_n_s_vName, __pyx_n_s_v, __pyx_n_s_dims_2, __pyx_n_s_shape, __pyx_n_s_dtype, __pyx_n_s_cdf_2, __pyx_n_s_cdfVLen_2, __pyx_n_s_cdfRecVar_2, __pyx_n_s_f, __pyx_n_s_part, __pyx_n_s_var [...]
+  __Pyx_GOTREF(__pyx_tuple__145);
+  __Pyx_GIVEREF(__pyx_tuple__145);
+  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(5, 0, 36, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_init, 4764, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4830
+  /* "netCDF4/_netCDF4.pyx":4937
  *         self._path = '/'
  * 
  *     def __setattr__(self, name, value):             # <<<<<<<<<<<<<<
  *         """override base class attribute creation"""
  *         self.__dict__[name] = value
  */
-  __pyx_tuple__145 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__145)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__145);
-  __Pyx_GIVEREF(__pyx_tuple__145);
-  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_setattr, 4830, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__147 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__147)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__147);
+  __Pyx_GIVEREF(__pyx_tuple__147);
+  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__147, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_setattr, 4937, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4834
+  /* "netCDF4/_netCDF4.pyx":4941
  *         self.__dict__[name] = value
  * 
  *     def __getattribute__(self, name):             # <<<<<<<<<<<<<<
  *         if name in ['variables','dimensions','file_format','groups',\
  *                     'data_model','disk_format','path']:
  */
-  __pyx_tuple__147 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_name); if (unlikely(!__pyx_tuple__147)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__147);
-  __Pyx_GIVEREF(__pyx_tuple__147);
-  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__147, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_getattribute, 4834, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__149 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_name); if (unlikely(!__pyx_tuple__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__149);
+  __Pyx_GIVEREF(__pyx_tuple__149);
+  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_getattribute, 4941, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4847
+  /* "netCDF4/_netCDF4.pyx":4954
  *             return Dataset.__getattribute__(self, name)
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
- *         return self._cdf[0].__dict__.keys()
- * 
+ *         """
+ *         **`ncattrs(self)`**
  */
-  __pyx_tuple__149 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__149);
-  __Pyx_GIVEREF(__pyx_tuple__149);
-  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_ncattrs, 4847, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__151 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__151);
+  __Pyx_GIVEREF(__pyx_tuple__151);
+  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_ncattrs, 4954, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4850
+  /* "netCDF4/_netCDF4.pyx":4962
  *         return self._cdf[0].__dict__.keys()
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
- *         for dset in self._cdf:
- *             dset.close()
+ *         """
+ *         **`close(self)`**
  */
-  __pyx_tuple__151 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_dset); if (unlikely(!__pyx_tuple__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__151);
-  __Pyx_GIVEREF(__pyx_tuple__151);
-  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_close, 4850, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__153 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_dset); if (unlikely(!__pyx_tuple__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__153);
+  __Pyx_GIVEREF(__pyx_tuple__153);
+  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_close, 4962, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4854
+  /* "netCDF4/_netCDF4.pyx":4971
  *             dset.close()
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions.keys()])
  */
-  __pyx_tuple__153 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_ncdump, __pyx_n_s_dimnames, __pyx_n_s_varnames, __pyx_n_s_grpnames, __pyx_n_s_attrs, __pyx_n_s_dimname, __pyx_n_s_varname, __pyx_n_s_name); if (unlikely(!__pyx_tuple__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__153);
-  __Pyx_GIVEREF(__pyx_tuple__153);
-  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_repr, 4854, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__155 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_ncdump, __pyx_n_s_dimnames, __pyx_n_s_varnames, __pyx_n_s_grpnames, __pyx_n_s_attrs, __pyx_n_s_dimname, __pyx_n_s_varname, __pyx_n_s_name); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__155);
+  __Pyx_GIVEREF(__pyx_tuple__155);
+  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_repr, 4971, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4873
+  /* "netCDF4/_netCDF4.pyx":4990
  * 
  * class _Dimension(object):
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):             # <<<<<<<<<<<<<<
  *         self.dimlens = dimlens
  *         self.dimtotlen = dimtotlen
  */
-  __pyx_tuple__155 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_dimname, __pyx_n_s_dim, __pyx_n_s_dimlens, __pyx_n_s_dimtotlen); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__155);
-  __Pyx_GIVEREF(__pyx_tuple__155);
-  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_init, 4873, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__157 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_dimname, __pyx_n_s_dim, __pyx_n_s_dimlens, __pyx_n_s_dimtotlen); if (unlikely(!__pyx_tuple__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__157);
+  __Pyx_GIVEREF(__pyx_tuple__157);
+  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_init, 4990, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4877
+  /* "netCDF4/_netCDF4.pyx":4994
  *         self.dimtotlen = dimtotlen
  *         self._name = dimname
  *     def __len__(self):             # <<<<<<<<<<<<<<
  *         return self.dimtotlen
  *     def isunlimited(self):
  */
-  __pyx_tuple__157 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__157);
-  __Pyx_GIVEREF(__pyx_tuple__157);
-  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_len, 4877, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__159 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__159);
+  __Pyx_GIVEREF(__pyx_tuple__159);
+  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_len, 4994, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4879
+  /* "netCDF4/_netCDF4.pyx":4996
  *     def __len__(self):
  *         return self.dimtotlen
  *     def isunlimited(self):             # <<<<<<<<<<<<<<
  *         return True
  *     def __repr__(self):
  */
-  __pyx_tuple__159 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__159);
-  __Pyx_GIVEREF(__pyx_tuple__159);
-  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_isunlimited, 4879, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__161 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__161);
+  __Pyx_GIVEREF(__pyx_tuple__161);
+  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_isunlimited, 4996, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4881
+  /* "netCDF4/_netCDF4.pyx":4998
  *     def isunlimited(self):
  *         return True
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         if self.isunlimited():
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))
  */
-  __pyx_tuple__161 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__161);
-  __Pyx_GIVEREF(__pyx_tuple__161);
-  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_repr, 4881, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__163 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__163)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__163);
+  __Pyx_GIVEREF(__pyx_tuple__163);
+  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_repr, 4998, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4888
+  /* "netCDF4/_netCDF4.pyx":5005
  * 
  * class _Variable(object):
  *     def __init__(self, dset, varname, var, recdimname):             # <<<<<<<<<<<<<<
  *         self.dimensions = var.dimensions
  *         self._dset = dset
  */
-  __pyx_tuple__163 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_dset, __pyx_n_s_varname, __pyx_n_s_var, __pyx_n_s_recdimname, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__163)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__163);
-  __Pyx_GIVEREF(__pyx_tuple__163);
-  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(5, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_init, 4888, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__165 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_dset, __pyx_n_s_varname, __pyx_n_s_var, __pyx_n_s_recdimname, __pyx_n_s_name, __pyx_n_s_value); if (unlikely(!__pyx_tuple__165)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__165);
+  __Pyx_GIVEREF(__pyx_tuple__165);
+  __pyx_codeobj__166 = (PyObject*)__Pyx_PyCode_New(5, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_init, 5005, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__166)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4901
+  /* "netCDF4/_netCDF4.pyx":5018
  *         for name, value in var.__dict__.items():
  *             self.__dict__[name] = value
  *     def typecode(self):             # <<<<<<<<<<<<<<
  *         return self.dtype
  *     def ncattrs(self):
  */
-  __pyx_tuple__165 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__165)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__165);
-  __Pyx_GIVEREF(__pyx_tuple__165);
-  __pyx_codeobj__166 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_typecode, 4901, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__166)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__167 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__167)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__167);
+  __Pyx_GIVEREF(__pyx_tuple__167);
+  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_typecode, 5018, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4903
+  /* "netCDF4/_netCDF4.pyx":5020
  *     def typecode(self):
  *         return self.dtype
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
  *         return self._mastervar.__dict__.keys()
  *     def __getattr__(self,name):
  */
-  __pyx_tuple__167 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__167)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__167);
-  __Pyx_GIVEREF(__pyx_tuple__167);
-  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_ncattrs, 4903, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__169 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__169)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__169);
+  __Pyx_GIVEREF(__pyx_tuple__169);
+  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_ncattrs, 5020, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4905
+  /* "netCDF4/_netCDF4.pyx":5022
  *     def ncattrs(self):
  *         return self._mastervar.__dict__.keys()
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
  *         if name == 'shape': return self._shape()
  *         if name == 'ndim': return len(self._shape())
  */
-  __pyx_tuple__169 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_name); if (unlikely(!__pyx_tuple__169)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__169);
-  __Pyx_GIVEREF(__pyx_tuple__169);
-  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_getattr, 4905, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__171 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_name); if (unlikely(!__pyx_tuple__171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__171);
+  __Pyx_GIVEREF(__pyx_tuple__171);
+  __pyx_codeobj__172 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__171, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_getattr, 5022, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__172)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4912
+  /* "netCDF4/_netCDF4.pyx":5029
  *         except:
  *             raise AttributeError(name)
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions])
  */
-  __pyx_tuple__171 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_ncdump_var, __pyx_n_s_dimnames, __pyx_n_s_attrs, __pyx_n_s_unlimdims, __pyx_n_s_dimname, __pyx_n_s_dim, __pyx_n_s_name); if (unlikely(!__pyx_tuple__171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__171);
-  __Pyx_GIVEREF(__pyx_tuple__171);
-  __pyx_codeobj__172 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__171, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_repr, 4912, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__172)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__173 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_ncdump_var, __pyx_n_s_dimnames, __pyx_n_s_attrs, __pyx_n_s_unlimdims, __pyx_n_s_dimname, __pyx_n_s_dim, __pyx_n_s_name); if (unlikely(!__pyx_tuple__173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__173);
+  __Pyx_GIVEREF(__pyx_tuple__173);
+  __pyx_codeobj__174 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_repr, 5029, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__174)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4928
+  /* "netCDF4/_netCDF4.pyx":5045
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))
  *         return ''.join(ncdump_var)
  *     def __len__(self):             # <<<<<<<<<<<<<<
- *         return self._shape()[0]
- *     def _shape(self):
+ *         if not self._shape:
+ *             raise TypeError('len() of unsized object')
  */
-  __pyx_tuple__173 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__173);
-  __Pyx_GIVEREF(__pyx_tuple__173);
-  __pyx_codeobj__174 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__173, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_len, 4928, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__174)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__175 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__175)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__175);
+  __Pyx_GIVEREF(__pyx_tuple__175);
+  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__175, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_len, 5045, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4930
- *     def __len__(self):
- *         return self._shape()[0]
+  /* "netCDF4/_netCDF4.pyx":5050
+ *         else:
+ *             return self._shape()[0]
  *     def _shape(self):             # <<<<<<<<<<<<<<
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
  */
-  __pyx_tuple__175 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_recdimlen); if (unlikely(!__pyx_tuple__175)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__175);
-  __Pyx_GIVEREF(__pyx_tuple__175);
-  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__175, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_shape_2, 4930, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__177 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_recdimlen); if (unlikely(!__pyx_tuple__177)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__177);
+  __Pyx_GIVEREF(__pyx_tuple__177);
+  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_shape_2, 5050, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4933
+  /* "netCDF4/_netCDF4.pyx":5053
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
  *     def set_auto_maskandscale(self,val):             # <<<<<<<<<<<<<<
  *         for v in self._recVar:
  *             v.set_auto_maskandscale(val)
  */
-  __pyx_tuple__177 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_val, __pyx_n_s_v); if (unlikely(!__pyx_tuple__177)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__177);
-  __Pyx_GIVEREF(__pyx_tuple__177);
-  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__177, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_set_auto_maskandscale, 4933, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__179 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_val, __pyx_n_s_v); if (unlikely(!__pyx_tuple__179)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__179);
+  __Pyx_GIVEREF(__pyx_tuple__179);
+  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_set_auto_maskandscale, 5053, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":4936
+  /* "netCDF4/_netCDF4.pyx":5056
  *         for v in self._recVar:
  *             v.set_auto_maskandscale(val)
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
  *         """Get records from a concatenated set of variables."""
  * 
  */
-  __pyx_tuple__179 = PyTuple_Pack(30, __pyx_n_s_self, __pyx_n_s_elem, __pyx_n_s_start, __pyx_n_s_count, __pyx_n_s_stride, __pyx_n_s_put_ind, __pyx_n_s_datashape, __pyx_n_s_data, __pyx_n_s_squeeze, __pyx_n_s_i, __pyx_n_s_n, __pyx_n_s_strt, __pyx_n_s_cnt, __pyx_n_s_strd, __pyx_n_s_nv, __pyx_n_s_ind, __pyx_n_s_sta, __pyx_n_s_step, __pyx_n_s_stop, __pyx_n_s_idx, __pyx_n_s_vid, __pyx_n_s_k, __pyx_n_s_lst, __pyx_n_s_newSlice, __pyx_n_s_s_2, __pyx_n_s_lstArr, __pyx_n_s_ismasked, __pyx_n_s_dat,  [...]
-  __Pyx_GOTREF(__pyx_tuple__179);
-  __Pyx_GIVEREF(__pyx_tuple__179);
-  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(2, 0, 30, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__179, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_getitem, 4936, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__181 = PyTuple_Pack(30, __pyx_n_s_self, __pyx_n_s_elem, __pyx_n_s_start, __pyx_n_s_count, __pyx_n_s_stride, __pyx_n_s_put_ind, __pyx_n_s_datashape, __pyx_n_s_data, __pyx_n_s_squeeze, __pyx_n_s_i, __pyx_n_s_n, __pyx_n_s_strt, __pyx_n_s_cnt, __pyx_n_s_strd, __pyx_n_s_nv, __pyx_n_s_ind, __pyx_n_s_sta, __pyx_n_s_step, __pyx_n_s_stop, __pyx_n_s_idx, __pyx_n_s_vid, __pyx_n_s_k, __pyx_n_s_lst, __pyx_n_s_newSlice, __pyx_n_s_s_2, __pyx_n_s_lstArr, __pyx_n_s_ismasked, __pyx_n_s_dat,  [...]
+  __Pyx_GOTREF(__pyx_tuple__181);
+  __Pyx_GIVEREF(__pyx_tuple__181);
+  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(2, 0, 30, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_getitem, 5056, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":5076
+  /* "netCDF4/_netCDF4.pyx":5195
  *     """
  * 
  *     def __init__(self, time, units=None):             # <<<<<<<<<<<<<<
  *         """
- * Create a time Variable with units consistent across a multifile
+ *         **`__init__(self, time, units=None)`**
  */
-  __pyx_tuple__181 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_time, __pyx_n_s_units, __pyx_n_s_datetime, __pyx_n_s_name, __pyx_n_s_value, __pyx_n_s_t, __pyx_n_s_ref_date, __pyx_n_s_ref_num, __pyx_n_s_i0, __pyx_n_s_i1, __pyx_n_s_i, __pyx_n_s_v, __pyx_n_s_n, __pyx_n_s_num); if (unlikely(!__pyx_tuple__181)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__181);
-  __Pyx_GIVEREF(__pyx_tuple__181);
-  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(3, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__181, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_init, 5076, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__183 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__183)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__183 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_time, __pyx_n_s_units, __pyx_n_s_datetime, __pyx_n_s_name, __pyx_n_s_value, __pyx_n_s_t, __pyx_n_s_ref_date, __pyx_n_s_ref_num, __pyx_n_s_i0, __pyx_n_s_i1, __pyx_n_s_i, __pyx_n_s_v, __pyx_n_s_n, __pyx_n_s_num); if (unlikely(!__pyx_tuple__183)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__183);
   __Pyx_GIVEREF(__pyx_tuple__183);
+  __pyx_codeobj__184 = (PyObject*)__Pyx_PyCode_New(3, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_init, 5195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__184)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__185 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__185);
+  __Pyx_GIVEREF(__pyx_tuple__185);
 
-  /* "netCDF4/_netCDF4.pyx":5122
+  /* "netCDF4/_netCDF4.pyx":5243
  * 
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
  *         return self.__time[elem] + self.__delta[elem]
  */
-  __pyx_tuple__184 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__184)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_tuple__184);
-  __Pyx_GIVEREF(__pyx_tuple__184);
-  __pyx_codeobj__185 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__184, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_getitem, 5122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__186 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_elem); if (unlikely(!__pyx_tuple__186)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_tuple__186);
+  __Pyx_GIVEREF(__pyx_tuple__186);
+  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__186, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_net_bio_c2sm_hvwaldow_git_netcd, __pyx_n_s_getitem, 5243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -64347,7 +64655,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   #endif
   /*--- Module creation code ---*/
   #if PY_MAJOR_VERSION < 3
-  __pyx_m = Py_InitModule4("_netCDF4", __pyx_methods, __pyx_k_Introduction_Python_interface_t, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  __pyx_m = Py_InitModule4("_netCDF4", __pyx_methods, __pyx_k_Introduction_netcdf4_python_is, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
   #else
   __pyx_m = PyModule_Create(&__pyx_moduledef);
   #endif
@@ -64384,64 +64692,124 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   /*--- Function export code ---*/
   /*--- Type init code ---*/
   __pyx_ptype_7netCDF4_8_netCDF4_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_7netCDF4_8_netCDF4_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Dataset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Dataset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_7netCDF4_8_netCDF4_Dataset.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "Dataset", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Dataset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Dataset, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_7Dataset___init__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_7Dataset___init__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "Dataset", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Dataset) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_type_7netCDF4_8_netCDF4_Dataset.tp_weaklistoffset == 0) __pyx_type_7netCDF4_8_netCDF4_Dataset.tp_weaklistoffset = offsetof(struct __pyx_obj_7netCDF4_8_netCDF4_Dataset, __weakref__);
   __pyx_ptype_7netCDF4_8_netCDF4_Dataset = &__pyx_type_7netCDF4_8_netCDF4_Dataset;
   __pyx_type_7netCDF4_8_netCDF4_Group.tp_base = __pyx_ptype_7netCDF4_8_netCDF4_Dataset;
-  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Group) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Group) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_7netCDF4_8_netCDF4_Group.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "Group", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Group) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Group, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_5Group___init__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_5Group___init__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "Group", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Group) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_type_7netCDF4_8_netCDF4_Group.tp_weaklistoffset == 0) __pyx_type_7netCDF4_8_netCDF4_Group.tp_weaklistoffset = offsetof(struct __pyx_obj_7netCDF4_8_netCDF4_Group, __pyx_base.__weakref__);
   __pyx_ptype_7netCDF4_8_netCDF4_Group = &__pyx_type_7netCDF4_8_netCDF4_Group;
-  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Dimension) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Dimension) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_7netCDF4_8_netCDF4_Dimension.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "Dimension", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Dimension) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Dimension, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_9Dimension___init__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_9Dimension___init__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "Dimension", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Dimension) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_7netCDF4_8_netCDF4_Dimension = &__pyx_type_7netCDF4_8_netCDF4_Dimension;
-  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Variable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_Variable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_7netCDF4_8_netCDF4_Variable.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "Variable", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Variable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Variable, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_8Variable___init__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_8Variable___init__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "Variable", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_Variable) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_7netCDF4_8_netCDF4_Variable = &__pyx_type_7netCDF4_8_netCDF4_Variable;
-  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_CompoundType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_CompoundType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_7netCDF4_8_netCDF4_CompoundType.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "CompoundType", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_CompoundType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_7netCDF4_8_netCDF4_CompoundType, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_12CompoundType___init__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_12CompoundType___init__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "CompoundType", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_CompoundType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_7netCDF4_8_netCDF4_CompoundType = &__pyx_type_7netCDF4_8_netCDF4_CompoundType;
-  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_VLType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyType_Ready(&__pyx_type_7netCDF4_8_netCDF4_VLType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_type_7netCDF4_8_netCDF4_VLType.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "VLType", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_VLType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_7netCDF4_8_netCDF4_VLType, "__init__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__.doc = __pyx_doc_7netCDF4_8_netCDF4_6VLType___init__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7netCDF4_8_netCDF4_6VLType___init__;
+    }
+  }
+  #endif
+  if (PyObject_SetAttrString(__pyx_m, "VLType", (PyObject *)&__pyx_type_7netCDF4_8_netCDF4_VLType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_ptype_7netCDF4_8_netCDF4_VLType = &__pyx_type_7netCDF4_8_netCDF4_VLType;
   /*--- Type import code ---*/
   /*--- Variable import code ---*/
   /*--- Function import code ---*/
   /*--- Execution code ---*/
 
-  /* "netCDF4/_netCDF4.pyx":805
+  /* "netCDF4/_netCDF4.pyx":823
  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  * PERFORMANCE OF THIS SOFTWARE."""
  * __test__ = None             # <<<<<<<<<<<<<<
  * del __test__ # hack so epydoc doesn't show __test__
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":806
+  /* "netCDF4/_netCDF4.pyx":824
  * PERFORMANCE OF THIS SOFTWARE."""
  * __test__ = None
  * del __test__ # hack so epydoc doesn't show __test__             # <<<<<<<<<<<<<<
  * 
  * # Make changes to this file, not the c-wrappers that Pyrex generates.
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_test) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_test) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":811
+  /* "netCDF4/_netCDF4.pyx":829
  * 
  * # pure python utilities
  * from .utils import (_StartCountStride, _quantize, _find_dim, _walk_grps,             # <<<<<<<<<<<<<<
  *                     _out_array_shape, _sortbylist, _tostr)
  * # try to use built-in ordered dict in python >= 2.7
  */
-  __pyx_t_1 = PyList_New(7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_StartCountStride);
   PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_StartCountStride);
@@ -64464,40 +64832,40 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   __Pyx_INCREF(__pyx_n_s_tostr);
   PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_s_tostr);
   __Pyx_GIVEREF(__pyx_n_s_tostr);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_utils, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_utils, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_StartCountStride); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_StartCountStride, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_StartCountStride, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_quantize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_quantize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_quantize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_quantize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_find_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_find_dim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_find_dim, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_find_dim, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_walk_grps); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_walk_grps, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_walk_grps, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_out_array_shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_out_array_shape, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_out_array_shape, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sortbylist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sortbylist); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sortbylist, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sortbylist, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_tostr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_tostr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostr, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostr, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":814
+  /* "netCDF4/_netCDF4.pyx":832
  *                     _out_array_shape, _sortbylist, _tostr)
  * # try to use built-in ordered dict in python >= 2.7
  * try:             # <<<<<<<<<<<<<<
@@ -64511,24 +64879,24 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __Pyx_XGOTREF(__pyx_t_5);
     /*try:*/ {
 
-      /* "netCDF4/_netCDF4.pyx":815
+      /* "netCDF4/_netCDF4.pyx":833
  * # try to use built-in ordered dict in python >= 2.7
  * try:
  *     from collections import OrderedDict             # <<<<<<<<<<<<<<
  * except ImportError: # or else use drop-in substitute
  *     try:
  */
-      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
+      __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_INCREF(__pyx_n_s_OrderedDict);
       PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_OrderedDict);
       __Pyx_GIVEREF(__pyx_n_s_OrderedDict);
-      __pyx_t_1 = __Pyx_Import(__pyx_n_s_collections, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
+      __pyx_t_1 = __Pyx_Import(__pyx_n_s_collections, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
+      __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
       __Pyx_GOTREF(__pyx_t_2);
-      if (PyDict_SetItem(__pyx_d, __pyx_n_s_OrderedDict, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
+      if (PyDict_SetItem(__pyx_d, __pyx_n_s_OrderedDict, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L2_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
@@ -64540,7 +64908,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":816
+    /* "netCDF4/_netCDF4.pyx":834
  * try:
  *     from collections import OrderedDict
  * except ImportError: # or else use drop-in substitute             # <<<<<<<<<<<<<<
@@ -64550,12 +64918,12 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_ImportError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("netCDF4._netCDF4", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
+      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L4_except_error;}
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_GOTREF(__pyx_t_7);
 
-      /* "netCDF4/_netCDF4.pyx":817
+      /* "netCDF4/_netCDF4.pyx":835
  *     from collections import OrderedDict
  * except ImportError: # or else use drop-in substitute
  *     try:             # <<<<<<<<<<<<<<
@@ -64569,24 +64937,24 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
         __Pyx_XGOTREF(__pyx_t_10);
         /*try:*/ {
 
-          /* "netCDF4/_netCDF4.pyx":818
+          /* "netCDF4/_netCDF4.pyx":836
  * except ImportError: # or else use drop-in substitute
  *     try:
  *         from ordereddict import OrderedDict             # <<<<<<<<<<<<<<
  *     except ImportError:
  *         raise ImportError('please install ordereddict (https://pypi.python.org/pypi/ordereddict)')
  */
-          __pyx_t_11 = PyList_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
+          __pyx_t_11 = PyList_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_INCREF(__pyx_n_s_OrderedDict);
           PyList_SET_ITEM(__pyx_t_11, 0, __pyx_n_s_OrderedDict);
           __Pyx_GIVEREF(__pyx_n_s_OrderedDict);
-          __pyx_t_12 = __Pyx_Import(__pyx_n_s_ordereddict, __pyx_t_11, -1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
+          __pyx_t_12 = __Pyx_Import(__pyx_n_s_ordereddict, __pyx_t_11, -1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-          __pyx_t_11 = __Pyx_ImportFrom(__pyx_t_12, __pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
+          __pyx_t_11 = __Pyx_ImportFrom(__pyx_t_12, __pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
           __Pyx_GOTREF(__pyx_t_11);
-          if (PyDict_SetItem(__pyx_d, __pyx_n_s_OrderedDict, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
+          if (PyDict_SetItem(__pyx_d, __pyx_n_s_OrderedDict, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         }
@@ -64598,7 +64966,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
         __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
 
-        /* "netCDF4/_netCDF4.pyx":819
+        /* "netCDF4/_netCDF4.pyx":837
  *     try:
  *         from ordereddict import OrderedDict
  *     except ImportError:             # <<<<<<<<<<<<<<
@@ -64608,23 +64976,23 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
         __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_ImportError);
         if (__pyx_t_6) {
           __Pyx_AddTraceback("netCDF4._netCDF4", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
+          if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_GOTREF(__pyx_t_13);
 
-          /* "netCDF4/_netCDF4.pyx":820
+          /* "netCDF4/_netCDF4.pyx":838
  *         from ordereddict import OrderedDict
  *     except ImportError:
  *         raise ImportError('please install ordereddict (https://pypi.python.org/pypi/ordereddict)')             # <<<<<<<<<<<<<<
  * try:
  *     from itertools import izip as zip
  */
-          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__117, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
+          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__119, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_Raise(__pyx_t_14, 0, 0, 0);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
         }
         goto __pyx_L14_except_error;
         __pyx_L14_except_error:;
@@ -64655,7 +65023,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __pyx_L9_try_end:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":821
+  /* "netCDF4/_netCDF4.pyx":839
  *     except ImportError:
  *         raise ImportError('please install ordereddict (https://pypi.python.org/pypi/ordereddict)')
  * try:             # <<<<<<<<<<<<<<
@@ -64669,24 +65037,24 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "netCDF4/_netCDF4.pyx":822
+      /* "netCDF4/_netCDF4.pyx":840
  *         raise ImportError('please install ordereddict (https://pypi.python.org/pypi/ordereddict)')
  * try:
  *     from itertools import izip as zip             # <<<<<<<<<<<<<<
  * except ImportError:
  *     # python3: zip is already python2's itertools.izip
  */
-      __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
+      __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_INCREF(__pyx_n_s_izip);
       PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_izip);
       __Pyx_GIVEREF(__pyx_n_s_izip);
-      __pyx_t_2 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_7, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
+      __pyx_t_2 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_7, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_izip); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
+      __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_izip); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      if (PyDict_SetItem(__pyx_d, __pyx_n_s_zip, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
+      if (PyDict_SetItem(__pyx_d, __pyx_n_s_zip, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L22_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
@@ -64703,7 +65071,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":823
+    /* "netCDF4/_netCDF4.pyx":841
  * try:
  *     from itertools import izip as zip
  * except ImportError:             # <<<<<<<<<<<<<<
@@ -64730,189 +65098,189 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __pyx_L29_try_end:;
   }
 
-  /* "netCDF4/_netCDF4.pyx":827
+  /* "netCDF4/_netCDF4.pyx":845
  *     pass
  * 
- * __version__ = "1.1.8"             # <<<<<<<<<<<<<<
+ * __version__ = "1.1.9"             # <<<<<<<<<<<<<<
  * 
  * # Initialize numpy
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_1_1_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_1_1_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":830
+  /* "netCDF4/_netCDF4.pyx":848
  * 
  * # Initialize numpy
  * import posixpath             # <<<<<<<<<<<<<<
  * import netcdftime
  * import numpy
  */
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_posixpath, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_posixpath, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_posixpath, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_posixpath, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":831
+  /* "netCDF4/_netCDF4.pyx":849
  * # Initialize numpy
  * import posixpath
  * import netcdftime             # <<<<<<<<<<<<<<
  * import numpy
  * import weakref
  */
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_netcdftime, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_netcdftime, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_netcdftime, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_netcdftime, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 849; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":832
+  /* "netCDF4/_netCDF4.pyx":850
  * import posixpath
  * import netcdftime
  * import numpy             # <<<<<<<<<<<<<<
  * import weakref
  * import sys
  */
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_numpy, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":833
+  /* "netCDF4/_netCDF4.pyx":851
  * import netcdftime
  * import numpy
  * import weakref             # <<<<<<<<<<<<<<
  * import sys
  * import warnings
  */
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_weakref, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_weakref, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_weakref, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_weakref, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":834
+  /* "netCDF4/_netCDF4.pyx":852
  * import numpy
  * import weakref
  * import sys             # <<<<<<<<<<<<<<
  * import warnings
  * from glob import glob
  */
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":835
+  /* "netCDF4/_netCDF4.pyx":853
  * import weakref
  * import sys
  * import warnings             # <<<<<<<<<<<<<<
  * from glob import glob
  * from numpy import ma
  */
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_warnings, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_warnings, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":836
+  /* "netCDF4/_netCDF4.pyx":854
  * import sys
  * import warnings
  * from glob import glob             # <<<<<<<<<<<<<<
  * from numpy import ma
  * from numpy import __version__ as _npversion
  */
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_glob);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_glob);
   __Pyx_GIVEREF(__pyx_n_s_glob);
-  __pyx_t_7 = __Pyx_Import(__pyx_n_s_glob, __pyx_t_2, -1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Import(__pyx_n_s_glob, __pyx_t_2, -1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_glob); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_glob); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_glob, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_glob, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":837
+  /* "netCDF4/_netCDF4.pyx":855
  * import warnings
  * from glob import glob
  * from numpy import ma             # <<<<<<<<<<<<<<
  * from numpy import __version__ as _npversion
  * if _npversion.split('.')[0] < '1':
  */
-  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_INCREF(__pyx_n_s_ma);
   PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_ma);
   __Pyx_GIVEREF(__pyx_n_s_ma);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, __pyx_t_7, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, __pyx_t_7, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_ma); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ma, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ma, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":838
+  /* "netCDF4/_netCDF4.pyx":856
  * from glob import glob
  * from numpy import ma
  * from numpy import __version__ as _npversion             # <<<<<<<<<<<<<<
  * if _npversion.split('.')[0] < '1':
  *     raise ImportError('requires numpy version 1.0rc1 or later')
  */
-  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_version);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_version);
   __Pyx_GIVEREF(__pyx_n_s_version);
-  __pyx_t_7 = __Pyx_Import(__pyx_n_s_numpy, __pyx_t_2, -1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Import(__pyx_n_s_numpy, __pyx_t_2, -1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_version); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_version); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_npversion, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_npversion, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":839
+  /* "netCDF4/_netCDF4.pyx":857
  * from numpy import ma
  * from numpy import __version__ as _npversion
  * if _npversion.split('.')[0] < '1':             # <<<<<<<<<<<<<<
  *     raise ImportError('requires numpy version 1.0rc1 or later')
  * import_array()
  */
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_npversion); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_npversion); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__119, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__121, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_kp_s_1, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyObject_RichCompare(__pyx_t_2, __pyx_kp_s_1, Py_LT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   if (__pyx_t_15) {
 
-    /* "netCDF4/_netCDF4.pyx":840
+    /* "netCDF4/_netCDF4.pyx":858
  * from numpy import __version__ as _npversion
  * if _npversion.split('.')[0] < '1':
  *     raise ImportError('requires numpy version 1.0rc1 or later')             # <<<<<<<<<<<<<<
  * import_array()
  * include "netCDF4.pxi"
  */
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__120, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__122, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_Raise(__pyx_t_7, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netCDF4/_netCDF4.pyx":841
+  /* "netCDF4/_netCDF4.pyx":859
  * if _npversion.split('.')[0] < '1':
  *     raise ImportError('requires numpy version 1.0rc1 or later')
  * import_array()             # <<<<<<<<<<<<<<
@@ -64921,38 +65289,38 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
  */
   import_array();
 
-  /* "netCDF4/_netCDF4.pyx":847
+  /* "netCDF4/_netCDF4.pyx":865
  * # check for required version of netcdf-4 and hdf5.
  * 
  * def _gethdf5libversion():             # <<<<<<<<<<<<<<
  *     majorvers = H5_VERS_MAJOR
  *     minorvers = H5_VERS_MINOR
  */
-  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_1_gethdf5libversion, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_1_gethdf5libversion, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gethdf5libversion, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gethdf5libversion, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":857
+  /* "netCDF4/_netCDF4.pyx":875
  *         return '%d.%d.%d-%s' % (majorvers,minorvers,releasevers,patchstring)
  * 
  * def getlibversion():             # <<<<<<<<<<<<<<
  *     """
- * getlibversion()
+ * **`getlibversion()`**
  */
-  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_3getlibversion, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_3getlibversion, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getlibversion, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 857; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getlibversion, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":866
+  /* "netCDF4/_netCDF4.pyx":884
  *     return (<char *>nc_inq_libvers()).decode('ascii')
  * 
  * __netcdf4libversion__ = getlibversion().split()[0]             # <<<<<<<<<<<<<<
  * __hdf5libversion__ = _gethdf5libversion()
  * __has_rename_grp__ = HAS_RENAME_GRP
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_getlibversion); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_getlibversion); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_13 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
@@ -64965,14 +65333,14 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     }
   }
   if (__pyx_t_13) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_13); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -64986,27 +65354,27 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_netcdf4libversion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_netcdf4libversion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":867
+  /* "netCDF4/_netCDF4.pyx":885
  * 
  * __netcdf4libversion__ = getlibversion().split()[0]
  * __hdf5libversion__ = _gethdf5libversion()             # <<<<<<<<<<<<<<
  * __has_rename_grp__ = HAS_RENAME_GRP
  * __has_nc_inq_path__ = HAS_NC_INQ_PATH
  */
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_gethdf5libversion); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_gethdf5libversion); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_2 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
@@ -65019,440 +65387,440 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     }
   }
   if (__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else {
-    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_hdf5libversion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_hdf5libversion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":868
+  /* "netCDF4/_netCDF4.pyx":886
  * __netcdf4libversion__ = getlibversion().split()[0]
  * __hdf5libversion__ = _gethdf5libversion()
  * __has_rename_grp__ = HAS_RENAME_GRP             # <<<<<<<<<<<<<<
  * __has_nc_inq_path__ = HAS_NC_INQ_PATH
  * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_has_rename_grp, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_has_rename_grp, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":869
+  /* "netCDF4/_netCDF4.pyx":887
  * __hdf5libversion__ = _gethdf5libversion()
  * __has_rename_grp__ = HAS_RENAME_GRP
  * __has_nc_inq_path__ = HAS_NC_INQ_PATH             # <<<<<<<<<<<<<<
  * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_has_nc_inq_path, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_has_nc_inq_path, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":870
+  /* "netCDF4/_netCDF4.pyx":888
  * __has_rename_grp__ = HAS_RENAME_GRP
  * __has_nc_inq_path__ = HAS_NC_INQ_PATH
  * __has_nc_inq_format_extended__ = HAS_NC_INQ_FORMAT_EXTENDED             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_has_nc_inq_format_extended, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_has_nc_inq_format_extended, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":875
+  /* "netCDF4/_netCDF4.pyx":893
  * # numpy data type <--> netCDF 4 data type mapping.
  * 
  * _nptonctype  = {'U1' : NC_CHAR,             # <<<<<<<<<<<<<<
  *                 'S1' : NC_CHAR,
  *                 'i1' : NC_BYTE,
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_CHAR); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_CHAR); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_U1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_U1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":876
+  /* "netCDF4/_netCDF4.pyx":894
  * 
  * _nptonctype  = {'U1' : NC_CHAR,
  *                 'S1' : NC_CHAR,             # <<<<<<<<<<<<<<
  *                 'i1' : NC_BYTE,
  *                 'u1' : NC_UBYTE,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_CHAR); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_CHAR); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_S1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_S1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":877
+  /* "netCDF4/_netCDF4.pyx":895
  * _nptonctype  = {'U1' : NC_CHAR,
  *                 'S1' : NC_CHAR,
  *                 'i1' : NC_BYTE,             # <<<<<<<<<<<<<<
  *                 'u1' : NC_UBYTE,
  *                 'i2' : NC_SHORT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_BYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_BYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":878
+  /* "netCDF4/_netCDF4.pyx":896
  *                 'S1' : NC_CHAR,
  *                 'i1' : NC_BYTE,
  *                 'u1' : NC_UBYTE,             # <<<<<<<<<<<<<<
  *                 'i2' : NC_SHORT,
  *                 'u2' : NC_USHORT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_UBYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_UBYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":879
+  /* "netCDF4/_netCDF4.pyx":897
  *                 'i1' : NC_BYTE,
  *                 'u1' : NC_UBYTE,
  *                 'i2' : NC_SHORT,             # <<<<<<<<<<<<<<
  *                 'u2' : NC_USHORT,
  *                 'i4' : NC_INT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_SHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_SHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":880
+  /* "netCDF4/_netCDF4.pyx":898
  *                 'u1' : NC_UBYTE,
  *                 'i2' : NC_SHORT,
  *                 'u2' : NC_USHORT,             # <<<<<<<<<<<<<<
  *                 'i4' : NC_INT,
  *                 'u4' : NC_UINT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_USHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_USHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":881
+  /* "netCDF4/_netCDF4.pyx":899
  *                 'i2' : NC_SHORT,
  *                 'u2' : NC_USHORT,
  *                 'i4' : NC_INT,             # <<<<<<<<<<<<<<
  *                 'u4' : NC_UINT,
  *                 'i8' : NC_INT64,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_INT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_INT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":882
+  /* "netCDF4/_netCDF4.pyx":900
  *                 'u2' : NC_USHORT,
  *                 'i4' : NC_INT,
  *                 'u4' : NC_UINT,             # <<<<<<<<<<<<<<
  *                 'i8' : NC_INT64,
  *                 'u8' : NC_UINT64,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_UINT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_UINT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":883
+  /* "netCDF4/_netCDF4.pyx":901
  *                 'i4' : NC_INT,
  *                 'u4' : NC_UINT,
  *                 'i8' : NC_INT64,             # <<<<<<<<<<<<<<
  *                 'u8' : NC_UINT64,
  *                 'f4' : NC_FLOAT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_INT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_INT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":884
+  /* "netCDF4/_netCDF4.pyx":902
  *                 'u4' : NC_UINT,
  *                 'i8' : NC_INT64,
  *                 'u8' : NC_UINT64,             # <<<<<<<<<<<<<<
  *                 'f4' : NC_FLOAT,
  *                 'f8' : NC_DOUBLE}
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_UINT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_UINT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":885
+  /* "netCDF4/_netCDF4.pyx":903
  *                 'i8' : NC_INT64,
  *                 'u8' : NC_UINT64,
  *                 'f4' : NC_FLOAT,             # <<<<<<<<<<<<<<
  *                 'f8' : NC_DOUBLE}
  * 
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FLOAT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FLOAT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":886
+  /* "netCDF4/_netCDF4.pyx":904
  *                 'u8' : NC_UINT64,
  *                 'f4' : NC_FLOAT,
  *                 'f8' : NC_DOUBLE}             # <<<<<<<<<<<<<<
  * 
  * default_fillvals = {#'S1':NC_FILL_CHAR,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_DOUBLE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_DOUBLE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_nptonctype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_nptonctype, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":888
+  /* "netCDF4/_netCDF4.pyx":906
  *                 'f8' : NC_DOUBLE}
  * 
  * default_fillvals = {#'S1':NC_FILL_CHAR,             # <<<<<<<<<<<<<<
  *                      'U1':'\0',
  *                      'S1':'\0',
  */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_U1, __pyx_kp_s_) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_S1, __pyx_kp_s_) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_U1, __pyx_kp_s_) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_S1, __pyx_kp_s_) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":891
+  /* "netCDF4/_netCDF4.pyx":909
  *                      'U1':'\0',
  *                      'S1':'\0',
  *                      'i1':NC_FILL_BYTE,             # <<<<<<<<<<<<<<
  *                      'u1':NC_FILL_UBYTE,
  *                      'i2':NC_FILL_SHORT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_BYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_BYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":892
+  /* "netCDF4/_netCDF4.pyx":910
  *                      'S1':'\0',
  *                      'i1':NC_FILL_BYTE,
  *                      'u1':NC_FILL_UBYTE,             # <<<<<<<<<<<<<<
  *                      'i2':NC_FILL_SHORT,
  *                      'u2':NC_FILL_USHORT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_UBYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_UBYTE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u1, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":893
+  /* "netCDF4/_netCDF4.pyx":911
  *                      'i1':NC_FILL_BYTE,
  *                      'u1':NC_FILL_UBYTE,
  *                      'i2':NC_FILL_SHORT,             # <<<<<<<<<<<<<<
  *                      'u2':NC_FILL_USHORT,
  *                      'i4':NC_FILL_INT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_SHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_SHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":894
+  /* "netCDF4/_netCDF4.pyx":912
  *                      'u1':NC_FILL_UBYTE,
  *                      'i2':NC_FILL_SHORT,
  *                      'u2':NC_FILL_USHORT,             # <<<<<<<<<<<<<<
  *                      'i4':NC_FILL_INT,
  *                      'u4':NC_FILL_UINT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_USHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_int(NC_FILL_USHORT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u2, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":895
+  /* "netCDF4/_netCDF4.pyx":913
  *                      'i2':NC_FILL_SHORT,
  *                      'u2':NC_FILL_USHORT,
  *                      'i4':NC_FILL_INT,             # <<<<<<<<<<<<<<
  *                      'u4':NC_FILL_UINT,
  *                      'i8':NC_FILL_INT64,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_long(NC_FILL_INT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_long(NC_FILL_INT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":896
+  /* "netCDF4/_netCDF4.pyx":914
  *                      'u2':NC_FILL_USHORT,
  *                      'i4':NC_FILL_INT,
  *                      'u4':NC_FILL_UINT,             # <<<<<<<<<<<<<<
  *                      'i8':NC_FILL_INT64,
  *                      'u8':NC_FILL_UINT64,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_unsigned_long(NC_FILL_UINT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_unsigned_long(NC_FILL_UINT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":897
+  /* "netCDF4/_netCDF4.pyx":915
  *                      'i4':NC_FILL_INT,
  *                      'u4':NC_FILL_UINT,
  *                      'i8':NC_FILL_INT64,             # <<<<<<<<<<<<<<
  *                      'u8':NC_FILL_UINT64,
  *                      'f4':NC_FILL_FLOAT,
  */
-  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(NC_FILL_INT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_PY_LONG_LONG(NC_FILL_INT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_i8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":898
+  /* "netCDF4/_netCDF4.pyx":916
  *                      'u4':NC_FILL_UINT,
  *                      'i8':NC_FILL_INT64,
  *                      'u8':NC_FILL_UINT64,             # <<<<<<<<<<<<<<
  *                      'f4':NC_FILL_FLOAT,
  *                      'f8':NC_FILL_DOUBLE}
  */
-  __pyx_t_7 = __Pyx_PyInt_From_unsigned_PY_LONG_LONG(NC_FILL_UINT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyInt_From_unsigned_PY_LONG_LONG(NC_FILL_UINT64); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_u8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":899
+  /* "netCDF4/_netCDF4.pyx":917
  *                      'i8':NC_FILL_INT64,
  *                      'u8':NC_FILL_UINT64,
  *                      'f4':NC_FILL_FLOAT,             # <<<<<<<<<<<<<<
  *                      'f8':NC_FILL_DOUBLE}
  * 
  */
-  __pyx_t_7 = PyFloat_FromDouble(NC_FILL_FLOAT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyFloat_FromDouble(NC_FILL_FLOAT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f4, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":900
+  /* "netCDF4/_netCDF4.pyx":918
  *                      'u8':NC_FILL_UINT64,
  *                      'f4':NC_FILL_FLOAT,
  *                      'f8':NC_FILL_DOUBLE}             # <<<<<<<<<<<<<<
  * 
  * is_native_little = numpy.dtype('<f4').byteorder == '='
  */
-  __pyx_t_7 = PyFloat_FromDouble(NC_FILL_DOUBLE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyFloat_FromDouble(NC_FILL_DOUBLE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_f8, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_default_fillvals, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_default_fillvals, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":902
+  /* "netCDF4/_netCDF4.pyx":920
  *                      'f8':NC_FILL_DOUBLE}
  * 
  * is_native_little = numpy.dtype('<f4').byteorder == '='             # <<<<<<<<<<<<<<
  * is_native_big = numpy.dtype('>f4').byteorder == '='
  * 
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__124, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__126, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_kp_s__33, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_kp_s__33, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_native_little, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_native_little, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":903
+  /* "netCDF4/_netCDF4.pyx":921
  * 
  * is_native_little = numpy.dtype('<f4').byteorder == '='
  * is_native_big = numpy.dtype('>f4').byteorder == '='             # <<<<<<<<<<<<<<
  * 
  * # hard code this here, instead of importing from netcdf.h
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numpy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dtype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__125, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__127, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_kp_s__33, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_t_7, __pyx_kp_s__33, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_native_big, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_native_big, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":907
+  /* "netCDF4/_netCDF4.pyx":925
  * # hard code this here, instead of importing from netcdf.h
  * # so it will compile with versions <= 4.2.
  * NC_DISKLESS = 0x0008             # <<<<<<<<<<<<<<
  * # encoding used to convert strings to bytes when writing text data
  * # to the netcdf file, and for converting bytes to strings when reading
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NC_DISKLESS, __pyx_int_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NC_DISKLESS, __pyx_int_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":911
+  /* "netCDF4/_netCDF4.pyx":929
  * # to the netcdf file, and for converting bytes to strings when reading
  * # from the netcdf file.
  * default_encoding = 'utf-8'             # <<<<<<<<<<<<<<
  * # unicode decode/encode error handling.  Replace bad chars with "?"
  * # can be set to 'strict' or 'ignore'.
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_default_encoding, __pyx_kp_s_utf_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_default_encoding, __pyx_kp_s_utf_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":914
+  /* "netCDF4/_netCDF4.pyx":932
  * # unicode decode/encode error handling.  Replace bad chars with "?"
  * # can be set to 'strict' or 'ignore'.
  * unicode_error = 'replace'             # <<<<<<<<<<<<<<
  * python3 = sys.version_info[0] > 2
  * 
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_unicode_error, __pyx_n_s_replace) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_unicode_error, __pyx_n_s_replace) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netCDF4/_netCDF4.pyx":915
+  /* "netCDF4/_netCDF4.pyx":933
  * # can be set to 'strict' or 'ignore'.
  * unicode_error = 'replace'
  * python3 = sys.version_info[0] > 2             # <<<<<<<<<<<<<<
  * 
  * _nctonptype = {}
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_version_info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_version_info); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_int_2, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_int_2, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_python3, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_python3, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":917
+  /* "netCDF4/_netCDF4.pyx":935
  * python3 = sys.version_info[0] > 2
  * 
  * _nctonptype = {}             # <<<<<<<<<<<<<<
  * for _key,_value in _nptonctype.items():
  *     _nctonptype[_value] = _key
  */
-  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_nctonptype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_nctonptype, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":918
+  /* "netCDF4/_netCDF4.pyx":936
  * 
  * _nctonptype = {}
  * for _key,_value in _nptonctype.items():             # <<<<<<<<<<<<<<
  *     _nctonptype[_value] = _key
  * _supportedtypes = _nptonctype.keys()
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = NULL;
@@ -65466,10 +65834,10 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -65477,9 +65845,9 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     __pyx_t_2 = __pyx_t_7; __Pyx_INCREF(__pyx_t_2); __pyx_t_16 = 0;
     __pyx_t_17 = NULL;
   } else {
-    __pyx_t_16 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_16 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_17 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_17 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   for (;;) {
@@ -65487,16 +65855,16 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_16 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_16); __Pyx_INCREF(__pyx_t_7); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_16); __Pyx_INCREF(__pyx_t_7); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_16 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_16); __Pyx_INCREF(__pyx_t_7); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_16); __Pyx_INCREF(__pyx_t_7); __pyx_t_16++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_16); __pyx_t_16++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -65505,7 +65873,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -65521,7 +65889,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -65534,15 +65902,15 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
       __Pyx_INCREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_t_13);
       #else
-      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
       #endif
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_18 = Py_TYPE(__pyx_t_11)->tp_iternext;
@@ -65550,7 +65918,7 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
       __Pyx_GOTREF(__pyx_t_1);
       index = 1; __pyx_t_13 = __pyx_t_18(__pyx_t_11); if (unlikely(!__pyx_t_13)) goto __pyx_L33_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_13);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_11), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_18 = NULL;
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       goto __pyx_L34_unpacking_done;
@@ -65558,33 +65926,33 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __pyx_t_18 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L34_unpacking_done:;
     }
-    if (PyDict_SetItem(__pyx_d, __pyx_n_s_key, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_d, __pyx_n_s_key, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (PyDict_SetItem(__pyx_d, __pyx_n_s_value_2, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (PyDict_SetItem(__pyx_d, __pyx_n_s_value_2, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":919
+    /* "netCDF4/_netCDF4.pyx":937
  * _nctonptype = {}
  * for _key,_value in _nptonctype.items():
  *     _nctonptype[_value] = _key             # <<<<<<<<<<<<<<
  * _supportedtypes = _nptonctype.keys()
  * # make sure NC_CHAR points to S1
  */
-    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_key); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_key); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
-    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_value_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_value_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
-    if (unlikely(PyObject_SetItem(__pyx_t_13, __pyx_t_1, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (unlikely(PyObject_SetItem(__pyx_t_13, __pyx_t_1, __pyx_t_7) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "netCDF4/_netCDF4.pyx":918
+    /* "netCDF4/_netCDF4.pyx":936
  * 
  * _nctonptype = {}
  * for _key,_value in _nptonctype.items():             # <<<<<<<<<<<<<<
@@ -65594,16 +65962,16 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":920
+  /* "netCDF4/_netCDF4.pyx":938
  * for _key,_value in _nptonctype.items():
  *     _nctonptype[_value] = _key
  * _supportedtypes = _nptonctype.keys()             # <<<<<<<<<<<<<<
  * # make sure NC_CHAR points to S1
  * _nctonptype[NC_CHAR]='S1'
  */
-  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_nptonctype); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_t_7 = NULL;
@@ -65617,48 +65985,48 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
     }
   }
   if (__pyx_t_7) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_supportedtypes, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_supportedtypes, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":922
+  /* "netCDF4/_netCDF4.pyx":940
  * _supportedtypes = _nptonctype.keys()
  * # make sure NC_CHAR points to S1
  * _nctonptype[NC_CHAR]='S1'             # <<<<<<<<<<<<<<
  * 
  * # internal C functions.
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_nctonptype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (unlikely(__Pyx_SetItemInt(__pyx_t_2, NC_CHAR, __pyx_n_s_S1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(__Pyx_SetItemInt(__pyx_t_2, NC_CHAR, __pyx_n_s_S1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1011
+  /* "netCDF4/_netCDF4.pyx":1029
  *             return value_arr
  * 
  * def _set_default_format(object format='NETCDF4'):             # <<<<<<<<<<<<<<
  *     # Private function to set the netCDF file format
  *     if format == 'NETCDF4':
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_5_set_default_format, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_5_set_default_format, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_format, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_format, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":1348
+  /* "netCDF4/_netCDF4.pyx":1369
  * 
  * _private_atts =\
  * ['_grpid','_grp','_varid','groups','dimensions','variables','dtype','data_model','disk_format',             # <<<<<<<<<<<<<<
  *  '_nunlimdim','path','parent','ndim','mask','scale','cmptypes','vltypes','_isprimitive',
- *  'file_format','_isvlen','_iscompound','_cmptype','_vltype','keepweakref','name','__orthogoral_indexing__']
+ *  'file_format','_isvlen','_iscompound','_cmptype','_vltype','name','__orthogoral_indexing__','keepweakref']
  */
-  __pyx_t_2 = PyList_New(26); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(26); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_grpid);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_grpid);
@@ -65684,9 +66052,9 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   __Pyx_INCREF(__pyx_n_s_data_model);
   PyList_SET_ITEM(__pyx_t_2, 7, __pyx_n_s_data_model);
   __Pyx_GIVEREF(__pyx_n_s_data_model);
-  __Pyx_INCREF(__pyx_n_s_disk_format_2);
-  PyList_SET_ITEM(__pyx_t_2, 8, __pyx_n_s_disk_format_2);
-  __Pyx_GIVEREF(__pyx_n_s_disk_format_2);
+  __Pyx_INCREF(__pyx_n_s_disk_format);
+  PyList_SET_ITEM(__pyx_t_2, 8, __pyx_n_s_disk_format);
+  __Pyx_GIVEREF(__pyx_n_s_disk_format);
   __Pyx_INCREF(__pyx_n_s_nunlimdim);
   PyList_SET_ITEM(__pyx_t_2, 9, __pyx_n_s_nunlimdim);
   __Pyx_GIVEREF(__pyx_n_s_nunlimdim);
@@ -65729,26 +66097,374 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   __Pyx_INCREF(__pyx_n_s_vltype);
   PyList_SET_ITEM(__pyx_t_2, 22, __pyx_n_s_vltype);
   __Pyx_GIVEREF(__pyx_n_s_vltype);
-  __Pyx_INCREF(__pyx_n_s_keepweakref);
-  PyList_SET_ITEM(__pyx_t_2, 23, __pyx_n_s_keepweakref);
-  __Pyx_GIVEREF(__pyx_n_s_keepweakref);
   __Pyx_INCREF(__pyx_n_s_name);
-  PyList_SET_ITEM(__pyx_t_2, 24, __pyx_n_s_name);
+  PyList_SET_ITEM(__pyx_t_2, 23, __pyx_n_s_name);
   __Pyx_GIVEREF(__pyx_n_s_name);
   __Pyx_INCREF(__pyx_n_s_orthogoral_indexing);
-  PyList_SET_ITEM(__pyx_t_2, 25, __pyx_n_s_orthogoral_indexing);
+  PyList_SET_ITEM(__pyx_t_2, 24, __pyx_n_s_orthogoral_indexing);
   __Pyx_GIVEREF(__pyx_n_s_orthogoral_indexing);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_private_atts, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_n_s_keepweakref);
+  PyList_SET_ITEM(__pyx_t_2, 25, __pyx_n_s_keepweakref);
+  __Pyx_GIVEREF(__pyx_n_s_keepweakref);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_private_atts, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1372
+ *  '_nunlimdim','path','parent','ndim','mask','scale','cmptypes','vltypes','_isprimitive',
+ *  'file_format','_isvlen','_iscompound','_cmptype','_vltype','name','__orthogoral_indexing__','keepweakref']
+ * __pdoc__ = {}             # <<<<<<<<<<<<<<
+ * 
+ * cdef class Dataset:
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pdoc, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1444
+ *     keepweakref
+ *     # Docstrings for class variables (used by pdoc).
+ *     __pdoc__['Dataset.dimensions']=\             # <<<<<<<<<<<<<<
+ *     """The `dimensions` dictionary maps the names of
+ *     dimensions defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_dimensions, __pyx_kp_s_The_dimensions_dictionary_maps_t) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1448
+ *     dimensions defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+ *     `netCDF4.Dimension` class."""
+ *     __pdoc__['Dataset.variables']=\             # <<<<<<<<<<<<<<
+ *     """The `variables` dictionary maps the names of variables
+ *     defined for this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Variable`
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_variables, __pyx_kp_s_The_variables_dictionary_maps_th) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1452
+ *     defined for this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Variable`
+ *     class."""
+ *     __pdoc__['Dataset.groups']=\             # <<<<<<<<<<<<<<
+ *     """The groups dictionary maps the names of groups created for
+ *     this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Group` class (the
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_groups, __pyx_kp_s_The_groups_dictionary_maps_the_n) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1457
+ *     `netCDF4.Dataset` class is simply a special case of the `netCDF4.Group` class which
+ *     describes the root group in the netCDF4 file)."""
+ *     __pdoc__['Dataset.cmptypes']=\             # <<<<<<<<<<<<<<
+ *     """The `cmptypes` dictionary maps the names of
+ *     compound types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_cmptypes, __pyx_kp_s_The_cmptypes_dictionary_maps_the) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1461
+ *     compound types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+ *     `netCDF4.CompoundType` class."""
+ *     __pdoc__['Dataset.vltypes']=\             # <<<<<<<<<<<<<<
+ *     """The `vltypes` dictionary maps the names of
+ *     variable-length types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_vltypes, __pyx_kp_s_The_vltypes_dictionary_maps_the) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1465
+ *     variable-length types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+ *     `netCDF4.VLType` class."""
+ *     __pdoc__['Dataset.data_model']=\             # <<<<<<<<<<<<<<
+ *     """`data_model` describes the netCDF
+ *     data model version, one of `NETCDF3_CLASSIC`, `NETCDF4`,
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_data_model, __pyx_kp_s_data_model_describes_the_netCDF) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1469
+ *     data model version, one of `NETCDF3_CLASSIC`, `NETCDF4`,
+ *     `NETCDF4_CLASSIC` or `NETCDF3_64BIT`."""
+ *     __pdoc__['Dataset.file_format']=\             # <<<<<<<<<<<<<<
+ *     """same as `data_model`, retained for backwards compatibility."""
+ *     __pdoc__['Dataset.disk_format']=\
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_file_format, __pyx_kp_s_same_as_data_model_retained_for) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1471
+ *     __pdoc__['Dataset.file_format']=\
+ *     """same as `data_model`, retained for backwards compatibility."""
+ *     __pdoc__['Dataset.disk_format']=\             # <<<<<<<<<<<<<<
+ *     """`disk_format` describes the underlying
+ *     file format, one of `NETCDF3`, `HDF5`, `HDF4`,
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_disk_format, __pyx_kp_s_disk_format_describes_the_under) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1477
+ *     netcdf C library version >= 4.3.1, otherwise will always return
+ *     `UNDEFINED`."""
+ *     __pdoc__['Dataset.parent']=\             # <<<<<<<<<<<<<<
+ *     """`parent` is a reference to the parent
+ *     `netCDF4.Group` instance. `None` for a the root group or `netCDF4.Dataset` instance"""
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_parent, __pyx_kp_s_parent_is_a_reference_to_the_pa) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1480
+ *     """`parent` is a reference to the parent
+ *     `netCDF4.Group` instance. `None` for a the root group or `netCDF4.Dataset` instance"""
+ *     __pdoc__['Dataset.path']=\             # <<<<<<<<<<<<<<
+ *     """`path` shows the location of the `netCDF4.Group` in
+ *     the `netCDF4.Dataset` in a unix directory format (the names of groups in the
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_path, __pyx_kp_s_path_shows_the_location_of_the) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":1485
+ *     hierarchy separated by backslashes). A `netCDF4.Dataset` instance is the root
+ *     group, so the path is simply `'/'`."""
+ *     __pdoc__['Dataset.keepweakref']=\             # <<<<<<<<<<<<<<
+ *     """If `True`, child Dimension and Variables objects only keep weak references to
+ *     the parent Dataset or Group."""
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dataset_keepweakref, __pyx_kp_s_If_True_child_Dimension_and_Vari) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2274
+ * """
+ *     # Docstrings for class variables (used by pdoc).
+ *     __pdoc__['Group.name']=\             # <<<<<<<<<<<<<<
+ *     """A string describing the name of the `netCDF4.Group`."""
+ *     def __init__(self, parent, name, **kwargs):
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Group_name, __pyx_kp_s_A_string_describing_the_name_of) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2369
+ *     cdef public _data_model, _name, _grp
+ *     # Docstrings for class variables (used by pdoc).
+ *     __pdoc__['Dimension.name']=\             # <<<<<<<<<<<<<<
+ *     """A string describing the name of the `netCDF4.Dimension` - used when creating a
+ *     `netCDF4.Variable` instance with `netCDF4.Dataset.createVariable`."""
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Dimension_name, __pyx_kp_s_A_string_describing_the_name_of_2) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2555
+ *     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__
+ *     # Docstrings for class variables (used by pdoc).
+ *     __pdoc__['Variable.dimensions'] = \             # <<<<<<<<<<<<<<
+ *     """A tuple containing the names of the
+ *     dimensions associated with this variable."""
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_dimensions, __pyx_kp_s_A_tuple_containing_the_names_of) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2558
+ *     """A tuple containing the names of the
+ *     dimensions associated with this variable."""
+ *     __pdoc__['Variable.dtype'] = \             # <<<<<<<<<<<<<<
+ *     """A numpy dtype object describing the
+ *     variable's data type."""
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_dtype, __pyx_kp_s_A_numpy_dtype_object_describing) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2561
+ *     """A numpy dtype object describing the
+ *     variable's data type."""
+ *     __pdoc__['Variable.ndim'] = \             # <<<<<<<<<<<<<<
+ *     """The number of variable dimensions."""
+ *     __pdoc__['Variable.scale'] = \
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_ndim, __pyx_kp_s_The_number_of_variable_dimension) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2563
+ *     __pdoc__['Variable.ndim'] = \
+ *     """The number of variable dimensions."""
+ *     __pdoc__['Variable.scale'] = \             # <<<<<<<<<<<<<<
+ *     """if True, `scale_factor` and `add_offset` are
+ *     applied. Default is `True`, can be reset using `netCDF4.Variable.set_auto_scale` and
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_scale, __pyx_kp_s_if_True_scale_factor_and_add_off) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2567
+ *     applied. Default is `True`, can be reset using `netCDF4.Variable.set_auto_scale` and
+ *     `netCDF4.Variable.set_auto_maskandscale` methods."""
+ *     __pdoc__['Variable.mask'] = \             # <<<<<<<<<<<<<<
+ *     """If True, data is automatically converted to/from masked
+ *     arrays when missing values or fill values are present. Default is `True`, can be
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_mask, __pyx_kp_s_If_True_data_is_automatically_co) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2572
+ *     reset using `netCDF4.Variable.set_auto_mask` and `netCDF4.Variable.set_auto_maskandscale`
+ *     methods."""
+ *     __pdoc__['Variable.least_significant_digit'] = \             # <<<<<<<<<<<<<<
+ *     """Describes the power of ten of the
+ *     smallest decimal place in the data the contains a reliable value.  Data is
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_least_significant_digit, __pyx_kp_s_Describes_the_power_of_ten_of_th) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4316
+  /* "netCDF4/_netCDF4.pyx":2577
+ *     truncated to this decimal place when it is assigned to the `netCDF4.Variable`
+ *     instance. If `None`, the data is not truncated."""
+ *     __pdoc__['Variable.__orthogonal_indexing__'] = \             # <<<<<<<<<<<<<<
+ *     """Always `True`.  Indicates to client code
+ *     that the object supports 'orthogonal indexing', which means that slices
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable___orthogonal_indexing, __pyx_kp_s_Always_True_Indicates_to_client) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2582
+ *     that are 1d arrays or lists slice along each dimension independently.  This
+ *     behavior is similar to Fortran or Matlab, but different than numpy."""
+ *     __pdoc__['Variable.datatype'] = \             # <<<<<<<<<<<<<<
+ *      """numpy data type (for primitive data types) or VLType/CompoundType
+ *      instance (for compound or vlen data types)."""
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_datatype, __pyx_kp_s_numpy_data_type_for_primitive_da_2) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2585
+ *      """numpy data type (for primitive data types) or VLType/CompoundType
+ *      instance (for compound or vlen data types)."""
+ *     __pdoc__['Variable.name'] = \             # <<<<<<<<<<<<<<
+ *     """String name."""
+ *     __pdoc__['Variable.shape'] = \
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_name, __pyx_kp_s_String_name) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2587
+ *     __pdoc__['Variable.name'] = \
+ *     """String name."""
+ *     __pdoc__['Variable.shape'] = \             # <<<<<<<<<<<<<<
+ *     """A tuple with the current shape (length of all dimensions)."""
+ *     __pdoc__['Variable.size'] = \
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_shape, __pyx_kp_s_A_tuple_with_the_current_shape_l) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":2589
+ *     __pdoc__['Variable.shape'] = \
+ *     """A tuple with the current shape (length of all dimensions)."""
+ *     __pdoc__['Variable.size'] = \             # <<<<<<<<<<<<<<
+ *     """The number of stored elements."""
+ * 
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_Variable_size, __pyx_kp_s_The_number_of_stored_elements) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":4084
+ *     cdef public nc_type _nc_type
+ *     cdef public dtype, name
+ *     __pdoc__['CompoundType.name'] = \             # <<<<<<<<<<<<<<
+ *     """String name."""
+ *     __pdoc__['CompoundType.dtype'] = \
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_CompoundType_name, __pyx_kp_s_String_name) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":4086
+ *     __pdoc__['CompoundType.name'] = \
+ *     """String name."""
+ *     __pdoc__['CompoundType.dtype'] = \             # <<<<<<<<<<<<<<
+ *     """A numpy dtype object describing the compound data type."""
+ *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_CompoundType_dtype, __pyx_kp_s_A_numpy_dtype_object_describing_2) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":4313
+ *     cdef public nc_type _nc_type
+ *     cdef public dtype, name
+ *     __pdoc__['VLType.name'] = \             # <<<<<<<<<<<<<<
+ *     """String name."""
+ *     __pdoc__['VLType.dtype'] = \
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_VLType_name, __pyx_kp_s_String_name) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":4315
+ *     __pdoc__['VLType.name'] = \
+ *     """String name."""
+ *     __pdoc__['VLType.dtype'] = \             # <<<<<<<<<<<<<<
+ *     """A numpy dtype object describing the component type for the VLEN."""
+ *     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+ */
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pdoc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_s_VLType_dtype, __pyx_kp_s_A_numpy_dtype_object_describing_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "netCDF4/_netCDF4.pyx":4427
  * # extra utilities (formerly in utils.pyx)
  * #----------------------------------------
  * from datetime import timedelta, datetime, MINYEAR             # <<<<<<<<<<<<<<
  * from netcdftime import _parse_date, microsec_units, millisec_units,\
  *                        sec_units, min_units, hr_units, day_units
  */
-  __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_s_timedelta);
   PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_timedelta);
@@ -65759,31 +66475,31 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   __Pyx_INCREF(__pyx_n_s_MINYEAR);
   PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_MINYEAR);
   __Pyx_GIVEREF(__pyx_n_s_MINYEAR);
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_datetime, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_datetime, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_timedelta); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_timedelta); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_timedelta, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_timedelta, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_datetime, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_datetime, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_MINYEAR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MINYEAR, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MINYEAR, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4317
+  /* "netCDF4/_netCDF4.pyx":4428
  * #----------------------------------------
  * from datetime import timedelta, datetime, MINYEAR
  * from netcdftime import _parse_date, microsec_units, millisec_units,\             # <<<<<<<<<<<<<<
  *                        sec_units, min_units, hr_units, day_units
  * 
  */
-  __pyx_t_1 = PyList_New(7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_parse_date);
   PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_parse_date);
@@ -65806,522 +66522,522 @@ PyMODINIT_FUNC PyInit__netCDF4(void)
   __Pyx_INCREF(__pyx_n_s_day_units);
   PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_s_day_units);
   __Pyx_GIVEREF(__pyx_n_s_day_units);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_netcdftime, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_netcdftime, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_parse_date); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_parse_date); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse_date, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse_date, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_microsec_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_microsec_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_microsec_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_microsec_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_millisec_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_millisec_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_millisec_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_millisec_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sec_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sec_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sec_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sec_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_min_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_min_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_min_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_min_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_hr_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_hr_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_hr_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_hr_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_day_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_day_units); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_day_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_day_units, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4321
+  /* "netCDF4/_netCDF4.pyx":4432
  * 
  * # start of the gregorian calendar
  * gregorian = datetime(1582,10,15)             # <<<<<<<<<<<<<<
  * 
  * def _dateparse(timestr):
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__128, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__130, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gregorian, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gregorian, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4323
+  /* "netCDF4/_netCDF4.pyx":4434
  * gregorian = datetime(1582,10,15)
  * 
  * def _dateparse(timestr):             # <<<<<<<<<<<<<<
  *     """parse a string of the form time-units since yyyy-mm-dd hh:mm:ss,
  *     return a datetime instance"""
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_7_dateparse, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_7_dateparse, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dateparse, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dateparse, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4342
+  /* "netCDF4/_netCDF4.pyx":4453
  *     return basedate
  * 
  * def stringtoarr(string,NUMCHARS,dtype='S'):             # <<<<<<<<<<<<<<
  *     """
- * stringtoarr(a, NUMCHARS,dtype='S')
+ * **`stringtoarr(a, NUMCHARS,dtype='S')`**
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9stringtoarr, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9stringtoarr, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_stringtoarr, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_stringtoarr, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4365
+  /* "netCDF4/_netCDF4.pyx":4476
  *     return arr
  * 
  * def stringtochar(a):             # <<<<<<<<<<<<<<
  *     """
- * stringtochar(a)
+ * **`stringtochar(a)`**
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_11stringtochar, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_11stringtochar, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_stringtochar, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_stringtochar, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4384
+  /* "netCDF4/_netCDF4.pyx":4495
  *     return b
  * 
  * def chartostring(b):             # <<<<<<<<<<<<<<
  *     """
- * chartostring(b)
+ * **`chartostring(b)`**
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_13chartostring, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_13chartostring, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_chartostring, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_chartostring, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4405
+  /* "netCDF4/_netCDF4.pyx":4516
  *     return a
  * 
  * def date2num(dates,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * date2num(dates,units,calendar='standard')
+ * **`date2num(dates,units,calendar='standard')`**
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_15date2num, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_15date2num, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_date2num, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_date2num, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4484
+  /* "netCDF4/_netCDF4.pyx":4595
  *         return cdftime.date2num(dates)
  * 
  * def num2date(times,units,calendar='standard'):             # <<<<<<<<<<<<<<
  *     """
- * num2date(times,units,calendar='standard')
+ * **`num2date(times,units,calendar='standard')`**
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_17num2date, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_17num2date, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_num2date, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_num2date, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4579
+  /* "netCDF4/_netCDF4.pyx":4690
  *         return cdftime.num2date(times)
  * 
  * def date2index(dates, nctime, calendar=None, select='exact'):             # <<<<<<<<<<<<<<
  *     """
- * date2index(dates, nctime, calendar=None, select='exact')
+ * **`date2index(dates, nctime, calendar=None, select='exact')`**
  */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_19date2index, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_19date2index, NULL, __pyx_n_s_netCDF4__netCDF4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_date2index, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_date2index, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4621
+  /* "netCDF4/_netCDF4.pyx":4734
  *         return netcdftime.date2index(dates, nctime, calendar, select)
  * 
  * class MFDataset(Dataset):             # <<<<<<<<<<<<<<
  *     """
- * MFDataset(self, files, check=False, aggdim=None, exclude=[])
+ * Class for reading multi-file netCDF Datasets, making variables
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)));
   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)));
   __Pyx_GIVEREF(((PyObject *)((PyObject*)__pyx_ptype_7netCDF4_8_netCDF4_Dataset)));
-  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_MFDataset, __pyx_n_s_MFDataset, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_kp_s_MFDataset_self_files_check_Fals); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_MFDataset, __pyx_n_s_MFDataset, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_kp_s_Class_for_reading_multi_file_ne); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
 
-  /* "netCDF4/_netCDF4.pyx":4653
+  /* "netCDF4/_netCDF4.pyx":4764
  *     """
  * 
  *     def __init__(self, files, check=False, aggdim=None, exclude=[]):             # <<<<<<<<<<<<<<
  *         """
- * Open a Dataset spanning multiple files, making it look as if it was a
+ *         **`__init__(self, files, check=False, aggdim=None, exclude=[])`**
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_1__init__, 0, __pyx_n_s_MFDataset___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__144)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_1__init__, 0, __pyx_n_s_MFDataset___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_13, sizeof(__pyx_defaults), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_13, sizeof(__pyx_defaults), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_11);
   __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_13)->__pyx_arg_exclude = __pyx_t_11;
   __Pyx_GIVEREF(__pyx_t_11);
   __pyx_t_11 = 0;
   __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_13, __pyx_pf_7netCDF4_8_netCDF4_9MFDataset_12__defaults__);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4830
+  /* "netCDF4/_netCDF4.pyx":4937
  *         self._path = '/'
  * 
  *     def __setattr__(self, name, value):             # <<<<<<<<<<<<<<
  *         """override base class attribute creation"""
  *         self.__dict__[name] = value
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_3__setattr__, 0, __pyx_n_s_MFDataset___setattr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_3__setattr__, 0, __pyx_n_s_MFDataset___setattr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__148)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_setattr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_setattr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4834
+  /* "netCDF4/_netCDF4.pyx":4941
  *         self.__dict__[name] = value
  * 
  *     def __getattribute__(self, name):             # <<<<<<<<<<<<<<
  *         if name in ['variables','dimensions','file_format','groups',\
  *                     'data_model','disk_format','path']:
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__, 0, __pyx_n_s_MFDataset___getattribute, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__148)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_5__getattribute__, 0, __pyx_n_s_MFDataset___getattribute, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__150)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getattribute, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getattribute, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4847
+  /* "netCDF4/_netCDF4.pyx":4954
  *             return Dataset.__getattribute__(self, name)
  * 
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
- *         return self._cdf[0].__dict__.keys()
- * 
+ *         """
+ *         **`ncattrs(self)`**
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_7ncattrs, 0, __pyx_n_s_MFDataset_ncattrs, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__150)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_7ncattrs, 0, __pyx_n_s_MFDataset_ncattrs, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__152)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_ncattrs, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_ncattrs, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4850
+  /* "netCDF4/_netCDF4.pyx":4962
  *         return self._cdf[0].__dict__.keys()
  * 
  *     def close(self):             # <<<<<<<<<<<<<<
- *         for dset in self._cdf:
- *             dset.close()
+ *         """
+ *         **`close(self)`**
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_9close, 0, __pyx_n_s_MFDataset_close, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__152)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_9close, 0, __pyx_n_s_MFDataset_close, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_close, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_close, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4854
+  /* "netCDF4/_netCDF4.pyx":4971
  *             dset.close()
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         ncdump = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions.keys()])
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_11__repr__, 0, __pyx_n_s_MFDataset___repr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9MFDataset_11__repr__, 0, __pyx_n_s_MFDataset___repr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_repr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_repr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4621
+  /* "netCDF4/_netCDF4.pyx":4734
  *         return netcdftime.date2index(dates, nctime, calendar, select)
  * 
  * class MFDataset(Dataset):             # <<<<<<<<<<<<<<
  *     """
- * MFDataset(self, files, check=False, aggdim=None, exclude=[])
+ * Class for reading multi-file netCDF Datasets, making variables
  */
-  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MFDataset, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_MFDataset, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFDataset, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFDataset, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4872
+  /* "netCDF4/_netCDF4.pyx":4989
  *         return ''.join(ncdump)
  * 
  * class _Dimension(object):             # <<<<<<<<<<<<<<
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):
  *         self.dimlens = dimlens
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_builtin_object);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_object);
   __Pyx_GIVEREF(__pyx_builtin_object);
-  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_Dimension, __pyx_n_s_Dimension, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_Dimension, __pyx_n_s_Dimension, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
 
-  /* "netCDF4/_netCDF4.pyx":4873
+  /* "netCDF4/_netCDF4.pyx":4990
  * 
  * class _Dimension(object):
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):             # <<<<<<<<<<<<<<
  *         self.dimlens = dimlens
  *         self.dimtotlen = dimtotlen
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_1__init__, 0, __pyx_n_s_Dimension___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__156)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_1__init__, 0, __pyx_n_s_Dimension___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4877
+  /* "netCDF4/_netCDF4.pyx":4994
  *         self.dimtotlen = dimtotlen
  *         self._name = dimname
  *     def __len__(self):             # <<<<<<<<<<<<<<
  *         return self.dimtotlen
  *     def isunlimited(self):
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_3__len__, 0, __pyx_n_s_Dimension___len, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_3__len__, 0, __pyx_n_s_Dimension___len, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_len, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_len, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4879
+  /* "netCDF4/_netCDF4.pyx":4996
  *     def __len__(self):
  *         return self.dimtotlen
  *     def isunlimited(self):             # <<<<<<<<<<<<<<
  *         return True
  *     def __repr__(self):
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_5isunlimited, 0, __pyx_n_s_Dimension_isunlimited, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_5isunlimited, 0, __pyx_n_s_Dimension_isunlimited, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_isunlimited, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_isunlimited, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4881
+  /* "netCDF4/_netCDF4.pyx":4998
  *     def isunlimited(self):
  *         return True
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         if self.isunlimited():
  *             return repr(type(self))+" (unlimited): name = '%s', size = %s\n" % (self._name,len(self))
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_7__repr__, 0, __pyx_n_s_Dimension___repr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_10_Dimension_7__repr__, 0, __pyx_n_s_Dimension___repr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_repr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_repr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4872
+  /* "netCDF4/_netCDF4.pyx":4989
  *         return ''.join(ncdump)
  * 
  * class _Dimension(object):             # <<<<<<<<<<<<<<
  *     def __init__(self, dimname, dim, dimlens, dimtotlen):
  *         self.dimlens = dimlens
  */
-  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_Dimension, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_Dimension, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Dimension, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Dimension, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4887
+  /* "netCDF4/_netCDF4.pyx":5004
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))
  * 
  * class _Variable(object):             # <<<<<<<<<<<<<<
  *     def __init__(self, dset, varname, var, recdimname):
  *         self.dimensions = var.dimensions
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_builtin_object);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_object);
   __Pyx_GIVEREF(__pyx_builtin_object);
-  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_Variable, __pyx_n_s_Variable, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_Variable, __pyx_n_s_Variable, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
 
-  /* "netCDF4/_netCDF4.pyx":4888
+  /* "netCDF4/_netCDF4.pyx":5005
  * 
  * class _Variable(object):
  *     def __init__(self, dset, varname, var, recdimname):             # <<<<<<<<<<<<<<
  *         self.dimensions = var.dimensions
  *         self._dset = dset
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_1__init__, 0, __pyx_n_s_Variable___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_1__init__, 0, __pyx_n_s_Variable___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__166)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4901
+  /* "netCDF4/_netCDF4.pyx":5018
  *         for name, value in var.__dict__.items():
  *             self.__dict__[name] = value
  *     def typecode(self):             # <<<<<<<<<<<<<<
  *         return self.dtype
  *     def ncattrs(self):
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_3typecode, 0, __pyx_n_s_Variable_typecode, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__166)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_3typecode, 0, __pyx_n_s_Variable_typecode, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_typecode, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_typecode, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4903
+  /* "netCDF4/_netCDF4.pyx":5020
  *     def typecode(self):
  *         return self.dtype
  *     def ncattrs(self):             # <<<<<<<<<<<<<<
  *         return self._mastervar.__dict__.keys()
  *     def __getattr__(self,name):
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_5ncattrs, 0, __pyx_n_s_Variable_ncattrs, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_5ncattrs, 0, __pyx_n_s_Variable_ncattrs, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_ncattrs, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_ncattrs, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4905
+  /* "netCDF4/_netCDF4.pyx":5022
  *     def ncattrs(self):
  *         return self._mastervar.__dict__.keys()
  *     def __getattr__(self,name):             # <<<<<<<<<<<<<<
  *         if name == 'shape': return self._shape()
  *         if name == 'ndim': return len(self._shape())
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_7__getattr__, 0, __pyx_n_s_Variable___getattr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_7__getattr__, 0, __pyx_n_s_Variable___getattr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__172)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getattr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getattr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4912
+  /* "netCDF4/_netCDF4.pyx":5029
  *         except:
  *             raise AttributeError(name)
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         ncdump_var = ['%r\n' % type(self)]
  *         dimnames = tuple([str(dimname) for dimname in self.dimensions])
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_9__repr__, 0, __pyx_n_s_Variable___repr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__172)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_9__repr__, 0, __pyx_n_s_Variable___repr, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__174)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_repr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_repr, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4928
+  /* "netCDF4/_netCDF4.pyx":5045
  *         ncdump_var.append('current size = %s\n' % repr(self.shape))
  *         return ''.join(ncdump_var)
  *     def __len__(self):             # <<<<<<<<<<<<<<
- *         return self._shape()[0]
- *     def _shape(self):
+ *         if not self._shape:
+ *             raise TypeError('len() of unsized object')
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_11__len__, 0, __pyx_n_s_Variable___len, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__174)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_11__len__, 0, __pyx_n_s_Variable___len, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_len, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_len, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4930
- *     def __len__(self):
- *         return self._shape()[0]
+  /* "netCDF4/_netCDF4.pyx":5050
+ *         else:
+ *             return self._shape()[0]
  *     def _shape(self):             # <<<<<<<<<<<<<<
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_13_shape, 0, __pyx_n_s_Variable__shape, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_13_shape, 0, __pyx_n_s_Variable__shape, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__178)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_shape_2, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_shape_2, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4933
+  /* "netCDF4/_netCDF4.pyx":5053
  *         recdimlen = len(self._dset.dimensions[self._recdimname])
  *         return (recdimlen,) + self._mastervar.shape[1:]
  *     def set_auto_maskandscale(self,val):             # <<<<<<<<<<<<<<
  *         for v in self._recVar:
  *             v.set_auto_maskandscale(val)
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_15set_auto_maskandscale, 0, __pyx_n_s_Variable_set_auto_maskandscale, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__178)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_15set_auto_maskandscale, 0, __pyx_n_s_Variable_set_auto_maskandscale, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__180)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_set_auto_maskandscale, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_set_auto_maskandscale, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4936
+  /* "netCDF4/_netCDF4.pyx":5056
  *         for v in self._recVar:
  *             v.set_auto_maskandscale(val)
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
  *         """Get records from a concatenated set of variables."""
  * 
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_17__getitem__, 0, __pyx_n_s_Variable___getitem, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__180)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_9_Variable_17__getitem__, 0, __pyx_n_s_Variable___getitem, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__182)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getitem, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getitem, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":4887
+  /* "netCDF4/_netCDF4.pyx":5004
  *             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))
  * 
  * class _Variable(object):             # <<<<<<<<<<<<<<
  *     def __init__(self, dset, varname, var, recdimname):
  *         self.dimensions = var.dimensions
  */
-  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_Variable, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_Variable, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Variable, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Variable, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5040
+  /* "netCDF4/_netCDF4.pyx":5160
  * 
  * 
  * class MFTime(_Variable):             # <<<<<<<<<<<<<<
  *     """
- * MFTime(self, time, units=None)
+ * Class providing an interface to a MFDataset time Variable by imposing a unique common
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Variable); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_Variable); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_MFTime, __pyx_n_s_MFTime, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_kp_s_MFTime_self_time_units_None_Cla); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_MFTime, __pyx_n_s_MFTime, (PyObject *) NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_kp_s_Class_providing_an_interface_to); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
 
-  /* "netCDF4/_netCDF4.pyx":5076
+  /* "netCDF4/_netCDF4.pyx":5195
  *     """
  * 
  *     def __init__(self, time, units=None):             # <<<<<<<<<<<<<<
  *         """
- * Create a time Variable with units consistent across a multifile
+ *         **`__init__(self, time, units=None)`**
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_6MFTime_1__init__, 0, __pyx_n_s_MFTime___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__182)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_6MFTime_1__init__, 0, __pyx_n_s_MFTime___init, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__184)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_tuple__183);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_tuple__185);
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_init, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5122
+  /* "netCDF4/_netCDF4.pyx":5243
  * 
  * 
  *     def __getitem__(self, elem):             # <<<<<<<<<<<<<<
  *         return self.__time[elem] + self.__delta[elem]
  */
-  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_6MFTime_3__getitem__, 0, __pyx_n_s_MFTime___getitem, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__185)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_CyFunction_NewEx(&__pyx_mdef_7netCDF4_8_netCDF4_6MFTime_3__getitem__, 0, __pyx_n_s_MFTime___getitem, NULL, __pyx_n_s_netCDF4__netCDF4, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getitem, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_7, __pyx_n_s_getitem, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-  /* "netCDF4/_netCDF4.pyx":5040
+  /* "netCDF4/_netCDF4.pyx":5160
  * 
  * 
  * class MFTime(_Variable):             # <<<<<<<<<<<<<<
  *     """
- * MFTime(self, time, units=None)
+ * Class providing an interface to a MFDataset time Variable by imposing a unique common
  */
-  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MFTime, __pyx_t_2, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MFTime, __pyx_t_2, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFTime, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MFTime, __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
diff --git a/netCDF4/_netCDF4.pyx b/netCDF4/_netCDF4.pyx
index 5f92d16..492cadc 100644
--- a/netCDF4/_netCDF4.pyx
+++ b/netCDF4/_netCDF4.pyx
@@ -2,20 +2,20 @@
 Introduction
 ============
 
-Python interface to the netCDF version 4 library.  U{netCDF version 4
-<http://www.unidata.ucar.edu/software/netcdf/netcdf-4>} has many features
+netcdf4-python is a Python interface to the netCDF C library.  
+
+[netCDF version 4](http://www.unidata.ucar.edu/software/netcdf/netcdf-4) has many features
 not found in earlier versions of the library and is implemented on top of
-U{HDF5 <http://www.hdfgroup.org/HDF5>}. This module can read and write
+[HDF5](http://www.hdfgroup.org/HDF5). This module can read and write
 files in both the new netCDF 4 and the old netCDF 3 format, and can create
 files that are readable by HDF5 clients. The API modelled after
-U{Scientific.IO.NetCDF
-<http://dirac.cnrs-orleans.fr/plone/software/scientificpython/>}, and should be
-familiar to users of that module.
+[Scientific.IO.NetCDF](http://dirac.cnrs-orleans.fr/plone/software/scientificpython/),
+and should be familiar to users of that module.
 
 Most new features of netCDF 4 are implemented, such as multiple
 unlimited dimensions, groups and zlib data compression.  All the new
 numeric data types (such as 64 bit and unsigned integer types) are
-implemented. Compound and variable length (vlen) data types are supported,
+implemented. Compound (struct) and variable length (vlen) data types are supported,
 but the enum and opaque data types are not. Mixtures of compound and vlen
 data types (compound types containing vlens, and vlens containing compound
 types) are not supported.
@@ -23,38 +23,39 @@ types) are not supported.
 Download
 ========
 
- - Latest bleeding-edge code from the U{github repository
-   <http://github.com/Unidata/netcdf4-python>}.
- - Latest U{releases <https://pypi.python.org/pypi/netCDF4>}
+ - Latest bleeding-edge code from the 
+   [github repository](http://github.com/Unidata/netcdf4-python).
+ - Latest [releases](https://pypi.python.org/pypi/netCDF4)
    (source code and windows installers).
 
 Requires
 ========
 
  - Python 2.5 or later (python 3 works too).
- - numpy array module U{http://numpy.scipy.org}, version 1.7.0 or later.
- - U{Cython <http://cython.org>}, version 0.19 or later, is optional - if it is installed setup.py will
+ - [numpy array module](http://numpy.scipy.org), version 1.7.0 or later.
+ - [Cython](http://cython.org), version 0.19 or later, is optional - if it is installed setup.py will
    use it to recompile the Cython source code into C, using conditional compilation
    to enable features in the netCDF API that have been added since version 4.1.1.  If
    Cython is not installed, these features (such as the ability to rename Group objects)
    will be disabled to preserve backward compatibility with older versions of the netCDF
    library.
- - For python < 2.7, the ordereddict module U{http://python.org/pypi/ordereddict}.
+ - For python < 2.7, the [ordereddict module](http://python.org/pypi/ordereddict).
  - The HDF5 C library version 1.8.4-patch1 or higher (1.8.8 or higher
- recommended) from U{ftp://ftp.hdfgroup.org/HDF5/current/src}.
- Be sure to build with 'C{--enable-hl --enable-shared}'.
- - U{Libcurl <http://curl.haxx.se/libcurl/>}, if you want
- U{OPeNDAP<http://opendap.org/>} support.
- - U{HDF4 <http://www.hdfgroup.org/products/hdf4/>}, if you want
+ recommended) from [](ftp://ftp.hdfgroup.org/HDF5/current/src).
+ Be sure to build with `--enable-hl --enable-shared`.
+ - [Libcurl](http://curl.haxx.se/libcurl), if you want
+ [OPeNDAP](http://opendap.org) support.
+ - [HDF4](http://www.hdfgroup.org/products/hdf4), if you want
  to be able to read HDF4 "Scientific Dataset" (SD) files.
- - The netCDF-4 C library from U{ftp://ftp.unidata.ucar.edu/pub/netcdf}.
+ - The netCDF-4 C library from 
+ [ftp://ftp.unidata.ucar.edu/pub/netcdf](ftp://ftp.unidata.ucar.edu/pub/netcdf).
  Version 4.1.1 or higher is required (4.2 or higher recommended).
- Be sure to build with 'C{--enable-netcdf-4 --enable-shared}', and set
- C{CPPFLAGS="-I $HDF5_DIR/include"} and C{LDFLAGS="-L $HDF5_DIR/lib"},
- where C{$HDF5_DIR} is the directory where HDF5 was installed.
- If you want U{OPeNDAP<http://opendap.org/>} support, add 'C{--enable-dap}'.
- If you want HDF4 SD support, add 'C{--enable-hdf4}' and add
- the location of the HDF4 headers and library to C{CPPFLAGS} and C{LDFLAGS}.
+ Be sure to build with `--enable-netcdf-4 --enable-shared`, and set
+ `CPPFLAGS="-I $HDF5_DIR/include"` and `LDFLAGS="-L $HDF5_DIR/lib"`,
+ where `$HDF5_DIR` is the directory where HDF5 was installed.
+ If you want [OPeNDAP](http://opendap.org) support, add `--enable-dap`.
+ If you want HDF4 SD support, add `--enable-hdf4` and add
+ the location of the HDF4 headers and library to `$CPPFLAGS` and `$LDFLAGS`.
 
 
 Install
@@ -62,412 +63,428 @@ Install
 
  - install the requisite python modules and C libraries (see above). It's
  easiest if all the C libs are built as shared libraries.
- - By default, the utility C{nc-config}, installed with netcdf 4.1.2 or higher,
+ - By default, the utility `nc-config`, installed with netcdf 4.1.2 or higher,
  will be run used to determine where all the dependencies live.
- - If C{nc-config} is not in your default C{PATH}, rename the
- file C{setup.cfg.template} to C{setup.cfg}, then edit
+ - If `nc-config` is not in your default `$PATH`, rename the
+ file `setup.cfg.template` to `setup.cfg`, then edit
  in a text editor (follow the instructions in the comments).
- In addition to specifying the path to C{nc-config},
+ In addition to specifying the path to `nc-config`,
  you can manually set the paths to all the libraries and their include files
- (in case C{nc-config} does not do the right thing).
- - run C{python setup.py build}, then C{python setup.py install} (as root if
+ (in case `nc-config` does not do the right thing).
+ - run `python setup.py build`, then `python setup.py install` (as root if
  necessary).
- - run the tests in the 'test' directory by running C{python run_all.py}.
+ - run the tests in the 'test' directory by running `python run_all.py`.
 
 Tutorial
 ========
 
-1) Creating/Opening/Closing a netCDF file
------------------------------------------
+1. [Creating/Opening/Closing a netCDF file.](#section1)
+2. [Groups in a netCDF file.](#section2)
+3. [Dimensions in a netCDF file.](#section3)
+4. [Variables in a netCDF file.](#section4)
+5. [Attributes in a netCDF file.](#section5)
+6. [Writing data to and retrieving data from a netCDF variable.](#section6)
+7. [Dealing with time coordinates.](#section7)
+8. [Reading data from a multi-file netCDF dataset.](#section8)
+9. [Efficient compression of netCDF variables.](#section9)
+10. [Beyond homogenous arrays of a fixed type - compound data types.](#section10)
+11. [Variable-length (vlen) data types.](#section11)
+
+
+## <div id='section1'>1) Creating/Opening/Closing a netCDF file.
 
-To create a netCDF file from python, you simply call the L{Dataset}
+To create a netCDF file from python, you simply call the `netCDF4.Dataset`
 constructor. This is also the method used to open an existing netCDF
-file.  If the file is open for write access (C{w, r+} or C{a}), you may
+file.  If the file is open for write access (`mode='w', 'r+'` or `'a'`), you may
 write any type of data including new dimensions, groups, variables and
-attributes.  netCDF files come in several flavors (C{NETCDF3_CLASSIC,
-NETCDF3_64BIT, NETCDF4_CLASSIC}, and C{NETCDF4}). The first two flavors
-are supported by version 3 of the netCDF library. C{NETCDF4_CLASSIC}
+attributes.  netCDF files come in several flavors (`NETCDF3_CLASSIC,
+NETCDF3_64BIT, NETCDF4_CLASSIC`, and `NETCDF4`). The first two flavors
+are supported by version 3 of the netCDF library. `NETCDF4_CLASSIC`
 files use the version 4 disk format (HDF5), but do not use any features
 not found in the version 3 API. They can be read by netCDF 3 clients
 only if they have been relinked against the netCDF 4 library. They can
-also be read by HDF5 clients. C{NETCDF4} files use the version 4 disk
+also be read by HDF5 clients. `NETCDF4` files use the version 4 disk
 format (HDF5) and use the new features of the version 4 API.  The
-C{netCDF4} module can read and write files in any of these formats. When
-creating a new file, the format may be specified using the C{format}
-keyword in the C{Dataset} constructor.  The default format is
-C{NETCDF4}. To see how a given file is formatted, you can examine the
-C{data_model} L{Dataset} attribute.  Closing the netCDF file is
-accomplished via the L{close<Dataset.close>} method of the L{Dataset}
+`netCDF4` module can read and write files in any of these formats. When
+creating a new file, the format may be specified using the `format`
+keyword in the `Dataset` constructor.  The default format is
+`NETCDF4`. To see how a given file is formatted, you can examine the
+`data_model` attribute.  Closing the netCDF file is
+accomplished via the `netCDF4.Dataset.close` method of the `netCDF4.Dataset`
 instance.
 
 Here's an example:
 
->>> from netCDF4 import Dataset
->>> rootgrp = Dataset('test.nc', 'w', format='NETCDF4')
->>> print rootgrp.data_model
-NETCDF4
->>>
->>> rootgrp.close()
+    :::python
+    >>> from netCDF4 import Dataset
+    >>> rootgrp = Dataset("test.nc", "w", format="NETCDF4")
+    >>> print rootgrp.data_model
+    NETCDF4
+    >>> rootgrp.close()
 
-Remote U{OPeNDAP<http://opendap.org>}-hosted datasets can be accessed for
-reading over http if a URL is provided to the L{Dataset} constructor instead of a
+Remote [OPeNDAP](http://opendap.org)-hosted datasets can be accessed for
+reading over http if a URL is provided to the `netCDF4.Dataset` constructor instead of a
 filename.  However, this requires that the netCDF library be built with
-OPenDAP support, via the C{--enable-dap} configure option (added in
+OPenDAP support, via the `--enable-dap` configure option (added in
 version 4.0.1).
 
 
-2) Groups in a netCDF file
---------------------------
+## <div id='section2'>2) Groups in a netCDF file.
 
 netCDF version 4 added support for organizing data in hierarchical
 groups, which are analagous to directories in a filesystem. Groups serve
 as containers for variables, dimensions and attributes, as well as other
-groups.  A C{netCDF4.Dataset} defines creates a special group, called
+groups.  A `netCDF4.Dataset` defines creates a special group, called
 the 'root group', which is similar to the root directory in a unix
-filesystem.  To create L{Group} instances, use the
-L{createGroup<Dataset.createGroup>} method of a L{Dataset} or L{Group}
-instance. L{createGroup<Dataset.createGroup>} takes a single argument, a
-python string containing the name of the new group. The new L{Group}
+filesystem.  To create `netCDF4.Group` instances, use the
+`netCDF4.Dataset.createGroup` method of a `netCDF4.Dataset` or `netCDF4.Group`
+instance. `netCDF4.Dataset.createGroup` takes a single argument, a
+python string containing the name of the new group. The new `netCDF4.Group`
 instances contained within the root group can be accessed by name using
-the C{groups} dictionary attribute of the L{Dataset} instance.  Only
-C{NETCDF4} formatted files support Groups, if you try to create a Group
+the `groups` dictionary attribute of the `netCDF4.Dataset` instance.  Only
+`NETCDF4` formatted files support Groups, if you try to create a Group
 in a netCDF 3 file you will get an error message.
 
->>> rootgrp = Dataset('test.nc', 'a')
->>> fcstgrp = rootgrp.createGroup('forecasts')
->>> analgrp = rootgrp.createGroup('analyses')
->>> print rootgrp.groups
-OrderedDict([('forecasts', <netCDF4.Group object at 0x1b4b7b0>),
-             ('analyses', <netCDF4.Group object at 0x1b4b970>)])
->>>
-
-Groups can exist within groups in a L{Dataset}, just as directories
-exist within directories in a unix filesystem. Each L{Group} instance
-has a C{'groups'} attribute dictionary containing all of the group
-instances contained within that group. Each L{Group} instance also has a
-C{'path'} attribute that contains a simulated unix directory path to
+    :::python
+    >>> rootgrp = Dataset("test.nc", "a")
+    >>> fcstgrp = rootgrp.createGroup("forecasts")
+    >>> analgrp = rootgrp.createGroup("analyses")
+    >>> print rootgrp.groups
+    OrderedDict([("forecasts", 
+                  <netCDF4._netCDF4.Group object at 0x1b4b7b0>),
+                 ("analyses", 
+                  <netCDF4._netCDF4.Group object at 0x1b4b970>)])
+
+Groups can exist within groups in a `netCDF4.Dataset`, just as directories
+exist within directories in a unix filesystem. Each `netCDF4.Group` instance
+has a `groups` attribute dictionary containing all of the group
+instances contained within that group. Each `netCDF4.Group` instance also has a
+`path` attribute that contains a simulated unix directory path to
 that group.  To simplify the creation of nested groups, you can
-use a unix-like path as an argument to L{createGroup<Dataset.createGroup>}.
+use a unix-like path as an argument to `netCDF4.Dataset.createGroup`.
 
->>> fcstgrp1 = rootgrp.createGroup('/forecasts/model1')
->>> fcstgrp2 = rootgrp.createGroup('/forecasts/model2')
+    :::python
+    >>> fcstgrp1 = rootgrp.createGroup("/forecasts/model1")
+    >>> fcstgrp2 = rootgrp.createGroup("/forecasts/model2")
 
 If any of the intermediate elements of the path do not exist, they are created,
-just as with the unix command C{'mkdir -p'}. If you try to create a group
+just as with the unix command `'mkdir -p'`. If you try to create a group
 that already exists, no error will be raised, and the existing group will be 
 returned.
 
 Here's an example that shows how to navigate all the groups in a
-L{Dataset}. The function C{walktree} is a Python generator that is used
-to walk the directory tree. Note that printing the L{Dataset} or L{Group}
+`netCDF4.Dataset`. The function `walktree` is a Python generator that is used
+to walk the directory tree. Note that printing the `netCDF4.Dataset` or `netCDF4.Group`
 object yields summary information about it's contents.
 
->>> def walktree(top):
->>>     values = top.groups.values()
->>>     yield values
->>>     for value in top.groups.values():
->>>         for children in walktree(value):
->>>             yield children
->>> print rootgrp
->>> for children in walktree(rootgrp):
->>>      for child in children:
->>>          print child
-<type 'netCDF4.Dataset'>
-root group (NETCDF4 file format):
-    dimensions:
-    variables:
+    :::python
+    >>> def walktree(top):
+    >>>     values = top.groups.values()
+    >>>     yield values
+    >>>     for value in top.groups.values():
+    >>>         for children in walktree(value):
+    >>>             yield children
+    >>> print rootgrp
+    >>> for children in walktree(rootgrp):
+    >>>      for child in children:
+    >>>          print child
+    <type "netCDF4._netCDF4.Dataset">
+    root group (NETCDF4 file format):
+        dimensions:
+        variables:
         groups: forecasts, analyses
-<type 'netCDF4.Group'>
-group /forecasts:
-    dimensions:
-    variables:
-    groups: model1, model2
-<type 'netCDF4.Group'>
-group /analyses:
-    dimensions:
-    variables:
-    groups:
-<type 'netCDF4.Group'>
-group /forecasts/model1:
-    dimensions:
-    variables:
-    groups:
-<type 'netCDF4.Group'>
-group /forecasts/model2:
-    dimensions:
-    variables:
-    groups:
->>>
-
-3) Dimensions in a netCDF file
-------------------------------
+    <type "netCDF4._netCDF4.Group">
+    group /forecasts:
+        dimensions:
+        variables:
+        groups: model1, model2
+    <type "netCDF4._netCDF4.Group">
+    group /analyses:
+        dimensions:
+        variables:
+        groups:
+    <type "netCDF4._netCDF4.Group">
+    group /forecasts/model1:
+        dimensions:
+        variables:
+        groups:
+    <type "netCDF4._netCDF4.Group">
+    group /forecasts/model2:
+        dimensions:
+        variables:
+        groups:
+
+## <div id='section3'>3) Dimensions in a netCDF file.
 
 netCDF defines the sizes of all variables in terms of dimensions, so
 before any variables can be created the dimensions they use must be
 created first. A special case, not often used in practice, is that of a
 scalar variable, which has no dimensions. A dimension is created using
-the L{createDimension<Dataset.createDimension>} method of a L{Dataset}
-or L{Group} instance. A Python string is used to set the name of the
+the `netCDF4.Dataset.createDimension` method of a `netCDF4.Dataset`
+or `netCDF4.Group` instance. A Python string is used to set the name of the
 dimension, and an integer value is used to set the size. To create an
 unlimited dimension (a dimension that can be appended to), the size
-value is set to C{None} or 0. In this example, there both the C{time} and
-C{level} dimensions are unlimited.  Having more than one unlimited
+value is set to `None` or 0. In this example, there both the `time` and
+`level` dimensions are unlimited.  Having more than one unlimited
 dimension is a new netCDF 4 feature, in netCDF 3 files there may be only
 one, and it must be the first (leftmost) dimension of the variable.
 
->>> level = rootgrp.createDimension('level', None)
->>> time = rootgrp.createDimension('time', None)
->>> lat = rootgrp.createDimension('lat', 73)
->>> lon = rootgrp.createDimension('lon', 144)
+    :::python
+    >>> level = rootgrp.createDimension("level", None)
+    >>> time = rootgrp.createDimension("time", None)
+    >>> lat = rootgrp.createDimension("lat", 73)
+    >>> lon = rootgrp.createDimension("lon", 144)
 
 
-All of the L{Dimension} instances are stored in a python dictionary.
+All of the `netCDF4.Dimension` instances are stored in a python dictionary.
 
->>> print rootgrp.dimensions
-OrderedDict([('level', <netCDF4.Dimension object at 0x1b48030>),
-             ('time', <netCDF4.Dimension object at 0x1b481c0>),
-             ('lat', <netCDF4.Dimension object at 0x1b480f8>),
-             ('lon', <netCDF4.Dimension object at 0x1b48a08>)])
->>>
+    :::python
+    >>> print rootgrp.dimensions
+    OrderedDict([("level", <netCDF4._netCDF4.Dimension object at 0x1b48030>),
+                 ("time", <netCDF4._netCDF4.Dimension object at 0x1b481c0>),
+                 ("lat", <netCDF4._netCDF4.Dimension object at 0x1b480f8>),
+                 ("lon", <netCDF4._netCDF4.Dimension object at 0x1b48a08>)])
 
-Calling the python C{len} function with a L{Dimension} instance returns
+Calling the python `len` function with a `netCDF4.Dimension` instance returns
 the current size of that dimension.
-The L{isunlimited<Dimension.isunlimited>} method of a L{Dimension} instance
+The `netCDF4.Dimension.isunlimited` method of a `netCDF4.Dimension` instance
 can be used to determine if the dimensions is unlimited, or appendable.
 
->>> print len(lon)
-144
->>> print len.is_unlimited()
-False
->>> print time.is_unlimited()
-True
->>>
+    :::python
+    >>> print len(lon)
+    144
+    >>> print len.is_unlimited()
+    False
+    >>> print time.is_unlimited()
+    True
 
-Printing the L{Dimension} object
+Printing the `netCDF4.Dimension` object
 provides useful summary info, including the name and length of the dimension,
 and whether it is unlimited.
 
->>> for dimobj in rootgrp.dimensions.values():
->>>    print dimobj
-<type 'netCDF4.Dimension'> (unlimited): name = 'level', size = 0
-<type 'netCDF4.Dimension'> (unlimited): name = 'time', size = 0
-<type 'netCDF4.Dimension'>: name = 'lat', size = 73
-<type 'netCDF4.Dimension'>: name = 'lon', size = 144
-<type 'netCDF4.Dimension'> (unlimited): name = 'time', size = 0
->>>
+    :::python
+    >>> for dimobj in rootgrp.dimensions.values():
+    >>>    print dimobj
+    <type "netCDF4._netCDF4.Dimension"> (unlimited): name = "level", size = 0
+    <type "netCDF4._netCDF4.Dimension"> (unlimited): name = "time", size = 0
+    <type "netCDF4._netCDF4.Dimension">: name = "lat", size = 73
+    <type "netCDF4._netCDF4.Dimension">: name = "lon", size = 144
+    <type "netCDF4._netCDF4.Dimension"> (unlimited): name = "time", size = 0
 
-L{Dimension} names can be changed using the
-L{renameDimension<Dataset.renameDimension>} method of a L{Dataset} or
-L{Group} instance.
+`netCDF4.Dimension` names can be changed using the
+`netCDF4.Datatset.renameDimension` method of a `netCDF4.Dataset` or
+`netCDF4.Group` instance.
 
-4) Variables in a netCDF file
------------------------------
+## <div id='section4'>4) Variables in a netCDF file.
 
 netCDF variables behave much like python multidimensional array objects
-supplied by the U{numpy module <http://numpy.scipy.org>}. However,
+supplied by the [numpy module](http://numpy.scipy.org). However,
 unlike numpy arrays, netCDF4 variables can be appended to along one or
 more 'unlimited' dimensions. To create a netCDF variable, use the
-L{createVariable<Dataset.createVariable>} method of a L{Dataset} or
-L{Group} instance. The L{createVariable<Dataset.createVariable>} method
+`netCDF4.Dataset.createVariable` method of a `netCDF4.Dataset` or
+`netCDF4.Group` instance. The `netCDF4.Dataset.createVariable` method
 has two mandatory arguments, the variable name (a Python string), and
 the variable datatype. The variable's dimensions are given by a tuple
 containing the dimension names (defined previously with
-L{createDimension<Dataset.createDimension>}). To create a scalar
+`netCDF4.Dataset.createDimension`). To create a scalar
 variable, simply leave out the dimensions keyword. The variable
 primitive datatypes correspond to the dtype attribute of a numpy array.
 You can specify the datatype as a numpy dtype object, or anything that
 can be converted to a numpy dtype object.  Valid datatype specifiers
-include: C{'f4'} (32-bit floating point), C{'f8'} (64-bit floating
-point), C{'i4'} (32-bit signed integer), C{'i2'} (16-bit signed
-integer), C{'i8'} (64-bit singed integer), C{'i1'} (8-bit signed
-integer), C{'u1'} (8-bit unsigned integer), C{'u2'} (16-bit unsigned
-integer), C{'u4'} (32-bit unsigned integer), C{'u8'} (64-bit unsigned
-integer), or C{'S1'} (single-character string).  The old Numeric
-single-character typecodes (C{'f'},C{'d'},C{'h'},
-C{'s'},C{'b'},C{'B'},C{'c'},C{'i'},C{'l'}), corresponding to
-(C{'f4'},C{'f8'},C{'i2'},C{'i2'},C{'i1'},C{'i1'},C{'S1'},C{'i4'},C{'i4'}),
+include: `'f4'` (32-bit floating point), `'f8'` (64-bit floating
+point), `'i4'` (32-bit signed integer), `'i2'` (16-bit signed
+integer), `'i8'` (64-bit singed integer), `'i1'` (8-bit signed
+integer), `'u1'` (8-bit unsigned integer), `'u2'` (16-bit unsigned
+integer), `'u4'` (32-bit unsigned integer), `'u8'` (64-bit unsigned
+integer), or `'S1'` (single-character string).  The old Numeric
+single-character typecodes (`'f'`,`'d'`,`'h'`,
+`'s'`,`'b'`,`'B'`,`'c'`,`'i'`,`'l'`), corresponding to
+(`'f4'`,`'f8'`,`'i2'`,`'i2'`,`'i1'`,`'i1'`,`'S1'`,`'i4'`,`'i4'`),
 will also work. The unsigned integer types and the 64-bit integer type
-can only be used if the file format is C{NETCDF4}.
+can only be used if the file format is `NETCDF4`.
 
 The dimensions themselves are usually also defined as variables, called
-coordinate variables. The L{createVariable<Dataset.createVariable>}
-method returns an instance of the L{Variable} class whose methods can be
+coordinate variables. The `netCDF4.Dataset.createVariable`
+method returns an instance of the `netCDF4.Variable` class whose methods can be
 used later to access and set variable data and attributes.
 
->>> times = rootgrp.createVariable('time','f8',('time',))
->>> levels = rootgrp.createVariable('level','i4',('level',))
->>> latitudes = rootgrp.createVariable('latitude','f4',('lat',))
->>> longitudes = rootgrp.createVariable('longitude','f4',('lon',))
->>> # two dimensions unlimited.
->>> temp = rootgrp.createVariable('temp','f4',('time','level','lat','lon',))
-
-To get summary info on a L{Variable} instance in an interactive session, just print it.
-
->>> print temp
-<type 'netCDF4.Variable'>
-float32 temp(time, level, lat, lon)
-    least_significant_digit: 3
-    units: K
-unlimited dimensions: time, level
-current shape = (0, 0, 73, 144)
->>>
+    :::python
+    >>> times = rootgrp.createVariable("time","f8",("time",))
+    >>> levels = rootgrp.createVariable("level","i4",("level",))
+    >>> latitudes = rootgrp.createVariable("latitude","f4",("lat",))
+    >>> longitudes = rootgrp.createVariable("longitude","f4",("lon",))
+    >>> # two dimensions unlimited
+    >>> temp = rootgrp.createVariable("temp","f4",("time","level","lat","lon",))
+
+To get summary info on a `netCDF4.Variable` instance in an interactive session, just print it.
+
+    :::python
+    >>> print temp
+    <type "netCDF4._netCDF4.Variable">
+    float32 temp(time, level, lat, lon)
+        least_significant_digit: 3
+        units: K
+    unlimited dimensions: time, level
+    current shape = (0, 0, 73, 144)
 
 You can use a path to create a Variable inside a hierarchy of groups.
 
->>> ftemp = rootgrp.createVariable('/forecasts/model1/temp','f4',('time','level','lat','lon',))
+    :::python
+    >>> ftemp = rootgrp.createVariable("/forecasts/model1/temp","f4",("time","level","lat","lon",))
 
 If the intermediate groups do not yet exist, they will be created.
 
-You can also query a L{Dataset} or L{Group} instance directly to obtain L{Group} or 
-L{Variable} instances using paths.
-
->>> print rootgrp['/forecasts/model1'] # a Group instance
-<type 'netCDF4._netCDF4.Group'>
-group /forecasts/model1:
-    dimensions(sizes):
-    variables(dimensions): float32 temp(time,level,lat,lon)
-    groups:
->>>
-
->>> print rootgrp['/forecasts/model1/temp'] # a Variable instance
-<type 'netCDF4._netCDF4.Variable'>
-float32 temp(time, level, lat, lon)
-path = /forecasts/model1
-unlimited dimensions: time, level
-current shape = (0, 0, 73, 144)
-filling on, default _FillValue of 9.96920996839e+36 used
->>>
-
-All of the variables in the L{Dataset} or L{Group} are stored in a
+You can also query a `netCDF4.Dataset` or `netCDF4.Group` instance directly to obtain `netCDF4.Group` or 
+`netCDF4.Variable` instances using paths.
+
+    :::python
+    >>> print rootgrp["/forecasts/model1"] # a Group instance
+    <type "netCDF4._netCDF4.Group">
+    group /forecasts/model1:
+        dimensions(sizes):
+        variables(dimensions): float32 temp(time,level,lat,lon)
+        groups:
+    >>> print rootgrp["/forecasts/model1/temp"] # a Variable instance
+    <type "netCDF4._netCDF4.Variable">
+    float32 temp(time, level, lat, lon)
+    path = /forecasts/model1
+    unlimited dimensions: time, level
+    current shape = (0, 0, 73, 144)
+    filling on, default _FillValue of 9.96920996839e+36 used
+
+All of the variables in the `netCDF4.Dataset` or `netCDF4.Group` are stored in a
 Python dictionary, in the same way as the dimensions:
 
->>> print rootgrp.variables
-OrderedDict([('time', <netCDF4.Variable object at 0x1b4ba70>),
-             ('level', <netCDF4.Variable object at 0x1b4bab0>),
-             ('latitude', <netCDF4.Variable object at 0x1b4baf0>),
-             ('longitude', <netCDF4.Variable object at 0x1b4bb30>),
-             ('temp', <netCDF4.Variable object at 0x1b4bb70>)])
->>>
+    :::python
+    >>> print rootgrp.variables
+    OrderedDict([("time", <netCDF4.Variable object at 0x1b4ba70>),
+                 ("level", <netCDF4.Variable object at 0x1b4bab0>),
+                 ("latitude", <netCDF4.Variable object at 0x1b4baf0>),
+                 ("longitude", <netCDF4.Variable object at 0x1b4bb30>),
+                 ("temp", <netCDF4.Variable object at 0x1b4bb70>)])
 
-L{Variable} names can be changed using the
-L{renameVariable<Dataset.renameVariable>} method of a L{Dataset}
+`netCDF4.Variable` names can be changed using the
+`netCDF4.Dataset.renameVariable` method of a `netCDF4.Dataset`
 instance.
 
 
-5) Attributes in a netCDF file
-------------------------------
+## <div id='section5'>5) Attributes in a netCDF file.
 
 There are two types of attributes in a netCDF file, global and variable.
 Global attributes provide information about a group, or the entire
-dataset, as a whole. L{Variable} attributes provide information about
+dataset, as a whole. `netCDF4.Variable` attributes provide information about
 one of the variables in a group. Global attributes are set by assigning
-values to L{Dataset} or L{Group} instance variables. L{Variable}
-attributes are set by assigning values to L{Variable} instances
+values to `netCDF4.Dataset` or `netCDF4.Group` instance variables. `netCDF4.Variable`
+attributes are set by assigning values to `netCDF4.Variable` instances
 variables. Attributes can be strings, numbers or sequences. Returning to
 our example,
 
->>> import time
->>> rootgrp.description = 'bogus example script'
->>> rootgrp.history = 'Created ' + time.ctime(time.time())
->>> rootgrp.source = 'netCDF4 python module tutorial'
->>> latitudes.units = 'degrees north'
->>> longitudes.units = 'degrees east'
->>> levels.units = 'hPa'
->>> temp.units = 'K'
->>> times.units = 'hours since 0001-01-01 00:00:00.0'
->>> times.calendar = 'gregorian'
-
-The L{ncattrs<Dataset.ncattrs>} method of a L{Dataset}, L{Group} or
-L{Variable} instance can be used to retrieve the names of all the netCDF
+    :::python
+    >>> import time
+    >>> rootgrp.description = "bogus example script"
+    >>> rootgrp.history = "Created " + time.ctime(time.time())
+    >>> rootgrp.source = "netCDF4 python module tutorial"
+    >>> latitudes.units = "degrees north"
+    >>> longitudes.units = "degrees east"
+    >>> levels.units = "hPa"
+    >>> temp.units = "K"
+    >>> times.units = "hours since 0001-01-01 00:00:00.0"
+    >>> times.calendar = "gregorian"
+
+The `netCDF4.Dataset.ncattrs` method of a `netCDF4.Dataset`, `netCDF4.Group` or
+`netCDF4.Variable` instance can be used to retrieve the names of all the netCDF
 attributes. This method is provided as a convenience, since using the
-built-in C{dir} Python function will return a bunch of private methods
+built-in `dir` Python function will return a bunch of private methods
 and attributes that cannot (or should not) be modified by the user.
 
->>> for name in rootgrp.ncattrs():
->>>     print 'Global attr', name, '=', getattr(rootgrp,name)
-Global attr description = bogus example script
-Global attr history = Created Mon Nov  7 10.30:56 2005
-Global attr source = netCDF4 python module tutorial
+    :::python
+    >>> for name in rootgrp.ncattrs():
+    >>>     print "Global attr", name, "=", getattr(rootgrp,name)
+    Global attr description = bogus example script
+    Global attr history = Created Mon Nov  7 10.30:56 2005
+    Global attr source = netCDF4 python module tutorial
 
-The C{__dict__} attribute of a L{Dataset}, L{Group} or L{Variable}
+The `__dict__` attribute of a `netCDF4.Dataset`, `netCDF4.Group` or `netCDF4.Variable`
 instance provides all the netCDF attribute name/value pairs in a python
 dictionary:
 
->>> print rootgrp.__dict__
-OrderedDict([(u'description', u'bogus example script'),
-             (u'history', u'Created Thu Mar  3 19:30:33 2011'),
-             (u'source', u'netCDF4 python module tutorial')])
+    :::python
+    >>> print rootgrp.__dict__
+    OrderedDict([(u"description", u"bogus example script"),
+                 (u"history", u"Created Thu Mar  3 19:30:33 2011"),
+                 (u"source", u"netCDF4 python module tutorial")])
 
-Attributes can be deleted from a netCDF L{Dataset}, L{Group} or
-L{Variable} using the python C{del} statement (i.e. C{del grp.foo}
-removes the attribute C{foo} the the group C{grp}).
+Attributes can be deleted from a netCDF `netCDF4.Dataset`, `netCDF4.Group` or
+`netCDF4.Variable` using the python `del` statement (i.e. `del grp.foo`
+removes the attribute `foo` the the group `grp`).
 
-6) Writing data to and retrieving data from a netCDF variable
--------------------------------------------------------------
+## <div id='section6'>6) Writing data to and retrieving data from a netCDF variable.
 
-Now that you have a netCDF L{Variable} instance, how do you put data
+Now that you have a netCDF `netCDF4.Variable` instance, how do you put data
 into it? You can just treat it like an array and assign data to a slice.
 
->>> import numpy
->>> lats =  numpy.arange(-90,91,2.5)
->>> lons =  numpy.arange(-180,180,2.5)
->>> latitudes[:] = lats
->>> longitudes[:] = lons
->>> print 'latitudes =\\n',latitudes[:]
-latitudes =
-[-90.  -87.5 -85.  -82.5 -80.  -77.5 -75.  -72.5 -70.  -67.5 -65.  -62.5
- -60.  -57.5 -55.  -52.5 -50.  -47.5 -45.  -42.5 -40.  -37.5 -35.  -32.5
- -30.  -27.5 -25.  -22.5 -20.  -17.5 -15.  -12.5 -10.   -7.5  -5.   -2.5
-   0.    2.5   5.    7.5  10.   12.5  15.   17.5  20.   22.5  25.   27.5
-  30.   32.5  35.   37.5  40.   42.5  45.   47.5  50.   52.5  55.   57.5
-  60.   62.5  65.   67.5  70.   72.5  75.   77.5  80.   82.5  85.   87.5
-  90. ]
->>>
-
-Unlike NumPy's array objects, netCDF L{Variable}
+    :::python
+    >>> import numpy
+    >>> lats =  numpy.arange(-90,91,2.5)
+    >>> lons =  numpy.arange(-180,180,2.5)
+    >>> latitudes[:] = lats
+    >>> longitudes[:] = lons
+    >>> print "latitudes =\\n",latitudes[:]
+    latitudes =
+    [-90.  -87.5 -85.  -82.5 -80.  -77.5 -75.  -72.5 -70.  -67.5 -65.  -62.5
+     -60.  -57.5 -55.  -52.5 -50.  -47.5 -45.  -42.5 -40.  -37.5 -35.  -32.5
+     -30.  -27.5 -25.  -22.5 -20.  -17.5 -15.  -12.5 -10.   -7.5  -5.   -2.5
+       0.    2.5   5.    7.5  10.   12.5  15.   17.5  20.   22.5  25.   27.5
+      30.   32.5  35.   37.5  40.   42.5  45.   47.5  50.   52.5  55.   57.5
+      60.   62.5  65.   67.5  70.   72.5  75.   77.5  80.   82.5  85.   87.5
+      90. ]
+
+Unlike NumPy's array objects, netCDF `netCDF4.Variable`
 objects with unlimited dimensions will grow along those dimensions if you
 assign data outside the currently defined range of indices.
 
->>> # append along two unlimited dimensions by assigning to slice.
->>> nlats = len(rootgrp.dimensions['lat'])
->>> nlons = len(rootgrp.dimensions['lon'])
->>> print 'temp shape before adding data = ',temp.shape
-temp shape before adding data =  (0, 0, 73, 144)
->>>
->>> from numpy.random import uniform
->>> temp[0:5,0:10,:,:] = uniform(size=(5,10,nlats,nlons))
->>> print 'temp shape after adding data = ',temp.shape
-temp shape after adding data =  (6, 10, 73, 144)
->>>
->>> # levels have grown, but no values yet assigned.
->>> print 'levels shape after adding pressure data = ',levels.shape
-levels shape after adding pressure data =  (10,)
->>>
+    :::python
+    >>> # append along two unlimited dimensions by assigning to slice.
+    >>> nlats = len(rootgrp.dimensions["lat"])
+    >>> nlons = len(rootgrp.dimensions["lon"])
+    >>> print "temp shape before adding data = ",temp.shape
+    temp shape before adding data =  (0, 0, 73, 144)
+    >>>
+    >>> from numpy.random import uniform
+    >>> temp[0:5,0:10,:,:] = uniform(size=(5,10,nlats,nlons))
+    >>> print "temp shape after adding data = ",temp.shape
+    temp shape after adding data =  (6, 10, 73, 144)
+    >>>
+    >>> # levels have grown, but no values yet assigned.
+    >>> print "levels shape after adding pressure data = ",levels.shape
+    levels shape after adding pressure data =  (10,)
 
 Note that the size of the levels variable grows when data is appended
-along the C{level} dimension of the variable C{temp}, even though no
+along the `level` dimension of the variable `temp`, even though no
 data has yet been assigned to levels.
 
->>> # now, assign data to levels dimension variable.
->>> levels[:] =  [1000.,850.,700.,500.,300.,250.,200.,150.,100.,50.]
+    :::python
+    >>> # now, assign data to levels dimension variable.
+    >>> levels[:] =  [1000.,850.,700.,500.,300.,250.,200.,150.,100.,50.]
 
 However, that there are some differences between NumPy and netCDF
 variable slicing rules. Slices behave as usual, being specified as a
-C{start:stop:step} triplet. Using a scalar integer index C{i} takes the ith
+`start:stop:step` triplet. Using a scalar integer index `i` takes the ith
 element and reduces the rank of the output array by one. Boolean array and
 integer sequence indexing behaves differently for netCDF variables
 than for numpy arrays.  Only 1-d boolean arrays and integer sequences are
 allowed, and these indices work independently along each dimension (similar
 to the way vector subscripts work in fortran).  This means that
 
->>> temp[0, 0, [0,1,2,3], [0,1,2,3]]
+    :::python
+    >>> temp[0, 0, [0,1,2,3], [0,1,2,3]]
 
 returns an array of shape (4,4) when slicing a netCDF variable, but for a
 numpy array it returns an array of shape (4,).
-Similarly, a netCDF variable of shape C{(2,3,4,5)} indexed
-with C{[0, array([True, False, True]), array([False, True, True, True]), :]}
-would return a C{(2, 3, 5)} array. In NumPy, this would raise an error since
-it would be equivalent to C{[0, [0,1], [1,2,3], :]}. When slicing with integer
+Similarly, a netCDF variable of shape `(2,3,4,5)` indexed
+with `[0, array([True, False, True]), array([False, True, True, True]), :]`
+would return a `(2, 3, 5)` array. In NumPy, this would raise an error since
+it would be equivalent to `[0, [0,1], [1,2,3], :]`. When slicing with integer
 sequences, the indices must be sorted in increasing order and contain no duplicates.
 While this behaviour may cause some confusion for those used to NumPy's 'fancy indexing' rules,
 it provides a very powerful way to extract data from multidimensional netCDF
@@ -475,128 +492,126 @@ variables by using logical operations on the dimension arrays to create slices.
 
 For example,
 
->>> tempdat = temp[::2, [1,3,6], lats>0, lons>0]
+    :::python
+    >>> tempdat = temp[::2, [1,3,6], lats>0, lons>0]
 
 will extract time indices 0,2 and 4, pressure levels
 850, 500 and 200 hPa, all Northern Hemisphere latitudes and Eastern
 Hemisphere longitudes, resulting in a numpy array of shape  (3, 3, 36, 71).
 
->>> print 'shape of fancy temp slice = ',tempdat.shape
-shape of fancy temp slice =  (3, 3, 36, 71)
->>>
+    :::python
+    >>> print "shape of fancy temp slice = ",tempdat.shape
+    shape of fancy temp slice =  (3, 3, 36, 71)
 
-B{Special note for scalar variables}: To extract data from a scalar variable
-C{v} with no associated dimensions, use an Ellipsis slice (C{v[...]}). The result
-will be a numpy scalar object.
+***Special note for scalar variables***: To extract data from a scalar variable
+`v` with no associated dimensions, use `np.asarray(v)` or `v[...]`. The result
+will be a numpy scalar array.
 
-7) Dealing with time coordinates
---------------------------------
+## <div id='section7'>7) Dealing with time coordinates.
 
 Time coordinate values pose a special challenge to netCDF users.  Most
-metadata standards (such as CF and COARDS) specify that time should be
+metadata standards (such as CF) specify that time should be
 measure relative to a fixed date using a certain calendar, with units
-specified like C{hours since YY:MM:DD hh-mm-ss}.  These units can be
+specified like `hours since YY:MM:DD hh-mm-ss`.  These units can be
 awkward to deal with, without a utility to convert the values to and
-from calendar dates.  The functione called L{num2date} and L{date2num} are
+from calendar dates.  The functione called `netCDF4.num2date` and `netCDF4.date2num` are
 provided with this package to do just that.  Here's an example of how they
 can be used:
 
->>> # fill in times.
->>> from datetime import datetime, timedelta
->>> from netCDF4 import num2date, date2num
->>> dates = [datetime(2001,3,1)+n*timedelta(hours=12) for n in range(temp.shape[0])]
->>> times[:] = date2num(dates,units=times.units,calendar=times.calendar)
->>> print 'time values (in units %s): ' % times.units+'\\n',times[:]
-time values (in units hours since January 1, 0001):
-[ 17533056.  17533068.  17533080.  17533092.  17533104.]
->>>
->>> dates = num2date(times[:],units=times.units,calendar=times.calendar)
->>> print 'dates corresponding to time values:\\n',dates
-dates corresponding to time values:
-[2001-03-01 00:00:00 2001-03-01 12:00:00 2001-03-02 00:00:00
- 2001-03-02 12:00:00 2001-03-03 00:00:00]
->>>
-
-L{num2date} converts numeric values of time in the specified C{units}
-and C{calendar} to datetime objects, and L{date2num} does the reverse.
-All the calendars currently defined in the U{CF metadata convention
-<http://cf-pcmdi.llnl.gov/documents/cf-conventions/>} are supported.
-A function called L{date2index} is also provided which returns the indices
+    :::python
+    >>> # fill in times.
+    >>> from datetime import datetime, timedelta
+    >>> from netCDF4 import num2date, date2num
+    >>> dates = [datetime(2001,3,1)+n*timedelta(hours=12) for n in range(temp.shape[0])]
+    >>> times[:] = date2num(dates,units=times.units,calendar=times.calendar)
+    >>> print "time values (in units %s): " % times.units+"\\n",times[:]
+    time values (in units hours since January 1, 0001):
+    [ 17533056.  17533068.  17533080.  17533092.  17533104.]
+    >>> dates = num2date(times[:],units=times.units,calendar=times.calendar)
+    >>> print "dates corresponding to time values:\\n",dates
+    dates corresponding to time values:
+    [2001-03-01 00:00:00 2001-03-01 12:00:00 2001-03-02 00:00:00
+     2001-03-02 12:00:00 2001-03-03 00:00:00]
+
+`netCDF4.num2date` converts numeric values of time in the specified `units`
+and `calendar` to datetime objects, and `netCDF4.date2num` does the reverse.
+All the calendars currently defined in the
+[CF metadata convention](http://cf-pcmdi.llnl.gov/documents/cf-conventions/) are supported.
+A function called `netCDF4.date2index` is also provided which returns the indices
 of a netCDF time variable corresponding to a sequence of datetime instances.
 
 
-8) Reading data from a multi-file netCDF dataset.
--------------------------------------------------
+## <div id='section8'>8) Reading data from a multi-file netCDF dataset.
 
 If you want to read data from a variable that spans multiple netCDF files,
-you can use the L{MFDataset} class to read the data as if it were
+you can use the `netCDF4.MFDataset` class to read the data as if it were
 contained in a single file. Instead of using a single filename to create
-a L{Dataset} instance, create a L{MFDataset} instance with either a list
+a `netCDF4.Dataset` instance, create a `netCDF4.MFDataset` instance with either a list
 of filenames, or a string with a wildcard (which is then converted to
 a sorted list of files using the python glob module).
 Variables in the list of files that share the same unlimited
 dimension are aggregated together, and can be sliced across multiple
 files.  To illustrate this, let's first create a bunch of netCDF files with
 the same variable (with the same unlimited dimension).  The files
-must in be in C{NETCDF3_64BIT}, C{NETCDF3_CLASSIC} or
-C{NETCDF4_CLASSIC format} (C{NETCDF4} formatted multi-file
+must in be in `NETCDF3_64BIT`, `NETCDF3_CLASSIC` or
+`NETCDF4_CLASSIC format` (`NETCDF4` formatted multi-file
 datasets are not supported).
 
->>> for nfile in range(10):
->>>     f = Dataset('mftest'+repr(nfile)+'.nc','w',format='NETCDF4_CLASSIC')
->>>     f.createDimension('x',None)
->>>     x = f.createVariable('x','i',('x',))
->>>     x[0:10] = numpy.arange(nfile*10,10*(nfile+1))
->>>     f.close()
-
-Now read all the files back in at once with L{MFDataset}
-
->>> from netCDF4 import MFDataset
->>> f = MFDataset('mftest*nc')
->>> print f.variables['x'][:]
-[ 0  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]
->>>
-
-Note that MFDataset can only be used to read, not write, multi-file
+    :::python
+    >>> for nf in range(10):
+    >>>     f = Dataset("mftest%s.nc" % nf,"w")
+    >>>     f.createDimension("x",None)
+    >>>     x = f.createVariable("x","i",("x",))
+    >>>     x[0:10] = numpy.arange(nf*10,10*(nf+1))
+    >>>     f.close()
+
+Now read all the files back in at once with `netCDF4.MFDataset`
+
+    :::python
+    >>> from netCDF4 import MFDataset
+    >>> f = MFDataset("mftest*nc")
+    >>> print f.variables["x"][:]
+    [ 0  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]
+
+Note that `netCDF4.MFDataset` can only be used to read, not write, multi-file
 datasets.
 
-9) Efficient compression of netCDF variables
---------------------------------------------
+## <div id='section9'>9) Efficient compression of netCDF variables.
 
-Data stored in netCDF 4 L{Variable} objects can be compressed and
+Data stored in netCDF 4 `netCDF4.Variable` objects can be compressed and
 decompressed on the fly. The parameters for the compression are
-determined by the C{zlib}, C{complevel} and C{shuffle} keyword arguments
-to the L{createVariable<Dataset.createVariable>} method. To turn on
-compression, set C{zlib=True}.  The C{complevel} keyword regulates the
+determined by the `zlib`, `complevel` and `shuffle` keyword arguments
+to the `netCDF4.Dataset.createVariable` method. To turn on
+compression, set `zlib=True`.  The `complevel` keyword regulates the
 speed and efficiency of the compression (1 being fastest, but lowest
 compression ratio, 9 being slowest but best compression ratio). The
-default value of C{complevel} is 4. Setting C{shuffle=False} will turn
+default value of `complevel` is 4. Setting `shuffle=False` will turn
 off the HDF5 shuffle filter, which de-interlaces a block of data before
 compression by reordering the bytes.  The shuffle filter can
 significantly improve compression ratios, and is on by default.  Setting
-C{fletcher32} keyword argument to
-L{createVariable<Dataset.createVariable>} to C{True} (it's C{False} by
+`fletcher32` keyword argument to
+`netCDF4.Dataset.createVariable` to `True` (it's `False` by
 default) enables the Fletcher32 checksum algorithm for error detection.
 It's also possible to set the HDF5 chunking parameters and endian-ness
-of the binary data stored in the HDF5 file with the C{chunksizes}
-and C{endian} keyword arguments to
-L{createVariable<Dataset.createVariable>}.  These keyword arguments only
-are relevant for C{NETCDF4} and C{NETCDF4_CLASSIC} files (where the
+of the binary data stored in the HDF5 file with the `chunksizes`
+and `endian` keyword arguments to
+`netCDF4.Dataset.createVariable`.  These keyword arguments only
+are relevant for `NETCDF4` and `NETCDF4_CLASSIC` files (where the
 underlying file format is HDF5) and are silently ignored if the file
-format is C{NETCDF3_CLASSIC} or C{NETCDF3_64BIT},
+format is `NETCDF3_CLASSIC` or `NETCDF3_64BIT`,
 
 If your data only has a certain number of digits of precision (say for
 example, it is temperature data that was measured with a precision of
 0.1 degrees), you can dramatically improve zlib compression by
-quantizing (or truncating) the data using the C{least_significant_digit}
-keyword argument to L{createVariable<Dataset.createVariable>}. The least
+quantizing (or truncating) the data using the `least_significant_digit`
+keyword argument to `netCDF4.Dataset.createVariable`. The least
 significant digit is the power of ten of the smallest decimal place in
 the data that is a reliable value. For example if the data has a
-precision of 0.1, then setting C{least_significant_digit=1} will cause
-data the data to be quantized using C{numpy.around(scale*data)/scale}, where
+precision of 0.1, then setting `least_significant_digit=1` will cause
+data the data to be quantized using `numpy.around(scale*data)/scale`, where
 scale = 2**bits, and bits is determined so that a precision of 0.1 is
 retained (in this case bits=4).  Effectively, this makes the compression
 'lossy' instead of 'lossless', that is some precision in the data is
@@ -604,20 +619,22 @@ sacrificed for the sake of disk space.
 
 In our example, try replacing the line
 
->>> temp = rootgrp.createVariable('temp','f4',('time','level','lat','lon',))
+    :::python
+    >>> temp = rootgrp.createVariable("temp","f4",("time","level","lat","lon",))
 
 with
 
->>> temp = dataset.createVariable('temp','f4',('time','level','lat','lon',),zlib=True)
+    :::python
+    >>> temp = dataset.createVariable("temp","f4",("time","level","lat","lon",),zlib=True)
 
 and then
 
->>> temp = dataset.createVariable('temp','f4',('time','level','lat','lon',),zlib=True,least_significant_digit=3)
+    :::python
+    >>> temp = dataset.createVariable("temp","f4",("time","level","lat","lon",),zlib=True,least_significant_digit=3)
 
 and see how much smaller the resulting files are.
 
-10) Beyond homogenous arrays of a fixed type - compound data types
-------------------------------------------------------------------
+## <div id='section10'>10) Beyond homogenous arrays of a fixed type - compound data types.
 
 Compound data types map directly to numpy structured (a.k.a 'record'
 arrays).  Structured arrays are akin to C structs, or derived types
@@ -629,71 +646,71 @@ location for scattered (point) data. You can then access all the
 information for a point by reading one variable, instead of reading
 different parameters from different variables.  Compound data types
 are created from the corresponding numpy data type using the
-L{createCompoundType<Dataset.createCompoundType>} method of a L{Dataset} or L{Group} instance.
+`netCDF4.Dataset.createCompoundType` method of a `netCDF4.Dataset` or `netCDF4.Group` instance.
 Since there is no native complex data type in netcdf, compound types are handy
 for storing numpy complex arrays.  Here's an example:
 
->>> f = Dataset('complex.nc','w')
->>> size = 3 # length of 1-d complex array
->>> # create sample complex data.
->>> datac = numpy.exp(1j*(1.+numpy.linspace(0, numpy.pi, size)))
->>> # create complex128 compound data type.
->>> complex128 = numpy.dtype([('real',numpy.float64),('imag',numpy.float64)])
->>> complex128_t = f.createCompoundType(complex128,'complex128')
->>> # create a variable with this data type, write some data to it.
->>> f.createDimension('x_dim',None)
->>> v = f.createVariable('cmplx_var',complex128_t,'x_dim')
->>> data = numpy.empty(size,complex128) # numpy structured array
->>> data['real'] = datac.real; data['imag'] = datac.imag
->>> v[:] = data # write numpy structured array to netcdf compound var
->>> # close and reopen the file, check the contents.
->>> f.close(); f = Dataset('complex.nc')
->>> v = f.variables['cmplx_var']
->>> datain = v[:] # read in all the data into a numpy structured array
->>> # create an empty numpy complex array
->>> datac2 = numpy.empty(datain.shape,numpy.complex128)
->>> # .. fill it with contents of structured array.
->>> datac2.real = datain['real']; datac2.imag = datain['imag']
->>> print datac.dtype,datac # original data
-complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]
->>>
->>> print datac2.dtype,datac2 # data from file
-complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]
->>>
+    :::python
+    >>> f = Dataset("complex.nc","w")
+    >>> size = 3 # length of 1-d complex array
+    >>> # create sample complex data.
+    >>> datac = numpy.exp(1j*(1.+numpy.linspace(0, numpy.pi, size)))
+    >>> # create complex128 compound data type.
+    >>> complex128 = numpy.dtype([("real",numpy.float64),("imag",numpy.float64)])
+    >>> complex128_t = f.createCompoundType(complex128,"complex128")
+    >>> # create a variable with this data type, write some data to it.
+    >>> f.createDimension("x_dim",None)
+    >>> v = f.createVariable("cmplx_var",complex128_t,"x_dim")
+    >>> data = numpy.empty(size,complex128) # numpy structured array
+    >>> data["real"] = datac.real; data["imag"] = datac.imag
+    >>> v[:] = data # write numpy structured array to netcdf compound var
+    >>> # close and reopen the file, check the contents.
+    >>> f.close(); f = Dataset("complex.nc")
+    >>> v = f.variables["cmplx_var"]
+    >>> datain = v[:] # read in all the data into a numpy structured array
+    >>> # create an empty numpy complex array
+    >>> datac2 = numpy.empty(datain.shape,numpy.complex128)
+    >>> # .. fill it with contents of structured array.
+    >>> datac2.real = datain["real"]; datac2.imag = datain["imag"]
+    >>> print datac.dtype,datac # original data
+    complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]
+    >>>
+    >>> print datac2.dtype,datac2 # data from file
+    complex128 [ 0.54030231+0.84147098j -0.84147098+0.54030231j  -0.54030231-0.84147098j]
 
 Compound types can be nested, but you must create the 'inner'
-ones first. All of the compound types defined for a L{Dataset} or L{Group} are stored in a
+ones first. All of the compound types defined for a `netCDF4.Dataset` or `netCDF4.Group` are stored in a
 Python dictionary, just like variables and dimensions. As always, printing
 objects gives useful summary information in an interactive session:
 
->>> print f
-<type 'netCDF4.Dataset'>
-root group (NETCDF4 file format):
-    dimensions: x_dim
-    variables: cmplx_var
-    groups:
-<type 'netCDF4.Variable'>
->>> print f.variables['cmplx_var']
-compound cmplx_var(x_dim)
-compound data type: [('real', '<f8'), ('imag', '<f8')]
-unlimited dimensions: x_dim
-current shape = (3,)
->>> print f.cmptypes
-OrderedDict([('complex128', <netCDF4.CompoundType object at 0x1029eb7e8>)])
->>> print f.cmptypes['complex128']
-<type 'netCDF4.CompoundType'>: name = 'complex128', numpy dtype = [(u'real','<f8'), (u'imag', '<f8')]
->>>
-
-11) Variable-length (vlen) data types
--------------------------------------
+    :::python
+    >>> print f
+    <type "netCDF4._netCDF4.Dataset">
+    root group (NETCDF4 file format):
+        dimensions: x_dim
+        variables: cmplx_var
+        groups:
+    <type "netCDF4._netCDF4.Variable">
+    >>> print f.variables["cmplx_var"]
+    compound cmplx_var(x_dim)
+    compound data type: [("real", "<f8"), ("imag", "<f8")]
+    unlimited dimensions: x_dim
+    current shape = (3,)
+    >>> print f.cmptypes
+    OrderedDict([("complex128", <netCDF4.CompoundType object at 0x1029eb7e8>)])
+    >>> print f.cmptypes["complex128"]
+    <type "netCDF4._netCDF4.CompoundType">: name = "complex128", numpy dtype = [(u"real","<f8"), (u"imag", "<f8")]
+
+## <div id='section11'>11) Variable-length (vlen) data types.
 
 NetCDF 4 has support for variable-length or "ragged" arrays.  These are arrays
 of variable length sequences having the same type. To create a variable-length
-data type, use the L{createVLType<Dataset.createVLType>} method
-method of a L{Dataset} or L{Group} instance.
+data type, use the `netCDF4.Dataset.createVLType` method
+method of a `netCDF4.Dataset` or `netCDF4.Group` instance.
 
->>> f = Dataset('tst_vlen.nc','w')
->>> vlen_t = f.createVLType(numpy.int32, 'phony_vlen')
+    :::python
+    >>> f = Dataset("tst_vlen.nc","w")
+    >>> vlen_t = f.createVLType(numpy.int32, "phony_vlen")
 
 The numpy datatype of the variable-length sequences and the name of the
 new datatype must be specified. Any of the primitive datatypes can be
@@ -701,96 +718,97 @@ used (signed and unsigned integers, 32 and 64 bit floats, and characters),
 but compound data types cannot.
 A new variable can then be created using this datatype.
 
->>> x = f.createDimension('x',3)
->>> y = f.createDimension('y',4)
->>> vlvar = f.createVariable('phony_vlen_var', vlen_t, ('y','x'))
+    :::python
+    >>> x = f.createDimension("x",3)
+    >>> y = f.createDimension("y",4)
+    >>> vlvar = f.createVariable("phony_vlen_var", vlen_t, ("y","x"))
 
 Since there is no native vlen datatype in numpy, vlen arrays are represented
-in python as object arrays (arrays of dtype C{object}). These are arrays whose
+in python as object arrays (arrays of dtype `object`). These are arrays whose
 elements are Python object pointers, and can contain any type of python object.
 For this application, they must contain 1-D numpy arrays all of the same type
 but of varying length.
-In this case, they contain 1-D numpy C{int32} arrays of random length betwee
+In this case, they contain 1-D numpy `int32` arrays of random length betwee
 1 and 10.
 
->>> import random
->>> data = numpy.empty(len(y)*len(x),object)
->>> for n in range(len(y)*len(x)):
->>>    data[n] = numpy.arange(random.randint(1,10),dtype='int32')+1
->>> data = numpy.reshape(data,(len(y),len(x)))
->>> vlvar[:] = data
->>> print 'vlen variable =\\n',vlvar[:]
-vlen variable =
-[[[ 1  2  3  4  5  6  7  8  9 10] [1 2 3 4 5] [1 2 3 4 5 6 7 8]]
- [[1 2 3 4 5 6 7] [1 2 3 4 5 6] [1 2 3 4 5]]
- [[1 2 3 4 5] [1 2 3 4] [1]]
- [[ 1  2  3  4  5  6  7  8  9 10] [ 1  2  3  4  5  6  7  8  9 10]
-  [1 2 3 4 5 6 7 8]]]
->>> print f
-<type 'netCDF4.Dataset'>
-root group (NETCDF4 file format):
-    dimensions: x, y
-    variables: phony_vlen_var
-    groups:
->>> print f.variables['phony_vlen_var']
-<type 'netCDF4.Variable'>
-vlen phony_vlen_var(y, x)
-vlen data type: int32
-unlimited dimensions:
-current shape = (4, 3)
->>> print f.VLtypes['phony_vlen']
-<type 'netCDF4.VLType'>: name = 'phony_vlen', numpy dtype = int32
->>>
+    :::python
+    >>> import random
+    >>> data = numpy.empty(len(y)*len(x),object)
+    >>> for n in range(len(y)*len(x)):
+    >>>    data[n] = numpy.arange(random.randint(1,10),dtype="int32")+1
+    >>> data = numpy.reshape(data,(len(y),len(x)))
+    >>> vlvar[:] = data
+    >>> print "vlen variable =\\n",vlvar[:]
+    vlen variable =
+    [[[ 1  2  3  4  5  6  7  8  9 10] [1 2 3 4 5] [1 2 3 4 5 6 7 8]]
+     [[1 2 3 4 5 6 7] [1 2 3 4 5 6] [1 2 3 4 5]]
+     [[1 2 3 4 5] [1 2 3 4] [1]]
+     [[ 1  2  3  4  5  6  7  8  9 10] [ 1  2  3  4  5  6  7  8  9 10]
+      [1 2 3 4 5 6 7 8]]]
+    >>> print f
+    <type "netCDF4._netCDF4.Dataset">
+    root group (NETCDF4 file format):
+        dimensions: x, y
+        variables: phony_vlen_var
+        groups:
+    >>> print f.variables["phony_vlen_var"]
+    <type "netCDF4._netCDF4.Variable">
+    vlen phony_vlen_var(y, x)
+    vlen data type: int32
+    unlimited dimensions:
+    current shape = (4, 3)
+    >>> print f.VLtypes["phony_vlen"]
+    <type "netCDF4._netCDF4.VLType">: name = "phony_vlen", numpy dtype = int32
 
 Numpy object arrays containing python strings can also be written as vlen
 variables,  For vlen strings, you don't need to create a vlen data type.
-Instead, simply use the python C{str} builtin (or a numpy string datatype
+Instead, simply use the python `str` builtin (or a numpy string datatype
 with fixed length greater than 1) when calling the
-L{createVariable<Dataset.createVariable>} method.
+`netCDF4.Dataset.createVariable` method.
 
->>> z = f.createDimension('z',10)
->>> strvar = rootgrp.createVariable('strvar', str, 'z')
+    :::python
+    >>> z = f.createDimension("z",10)
+    >>> strvar = rootgrp.createVariable("strvar", str, "z")
 
 In this example, an object array is filled with random python strings with
 random lengths between 2 and 12 characters, and the data in the object
 array is assigned to the vlen string variable.
 
->>> chars = '1234567890aabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
->>> data = numpy.empty(10,'O')
->>> for n in range(10):
->>>     stringlen = random.randint(2,12)
->>>     data[n] = ''.join([random.choice(chars) for i in range(stringlen)])
->>> strvar[:] = data
->>> print 'variable-length string variable:\\n',strvar[:]
-variable-length string variable:
-[aDy29jPt jd7aplD b8t4RM jHh8hq KtaPWF9cQj Q1hHN5WoXSiT MMxsVeq td LUzvVTzj
- 5DS9X8S]
->>> print f
-<type 'netCDF4.Dataset'>
-root group (NETCDF4 file format):
-    dimensions: x, y, z
-    variables: phony_vlen_var, strvar
-    groups:
->>> print f.variables['strvar']
-<type 'netCDF4.Variable'>
-vlen strvar(z)
-vlen data type: <type 'str'>
-unlimited dimensions:
-current size = (10,)
->>>
+    :::python
+    >>> chars = "1234567890aabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+    >>> data = numpy.empty(10,"O")
+    >>> for n in range(10):
+    >>>     stringlen = random.randint(2,12)
+    >>>     data[n] = "".join([random.choice(chars) for i in range(stringlen)])
+    >>> strvar[:] = data
+    >>> print "variable-length string variable:\\n",strvar[:]
+    variable-length string variable:
+    [aDy29jPt 5DS9X8 jd7aplD b8t4RM jHh8hq KtaPWF9cQj Q1hHN5WoXSiT MMxsVeq tdLUzvVTzj]
+    >>> print f
+    <type "netCDF4._netCDF4.Dataset">
+    root group (NETCDF4 file format):
+        dimensions: x, y, z
+        variables: phony_vlen_var, strvar
+        groups:
+    >>> print f.variables["strvar"]
+    <type "netCDF4._netCDF4.Variable">
+    vlen strvar(z)
+    vlen data type: <type "str">
+    unlimited dimensions:
+    current size = (10,)
 
 It is also possible to set contents of vlen string variables with numpy arrays
 of any string or unicode data type. Note, however, that accessing the contents
-of such variables will always return numpy arrays with dtype C{object}.
+of such variables will always return numpy arrays with dtype `object`.
 
-All of the code in this tutorial is available in C{examples/tutorial.py},
-Unit tests are in the C{test} directory.
+All of the code in this tutorial is available in `examples/tutorial.py`,
+Unit tests are in the `test` directory.
 
- at contact: Jeffrey Whitaker <jeffrey.s.whitaker at noaa.gov>
+**contact**: Jeffrey Whitaker <jeffrey.s.whitaker at noaa.gov>
 
- at copyright: 2008 by Jeffrey Whitaker.
+**copyright**: 2008 by Jeffrey Whitaker.
 
- at license: Permission to use, copy, modify, and distribute this software and
+**license**: Permission to use, copy, modify, and distribute this software and
 its documentation for any purpose and without fee is hereby granted,
 provided that the above copyright notice appear in all copies and that
 both the copyright notice and this permission notice appear in
@@ -824,7 +842,7 @@ except ImportError:
     # python3: zip is already python2's itertools.izip
     pass
 
-__version__ = "1.1.8"
+__version__ = "1.1.9"
 
 # Initialize numpy
 import posixpath
@@ -856,7 +874,7 @@ def _gethdf5libversion():
 
 def getlibversion():
     """
-getlibversion()
+**`getlibversion()`**
 
 returns a string describing the version of the netcdf library
 used to build the module, and when it was built.
@@ -1114,8 +1132,8 @@ cdef _set_att(grp, int varid, name, value):
             raise AttributeError((<char *>nc_strerror(ierr)).decode('ascii'))
 
 cdef _get_types(group):
-    # Private function to create L{CompoundType} or L{VLType} instances for all the
-    # compound or VLEN types in a L{Group} or L{Dataset}.
+    # Private function to create `netCDF4.CompoundType` or `netCDF4.VLType` instances for all the
+    # compound or VLEN types in a `netCDF4.Group` or `netCDF4.Dataset`.
     cdef int ierr, ntypes, classp, n, _grpid
     cdef nc_type xtype
     cdef nc_type typeids[NC_MAX_VARS]
@@ -1161,8 +1179,8 @@ cdef _get_types(group):
     return cmptypes, vltypes
 
 cdef _get_dims(group):
-    # Private function to create L{Dimension} instances for all the
-    # dimensions in a L{Group} or Dataset
+    # Private function to create `netCDF4.Dimension` instances for all the
+    # dimensions in a `netCDF4.Group` or Dataset
     cdef int ierr, numdims, n, _grpid
     cdef int dimids[NC_MAX_DIMS]
     cdef char namstring[NC_MAX_NAME+1]
@@ -1193,8 +1211,8 @@ cdef _get_dims(group):
     return dimensions
 
 cdef _get_grps(group):
-    # Private function to create L{Group} instances for all the
-    # groups in a L{Group} or Dataset
+    # Private function to create `netCDF4.Group` instances for all the
+    # groups in a `netCDF4.Group` or Dataset
     cdef int ierr, numgrps, n, _grpid
     cdef int *grpids
     cdef char namstring[NC_MAX_NAME+1]
@@ -1204,7 +1222,7 @@ cdef _get_grps(group):
         ierr = nc_inq_grps(_grpid, &numgrps, NULL)
     if ierr != NC_NOERR:
         raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
-    # create dictionary containing L{Group} instances for groups in this group
+    # create dictionary containing `netCDF4.Group` instances for groups in this group
     groups = OrderedDict()
     if numgrps > 0:
         grpids = <int *>malloc(sizeof(int) * numgrps)
@@ -1223,8 +1241,8 @@ cdef _get_grps(group):
     return groups
 
 cdef _get_vars(group):
-    # Private function to create L{Variable} instances for all the
-    # variables in a L{Group} or Dataset
+    # Private function to create `netCDF4.Variable` instances for all the
+    # variables in a `netCDF4.Group` or Dataset
     cdef int ierr, numvars, n, nn, numdims, varid, classp, iendian, _grpid
     cdef int *varids
     cdef int dim_sizes[NC_MAX_DIMS]
@@ -1269,13 +1287,16 @@ cdef _get_vars(group):
                 raise RuntimeError((<char *>nc_strerror(ierr)).decode('ascii'))
             # get endian-ness of variable.
             endianness = None
-            with nogil:
-                ierr = nc_inq_var_endian(_grpid, varid, &iendian)
-            if ierr == NC_NOERR:
-                if iendian == NC_ENDIAN_LITTLE:
-                    endianness = '<'
-                elif iendian == NC_ENDIAN_BIG:
-                    endianness = '>'
+            # assume data returned by HDF4 lib has already been byte-swapped
+            # (if needed) so that it is in native endian format (issue #391).
+            if group.disk_format != 'HDF4':
+                with nogil:
+                    ierr = nc_inq_var_endian(_grpid, varid, &iendian)
+                if ierr == NC_NOERR:
+                    if iendian == NC_ENDIAN_LITTLE:
+                        endianness = '<'
+                    elif iendian == NC_ENDIAN_BIG:
+                        endianness = '>'
             # check to see if it is a supported user-defined type.
             try:
                 datatype = _nctonptype[xtype]
@@ -1347,135 +1368,183 @@ cdef _get_vars(group):
 _private_atts =\
 ['_grpid','_grp','_varid','groups','dimensions','variables','dtype','data_model','disk_format',
  '_nunlimdim','path','parent','ndim','mask','scale','cmptypes','vltypes','_isprimitive',
- 'file_format','_isvlen','_iscompound','_cmptype','_vltype','keepweakref','name','__orthogoral_indexing__']
-
+ 'file_format','_isvlen','_iscompound','_cmptype','_vltype','name','__orthogoral_indexing__','keepweakref']
+__pdoc__ = {}
 
 cdef class Dataset:
     """
-Dataset(self, filename, mode="r", clobber=True, diskless=False, persist=False, keepweakref=False, format='NETCDF4')
-
-A netCDF L{Dataset} is a collection of dimensions, groups, variables and
+A netCDF `netCDF4.Dataset` is a collection of dimensions, groups, variables and
 attributes. Together they describe the meaning of data and relations among
-data fields stored in a netCDF file.
-
-B{Parameters:}
-
-B{C{filename}} - Name of netCDF file to hold dataset.
-
-B{Keywords}:
-
-B{C{mode}} - access mode. C{r} means read-only; no data can be
-modified. C{w} means write; a new file is created, an existing file with
-the same name is deleted. C{a} and C{r+} mean append (in analogy with
-serial files); an existing file is opened for reading and writing.
-Appending C{s} to modes C{w}, C{r+} or C{a} will enable unbuffered shared
-access to C{NETCDF3_CLASSIC} or C{NETCDF3_64BIT} formatted files.
-Unbuffered acesss may be useful even if you don't need shared
-access, since it may be faster for programs that don't access data
-sequentially. This option is ignored for C{NETCDF4} and C{NETCDF4_CLASSIC}
-formatted files.
-
-B{C{clobber}} - if C{True} (default), opening a file with C{mode='w'}
-will clobber an existing file with the same name.  if C{False}, an
-exception will be raised if a file with the same name already exists.
-
-B{C{format}} - underlying file format (one of C{'NETCDF4',
-'NETCDF4_CLASSIC', 'NETCDF3_CLASSIC'} or C{'NETCDF3_64BIT'}.  Only
-relevant if C{mode = 'w'} (if C{mode = 'r','a'} or C{'r+'} the file format
-is automatically detected). Default C{'NETCDF4'}, which means the data is
-stored in an HDF5 file, using netCDF 4 API features.  Setting
-C{format='NETCDF4_CLASSIC'} will create an HDF5 file, using only netCDF 3
-compatibile API features. netCDF 3 clients must be recompiled and linked
-against the netCDF 4 library to read files in C{NETCDF4_CLASSIC} format.
-C{'NETCDF3_CLASSIC'} is the classic netCDF 3 file format that does not
-handle 2+ Gb files very well. C{'NETCDF3_64BIT'} is the 64-bit offset
-version of the netCDF 3 file format, which fully supports 2+ GB files, but
-is only compatible with clients linked against netCDF version 3.6.0 or
-later.
-
-C{diskless} - create diskless (in memory) file.  This is an experimental
-feature added to the C library after the netcdf-4.2 release.
-
-C{persist} - if diskless=True, persist file to disk when closed (default False).
-
-C{keepweakref} - if keepweakref=True, child Dimension and Variable instances will keep weak
-references to the parent Dataset or Group object.  Default is False, which
-means strong references will be kept.  Having Dimension and Variable instances
-keep a strong reference to the parent Dataset instance, which in turn keeps a
-reference to child Dimension and Variable instances, creates circular references.
-Circular references complicate garbage collection, which may mean increased
-memory usage for programs that create may Dataset instances with lots of
-Variables.  Setting keepweakref to True allows Dataset instances to be
-garbage collected as soon as they go out of scope, potential reducing memory
-usage.  However, in most cases this is not desirable, since the associated
-Variable instances may still be needed, but are rendered unusable when the
-parent Dataset instance is garbage collected.
-
-B{Returns:}
-
-a L{Dataset} instance.  All further operations on the netCDF
-Dataset are accomplised via L{Dataset} instance methods.
+data fields stored in a netCDF file. See `netCDF4.Dataset.__init__` for more
+details.
 
 A list of attribute names corresponding to global netCDF attributes
-defined for the L{Dataset} can be obtained with the L{ncattrs()} method.
+defined for the `netCDF4.Dataset` can be obtained with the
+`netCDF4.Dataset.ncattrs` method.
 These attributes can be created by assigning to an attribute of the
-L{Dataset} instance. A dictionary containing all the netCDF attribute
-name/value pairs is provided by the C{__dict__} attribute of a
-L{Dataset} instance.
-
-The instance variables C{dimensions, variables, groups,
-cmptypes, data_model, disk_format} and C{path} are read-only (and should not be modified by the
-user).
-
- at ivar dimensions: The C{dimensions} dictionary maps the names of
-dimensions defined for the L{Group} or L{Dataset} to instances of the
-L{Dimension} class.
-
- at ivar variables: The C{variables} dictionary maps the names of variables
-defined for this L{Dataset} or L{Group} to instances of the L{Variable}
-class.
-
- at ivar groups: The groups dictionary maps the names of groups created for
-this L{Dataset} or L{Group} to instances of the L{Group} class (the
-L{Dataset} class is simply a special case of the L{Group} class which
-describes the root group in the netCDF file).
-
- at ivar cmptypes: The C{cmptypes} dictionary maps the names of
-compound types defined for the L{Group} or L{Dataset} to instances of the
-L{CompoundType} class.
-
- at ivar vltypes: The C{vltypes} dictionary maps the names of
-variable-length types defined for the L{Group} or L{Dataset} to instances of the
-L{VLType} class.
-
- at ivar data_model: The C{data_model} attribute describes the netCDF
-data model version, one of C{NETCDF3_CLASSIC}, C{NETCDF4},
-C{NETCDF4_CLASSIC} or C{NETCDF3_64BIT}.
-
- at ivar file_format: same as C{data_model}, retained for backwards
-compatibility.
-
- at ivar disk_format: The C{disk_format} attribute describes the underlying
-file format, one of C{NETCDF3}, C{HDF5}, C{HDF4},
-C{PNETCDF}, C{DAP2}, C{DAP4} or C{UNDEFINED}. Only available if using
-netcdf C library version >= 4.3.1, otherwise will always return C{UNDEFINED}.
-
- at ivar path: The C{path} attribute shows the location of the L{Group} in
-the L{Dataset} in a unix directory format (the names of groups in the
-hierarchy separated by backslashes). A L{Dataset} instance is the root
-group, so the path is simply C{'/'}.
-
- at ivar parent:  The C{parent} attribute is a reference to the parent
-L{Group} instance. C{None} for a the root group or L{Dataset} instance"""
+`netCDF4.Dataset` instance. A dictionary containing all the netCDF attribute
+name/value pairs is provided by the `__dict__` attribute of a
+`netCDF4.Dataset` instance.
+
+The following class variables are read-only and should not be
+modified by the user.
+
+**`dimensions`**: The `dimensions` dictionary maps the names of
+dimensions defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+`netCDF4.Dimension` class.
+
+**`variables`**: The `variables` dictionary maps the names of variables
+defined for this `netCDF4.Dataset` or `netCDF4.Group` to instances of the 
+`netCDF4.Variable` class.
+
+**`groups`**: The groups dictionary maps the names of groups created for
+this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Group` class (the
+`netCDF4.Dataset` class is simply a special case of the `netCDF4.Group` class which
+describes the root group in the netCDF4 file).
+
+**`cmptypes`**: The `cmptypes` dictionary maps the names of
+compound types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+`netCDF4.CompoundType` class.
+
+**`vltypes`**: The `vltypes` dictionary maps the names of
+variable-length types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances 
+of the `netCDF4.VLType` class.
+
+**`data_model`**: `data_model` describes the netCDF
+data model version, one of `NETCDF3_CLASSIC`, `NETCDF4`,
+`NETCDF4_CLASSIC` or `NETCDF3_64BIT`.
+
+**`file_format`**: same as `data_model`, retained for backwards compatibility.
+
+**`disk_format`**: `disk_format` describes the underlying
+file format, one of `NETCDF3`, `HDF5`, `HDF4`,
+`PNETCDF`, `DAP2`, `DAP4` or `UNDEFINED`. Only available if using
+netcdf C library version >= 4.3.1, otherwise will always return
+`UNDEFINED`.
+
+**`parent`**: `parent` is a reference to the parent
+`netCDF4.Group` instance. `None` for a the root group or `netCDF4.Dataset`
+instance.
+
+**`path`**: `path` shows the location of the `netCDF4.Group` in
+the `netCDF4.Dataset` in a unix directory format (the names of groups in the
+hierarchy separated by backslashes). A `netCDF4.Dataset` instance is the root
+group, so the path is simply `'/'`.
+
+**`keepweakref`**: If `True`, child Dimension and Variables objects only keep weak 
+references to the parent Dataset or Group.
+"""
     cdef object __weakref__
     cdef public int _grpid
     cdef public int _isopen
     cdef public groups, dimensions, variables, disk_format, path, parent,\
-    file_format, data_model, cmptypes, vltypes, keepweakref, \
-    __orthogonal_indexing__
+    file_format, data_model, cmptypes, vltypes, __orthogonal_indexing__, \
+    keepweakref
+    # Docstrings for class variables (used by pdoc).
+    __pdoc__['Dataset.dimensions']=\
+    """The `dimensions` dictionary maps the names of
+    dimensions defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+    `netCDF4.Dimension` class."""
+    __pdoc__['Dataset.variables']=\
+    """The `variables` dictionary maps the names of variables
+    defined for this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Variable`
+    class."""
+    __pdoc__['Dataset.groups']=\
+    """The groups dictionary maps the names of groups created for
+    this `netCDF4.Dataset` or `netCDF4.Group` to instances of the `netCDF4.Group` class (the
+    `netCDF4.Dataset` class is simply a special case of the `netCDF4.Group` class which
+    describes the root group in the netCDF4 file)."""
+    __pdoc__['Dataset.cmptypes']=\
+    """The `cmptypes` dictionary maps the names of
+    compound types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+    `netCDF4.CompoundType` class."""
+    __pdoc__['Dataset.vltypes']=\
+    """The `vltypes` dictionary maps the names of
+    variable-length types defined for the `netCDF4.Group` or `netCDF4.Dataset` to instances of the
+    `netCDF4.VLType` class."""
+    __pdoc__['Dataset.data_model']=\
+    """`data_model` describes the netCDF
+    data model version, one of `NETCDF3_CLASSIC`, `NETCDF4`,
+    `NETCDF4_CLASSIC` or `NETCDF3_64BIT`."""
+    __pdoc__['Dataset.file_format']=\
+    """same as `data_model`, retained for backwards compatibility."""
+    __pdoc__['Dataset.disk_format']=\
+    """`disk_format` describes the underlying
+    file format, one of `NETCDF3`, `HDF5`, `HDF4`,
+    `PNETCDF`, `DAP2`, `DAP4` or `UNDEFINED`. Only available if using
+    netcdf C library version >= 4.3.1, otherwise will always return
+    `UNDEFINED`."""
+    __pdoc__['Dataset.parent']=\
+    """`parent` is a reference to the parent
+    `netCDF4.Group` instance. `None` for a the root group or `netCDF4.Dataset` instance"""
+    __pdoc__['Dataset.path']=\
+    """`path` shows the location of the `netCDF4.Group` in
+    the `netCDF4.Dataset` in a unix directory format (the names of groups in the
+    hierarchy separated by backslashes). A `netCDF4.Dataset` instance is the root
+    group, so the path is simply `'/'`."""
+    __pdoc__['Dataset.keepweakref']=\
+    """If `True`, child Dimension and Variables objects only keep weak references to
+    the parent Dataset or Group.""" 
 
     def __init__(self, filename, mode='r', clobber=True, format='NETCDF4',
                  diskless=False, persist=False, keepweakref=False, **kwargs):
+        """
+        **`__init__(self, filename, mode="r", clobber=True, diskless=False,
+        persist=False, weakref=False, format='NETCDF4')`**
+
+        `netCDF4.Dataset` constructor.
+
+        **`filename`**: Name of netCDF file to hold dataset.
+        
+        **`mode`**: access mode. `r` means read-only; no data can be
+        modified. `w` means write; a new file is created, an existing file with
+        the same name is deleted. `a` and `r+` mean append (in analogy with
+        serial files); an existing file is opened for reading and writing.
+        Appending `s` to modes `w`, `r+` or `a` will enable unbuffered shared
+        access to `NETCDF3_CLASSIC` or `NETCDF3_64BIT` formatted files.
+        Unbuffered acesss may be useful even if you don't need shared
+        access, since it may be faster for programs that don't access data
+        sequentially. This option is ignored for `NETCDF4` and `NETCDF4_CLASSIC`
+        formatted files.
+        
+        **`clobber`**: if `True` (default), opening a file with `mode='w'`
+        will clobber an existing file with the same name.  if `False`, an
+        exception will be raised if a file with the same name already exists.
+        
+        **`format`**: underlying file format (one of `'NETCDF4',
+        'NETCDF4_CLASSIC', 'NETCDF3_CLASSIC'` or `'NETCDF3_64BIT'`.  Only
+        relevant if `mode = 'w'` (if `mode = 'r','a'` or `'r+'` the file format
+        is automatically detected). Default `'NETCDF4'`, which means the data is
+        stored in an HDF5 file, using netCDF 4 API features.  Setting
+        `format='NETCDF4_CLASSIC'` will create an HDF5 file, using only netCDF 3
+        compatibile API features. netCDF 3 clients must be recompiled and linked
+        against the netCDF 4 library to read files in `NETCDF4_CLASSIC` format.
+        `'NETCDF3_CLASSIC'` is the classic netCDF 3 file format that does not
+        handle 2+ Gb files very well. `'NETCDF3_64BIT'` is the 64-bit offset
+        version of the netCDF 3 file format, which fully supports 2+ GB files, but
+        is only compatible with clients linked against netCDF version 3.6.0 or
+        later.
+        
+        **`diskless`**: If `True`, create diskless (in memory) file.  
+        This is an experimental feature added to the C library after the
+        netcdf-4.2 release.
+        
+        **`persist`**: if `diskless=True`, persist file to disk when closed
+        (default `False`).
+
+        **`keepweakref`**: if `True`, child Dimension and Variable instances will keep weak
+        references to the parent Dataset or Group object.  Default is `False`, which
+        means strong references will be kept.  Having Dimension and Variable instances
+        keep a strong reference to the parent Dataset instance, which in turn keeps a
+        reference to child Dimension and Variable instances, creates circular references.
+        Circular references complicate garbage collection, which may mean increased
+        memory usage for programs that create may Dataset instances with lots of
+        Variables.  Setting `keepweakref=True` allows Dataset instances to be
+        garbage collected as soon as they go out of scope, potential reducing memory
+        usage.  However, in most cases this is not desirable, since the associated
+        Variable instances may still be needed, but are rendered unusable when the
+        parent Dataset instance is garbage collected.
+        """
         cdef int grpid, ierr, numgrps, numdims, numvars
         cdef char *path
         cdef char namstring[NC_MAX_NAME+1]
@@ -1599,7 +1668,7 @@ L{Group} instance. C{None} for a the root group or L{Dataset} instance"""
 
     def filepath(self):
         """
-filepath(self)
+**`filepath(self)`**
 
 Get the file system path (or the opendap URL) which was used to
 open/create the Dataset. Requires netcdf >= 4.1.2"""
@@ -1649,9 +1718,10 @@ version 4.1.2 or higher of the netcdf C lib, and rebuild netcdf4-python."""
 
     def close(self):
         """
-close(self)
+**`close(self)`**
 
-Close the Dataset."""
+Close the Dataset.
+        """
         cdef int ierr
         ierr = nc_close(self._grpid)
         if ierr != NC_NOERR:
@@ -1666,9 +1736,9 @@ Close the Dataset."""
 
     def sync(self):
         """
-sync(self)
+**`sync(self)`**
 
-Writes all buffered data in the L{Dataset} to the disk file."""
+Writes all buffered data in the `netCDF4.Dataset` to the disk file."""
         cdef int ierr
         ierr = nc_sync(self._grpid)
         if ierr != NC_NOERR:
@@ -1684,16 +1754,16 @@ Writes all buffered data in the L{Dataset} to the disk file."""
 
     def set_fill_on(self):
         """
-set_fill_on(self)
+**`set_fill_on(self)`**
 
-Sets the fill mode for a L{Dataset} open for writing to C{on}.
+Sets the fill mode for a `netCDF4.Dataset` open for writing to `on`.
 
 This causes data to be pre-filled with fill values. The fill values can be
-controlled by the variable's C{_Fill_Value} attribute, but is usually
-sufficient to the use the netCDF default C{_Fill_Value} (defined
+controlled by the variable's `_Fill_Value` attribute, but is usually
+sufficient to the use the netCDF default `_Fill_Value` (defined
 separately for each variable type). The default behavior of the netCDF
-library correspongs to C{set_fill_on}.  Data which are equal to the
-C{_Fill_Value} indicate that the variable was created, but never written
+library correspongs to `set_fill_on`.  Data which are equal to the
+`_Fill_Value` indicate that the variable was created, but never written
 to."""
         cdef int ierr, oldmode
         ierr = nc_set_fill (self._grpid, NC_FILL, &oldmode)
@@ -1702,9 +1772,9 @@ to."""
 
     def set_fill_off(self):
         """
-set_fill_off(self)
+**`set_fill_off(self)`**
 
-Sets the fill mode for a L{Dataset} open for writing to C{off}.
+Sets the fill mode for a `netCDF4.Dataset` open for writing to `off`.
 
 This will prevent the data from being pre-filled with fill values, which
 may result in some performance improvements. However, you must then make
@@ -1716,25 +1786,25 @@ sure the data is actually written before being read."""
 
     def createDimension(self, dimname, size=None):
         """
-createDimension(self, dimname, size=None)
+**`createDimension(self, dimname, size=None)`**
 
-Creates a new dimension with the given C{dimname} and C{size}.
+Creates a new dimension with the given `dimname` and `size`.
 
-C{size} must be a positive integer or C{None}, which stands for
-"unlimited" (default is C{None}). Specifying a size of 0 also
-results in an unlimited dimension. The return value is the L{Dimension}
+`size` must be a positive integer or `None`, which stands for
+"unlimited" (default is `None`). Specifying a size of 0 also
+results in an unlimited dimension. The return value is the `netCDF4.Dimension`
 class instance describing the new dimension.  To determine the current
-maximum size of the dimension, use the C{len} function on the L{Dimension}
+maximum size of the dimension, use the `len` function on the `netCDF4.Dimension`
 instance. To determine if a dimension is 'unlimited', use the
-C{isunlimited()} method of the L{Dimension} instance."""
+`netCDF4.Dimension.isunlimited` method of the `netCDF4.Dimension` instance."""
         self.dimensions[dimname] = Dimension(self, dimname, size=size)
         return self.dimensions[dimname]
 
     def renameDimension(self, oldname, newname):
         """
-renameDimension(self, oldname, newname)
+**`renameDimension(self, oldname, newname)`**
 
-rename a L{Dimension} named C{oldname} to C{newname}."""
+rename a `netCDF4.Dimension` named `oldname` to `newname`."""
         cdef char *namstring
         bytestr = _strencode(newname)
         namstring = bytestr
@@ -1756,17 +1826,17 @@ rename a L{Dimension} named C{oldname} to C{newname}."""
 
     def createCompoundType(self, datatype, datatype_name):
         """
-createCompoundType(self, datatype, datatype_name)
+**`createCompoundType(self, datatype, datatype_name)`**
 
-Creates a new compound data type named C{datatype_name} from the numpy
-dtype object C{datatype}.
+Creates a new compound data type named `datatype_name` from the numpy
+dtype object `datatype`.
 
- at attention: If the new compound data type contains other compound data types
+***Note***: If the new compound data type contains other compound data types
 (i.e. it is a 'nested' compound type, where not all of the elements
-are homogenous numeric data types), then the 'inner' compound types B{must} be
+are homogenous numeric data types), then the 'inner' compound types **must** be
 created first.
 
-The return value is the L{CompoundType} class instance describing the new
+The return value is the `netCDF4.CompoundType` class instance describing the new
 datatype."""
         self.cmptypes[datatype_name] = CompoundType(self, datatype,\
                 datatype_name)
@@ -1774,12 +1844,12 @@ datatype."""
 
     def createVLType(self, datatype, datatype_name):
         """
-createVLType(self, datatype, datatype_name)
+**`createVLType(self, datatype, datatype_name)`**
 
-Creates a new VLEN data type named C{datatype_name} from a numpy
-dtype object C{datatype}.
+Creates a new VLEN data type named `datatype_name` from a numpy
+dtype object `datatype`.
 
-The return value is the L{VLType} class instance describing the new
+The return value is the `netCDF4.VLType` class instance describing the new
 datatype."""
         self.vltypes[datatype_name] = VLType(self, datatype, datatype_name)
         return self.vltypes[datatype_name]
@@ -1789,124 +1859,126 @@ datatype."""
             chunksizes=None, endian='native', least_significant_digit=None,
             fill_value=None, chunk_cache=None):
         """
-createVariable(self, varname, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None, fill_value=None)
+**`createVariable(self, varname, datatype, dimensions=(), zlib=False,
+complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None,
+endian='native', least_significant_digit=None, fill_value=None)`**
 
-Creates a new variable with the given C{varname}, C{datatype}, and
-C{dimensions}. If dimensions are not given, the variable is assumed to be
+Creates a new variable with the given `varname`, `datatype`, and
+`dimensions`. If dimensions are not given, the variable is assumed to be
 a scalar.
 
-If C{varname} is specified as a path, using forward slashes as in unix to
+If `varname` is specified as a path, using forward slashes as in unix to
 separate components, then intermediate groups will be created as necessary 
-For example, C{createVariable('/GroupA/GroupB/VarC'),('x','y'),float)} will create groups C{GroupA}
-and C{GroupA/GroupB}, plus the variable C{GroupA/GroupB/VarC}, if the preceding
+For example, `createVariable('/GroupA/GroupB/VarC'),('x','y'),float)` will create groups `GroupA`
+and `GroupA/GroupB`, plus the variable `GroupA/GroupB/VarC`, if the preceding
 groups don't already exist.
 
-The C{datatype} can be a numpy datatype object, or a string that describes
-a numpy dtype object (like the C{dtype.str} attribue of a numpy array).
-Supported specifiers include: C{'S1' or 'c' (NC_CHAR), 'i1' or 'b' or 'B'
+The `datatype` can be a numpy datatype object, or a string that describes
+a numpy dtype object (like the `dtype.str` attribue of a numpy array).
+Supported specifiers include: `'S1' or 'c' (NC_CHAR), 'i1' or 'b' or 'B'
 (NC_BYTE), 'u1' (NC_UBYTE), 'i2' or 'h' or 's' (NC_SHORT), 'u2'
 (NC_USHORT), 'i4' or 'i' or 'l' (NC_INT), 'u4' (NC_UINT), 'i8' (NC_INT64),
-'u8' (NC_UINT64), 'f4' or 'f' (NC_FLOAT), 'f8' or 'd' (NC_DOUBLE)}.
-C{datatype} can also be a L{CompoundType} instance
-(for a structured, or compound array), a L{VLType} instance
-(for a variable-length array), or the python C{str} builtin
+'u8' (NC_UINT64), 'f4' or 'f' (NC_FLOAT), 'f8' or 'd' (NC_DOUBLE)`.
+`datatype` can also be a `netCDF4.CompoundType` instance
+(for a structured, or compound array), a `netCDF4.VLType` instance
+(for a variable-length array), or the python `str` builtin
 (for a variable-length string array). Numpy string and unicode datatypes with
-length greater than one are aliases for C{str}.
+length greater than one are aliases for `str`.
 
 Data from netCDF variables is presented to python as numpy arrays with
 the corresponding data type.
 
-C{dimensions} must be a tuple containing dimension names (strings) that
-have been defined previously using C{createDimension}. The default value
+`dimensions` must be a tuple containing dimension names (strings) that
+have been defined previously using `netCDF4.Dataset.createDimension`. The default value
 is an empty tuple, which means the variable is a scalar.
 
-If the optional keyword C{zlib} is C{True}, the data will be compressed in
-the netCDF file using gzip compression (default C{False}).
+If the optional keyword `zlib` is `True`, the data will be compressed in
+the netCDF file using gzip compression (default `False`).
 
-The optional keyword C{complevel} is an integer between 1 and 9 describing
-the level of compression desired (default 4). Ignored if C{zlib=False}.
+The optional keyword `complevel` is an integer between 1 and 9 describing
+the level of compression desired (default 4). Ignored if `zlib=False`.
 
-If the optional keyword C{shuffle} is C{True}, the HDF5 shuffle filter
-will be applied before compressing the data (default C{True}).  This
-significantly improves compression. Default is C{True}. Ignored if
-C{zlib=False}.
+If the optional keyword `shuffle` is `True`, the HDF5 shuffle filter
+will be applied before compressing the data (default `True`).  This
+significantly improves compression. Default is `True`. Ignored if
+`zlib=False`.
 
-If the optional keyword C{fletcher32} is C{True}, the Fletcher32 HDF5
-checksum algorithm is activated to detect errors. Default C{False}.
+If the optional keyword `fletcher32` is `True`, the Fletcher32 HDF5
+checksum algorithm is activated to detect errors. Default `False`.
 
-If the optional keyword C{contiguous} is C{True}, the variable data is
-stored contiguously on disk.  Default C{False}. Setting to C{True} for
+If the optional keyword `contiguous` is `True`, the variable data is
+stored contiguously on disk.  Default `False`. Setting to `True` for
 a variable with an unlimited dimension will trigger an error.
 
-The optional keyword C{chunksizes} can be used to manually specify the
+The optional keyword `chunksizes` can be used to manually specify the
 HDF5 chunksizes for each dimension of the variable. A detailed
-discussion of HDF chunking and I/O performance is available U{here
-<http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html>}.
+discussion of HDF chunking and I/O performance is available
+[here](http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html).
 Basically, you want the chunk size for each dimension to match as
 closely as possible the size of the data block that users will read
-from the file.  C{chunksizes} cannot be set if C{contiguous=True}.
+from the file.  `chunksizes` cannot be set if `contiguous=True`.
 
-The optional keyword C{endian} can be used to control whether the
+The optional keyword `endian` can be used to control whether the
 data is stored in little or big endian format on disk. Possible
-values are C{little, big} or C{native} (default). The library
+values are `little, big` or `native` (default). The library
 will automatically handle endian conversions when the data is read,
 but if the data is always going to be read on a computer with the
 opposite format as the one used to create the file, there may be
 some performance advantage to be gained by setting the endian-ness.
 
-The C{zlib, complevel, shuffle, fletcher32, contiguous, chunksizes} and C{endian}
+The `zlib, complevel, shuffle, fletcher32, contiguous, chunksizes` and `endian`
 keywords are silently ignored for netCDF 3 files that do not use HDF5.
 
-The optional keyword C{fill_value} can be used to override the default
-netCDF C{_FillValue} (the value that the variable gets filled with before
-any data is written to it, defaults given in netCDF4.default_fillvals).
-If fill_value is set to C{False}, then the variable is not pre-filled.
+The optional keyword `fill_value` can be used to override the default
+netCDF `_FillValue` (the value that the variable gets filled with before
+any data is written to it, defaults given in `netCDF4.default_fillvals`).
+If fill_value is set to `False`, then the variable is not pre-filled.
 
-If the optional keyword parameter C{least_significant_digit} is
+If the optional keyword parameter `least_significant_digit` is
 specified, variable data will be truncated (quantized). In conjunction
-with C{zlib=True} this produces 'lossy', but significantly more
-efficient compression. For example, if C{least_significant_digit=1},
-data will be quantized using C{numpy.around(scale*data)/scale}, where
+with `zlib=True` this produces 'lossy', but significantly more
+efficient compression. For example, if `least_significant_digit=1`,
+data will be quantized using `numpy.around(scale*data)/scale`, where
 scale = 2**bits, and bits is determined so that a precision of 0.1 is
-retained (in this case bits=4). From
-U{http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml}:
+retained (in this case bits=4). From the 
+[PSD metadata conventions](http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml):
 "least_significant_digit -- power of ten of the smallest decimal place
-in unpacked data that is a reliable value." Default is C{None}, or no
+in unpacked data that is a reliable value." Default is `None`, or no
 quantization, or 'lossless' compression.
 
-When creating variables in a C{NETCDF4} or C{NETCDF4_CLASSIC} formatted file,
+When creating variables in a `NETCDF4` or `NETCDF4_CLASSIC` formatted file,
 HDF5 creates something called a 'chunk cache' for each variable.  The
 default size of the chunk cache may be large enough to completely fill
 available memory when creating thousands of variables.  The optional
-keyword C{chunk_cache} allows you to reduce (or increase) the size of
+keyword `chunk_cache` allows you to reduce (or increase) the size of
 the default chunk cache when creating a variable.  The setting only
 persists as long as the Dataset is open - you can use the set_var_chunk_cache
 method to change it the next time the Dataset is opened.
 Warning - messing with this parameter can seriously degrade performance.
 
-The return value is the L{Variable} class instance describing the new
+The return value is the `netCDF4.Variable` class instance describing the new
 variable.
 
 A list of names corresponding to netCDF variable attributes can be
-obtained with the L{Variable} method C{ncattrs()}. A dictionary
+obtained with the `netCDF4.Variable` method `netCDF4.Variable.ncattrs`. A dictionary
 containing all the netCDF attribute name/value pairs is provided by
-the C{__dict__} attribute of a L{Variable} instance.
+the `__dict__` attribute of a `netCDF4.Variable` instance.
 
-L{Variable} instances behave much like array objects. Data can be
+`netCDF4.Variable` instances behave much like array objects. Data can be
 assigned to or retrieved from a variable with indexing and slicing
-operations on the L{Variable} instance. A L{Variable} instance has six
-Dataset standard attributes: C{dimensions, dtype, shape, ndim, name} and
-C{least_significant_digit}. Application programs should never modify
-these attributes. The C{dimensions} attribute is a tuple containing the
-names of the dimensions associated with this variable. The C{dtype}
-attribute is a string describing the variable's data type (C{i4, f8,
-S1,} etc). The C{shape} attribute is a tuple describing the current
-sizes of all the variable's dimensions. The C{name} attribute is a
+operations on the `netCDF4.Variable` instance. A `netCDF4.Variable` instance has six
+Dataset standard attributes: `dimensions, dtype, shape, ndim, name` and
+`least_significant_digit`. Application programs should never modify
+these attributes. The `dimensions` attribute is a tuple containing the
+names of the dimensions associated with this variable. The `dtype`
+attribute is a string describing the variable's data type (`i4, f8,
+S1,` etc). The `shape` attribute is a tuple describing the current
+sizes of all the variable's dimensions. The `name` attribute is a
 string containing the name of the Variable instance.
-The C{least_significant_digit}
+The `least_significant_digit`
 attributes describes the power of ten of the smallest decimal place in
-the data the contains a reliable value.  assigned to the L{Variable}
-instance. If C{None}, the data is not truncated. The C{ndim} attribute
+the data the contains a reliable value.  assigned to the `netCDF4.Variable`
+instance. If `None`, the data is not truncated. The `ndim` attribute
 is the number of variable dimensions."""
         # if varname specified as a path, split out group names.
         varname = posixpath.normpath(varname)
@@ -1926,9 +1998,9 @@ is the number of variable dimensions."""
 
     def renameVariable(self, oldname, newname):
         """
-renameVariable(self, oldname, newname)
+**`renameVariable(self, oldname, newname)`**
 
-rename a L{Variable} named C{oldname} to C{newname}"""
+rename a `netCDF4.Variable` named `oldname` to `newname`"""
         cdef char *namstring
         try:
             var = self.variables[oldname]
@@ -1948,19 +2020,19 @@ rename a L{Variable} named C{oldname} to C{newname}"""
 
     def createGroup(self, groupname):
         """
-createGroup(self, groupname)
+**`createGroup(self, groupname)`**
 
-Creates a new L{Group} with the given C{groupname}.
+Creates a new `netCDF4.Group` with the given `groupname`.
 
-If C{groupname} is specified as a path, using forward slashes as in unix to
+If `groupname` is specified as a path, using forward slashes as in unix to
 separate components, then intermediate groups will be created as necessary 
-(analagous to C{mkdir -p} in unix).  For example,
-C{createGroup('/GroupA/GroupB/GroupC')} will create C{GroupA},
-C{GroupA/GroupB}, and C{GroupA/GroupB/GroupC}, if they don't already exist.
+(analagous to `mkdir -p` in unix).  For example,
+`createGroup('/GroupA/GroupB/GroupC')` will create `GroupA`,
+`GroupA/GroupB`, and `GroupA/GroupB/GroupC`, if they don't already exist.
 If the specified path describes a group that already exists, no error is
 raised.
 
-The return value is a L{Group} class instance."""
+The return value is a `netCDF4.Group` class instance."""
         # if group specified as a path, split out group names
         groupname = posixpath.normpath(groupname)
         nestedgroups = groupname.split('/')
@@ -1978,28 +2050,28 @@ The return value is a L{Group} class instance."""
 
     def ncattrs(self):
         """
-ncattrs(self)
+**`ncattrs(self)`**
 
-return netCDF global attribute names for this L{Dataset} or L{Group} in a list."""
+return netCDF global attribute names for this `netCDF4.Dataset` or `netCDF4.Group` in a list."""
         return _get_att_names(self._grpid, NC_GLOBAL)
 
     def setncattr(self,name,value):
         """
-setncattr(self,name,value)
+**`setncattr(self,name,value)`**
 
-set a netCDF dataset or group attribute using name,value pair.  Only use if you need to set a
-netCDF attribute with the same name as one of the reserved python
-attributes."""
+set a netCDF dataset or group attribute using name,value pair.
+Use if you need to set a netCDF attribute with the
+with the same name as one of the reserved python attributes."""
         if self.data_model != 'NETCDF4': self._redef()
         _set_att(self, NC_GLOBAL, name, value)
         if self.data_model !=  'NETCDF4': self._enddef()
 
     def setncatts(self,attdict):
         """
-setncatts(self,attdict)
+**`setncatts(self,attdict)`**
 
 set a bunch of netCDF dataset or group attributes at once using a python dictionary.
-This may be faster when setting a lot of attributes for a NETCDF3
+This may be faster when setting a lot of attributes for a `NETCDF3`
 formatted file, since nc_redef/nc_enddef is not called in between setting
 each attribute"""
         if self.data_model != 'NETCDF4': self._redef()
@@ -2009,11 +2081,11 @@ each attribute"""
 
     def getncattr(self,name):
         """
-getncattr(self,name)
+**`getncattr(self,name)`**
 
-retrievel a netCDF dataset or group attribute.  Only use if you need to set a
-netCDF attribute with the same name as one of the reserved python
-attributes."""
+retrievel a netCDF dataset or group attribute.
+Use if you need to get a netCDF attribute with the same 
+name as one of the reserved python attributes."""
         return _get_att(self, NC_GLOBAL, name)
 
     def __delattr__(self,name):
@@ -2026,9 +2098,9 @@ attributes."""
 
     def delncattr(self, name):
         """
-delncattr(self,name,value)
+**`delncattr(self,name,value)`**
 
-delete a netCDF dataset or group attribute.  Only use if you need to delete a
+delete a netCDF dataset or group attribute.  Use if you need to delete a
 netCDF attribute with the same name as one of the reserved python
 attributes."""
         cdef char *attname
@@ -2073,9 +2145,9 @@ attributes."""
 
     def renameAttribute(self, oldname, newname):
         """
-renameAttribute(self, oldname, newname)
+**`renameAttribute(self, oldname, newname)`**
 
-rename a L{Dataset} or L{Group} attribute named C{oldname} to C{newname}."""
+rename a `netCDF4.Dataset` or `netCDF4.Group` attribute named `oldname` to `newname`."""
         cdef int ierr
         cdef char *oldnamec
         cdef char *newnamec
@@ -2089,9 +2161,9 @@ rename a L{Dataset} or L{Group} attribute named C{oldname} to C{newname}."""
 
     def renameGroup(self, oldname, newname):
         """
-renameGroup(self, oldname, newname)
+**`renameGroup(self, oldname, newname)`**
 
-rename a L{Group} named C{oldname} to C{newname} (requires netcdf >= 4.3.1)."""
+rename a `netCDF4.Group` named `oldname` to `newname` (requires netcdf >= 4.3.1)."""
         cdef int ierr
         cdef char *newnamec
         IF HAS_RENAME_GRP:
@@ -2116,19 +2188,15 @@ version 4.3.1 or higher of the netcdf C lib, and rebuild netcdf4-python."""
 
     def set_auto_maskandscale(self, value):
         """
-set_auto_maskandscale(self, True_or_False)
-
-Call L{set_auto_maskandscale} for all variables contained in this L{Dataset} or
-L{Group}, as well as for all variables in all its subgroups.
+**`set_auto_maskandscale(self, True_or_False)`**
 
-B{Parameters}:
+Call `netCDF4.Variable.set_auto_maskandscale` for all variables contained in this `netCDF4.Dataset` or
+`netCDF4.Group`, as well as for all variables in all its subgroups.
 
-B{C{True_or_False}} - Boolean determining if automatic conversion to masked arrays
+**`True_or_False`**: Boolean determining if automatic conversion to masked arrays
 and variable scaling shall be applied for all variables.
 
-B{Notes}:
-
-Calling this function only affects existing variables. Variables created
+***Note***: Calling this function only affects existing variables. Variables created
 after calling this function will follow the default behaviour.
         """
 
@@ -2143,19 +2211,15 @@ after calling this function will follow the default behaviour.
 
     def set_auto_mask(self, value):
         """
-set_auto_mask(self, True_or_False)
-
-Call L{set_auto_mask} for all variables contained in this L{Dataset} or
-L{Group}, as well as for all variables in all its subgroups.
+**`set_auto_mask(self, True_or_False)`**
 
-B{Parameters}:
+Call `netCDF4.Variable.set_auto_mask` for all variables contained in this `netCDF4.Dataset` or
+`netCDF4.Group`, as well as for all variables in all its subgroups.
 
-B{C{True_or_False}} - Boolean determining if automatic conversion to masked arrays
+**`True_or_False`**: Boolean determining if automatic conversion to masked arrays
 shall be applied for all variables.
 
-B{Notes}:
-
-Calling this function only affects existing variables. Variables created
+***Note***: Calling this function only affects existing variables. Variables created
 after calling this function will follow the default behaviour.
         """
 
@@ -2169,19 +2233,15 @@ after calling this function will follow the default behaviour.
 
     def set_auto_scale(self, value):
         """
-set_auto_scale(self, True_or_False)
-
-Call L{set_auto_scale} for all variables contained in this L{Dataset} or
-L{Group}, as well as for all variables in all its subgroups.
+**`set_auto_scale(self, True_or_False)`**
 
-B{Parameters}:
+Call `netCDF4.Variable.set_auto_scale` for all variables contained in this `netCDF4.Dataset` or
+`netCDF4.Group`, as well as for all variables in all its subgroups.
 
-B{C{True_or_False}} - Boolean determining if automatic variable scaling
+**`True_or_False`**: Boolean determining if automatic variable scaling
 shall be applied for all variables.
 
-B{Notes}:
-
-Calling this function only affects existing variables. Variables created
+***Note***: Calling this function only affects existing variables. Variables created
 after calling this function will follow the default behaviour.
         """
 
@@ -2196,33 +2256,37 @@ after calling this function will follow the default behaviour.
 
 cdef class Group(Dataset):
     """
-Group(self, parent, name)
-
 Groups define a hierarchical namespace within a netCDF file. They are
-analagous to directories in a unix filesystem. Each L{Group} behaves like
-a L{Dataset} within a Dataset, and can contain it's own variables,
-dimensions and attributes (and other Groups).
-
-L{Group} instances should be created using the
-L{createGroup<Dataset.createGroup>} method of a L{Dataset} instance, or
-another L{Group} instance, not using this class directly.
-
-B{Parameters:}
-
-B{C{parent}} - L{Group} instance for the parent group.  If being created
-in the root group, use a L{Dataset} instance.
+analagous to directories in a unix filesystem. Each `netCDF4.Group` behaves like
+a `netCDF4.Dataset` within a Dataset, and can contain it's own variables,
+dimensions and attributes (and other Groups). See `netCDF4.Group.__init__`
+for more details.
 
-B{C{name}} - Name of the group.
+`netCDF4.Group` inherits from `netCDF4.Dataset`, so all the 
+`netCDF4.Dataset` class methods and variables are available
+to a `netCDF4.Group` instance (except the `close` method).
 
-B{Returns:}
+Additional read-only class variables:
 
-a L{Group} instance.  All further operations on the netCDF
-Group are accomplished via L{Group} instance methods.
-
-L{Group} inherits from L{Dataset}, so all the L{Dataset} class methods and
-variables are available to a L{Group} instance (except the C{close}
-method)."""
+**`name`**: String describing the group name.
+"""
+    # Docstrings for class variables (used by pdoc).
+    __pdoc__['Group.name']=\
+    """A string describing the name of the `netCDF4.Group`."""
     def __init__(self, parent, name, **kwargs):
+        """
+        **`__init__(self, parent, name)`**
+        `netCDF4.Group` constructor.
+        
+        **`parent`**: `netCDF4.Group` instance for the parent group.  If being created
+        in the root group, use a `netCDF4.Dataset` instance.
+        
+        **`name`**: - Name of the group.
+
+        ***Note***: `netCDF4.Group` instances should be created using the
+        `netCDF4.Dataset.createGroup` method of a `netCDF4.Dataset` instance, or
+        another `netCDF4.Group` instance, not using this class directly.
+        """
         cdef int ierr
         cdef char *groupname
         # flag to indicate that Variables in this Group support orthogonal indexing.
@@ -2260,11 +2324,11 @@ method)."""
 
     def close(self):
         """
-close(self)
+**`close(self)`**
 
-overrides L{Dataset} close method which does not apply to L{Group}
+overrides `netCDF4.Dataset` close method which does not apply to `netCDF4.Group`
 instances, raises IOError."""
-        raise IOError('cannot close a L{Group} (only applies to Dataset)')
+        raise IOError('cannot close a `netCDF4.Group` (only applies to Dataset)')
 
     def _getname(self):
         # private method to get name associated with instance.
@@ -2286,37 +2350,42 @@ instances, raises IOError."""
 
 cdef class Dimension:
     """
-Dimension(self, group, name, size=None)
+A netCDF `netCDF4.Dimension` is used to describe the coordinates of a `netCDF4.Variable`.
+See `netCDF4.Dimension.__init__` for more details.
 
-A netCDF L{Dimension} is used to describe the coordinates of a L{Variable}.
+The current maximum size of a `netCDF4.Dimension` instance can be obtained by
+calling the python `len` function on the `netCDF4.Dimension` instance. The
+`netCDF4.Dimension.isunlimited` method of a `netCDF4.Dimension` instance can be used to
+determine if the dimension is unlimited.
 
-L{Dimension} instances should be created using the
-L{createDimension<Dataset.createDimension>} method of a L{Group} or
-L{Dataset} instance, not using this class directly.
+Read-only class variables:
 
-B{Parameters:}
-
-B{C{group}} - L{Group} instance to associate with dimension.
-
-B{C{name}}  - Name of the dimension.
-
-B{Keywords:}
-
-B{C{size}}  - Size of the dimension. C{None} or 0 means unlimited. (Default C{None}).
-
-B{Returns:}
-
-a L{Dimension} instance.  All further operations on the netCDF Dimension
-are accomplised via L{Dimension} instance methods.
-
-The current maximum size of a L{Dimension} instance can be obtained by
-calling the python C{len} function on the L{Dimension} instance. The
-C{isunlimited()} method of a L{Dimension} instance can be used to
-determine if the dimension is unlimited"""
+**`name`**: String name, used when creating a `netCDF4.Variable` with
+`netCDF4.Dataset.createVariable`.
+"""
     cdef public int _dimid, _grpid
     cdef public _data_model, _name, _grp
+    # Docstrings for class variables (used by pdoc).
+    __pdoc__['Dimension.name']=\
+    """A string describing the name of the `netCDF4.Dimension` - used when creating a
+    `netCDF4.Variable` instance with `netCDF4.Dataset.createVariable`."""
 
     def __init__(self, grp, name, size=None, **kwargs):
+        """
+        **`__init__(self, group, name, size=None)`**
+
+        `netCDF4.Dimension` constructor.
+
+        **`group`**: `netCDF4.Group` instance to associate with dimension.
+        
+        **`name`**: Name of the dimension.
+        
+        **`size`**: Size of the dimension. `None` or 0 means unlimited. (Default `None`).
+
+        ***Note***: `netCDF4.Dimension` instances should be created using the
+        `netCDF4.Dataset.createDimension` method of a `netCDF4.Group` or
+        `netCDF4.Dataset` instance, not using `netCDF4.Dimension.__init__` directly.
+        """
         cdef int ierr
         cdef char *dimname
         cdef size_t lendim
@@ -2377,7 +2446,7 @@ determine if the dimension is unlimited"""
             return repr(type(self))+": name = '%s', size = %s\n" % (self._name,len(self))
 
     def __len__(self):
-        # len(L{Dimension} instance) returns current size of dimension
+        # len(`netCDF4.Dimension` instance) returns current size of dimension
         cdef int ierr
         cdef size_t lengthp
         with nogil:
@@ -2388,16 +2457,16 @@ determine if the dimension is unlimited"""
 
     def group(self):
         """
-group(self)
+**`group(self)`**
 
-return the group that this L{Dimension} is a member of."""
+return the group that this `netCDF4.Dimension` is a member of."""
         return self._grp
 
     def isunlimited(self):
         """
-isunlimited(self)
+**`isunlimited(self)`**
 
-returns C{True} if the L{Dimension} instance is unlimited, C{False} otherwise."""
+returns `True` if the `netCDF4.Dimension` instance is unlimited, `False` otherwise."""
         cdef int ierr, n, numunlimdims, ndims, nvars, ngatts, xdimid
         cdef int unlimdimids[NC_MAX_DIMS]
         if self._data_model == 'NETCDF4':
@@ -2430,148 +2499,190 @@ returns C{True} if the L{Dimension} instance is unlimited, C{False} otherwise.""
 
 cdef class Variable:
     """
-Variable(self, group, name, datatype, dimensions=(), zlib=False, complevel=4, shuffle=True, fletcher32=False, contiguous=False, chunksizes=None, endian='native', least_significant_digit=None,fill_value=None)
-
-A netCDF L{Variable} is used to read and write netCDF data.  They are
-analagous to numpy array objects.
-
-L{Variable} instances should be created using the
-L{createVariable<Dataset.createVariable>} method of a L{Dataset} or
-L{Group} instance, not using this class directly.
-
-B{Parameters:}
-
-B{C{group}} - L{Group} or L{Dataset} instance to associate with variable.
-
-B{C{name}}  - Name of the variable.
-
-B{C{datatype}} - L{Variable} data type. Can be specified by providing a
-numpy dtype object, or a string that describes a numpy dtype object.
-Supported values, corresponding to C{str} attribute of numpy dtype
-objects, include C{'f4'} (32-bit floating point), C{'f8'} (64-bit floating
-point), C{'i4'} (32-bit signed integer), C{'i2'} (16-bit signed integer),
-C{'i8'} (64-bit singed integer), C{'i4'} (8-bit singed integer), C{'i1'}
-(8-bit signed integer), C{'u1'} (8-bit unsigned integer), C{'u2'} (16-bit
-unsigned integer), C{'u4'} (32-bit unsigned integer), C{'u8'} (64-bit
-unsigned integer), or C{'S1'} (single-character string).  From
-compatibility with Scientific.IO.NetCDF, the old Numeric single character
-typecodes can also be used (C{'f'} instead of C{'f4'}, C{'d'} instead of
-C{'f8'}, C{'h'} or C{'s'} instead of C{'i2'}, C{'b'} or C{'B'} instead of
-C{'i1'}, C{'c'} instead of C{'S1'}, and C{'i'} or C{'l'} instead of
-C{'i4'}). C{datatype} can also be a L{CompoundType} instance
-(for a structured, or compound array), a L{VLType} instance
-(for a variable-length array), or the python C{str} builtin
-(for a variable-length string array). Numpy string and unicode datatypes with
-length greater than one are aliases for C{str}.
-
-B{Keywords:}
-
-B{C{dimensions}} - a tuple containing the variable's dimension names
-(defined previously with C{createDimension}). Default is an empty tuple
-which means the variable is a scalar (and therefore has no dimensions).
-
-B{C{zlib}} - if C{True}, data assigned to the L{Variable}
-instance is compressed on disk. Default C{False}.
-
-B{C{complevel}} - the level of zlib compression to use (1 is the fastest,
-but poorest compression, 9 is the slowest but best compression). Default 4.
-Ignored if C{zlib=False}.
-
-B{C{shuffle}} - if C{True}, the HDF5 shuffle filter is applied
-to improve compression. Default C{True}. Ignored if C{zlib=False}.
-
-B{C{fletcher32}} - if C{True} (default C{False}), the Fletcher32 checksum
-algorithm is used for error detection.
-
-B{C{contiguous}} - if C{True} (default C{False}), the variable data is
-stored contiguously on disk.  Default C{False}. Setting to C{True} for
-a variable with an unlimited dimension will trigger an error.
-
-B{C{chunksizes}} - Can be used to specify the HDF5 chunksizes for each
-dimension of the variable. A detailed discussion of HDF chunking and I/O
-performance is available U{here
-<http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html>}.
-Basically, you want the chunk size for each dimension to match as
-closely as possible the size of the data block that users will read
-from the file. C{chunksizes} cannot be set if C{contiguous=True}.
-
-B{C{endian}} - Can be used to control whether the
-data is stored in little or big endian format on disk. Possible
-values are C{little, big} or C{native} (default). The library
-will automatically handle endian conversions when the data is read,
-but if the data is always going to be read on a computer with the
-opposite format as the one used to create the file, there may be
-some performance advantage to be gained by setting the endian-ness.
-For netCDF 3 files (that don't use HDF5), only C{endian='native'} is allowed.
-
-The C{zlib, complevel, shuffle, fletcher32, contiguous} and {chunksizes}
-keywords are silently ignored for netCDF 3 files that do not use HDF5.
-
-B{C{least_significant_digit}} - If specified, variable data will be
-truncated (quantized). In conjunction with C{zlib=True} this produces
-'lossy', but significantly more efficient compression. For example, if
-C{least_significant_digit=1}, data will be quantized using
-around(scale*data)/scale, where scale = 2**bits, and bits is determined
-so that a precision of 0.1 is retained (in this case bits=4). Default is
-C{None}, or no quantization.
-
-B{C{fill_value}} - If specified, the default netCDF C{_FillValue} (the
-value that the variable gets filled with before any data is written to it)
-is replaced with this value.  If fill_value is set to C{False}, then
-the variable is not pre-filled. The default netCDF fill values can be found
-in netCDF4.default_fillvals.
-
-B{Returns:}
-
-a L{Variable} instance.  All further operations on the netCDF Variable are
-accomplised via L{Variable} instance methods.
+A netCDF `netCDF4.Variable` is used to read and write netCDF data.  They are
+analagous to numpy array objects. See `netCDF4.Variable.__init__` for more
+details.
 
 A list of attribute names corresponding to netCDF attributes defined for
-the variable can be obtained with the C{ncattrs()} method. These
+the variable can be obtained with the `netCDF4.Variable.ncattrs` method. These
 attributes can be created by assigning to an attribute of the
-L{Variable} instance. A dictionary containing all the netCDF attribute
-name/value pairs is provided by the C{__dict__} attribute of a
-L{Variable} instance.
+`netCDF4.Variable` instance. A dictionary containing all the netCDF attribute
+name/value pairs is provided by the `__dict__` attribute of a
+`netCDF4.Variable` instance.
 
-The instance variables C{dimensions, dtype, ndim, shape}
-and C{least_significant_digit} are read-only (and
-should not be modified by the user).
+The following class variables are read-only:
 
- at ivar dimensions: A tuple containing the names of the dimensions
-associated with this variable.
+**`dimensions`**: A tuple containing the names of the
+dimensions associated with this variable.
 
- at ivar dtype: A numpy dtype object describing the variable's data type.
+**`dtype`**: A numpy dtype object describing the
+variable's data type.
 
- at ivar ndim: The number of variable dimensions.
+**`ndim`**: The number of variable dimensions.
 
- at ivar shape: a tuple describing the current size of all the variable's
-dimensions.
+**`shape`**: A tuple with the current shape (length of all dimensions).
 
- at ivar scale:  if True, C{scale_factor} and C{add_offset} are automatically
-applied. Default is C{True}, can be reset using L{set_auto_scale} and
-L{set_auto_maskandscale} methods.
+**`scale`**: If True, `scale_factor` and `add_offset` are
+applied. Default is `True`, can be reset using `netCDF4.Variable.set_auto_scale` and
+`netCDF4.Variable.set_auto_maskandscale` methods.
 
- at ivar mask:  if True, data is automatically converted to/from masked arrays
-when missing values or fill values are present. Default is C{True}, can be
-reset using L{set_auto_mask} and L{set_auto_maskandscale} methods.
+**`mask`**: If True, data is automatically converted to/from masked 
+arrays when missing values or fill values are present. Default is `True`, can be
+reset using `netCDF4.Variable.set_auto_mask` and `netCDF4.Variable.set_auto_maskandscale`
+methods.
 
- at ivar least_significant_digit: Describes the power of ten of the smallest
-decimal place in the data the contains a reliable value.  Data is
-truncated to this decimal place when it is assigned to the L{Variable}
-instance. If C{None}, the data is not truncated. 
+**`least_significant_digit`**: Describes the power of ten of the 
+smallest decimal place in the data the contains a reliable value.  Data is
+truncated to this decimal place when it is assigned to the `netCDF4.Variable`
+instance. If `None`, the data is not truncated.
 
- at ivar __orthogonal_indexing__: Always C{True}.  Indicates to client code
-that the object supports "orthogonal indexing", which means that slices
+**`__orthogonal_indexing__`**: Always `True`.  Indicates to client code
+that the object supports 'orthogonal indexing', which means that slices
 that are 1d arrays or lists slice along each dimension independently.  This
-behavior is similar to Fortran or Matlab, but different than numpy."""
+behavior is similar to Fortran or Matlab, but different than numpy.
+
+**`datatype`**: numpy data type (for primitive data types) or VLType/CompoundType
+ instance (for compound or vlen data types).
+
+**`name`**: String name.
+
+**`size`**: The number of stored elements.
+    """
     cdef public int _varid, _grpid, _nunlimdim
     cdef public _name, ndim, dtype, mask, scale, _isprimitive, _iscompound,\
     _isvlen, _grp, _cmptype, _vltype, __orthogonal_indexing__
+    # Docstrings for class variables (used by pdoc).
+    __pdoc__['Variable.dimensions'] = \
+    """A tuple containing the names of the
+    dimensions associated with this variable."""
+    __pdoc__['Variable.dtype'] = \
+    """A numpy dtype object describing the
+    variable's data type."""
+    __pdoc__['Variable.ndim'] = \
+    """The number of variable dimensions."""
+    __pdoc__['Variable.scale'] = \
+    """if True, `scale_factor` and `add_offset` are
+    applied. Default is `True`, can be reset using `netCDF4.Variable.set_auto_scale` and
+    `netCDF4.Variable.set_auto_maskandscale` methods."""
+    __pdoc__['Variable.mask'] = \
+    """If True, data is automatically converted to/from masked 
+    arrays when missing values or fill values are present. Default is `True`, can be
+    reset using `netCDF4.Variable.set_auto_mask` and `netCDF4.Variable.set_auto_maskandscale`
+    methods."""
+    __pdoc__['Variable.least_significant_digit'] = \
+    """Describes the power of ten of the 
+    smallest decimal place in the data the contains a reliable value.  Data is
+    truncated to this decimal place when it is assigned to the `netCDF4.Variable`
+    instance. If `None`, the data is not truncated."""
+    __pdoc__['Variable.__orthogonal_indexing__'] = \
+    """Always `True`.  Indicates to client code
+    that the object supports 'orthogonal indexing', which means that slices
+    that are 1d arrays or lists slice along each dimension independently.  This
+    behavior is similar to Fortran or Matlab, but different than numpy."""
+    __pdoc__['Variable.datatype'] = \
+     """numpy data type (for primitive data types) or VLType/CompoundType
+     instance (for compound or vlen data types)."""
+    __pdoc__['Variable.name'] = \
+    """String name."""
+    __pdoc__['Variable.shape'] = \
+    """A tuple with the current shape (length of all dimensions)."""
+    __pdoc__['Variable.size'] = \
+    """The number of stored elements."""
 
     def __init__(self, grp, name, datatype, dimensions=(), zlib=False,
             complevel=4, shuffle=True, fletcher32=False, contiguous=False,
             chunksizes=None, endian='native', least_significant_digit=None,
             fill_value=None, chunk_cache=None, **kwargs):
+        """
+        **`__init__(self, group, name, datatype, dimensions=(), zlib=False,
+        complevel=4, shuffle=True, fletcher32=False, contiguous=False,
+        chunksizes=None, endian='native',
+        least_significant_digit=None,fill_value=None)`**
+
+        `netCDF4.Variable` constructor.
+
+        **`group`**: `netCDF4.Group` or `netCDF4.Dataset` instance to associate with variable.
+        
+        **`name`**: Name of the variable.
+        
+        **`datatype`**: `netCDF4.Variable` data type. Can be specified by providing a
+        numpy dtype object, or a string that describes a numpy dtype object.
+        Supported values, corresponding to `str` attribute of numpy dtype
+        objects, include `'f4'` (32-bit floating point), `'f8'` (64-bit floating
+        point), `'i4'` (32-bit signed integer), `'i2'` (16-bit signed integer),
+        `'i8'` (64-bit singed integer), `'i4'` (8-bit singed integer), `'i1'`
+        (8-bit signed integer), `'u1'` (8-bit unsigned integer), `'u2'` (16-bit
+        unsigned integer), `'u4'` (32-bit unsigned integer), `'u8'` (64-bit
+        unsigned integer), or `'S1'` (single-character string).  From
+        compatibility with Scientific.IO.NetCDF, the old Numeric single character
+        typecodes can also be used (`'f'` instead of `'f4'`, `'d'` instead of
+        `'f8'`, `'h'` or `'s'` instead of `'i2'`, `'b'` or `'B'` instead of
+        `'i1'`, `'c'` instead of `'S1'`, and `'i'` or `'l'` instead of
+        `'i4'`). `datatype` can also be a `netCDF4.CompoundType` instance
+        (for a structured, or compound array), a `netCDF4.VLType` instance
+        (for a variable-length array), or the python `str` builtin
+        (for a variable-length string array). Numpy string and unicode datatypes with
+        length greater than one are aliases for `str`.
+        
+        **`dimensions`**: a tuple containing the variable's dimension names
+        (defined previously with `createDimension`). Default is an empty tuple
+        which means the variable is a scalar (and therefore has no dimensions).
+        
+        **`zlib`**: if `True`, data assigned to the `netCDF4.Variable`
+        instance is compressed on disk. Default `False`.
+        
+        **`complevel`**: the level of zlib compression to use (1 is the fastest,
+        but poorest compression, 9 is the slowest but best compression). Default 4.
+        Ignored if `zlib=False`.
+        
+        **`shuffle`**: if `True`, the HDF5 shuffle filter is applied
+        to improve compression. Default `True`. Ignored if `zlib=False`.
+        
+        **`fletcher32`**: if `True` (default `False`), the Fletcher32 checksum
+        algorithm is used for error detection.
+        
+        **`contiguous`**: if `True` (default `False`), the variable data is
+        stored contiguously on disk.  Default `False`. Setting to `True` for
+        a variable with an unlimited dimension will trigger an error.
+        
+        **`chunksizes`**: Can be used to specify the HDF5 chunksizes for each
+        dimension of the variable. A detailed discussion of HDF chunking and I/O
+        performance is available
+        [here](http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html).
+        Basically, you want the chunk size for each dimension to match as
+        closely as possible the size of the data block that users will read
+        from the file. `chunksizes` cannot be set if `contiguous=True`.
+        
+        **`endian`**: Can be used to control whether the
+        data is stored in little or big endian format on disk. Possible
+        values are `little, big` or `native` (default). The library
+        will automatically handle endian conversions when the data is read,
+        but if the data is always going to be read on a computer with the
+        opposite format as the one used to create the file, there may be
+        some performance advantage to be gained by setting the endian-ness.
+        For netCDF 3 files (that don't use HDF5), only `endian='native'` is allowed.
+        
+        The `zlib, complevel, shuffle, fletcher32, contiguous` and `chunksizes`
+        keywords are silently ignored for netCDF 3 files that do not use HDF5.
+        
+        **`least_significant_digit`**: If specified, variable data will be
+        truncated (quantized). In conjunction with `zlib=True` this produces
+        'lossy', but significantly more efficient compression. For example, if
+        `least_significant_digit=1`, data will be quantized using
+        around(scale*data)/scale, where scale = 2**bits, and bits is determined
+        so that a precision of 0.1 is retained (in this case bits=4). Default is
+        `None`, or no quantization.
+        
+        **`fill_value`**:  If specified, the default netCDF `_FillValue` (the
+        value that the variable gets filled with before any data is written to it)
+        is replaced with this value.  If fill_value is set to `False`, then
+        the variable is not pre-filled. The default netCDF fill values can be found
+        in `netCDF4.default_fillvals`.
+
+        ***Note***: `netCDF4.Variable` instances should be created using the
+        `netCDF4.Dataset.createVariable` method of a `netCDF4.Dataset` or
+        `netCDF4.Group` instance, not using this class directly.
+        """
         cdef int ierr, ndims, icontiguous, ideflate_level, numdims, _grpid
         cdef char *varname
         cdef nc_type xtype
@@ -2952,23 +3063,23 @@ behavior is similar to Fortran or Matlab, but different than numpy."""
 
     def group(self):
         """
-group(self)
+**`group(self)`**
 
-return the group that this L{Variable} is a member of."""
+return the group that this `netCDF4.Variable` is a member of."""
         return self._grp
 
     def ncattrs(self):
         """
-ncattrs(self)
+**`ncattrs(self)`**
 
-return netCDF attribute names for this L{Variable} in a list."""
+return netCDF attribute names for this `netCDF4.Variable` in a list."""
         return _get_att_names(self._grpid, self._varid)
 
     def setncattr(self,name,value):
         """
-setncattr(self,name,value)
+**`setncattr(self,name,value)`**
 
-set a netCDF variable attribute using name,value pair.  Only use if you need to set a
+set a netCDF variable attribute using name,value pair.  Use if you need to set a
 netCDF attribute with the same name as one of the reserved python
 attributes."""
         if self._grp.data_model != 'NETCDF4': self._grp._redef()
@@ -2977,10 +3088,10 @@ attributes."""
 
     def setncatts(self,attdict):
         """
-setncatts(self,attdict)
+**`setncatts(self,attdict)`**
 
 set a bunch of netCDF variable attributes at once using a python dictionary.
-This may be faster when setting a lot of attributes for a NETCDF3
+This may be faster when setting a lot of attributes for a `NETCDF3`
 formatted file, since nc_redef/nc_enddef is not called in between setting
 each attribute"""
         if self._grp.data_model != 'NETCDF4': self._grp._redef()
@@ -2990,18 +3101,18 @@ each attribute"""
 
     def getncattr(self,name):
         """
-getncattr(self,name)
+**`getncattr(self,name)`**
 
-retrievel a netCDF variable attribute.  Only use if you need to set a
+retrievel a netCDF variable attribute.  Use if you need to set a
 netCDF attribute with the same name as one of the reserved python
 attributes."""
         return _get_att(self._grp, self._varid, name)
 
     def delncattr(self, name):
         """
-delncattr(self,name,value)
+**`delncattr(self,name,value)`**
 
-delete a netCDF variable attribute.  Only use if you need to delete a
+delete a netCDF variable attribute.  Use if you need to delete a
 netCDF attribute with the same name as one of the reserved python
 attributes."""
         cdef char *attname
@@ -3015,7 +3126,7 @@ attributes."""
 
     def filters(self):
         """
-filters(self)
+**`filters(self)`**
 
 return dictionary containing HDF5 filter parameters."""
         cdef int ierr,ideflate,ishuffle,ideflate_level,ifletcher32
@@ -3040,9 +3151,9 @@ return dictionary containing HDF5 filter parameters."""
 
     def endian(self):
         """
-endian(self)
+**`endian(self)`**
 
-return endian-ness (little,big,native) of variable (as stored in HDF5 file)."""
+return endian-ness (`little,big,native`) of variable (as stored in HDF5 file)."""
         cdef int ierr, iendian
         if self._grp.data_model not in ['NETCDF4_CLASSIC','NETCDF4']:
             return 'native'
@@ -3059,7 +3170,7 @@ return endian-ness (little,big,native) of variable (as stored in HDF5 file)."""
 
     def chunking(self):
         """
-chunking(self)
+**`chunking(self)`**
 
 return variable chunking information.  If the dataset is
 defined to be contiguous (and hence there is no chunking) the word 'contiguous'
@@ -3085,10 +3196,10 @@ each dimension is returned."""
 
     def get_var_chunk_cache(self):
         """
-get_var_chunk_cache(self)
+**`get_var_chunk_cache(self)`**
 
 return variable chunk cache information in a tuple (size,nelems,preemption).
-See netcdf C library documentation for C{nc_get_var_chunk_cache} for
+See netcdf C library documentation for `nc_get_var_chunk_cache` for
 details."""
         cdef int ierr
         cdef size_t sizep, nelemsp
@@ -3103,10 +3214,10 @@ details."""
 
     def set_var_chunk_cache(self,size=None,nelems=None,preemption=None):
         """
-set_var_chunk_cache(self,size=None,nelems=None,preemption=None)
+**`set_var_chunk_cache(self,size=None,nelems=None,preemption=None)`**
 
 change variable chunk cache settings.
-See netcdf C library documentation for C{nc_set_var_chunk_cache} for
+See netcdf C library documentation for `nc_set_var_chunk_cache` for
 details."""
         cdef int ierr
         cdef size_t sizep, nelemsp
@@ -3184,9 +3295,9 @@ details."""
 
     def renameAttribute(self, oldname, newname):
         """
-renameAttribute(self, oldname, newname)
+**`renameAttribute(self, oldname, newname)`**
 
-rename a L{Variable} attribute named C{oldname} to C{newname}."""
+rename a `netCDF4.Variable` attribute named `oldname` to `newname`."""
         cdef int ierr
         cdef char *oldnamec
         cdef char *newnamec
@@ -3475,7 +3586,7 @@ rename a L{Variable} attribute named C{oldname} to C{newname}."""
         # assume it's a numpy or masked array if it has an 'ndim' attribute.
         if not hasattr(data,'ndim'):
             # if auto scaling is to be done, don't cast to an integer yet.
-            if self.scale and self.dtype.kind == 'i' and \
+            if self.scale and self.dtype.kind in 'iu' and \
                hasattr(self, 'scale_factor') or hasattr(self, 'add_offset'):
                 data = numpy.array(data,numpy.float)
             else:
@@ -3522,13 +3633,13 @@ rename a L{Variable} attribute named C{oldname} to C{newname}."""
             # pack non-masked values using scale_factor and add_offset
             if hasattr(self, 'scale_factor') and hasattr(self, 'add_offset'):
                 data = (data - self.add_offset)/self.scale_factor
-                if self.dtype.kind == 'i': data = numpy.around(data)
+                if self.dtype.kind in 'iu': data = numpy.around(data)
             elif hasattr(self, 'scale_factor'):
                 data = data/self.scale_factor
-                if self.dtype.kind == 'i': data = numpy.around(data)
+                if self.dtype.kind in 'iu': data = numpy.around(data)
             elif hasattr(self, 'add_offset'):
                 data = data - self.add_offset
-                if self.dtype.kind == 'i': data = numpy.around(data)
+                if self.dtype.kind in 'iu': data = numpy.around(data)
             if ma.isMA(data):
                 # if underlying data in masked regions of masked array
                 # corresponds to missing values, don't fill masked array -
@@ -3568,38 +3679,41 @@ rename a L{Variable} attribute named C{oldname} to C{newname}."""
 
 
     def __len__(self):
-        return self.shape[0]
+        if not self.shape:
+            raise TypeError('len() of unsized object')
+        else:
+            return self.shape[0]
 
 
     def assignValue(self,val):
         """
-assignValue(self, val)
+**`assignValue(self, val)`**
 
 assign a value to a scalar variable.  Provided for compatibility with
-Scientific.IO.NetCDF, can also be done by assigning to a slice ([:])."""
+Scientific.IO.NetCDF, can also be done by assigning to an Ellipsis slice ([...])."""
         if len(self.dimensions):
             raise IndexError('to assign values to a non-scalar variable, use a slice')
         self[:]=val
 
     def getValue(self):
         """
-getValue(self)
+**`getValue(self)`**
 
 get the value of a scalar variable.  Provided for compatibility with
-Scientific.IO.NetCDF, can also be done by slicing ([:])."""
+Scientific.IO.NetCDF, can also be done by slicing with an Ellipsis ([...])."""
         if len(self.dimensions):
             raise IndexError('to retrieve values from a non-scalar variable, use slicing')
         return self[slice(None)]
 
     def set_auto_maskandscale(self,maskandscale):
         """
-set_auto_maskandscale(self,maskandscale)
+**`set_auto_maskandscale(self,maskandscale)`**
 
 turn on or off automatic conversion of variable data to and
 from masked arrays and automatic packing/unpacking of variable
-data using C{scale_factor} and C{add_offset} attributes.
+data using `scale_factor` and `add_offset` attributes.
 
-If C{maskandscale} is set to C{True}, when data is read from a variable
+If `maskandscale` is set to `True`, when data is read from a variable
 it is converted to a masked array if any of the values are exactly
 equal to the either the netCDF _FillValue or the value specified by the
 missing_value variable attribute. The fill_value of the masked array
@@ -3609,8 +3723,8 @@ for each data type).  When data is written to a variable, the masked
 array is converted back to a regular numpy array by replacing all the
 masked values by the fill_value of the masked array.
 
-If C{maskandscale} is set to C{True}, and the variable has a
-C{scale_factor} or an C{add_offset} attribute, then data read
+If `maskandscale` is set to `True`, and the variable has a
+`scale_factor` or an `add_offset` attribute, then data read
 from that variable is unpacked using::
 
     data = self.scale_factor*data + self.add_offset
@@ -3622,12 +3736,11 @@ When data is written to a variable it is packed using::
 If either scale_factor is present, but add_offset is missing, add_offset
 is assumed zero.  If add_offset is present, but scale_factor is missing,
 scale_factor is assumed to be one.
-For more information on how C{scale_factor} and C{add_offset} can be
-used to provide simple compression, see
-U{http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml
-<http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml>}.
+For more information on how `scale_factor` and `add_offset` can be
+used to provide simple compression, see the
+[PSD metadata conventions](http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml).
 
-The default value of C{maskandscale} is C{True}
+The default value of `maskandscale` is `True`
 (automatic conversions are performed).
         """
         if maskandscale:
@@ -3639,13 +3752,13 @@ The default value of C{maskandscale} is C{True}
 
     def set_auto_scale(self,scale):
         """
-set_auto_scale(self,scale)
+**`set_auto_scale(self,scale)`**
 
 turn on or off automatic packing/unpacking of variable
-data using C{scale_factor} and C{add_offset} attributes.
+data using `scale_factor` and `add_offset` attributes.
 
-If C{scale} is set to C{True}, and the variable has a
-C{scale_factor} or an C{add_offset} attribute, then data read
+If `scale` is set to `True`, and the variable has a
+`scale_factor` or an `add_offset` attribute, then data read
 from that variable is unpacked using::
 
     data = self.scale_factor*data + self.add_offset
@@ -3657,12 +3770,11 @@ When data is written to a variable it is packed using::
 If either scale_factor is present, but add_offset is missing, add_offset
 is assumed zero.  If add_offset is present, but scale_factor is missing,
 scale_factor is assumed to be one.
-For more information on how C{scale_factor} and C{add_offset} can be
-used to provide simple compression, see
-U{http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml
-<http://www.cdc.noaa.gov/cdc/conventions/cdc_netcdf_standard.shtml>}.
+For more information on how `scale_factor` and `add_offset` can be
+used to provide simple compression, see the
+[PSD metadata conventions](http://www.esrl.noaa.gov/psd/data/gridded/conventions/cdc_netcdf_standard.shtml).
 
-The default value of C{scale} is C{True}
+The default value of `scale` is `True`
 (automatic conversions are performed).
         """
         if scale:
@@ -3672,12 +3784,12 @@ The default value of C{scale} is C{True}
 
     def set_auto_mask(self,mask):
         """
-set_auto_mask(self,mask)
+**`set_auto_mask(self,mask)`**
 
 turn on or off automatic conversion of variable data to and
 from masked arrays .
 
-If C{mask} is set to C{True}, when data is read from a variable
+If `mask` is set to `True`, when data is read from a variable
 it is converted to a masked array if any of the values are exactly
 equal to the either the netCDF _FillValue or the value specified by the
 missing_value variable attribute. The fill_value of the masked array
@@ -3687,7 +3799,7 @@ for each data type).  When data is written to a variable, the masked
 array is converted back to a regular numpy array by replacing all the
 masked values by the fill_value of the masked array.
 
-The default value of C{mask} is C{True}
+The default value of `mask` is `True`
 (automatic conversions are performed).
         """
         if mask:
@@ -3958,45 +4070,45 @@ The default value of C{mask} is C{True}
 
 cdef class CompoundType:
     """
-A L{CompoundType} instance is used to describe a compound data type.
-
-Constructor: C{CompoundType(group, datatype, datatype_name)}
-
- at attention: When creating nested compound data types,
-the inner compound data types must already be associated with CompoundType
-instances (so create CompoundType instances for the innermost structures
-first).
-
-L{CompoundType} instances should be created using the
-L{createCompoundType<Dataset.createCompoundType>}
-method of a Dataset or L{Group} instance, not using this class directly.
-
-B{Parameters:}
-
-B{C{group}} - L{Group} instance to associate with the compound datatype.
-
-B{C{datatype}} - A numpy dtype object describing a structured (a.k.a record)
-array.  Can be composed of homogeneous numeric or character data types, or
-other structured array data types.
-
-B{C{datatype_name}} - a Python string containing a description of the
-compound data type.
+A `netCDF4.CompoundType` instance is used to describe a compound data
+type, and can be passed to the the `netCDF4.Dataset.createVariable` method of
+a `netCDF4.Dataset` or `netCDF4.Group` instance. 
+Compound data types map to numpy structured arrays.
+See `netCDF4.CompoundType.__init__` for more details.
 
-B{Returns:}
-
-a L{CompoundType} instance, which can be passed to the C{createVariable}
-method of a L{Dataset} or L{Group} instance.
-
-The instance variables C{dtype} and C{name} should not be modified by
+The instance variables `dtype` and `name` should not be modified by
 the user.
-
- at ivar dtype: A numpy dtype object describing the compound data type.
-
- at ivar name: A python string describing the compound type.
 """
     cdef public nc_type _nc_type
     cdef public dtype, name
+    __pdoc__['CompoundType.name'] = \
+    """String name."""
+    __pdoc__['CompoundType.dtype'] = \
+    """A numpy dtype object describing the compound data type."""
     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+        """
+        ***`__init__(group, datatype, datatype_name)`***
+
+        CompoundType constructor.
+
+        **`group`**: `netCDF4.Group` instance to associate with the compound datatype.
+        
+        **`datatype`**: A numpy dtype object describing a structured (a.k.a record)
+        array.  Can be composed of homogeneous numeric or character data types, or
+        other structured array data types.
+        
+        **`datatype_name`**: a Python string containing a description of the
+        compound data type.
+
+        ***Note 1***: When creating nested compound data types,
+        the inner compound data types must already be associated with CompoundType
+        instances (so create CompoundType instances for the innermost structures
+        first).
+
+        ***Note 2***: `netCDF4.CompoundType` instances should be created using the
+        `netCDF4.Dataset.createCompoundType`
+        method of a `netCDF4.Dataset` or `netCDF4.Group` instance, not using this class directly.
+        """
         cdef nc_type xtype
         dt = numpy.dtype(dt,align=True)
         if 'typeid' in kwargs:
@@ -4188,39 +4300,38 @@ cdef _read_compound(group, nc_type xtype, endian=None):
 
 cdef class VLType:
     """
-A L{VLType} instance is used to describe a variable length (VLEN) data type.
-
-Constructor: C{VLType(group, datatype, datatype_name)}
-
-L{VLType} instances should be created using the
-L{createVLType<Dataset.createVLType>}
-method of a Dataset or L{Group} instance, not using this class directly.
+A `netCDF4.VLType` instance is used to describe a variable length (VLEN) data
+type, and can be passed to the the `netCDF4.Dataset.createVariable` method of
+a `netCDF4.Dataset` or `netCDF4.Group` instance. See 
+`netCDF4.VLType.__init__` for more details.
 
-B{Parameters:}
-
-B{C{group}} - L{Group} instance to associate with the VLEN datatype.
-
-B{C{datatype}} - An numpy dtype object describing a the component type for the
-variable length array.
-
-B{C{datatype_name}} - a Python string containing a description of the
-VLEN data type.
-
-B{Returns:}
-
-a L{VLType} instance, which can be passed to the C{createVariable}
-method of a L{Dataset} or L{Group} instance.
-
-The instance variables C{dtype} and C{name} should not be modified by
+The instance variables `dtype` and `name` should not be modified by
 the user.
-
- at ivar dtype: An object describing the VLEN type.
-
- at ivar name: A python string describing the VLEN type.
 """
     cdef public nc_type _nc_type
     cdef public dtype, name
+    __pdoc__['VLType.name'] = \
+    """String name."""
+    __pdoc__['VLType.dtype'] = \
+    """A numpy dtype object describing the component type for the VLEN."""
     def __init__(self, grp, object dt, object dtype_name, **kwargs):
+        """
+        **`__init__(group, datatype, datatype_name)`**
+
+        VLType constructor.
+
+        **`group`**: `netCDF4.Group` instance to associate with the VLEN datatype.
+        
+        **`datatype`**: An numpy dtype object describing a the component type for the
+        variable length array.
+        
+        **`datatype_name`**: a Python string containing a description of the
+        VLEN data type.
+
+        ***`Note`***: `netCDF4.VLType` instances should be created using the
+        `netCDF4.Dataset.createVLType`
+        method of a `netCDF4.Dataset` or `netCDF4.Group` instance, not using this class directly.
+        """
         cdef nc_type xtype
         if 'typeid' in kwargs:
             xtype = kwargs['typeid']
@@ -4341,21 +4452,21 @@ def _dateparse(timestr):
 
 def stringtoarr(string,NUMCHARS,dtype='S'):
     """
-stringtoarr(a, NUMCHARS,dtype='S')
+**`stringtoarr(a, NUMCHARS,dtype='S')`**
 
-convert a string to a character array of length NUMCHARS
+convert a string to a character array of length `NUMCHARS`
 
- at param a:  Input python string.
+**`a`**:  Input python string.
 
- at param NUMCHARS:  number of characters used to represent string
-(if len(a) < NUMCHARS, it will be padded on the right with blanks).
+**`NUMCHARS`**:  number of characters used to represent string
+(if len(a) < `NUMCHARS`, it will be padded on the right with blanks).
 
- at keyword dtype:  type of numpy array to return.  Default is 'S', which
-means an array of dtype 'S1' will be returned.  If dtype='U', a
-unicode array (dtype = 'U1') will be returned.
+**`dtype`**:  type of numpy array to return.  Default is `'S'`, which
+means an array of dtype `'S1'` will be returned.  If dtype=`'U'`, a
+unicode array (dtype = `'U1'`) will be returned.
 
- at return: A rank 1 numpy character array of length NUMCHARS with datatype 'S1'
-(default) or 'U1' (if dtype='U')"""
+returns a rank 1 numpy character array of length NUMCHARS with datatype `'S1'`
+(default) or `'U1'` (if dtype=`'U'`)"""
     if dtype not in ["S","U"]:
         raise ValueError("dtype must string or unicode ('S' or 'U')")
     arr = numpy.zeros(NUMCHARS,dtype+'1')
@@ -4364,16 +4475,16 @@ unicode array (dtype = 'U1') will be returned.
 
 def stringtochar(a):
     """
-stringtochar(a)
+**`stringtochar(a)`**
 
 convert a string array to a character array with one extra dimension
 
- at param a:  Input numpy string array with numpy datatype 'SN' or 'UN', where N
+**`a`**:  Input numpy string array with numpy datatype `'SN'` or `'UN'`, where N
 is the number of characters in each string.  Will be converted to
-an array of characters (datatype 'S1' or 'U1') of shape a.shape + (N,).
+an array of characters (datatype `'S1'` or `'U1'`) of shape `a.shape + (N,)`.
 
- at return: A numpy character array with datatype 'S1' or 'U1'
-and shape a.shape + (N,), where N is the length of each string in a."""
+returns a numpy character array with datatype `'S1'` or `'U1'`
+and shape `a.shape + (N,)`, where N is the length of each string in a."""
     dtype = a.dtype.kind
     if dtype not in ["S","U"]:
         raise ValueError("type must string or unicode ('S' or 'U')")
@@ -4383,16 +4494,16 @@ and shape a.shape + (N,), where N is the length of each string in a."""
 
 def chartostring(b):
     """
-chartostring(b)
+**`chartostring(b)`**
 
 convert a character array to a string array with one less dimension.
 
- at param b:  Input character array (numpy datatype 'S1' or 'U1').
+**`b`**:  Input character array (numpy datatype `'S1'` or `'U1'`).
 Will be converted to a array of strings, where each string has a fixed
-length of b.shape[-1] characters.
+length of `b.shape[-1]` characters.
 
- at return: A numpy string array with datatype 'SN' or 'UN' and shape b.shape[:-1],
-where N=b.shape[-1]."""
+returns a numpy string array with datatype `'SN'` or `'UN'` and shape
+`b.shape[:-1]` where where `N=b.shape[-1]`."""
     dtype = b.dtype.kind
     if dtype not in ["S","U"]:
         raise ValueError("type must string or unicode ('S' or 'U')")
@@ -4404,32 +4515,32 @@ where N=b.shape[-1]."""
 
 def date2num(dates,units,calendar='standard'):
     """
-date2num(dates,units,calendar='standard')
+**`date2num(dates,units,calendar='standard')`**
 
 Return numeric time values given datetime objects. The units
-of the numeric time values are described by the L{units} argument
-and the L{calendar} keyword. The datetime objects must
+of the numeric time values are described by the `netCDF4.units` argument
+and the `netCDF4.calendar` keyword. The datetime objects must
 be in UTC with no time-zone offset.  If there is a
-time-zone offset in C{units}, it will be applied to the
+time-zone offset in `units`, it will be applied to the
 returned numeric values.
 
- at param dates: A datetime object or a sequence of datetime objects.
+**`dates`**: A datetime object or a sequence of datetime objects.
 The datetime objects should not include a time-zone offset.
 
- at param units: a string of the form C{'B{time units} since B{reference time}}'
-describing the time units. B{C{time units}} can be days, hours, minutes,
-seconds, milliseconds or microseconds. B{C{reference time}} is the time
+**`units`**: a string of the form `<time units> since <reference time>`
+describing the time units. `<time units>` can be days, hours, minutes,
+seconds, milliseconds or microseconds. `<reference time>` is the time
 origin.  Accuracy is somewhere between a millisecond and a microsecond,
 depending on the time interval and the calendar used.
 
- at param calendar: describes the calendar used in the time calculations.
-All the values currently defined in the U{CF metadata convention
-<http://cf-pcmdi.llnl.gov/documents/cf-conventions/>} are supported.
-Valid calendars C{'standard', 'gregorian', 'proleptic_gregorian'
-'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'}.
-Default is C{'standard'}, which is a mixed Julian/Gregorian calendar.
+**`calendar`**: describes the calendar used in the time calculations.
+All the values currently defined in the 
+[CF metadata convention](http://cfconventions.org)
+Valid calendars `'standard', 'gregorian', 'proleptic_gregorian'
+'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'`.
+Default is `'standard'`, which is a mixed Julian/Gregorian calendar.
 
- at return: a numeric time value, or an array of numeric time values.
+returns a numeric time value, or an array of numeric time values.
     """
     basedate = _dateparse(units)
     unit = units.split()[0].lower()
@@ -4483,39 +4594,39 @@ Default is C{'standard'}, which is a mixed Julian/Gregorian calendar.
 
 def num2date(times,units,calendar='standard'):
     """
-num2date(times,units,calendar='standard')
+**`num2date(times,units,calendar='standard')`**
 
 Return datetime objects given numeric time values. The units
-of the numeric time values are described by the C{units} argument
-and the C{calendar} keyword. The returned datetime objects represent
+of the numeric time values are described by the `units` argument
+and the `calendar` keyword. The returned datetime objects represent
 UTC with no time-zone offset, even if the specified
-C{units} contain a time-zone offset.
+`units` contain a time-zone offset.
 
- at param times: numeric time values.
+**`times`**: numeric time values.
 
- at param units: a string of the form C{'B{time units} since B{reference time}}'
-describing the time units. B{C{time units}} can be days, hours, minutes,
-seconds, milliseconds or microseconds. B{C{reference time}} is the time
+**`units`**: a string of the form `<time units> since <reference time>`
+describing the time units. `<time units>` can be days, hours, minutes,
+seconds, milliseconds or microseconds. `<reference time>` is the time
 origin.  Accuracy is somewhere between a millisecond and a microsecond,
 depending on the time interval and the calendar used.
 
- at keyword calendar: describes the calendar used in the time calculations.
-All the values currently defined in the U{CF metadata convention
-<http://cf-pcmdi.llnl.gov/documents/cf-conventions/>} are supported.
-Valid calendars C{'standard', 'gregorian', 'proleptic_gregorian'
-'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'}.
-Default is C{'standard'}, which is a mixed Julian/Gregorian calendar.
+**`calendar`**: describes the calendar used in the time calculations.
+All the values currently defined in the 
+[CF metadata convention](http://cfconventions.org)
+Valid calendars `'standard', 'gregorian', 'proleptic_gregorian'
+'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'`.
+Default is `'standard'`, which is a mixed Julian/Gregorian calendar.
 
- at return: a datetime instance, or an array of datetime instances.
+returns a datetime instance, or an array of datetime instances.
 
-The datetime instances returned are 'real' python datetime
-objects if C{calendar='proleptic_gregorian'}, or
-C{calendar = 'standard'} or C{'gregorian'}
+***Note***: The datetime instances returned are 'real' python datetime
+objects if `calendar='proleptic_gregorian'`, or
+`calendar='standard'` or `'gregorian'`
 and the date is after the breakpoint between the Julian and
 Gregorian calendars (1582-10-15). Otherwise, they are 'phony' datetime
 objects which support some but not all the methods of 'real' python
 datetime objects. The datetime instances
-do not contain a time-zone offset, even if the specified C{units}
+do not contain a time-zone offset, even if the specified `units`
 contains one.
     """
     calendar = calendar.lower()
@@ -4578,31 +4689,33 @@ contains one.
 
 def date2index(dates, nctime, calendar=None, select='exact'):
     """
-date2index(dates, nctime, calendar=None, select='exact')
+**`date2index(dates, nctime, calendar=None, select='exact')`**
 
 Return indices of a netCDF time variable corresponding to the given dates.
 
- at param dates: A datetime object or a sequence of datetime objects.
+**`dates`**: A datetime object or a sequence of datetime objects.
 The datetime objects should not include a time-zone offset.
 
- at param nctime: A netCDF time variable object. The nctime object must have a
-C{units} attribute.
-
- at keyword calendar: Describes the calendar used in the time calculation.
-Valid calendars C{'standard', 'gregorian', 'proleptic_gregorian'
-'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'}.
-Default is C{'standard'}, which is a mixed Julian/Gregorian calendar
-If C{calendar} is None, its value is given by C{nctime.calendar} or
-C{standard} if no such attribute exists.
-
- at keyword select: C{'exact', 'before', 'after', 'nearest'}
-The index selection method. C{exact} will return the indices perfectly
-matching the dates given. C{before} and C{after} will return the indices
+**`nctime`**: A netCDF time variable object. The nctime object must have a
+`units` attribute.
+
+**`calendar`**: describes the calendar used in the time calculations.
+All the values currently defined in the 
+[CF metadata convention](http://cfconventions.org)
+Valid calendars `'standard', 'gregorian', 'proleptic_gregorian'
+'noleap', '365_day', '360_day', 'julian', 'all_leap', '366_day'`.
+Default is `'standard'`, which is a mixed Julian/Gregorian calendar.
+If `calendar` is None, its value is given by `nctime.calendar` or
+`standard` if no such attribute exists.
+
+**`select`**: `'exact', 'before', 'after', 'nearest'`
+The index selection method. `exact` will return the indices perfectly
+matching the dates given. `before` and `after` will return the indices
 corresponding to the dates just before or just after the given dates if
-an exact match cannot be found. C{nearest} will return the indices that
+an exact match cannot be found. `nearest` will return the indices that
 correspond to the closest dates.
 
- at return: an index (indices) of the netCDF time variable corresponding
+returns an index (indices) of the netCDF time variable corresponding
 to the given datetime object(s).
     """
     if calendar == None:
@@ -4620,69 +4733,63 @@ to the given datetime object(s).
 
 class MFDataset(Dataset):
     """
-MFDataset(self, files, check=False, aggdim=None, exclude=[])
-
 Class for reading multi-file netCDF Datasets, making variables
 spanning multiple files appear as if they were in one file.
-
-Datasets must be in C{NETCDF4_CLASSIC, NETCDF3_CLASSIC or NETCDF3_64BIT}
-format (C{NETCDF4} Datasets won't work).
-
-Adapted from U{pycdf <http://pysclint.sourceforge.net/pycdf>} by Andre Gosselin.
-
-Example usage:
-
->>> import numpy
->>> # create a series of netCDF files with a variable sharing
->>> # the same unlimited dimension.
->>> for nfile in range(10):
->>>     f = Dataset('mftest'+repr(nfile)+'.nc','w')
->>>     f.createDimension('x',None)
->>>     x = f.createVariable('x','i',('x',))
->>>     x[0:10] = numpy.arange(nfile*10,10*(nfile+1))
->>>     f.close()
->>> # now read all those files in at once, in one Dataset.
->>> f = MFDataset('mftest*nc')
->>> print f.variables['x'][:]
-[ 0  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]
+Datasets must be in `NETCDF4_CLASSIC, NETCDF3_CLASSIC or NETCDF3_64BIT`
+format (`NETCDF4` Datasets won't work).
+
+Adapted from [pycdf](http://pysclint.sourceforge.net/pycdf) by Andre Gosselin.
+
+Example usage (See `netCDF4.MFDataset.__init__` for more details):
+
+    :::python
+    >>> import numpy
+    >>> # create a series of netCDF files with a variable sharing
+    >>> # the same unlimited dimension.
+    >>> for nf in range(10):
+    >>>     f = Dataset("mftest%s.nc" % nf,"w")
+    >>>     f.createDimension("x",None)
+    >>>     x = f.createVariable("x","i",("x",))
+    >>>     x[0:10] = numpy.arange(nf*10,10*(nf+1))
+    >>>     f.close()
+    >>> # now read all those files in at once, in one Dataset.
+    >>> f = MFDataset("mftest*nc")
+    >>> print f.variables["x"][:]
+    [ 0  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]
     """
 
     def __init__(self, files, check=False, aggdim=None, exclude=[]):
         """
-Open a Dataset spanning multiple files, making it look as if it was a
-single file. Variables in the list of files that share the same
-dimension (specified with the keyword C{aggdim}) are aggregated. If
-C{aggdim} is not specified, the unlimited is aggregated.  Currently,
-C{aggdim} must be the leftmost (slowest varying) dimension of each
-of the variables to be aggregated.
-
-Adapted from U{pycdf <http://pysclint.sourceforge.net/pycdf>} by Andre Gosselin.
-
-Usage:
-
-nc = MFDataset(files, check=False, aggdim=None, exclude=[])
-
- at param files: either a sequence of netCDF files or a string with a
-wildcard (converted to a sorted list of files using glob)  The first file
-in the list will become the "master" file, defining all the
-variables with an aggregation dimension which may span
-subsequent files. Attribute access returns attributes only from "master"
-file. The files are always opened in read-only mode.
-
- at keyword check: True if you want to do consistency checking to ensure the
-correct variables structure for all of the netcdf files.  Checking makes
-the initialization of the MFDataset instance much slower. Default is
-False.
-
- at keyword aggdim: The name of the dimension to aggregate over (must
-be the leftmost dimension of each of the variables to be aggregated).
-If None (default), aggregate over the unlimited dimension.
-
- at keyword exclude: A list of variable names to exclude from aggregation.
-Default is an empty list.
+        **`__init__(self, files, check=False, aggdim=None, exclude=[])`**
+
+        Open a Dataset spanning multiple files, making it look as if it was a
+        single file. Variables in the list of files that share the same
+        dimension (specified with the keyword `aggdim`) are aggregated. If
+        `aggdim` is not specified, the unlimited is aggregated.  Currently,
+        `aggdim` must be the leftmost (slowest varying) dimension of each
+        of the variables to be aggregated.
+        
+        **`files`**: either a sequence of netCDF files or a string with a
+        wildcard (converted to a sorted list of files using glob)  The first file
+        in the list will become the "master" file, defining all the
+        variables with an aggregation dimension which may span
+        subsequent files. Attribute access returns attributes only from "master"
+        file. The files are always opened in read-only mode.
+        
+        **`check`**: True if you want to do consistency checking to ensure the
+        correct variables structure for all of the netcdf files.  Checking makes
+        the initialization of the MFDataset instance much slower. Default is
+        False.
+        
+        **`aggdim`**: The name of the dimension to aggregate over (must
+        be the leftmost dimension of each of the variables to be aggregated).
+        If None (default), aggregate over the unlimited dimension.
+        
+        **`exclude`**: A list of variable names to exclude from aggregation.
+        Default is an empty list.
        """
 
         # Open the master file in the base class, so that the CDFMF instance
@@ -4845,9 +4952,19 @@ Default is an empty list.
             return Dataset.__getattribute__(self, name)
 
     def ncattrs(self):
+        """
+        **`ncattrs(self)`**
+
+        return the netcdf attribute names from the master file.
+        """
         return self._cdf[0].__dict__.keys()
 
     def close(self):
+        """
+        **`close(self)`**
+
+        close all the open files.
+        """
         for dset in self._cdf:
             dset.close()
 
@@ -4926,7 +5043,10 @@ class _Variable(object):
         ncdump_var.append('current size = %s\n' % repr(self.shape))
         return ''.join(ncdump_var)
     def __len__(self):
-        return self._shape()[0]
+        if not self._shape:
+            raise TypeError('len() of unsized object')
+        else:
+            return self._shape()[0]
     def _shape(self):
         recdimlen = len(self._dset.dimensions[self._recdimname])
         return (recdimlen,) + self._mastervar.shape[1:]
@@ -5039,49 +5159,50 @@ class _Variable(object):
 
 class MFTime(_Variable):
     """
-MFTime(self, time, units=None)
-
 Class providing an interface to a MFDataset time Variable by imposing a unique common
-time unit to all files.
-
-Example usage:
-
->>> import numpy
->>> f1 = Dataset('mftest_1.nc','w', format='NETCDF4_CLASSIC')
->>> f2 = Dataset('mftest_2.nc','w', format='NETCDF4_CLASSIC')
->>> f1.createDimension('time',None)
->>> f2.createDimension('time',None)
->>> t1 = f1.createVariable('time','i',('time',))
->>> t2 = f2.createVariable('time','i',('time',))
->>> t1.units = 'days since 2000-01-01'
->>> t2.units = 'days since 2000-02-01'
->>> t1.calendar = 'standard'
->>> t2.calendar = 'standard'
->>> t1[:] = numpy.arange(31)
->>> t2[:] = numpy.arange(30)
->>> f1.close()
->>> f2.close()
->>> # Read the two files in at once, in one Dataset.
->>> f = MFDataset('mftest*nc')
->>> t = f.variables['time']
->>> print t.units
-days since 2000-01-01
->>> print t[32] # The value written in the file, inconsistent with the MF time units.
-1
->>> T = MFTime(t)
->>> print T[32]
-32
+time unit to all files. 
+
+Example usage (See `netCDF4.MFTime.__init__` for more details):
+
+    :::python
+    >>> import numpy
+    >>> f1 = Dataset("mftest_1.nc","w", format="NETCDF4_CLASSIC")
+    >>> f2 = Dataset("mftest_2.nc","w", format="NETCDF4_CLASSIC")
+    >>> f1.createDimension("time",None)
+    >>> f2.createDimension("time",None)
+    >>> t1 = f1.createVariable("time","i",("time",))
+    >>> t2 = f2.createVariable("time","i",("time",))
+    >>> t1.units = "days since 2000-01-01"
+    >>> t2.units = "days since 2000-02-01"
+    >>> t1.calendar = "standard"
+    >>> t2.calendar = "standard"
+    >>> t1[:] = numpy.arange(31)
+    >>> t2[:] = numpy.arange(30)
+    >>> f1.close()
+    >>> f2.close()
+    >>> # Read the two files in at once, in one Dataset.
+    >>> f = MFDataset("mftest*nc")
+    >>> t = f.variables["time"]
+    >>> print t.units
+    days since 2000-01-01
+    >>> print t[32] # The value written in the file, inconsistent with the MF time units.
+    1
+    >>> T = MFTime(t)
+    >>> print T[32]
+    32
     """
 
     def __init__(self, time, units=None):
         """
-Create a time Variable with units consistent across a multifile
-dataset.
-
- at param time: Time variable from a MFDataset.
-
- at keyword units: Time units, for example, 'days since 1979-01-01'. If None, use
-the units from the master variable.
+        **`__init__(self, time, units=None)`**
+
+        Create a time Variable with units consistent across a multifile
+        dataset.
+        
+        **`time`**: Time variable from a `netCDF4.MFDataset`.
+        
+        **`units`**: Time units, for example, `days since 1979-01-01`. If None, use
+        the units from the master variable.
         """
         import datetime
         self.__time = time
diff --git a/netcdftime/_datetime.c b/netcdftime/_datetime.c
index ae575c2..8f133d4 100644
--- a/netcdftime/_datetime.c
+++ b/netcdftime/_datetime.c
@@ -1,13 +1,5 @@
 /* Generated by Cython 0.22 */
 
-/* BEGIN: Cython Metadata
-{
-    "distutils": {
-        "depends": []
-    }
-}
-END: Cython Metadata */
-
 #define PY_SSIZE_T_CLEAN
 #ifndef CYTHON_USE_PYLONG_INTERNALS
 #ifdef PYLONG_BITS_IN_DIGIT
@@ -667,6 +659,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_6_to_real_datetime(s
 static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_8__repr__(struct __pyx_obj_10netcdftime_9_datetime_datetime *__pyx_v_self); /* proto */
 static Py_hash_t __pyx_pf_10netcdftime_9_datetime_8datetime_10__hash__(struct __pyx_obj_10netcdftime_9_datetime_datetime *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_12__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
+static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_14__reduce__(struct __pyx_obj_10netcdftime_9_datetime_datetime *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_4year___get__(struct __pyx_obj_10netcdftime_9_datetime_datetime *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_5month___get__(struct __pyx_obj_10netcdftime_9_datetime_datetime *__pyx_v_self); /* proto */
 static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_3day___get__(struct __pyx_obj_10netcdftime_9_datetime_datetime *__pyx_v_self); /* proto */
@@ -699,6 +692,7 @@ static char __pyx_k_test[] = "__test__";
 static char __pyx_k_text[] = "text";
 static char __pyx_k_time[] = "time";
 static char __pyx_k_year[] = "year";
+static char __pyx_k_class[] = "__class__";
 static char __pyx_k_delta[] = "delta";
 static char __pyx_k_month[] = "month";
 static char __pyx_k_sites[] = "sites";
@@ -729,14 +723,16 @@ static char __pyx_k_real_datetime[] = "real_datetime";
 static char __pyx_k_NotImplemented[] = "NotImplemented";
 static char __pyx_k_to_real_datetime[] = "_to_real_datetime";
 static char __pyx_k_netcdftime__datetime[] = "netcdftime._datetime";
-static char __pyx_k_home_mb312_dev_trees_netcdf4_py[] = "/home/mb312/dev_trees/netcdf4-python/netcdftime/_datetime.pyx";
+static char __pyx_k_Users_jsw_python_netcdf4_python[] = "/Users/jsw/python/netcdf4-python.git/netcdftime/_datetime.pyx";
 static char __pyx_k_This_strftime_implementation_doe[] = "This strftime implementation does not handle %s";
 static PyObject *__pyx_kp_s_4d;
 static PyObject *__pyx_n_s_NotImplemented;
 static PyObject *__pyx_kp_s_This_strftime_implementation_doe;
 static PyObject *__pyx_n_s_TypeError;
+static PyObject *__pyx_kp_s_Users_jsw_python_netcdf4_python;
 static PyObject *__pyx_n_s_ValueError;
 static PyObject *__pyx_kp_s_Y_m_d_H_M_S;
+static PyObject *__pyx_n_s_class;
 static PyObject *__pyx_n_s_compile;
 static PyObject *__pyx_n_s_datetime;
 static PyObject *__pyx_n_s_day;
@@ -748,7 +744,6 @@ static PyObject *__pyx_n_s_find;
 static PyObject *__pyx_n_s_findall;
 static PyObject *__pyx_n_s_fmt;
 static PyObject *__pyx_n_s_format;
-static PyObject *__pyx_kp_s_home_mb312_dev_trees_netcdf4_py;
 static PyObject *__pyx_n_s_hour;
 static PyObject *__pyx_n_s_i;
 static PyObject *__pyx_n_s_illegal_s;
@@ -1974,7 +1969,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_12__richcmp__(PyObje
  *             return PyObject_RichCompare(self_str, other_str, op)
  *         return NotImplemented             # <<<<<<<<<<<<<<
  * 
- * 
+ *     def __reduce__(self):
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_builtin_NotImplemented);
@@ -2003,6 +1998,179 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_12__richcmp__(PyObje
   return __pyx_r;
 }
 
+/* "netcdftime/_datetime.pyx":76
+ *         return NotImplemented
+ * 
+ *     def __reduce__(self):             # <<<<<<<<<<<<<<
+ *         """special method that allows instance to be pickled"""
+ *         args = (self.year,self.month,self.day,self.hour,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_10netcdftime_9_datetime_8datetime_15__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_10netcdftime_9_datetime_8datetime_14__reduce__[] = "special method that allows instance to be pickled";
+static PyObject *__pyx_pw_10netcdftime_9_datetime_8datetime_15__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_10netcdftime_9_datetime_8datetime_14__reduce__(((struct __pyx_obj_10netcdftime_9_datetime_datetime *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_14__reduce__(struct __pyx_obj_10netcdftime_9_datetime_datetime *__pyx_v_self) {
+  PyObject *__pyx_v_args = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__reduce__", 0);
+
+  /* "netcdftime/_datetime.pyx":78
+ *     def __reduce__(self):
+ *         """special method that allows instance to be pickled"""
+ *         args = (self.year,self.month,self.day,self.hour,             # <<<<<<<<<<<<<<
+ *                 self.minute,self.second,self.microsecond,
+ *                 self.dayofwk,self.dayofyr)
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->month); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->day); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_self->hour); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+
+  /* "netcdftime/_datetime.pyx":79
+ *         """special method that allows instance to be pickled"""
+ *         args = (self.year,self.month,self.day,self.hour,
+ *                 self.minute,self.second,self.microsecond,             # <<<<<<<<<<<<<<
+ *                 self.dayofwk,self.dayofyr)
+ *         return (self.__class__,args)
+ */
+  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_self->minute); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_self->second); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = __Pyx_PyInt_From_int(__pyx_v_self->microsecond); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+
+  /* "netcdftime/_datetime.pyx":80
+ *         args = (self.year,self.month,self.day,self.hour,
+ *                 self.minute,self.second,self.microsecond,
+ *                 self.dayofwk,self.dayofyr)             # <<<<<<<<<<<<<<
+ *         return (self.__class__,args)
+ * 
+ */
+  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_self->dayofwk); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_self->dayofyr); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+
+  /* "netcdftime/_datetime.pyx":78
+ *     def __reduce__(self):
+ *         """special method that allows instance to be pickled"""
+ *         args = (self.year,self.month,self.day,self.hour,             # <<<<<<<<<<<<<<
+ *                 self.minute,self.second,self.microsecond,
+ *                 self.dayofwk,self.dayofyr)
+ */
+  __pyx_t_10 = PyTuple_New(9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_10);
+  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_10, 4, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_10, 5, __pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_10, 6, __pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_10, 7, __pyx_t_8);
+  __Pyx_GIVEREF(__pyx_t_8);
+  PyTuple_SET_ITEM(__pyx_t_10, 8, __pyx_t_9);
+  __Pyx_GIVEREF(__pyx_t_9);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_7 = 0;
+  __pyx_t_8 = 0;
+  __pyx_t_9 = 0;
+  __pyx_v_args = __pyx_t_10;
+  __pyx_t_10 = 0;
+
+  /* "netcdftime/_datetime.pyx":81
+ *                 self.minute,self.second,self.microsecond,
+ *                 self.dayofwk,self.dayofyr)
+ *         return (self.__class__,args)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_10);
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10);
+  __Pyx_GIVEREF(__pyx_t_10);
+  __Pyx_INCREF(__pyx_v_args);
+  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_args);
+  __Pyx_GIVEREF(__pyx_v_args);
+  __pyx_t_10 = 0;
+  __pyx_r = __pyx_t_9;
+  __pyx_t_9 = 0;
+  goto __pyx_L0;
+
+  /* "netcdftime/_datetime.pyx":76
+ *         return NotImplemented
+ * 
+ *     def __reduce__(self):             # <<<<<<<<<<<<<<
+ *         """special method that allows instance to be pickled"""
+ *         args = (self.year,self.month,self.day,self.hour,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("netcdftime._datetime.datetime.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 /* "netcdftime/_datetime.pyx":24
  * and format.
  *     """
@@ -2370,7 +2538,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_8datetime_11microsecond___get_
   return __pyx_r;
 }
 
-/* "netcdftime/_datetime.pyx":80
+/* "netcdftime/_datetime.pyx":87
  * 
  * 
  * def _findall(text, substr):             # <<<<<<<<<<<<<<
@@ -2410,11 +2578,11 @@ static PyObject *__pyx_pw_10netcdftime_9_datetime_1_findall(PyObject *__pyx_self
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_substr)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_findall", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_findall", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_findall") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_findall") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -2427,7 +2595,7 @@ static PyObject *__pyx_pw_10netcdftime_9_datetime_1_findall(PyObject *__pyx_self
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_findall", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("_findall", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netcdftime._datetime._findall", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -2458,19 +2626,19 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_findall", 0);
 
-  /* "netcdftime/_datetime.pyx":82
+  /* "netcdftime/_datetime.pyx":89
  * def _findall(text, substr):
  *     # Also finds overlaps
  *     sites = []             # <<<<<<<<<<<<<<
  *     i = 0
  *     while 1:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_sites = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "netcdftime/_datetime.pyx":83
+  /* "netcdftime/_datetime.pyx":90
  *     # Also finds overlaps
  *     sites = []
  *     i = 0             # <<<<<<<<<<<<<<
@@ -2480,7 +2648,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
   __Pyx_INCREF(__pyx_int_0);
   __pyx_v_i = __pyx_int_0;
 
-  /* "netcdftime/_datetime.pyx":84
+  /* "netcdftime/_datetime.pyx":91
  *     sites = []
  *     i = 0
  *     while 1:             # <<<<<<<<<<<<<<
@@ -2489,14 +2657,14 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
  */
   while (1) {
 
-    /* "netcdftime/_datetime.pyx":85
+    /* "netcdftime/_datetime.pyx":92
  *     i = 0
  *     while 1:
  *         j = text.find(substr, i)             # <<<<<<<<<<<<<<
  *         if j == -1:
  *             break
  */
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_text, __pyx_n_s_find); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_text, __pyx_n_s_find); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_3 = NULL;
     __pyx_t_4 = 0;
@@ -2510,7 +2678,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
         __pyx_t_4 = 1;
       }
     }
-    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_3) {
       PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -2521,26 +2689,26 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
     __Pyx_INCREF(__pyx_v_i);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_i);
     __Pyx_GIVEREF(__pyx_v_i);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "netcdftime/_datetime.pyx":86
+    /* "netcdftime/_datetime.pyx":93
  *     while 1:
  *         j = text.find(substr, i)
  *         if j == -1:             # <<<<<<<<<<<<<<
  *             break
  *         sites.append(j)
  */
-    __pyx_t_1 = PyObject_RichCompare(__pyx_v_j, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyObject_RichCompare(__pyx_v_j, __pyx_int_neg_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_6) {
 
-      /* "netcdftime/_datetime.pyx":87
+      /* "netcdftime/_datetime.pyx":94
  *         j = text.find(substr, i)
  *         if j == -1:
  *             break             # <<<<<<<<<<<<<<
@@ -2550,30 +2718,30 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
       goto __pyx_L4_break;
     }
 
-    /* "netcdftime/_datetime.pyx":88
+    /* "netcdftime/_datetime.pyx":95
  *         if j == -1:
  *             break
  *         sites.append(j)             # <<<<<<<<<<<<<<
  *         i = j + 1
  *     return sites
  */
-    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_sites, __pyx_v_j); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_sites, __pyx_v_j); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "netcdftime/_datetime.pyx":89
+    /* "netcdftime/_datetime.pyx":96
  *             break
  *         sites.append(j)
  *         i = j + 1             # <<<<<<<<<<<<<<
  *     return sites
  * 
  */
-    __pyx_t_1 = PyNumber_Add(__pyx_v_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(__pyx_v_j, __pyx_int_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_1);
     __pyx_t_1 = 0;
   }
   __pyx_L4_break:;
 
-  /* "netcdftime/_datetime.pyx":90
+  /* "netcdftime/_datetime.pyx":97
  *         sites.append(j)
  *         i = j + 1
  *     return sites             # <<<<<<<<<<<<<<
@@ -2585,7 +2753,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
   __pyx_r = __pyx_v_sites;
   goto __pyx_L0;
 
-  /* "netcdftime/_datetime.pyx":80
+  /* "netcdftime/_datetime.pyx":87
  * 
  * 
  * def _findall(text, substr):             # <<<<<<<<<<<<<<
@@ -2610,7 +2778,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime__findall(CYTHON_UNUSED PyObjec
   return __pyx_r;
 }
 
-/* "netcdftime/_datetime.pyx":97
+/* "netcdftime/_datetime.pyx":104
  * 
  * 
  * def _strftime(dt, fmt):             # <<<<<<<<<<<<<<
@@ -2650,11 +2818,11 @@ static PyObject *__pyx_pw_10netcdftime_9_datetime_3_strftime(PyObject *__pyx_sel
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fmt)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_strftime", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("_strftime", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_strftime") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_strftime") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -2667,7 +2835,7 @@ static PyObject *__pyx_pw_10netcdftime_9_datetime_3_strftime(PyObject *__pyx_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_strftime", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("_strftime", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("netcdftime._datetime._strftime", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -2710,16 +2878,16 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("_strftime", 0);
 
-  /* "netcdftime/_datetime.pyx":98
+  /* "netcdftime/_datetime.pyx":105
  * 
  * def _strftime(dt, fmt):
  *     if _illegal_s.search(fmt):             # <<<<<<<<<<<<<<
  *         raise TypeError("This strftime implementation does not handle %s")
  *     # don't use strftime method at all.
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_illegal_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_illegal_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_search); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_search); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -2733,124 +2901,124 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_fmt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_fmt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_fmt);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_fmt);
     __Pyx_GIVEREF(__pyx_v_fmt);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_5) {
 
-    /* "netcdftime/_datetime.pyx":99
+    /* "netcdftime/_datetime.pyx":106
  * def _strftime(dt, fmt):
  *     if _illegal_s.search(fmt):
  *         raise TypeError("This strftime implementation does not handle %s")             # <<<<<<<<<<<<<<
  *     # don't use strftime method at all.
  *     # if dt.year > 1900:
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
 
-  /* "netcdftime/_datetime.pyx":104
+  /* "netcdftime/_datetime.pyx":111
  *     #    return dt.strftime(fmt)
  * 
  *     year = dt.year             # <<<<<<<<<<<<<<
  *     # For every non-leap year century, advance by
  *     # 6 years to get into the 28-year repeat cycle
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_year = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netcdftime/_datetime.pyx":107
+  /* "netcdftime/_datetime.pyx":114
  *     # For every non-leap year century, advance by
  *     # 6 years to get into the 28-year repeat cycle
  *     delta = 2000 - year             # <<<<<<<<<<<<<<
  *     off = 6 * (delta // 100 + delta // 400)
  *     year = year + off
  */
-  __pyx_t_1 = PyNumber_Subtract(__pyx_int_2000, __pyx_v_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Subtract(__pyx_int_2000, __pyx_v_year); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_delta = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "netcdftime/_datetime.pyx":108
+  /* "netcdftime/_datetime.pyx":115
  *     # 6 years to get into the 28-year repeat cycle
  *     delta = 2000 - year
  *     off = 6 * (delta // 100 + delta // 400)             # <<<<<<<<<<<<<<
  *     year = year + off
  * 
  */
-  __pyx_t_1 = PyNumber_FloorDivide(__pyx_v_delta, __pyx_int_100); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_FloorDivide(__pyx_v_delta, __pyx_int_100); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyNumber_FloorDivide(__pyx_v_delta, __pyx_int_400); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_FloorDivide(__pyx_v_delta, __pyx_int_400); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Multiply(__pyx_int_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_Multiply(__pyx_int_6, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_off = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "netcdftime/_datetime.pyx":109
+  /* "netcdftime/_datetime.pyx":116
  *     delta = 2000 - year
  *     off = 6 * (delta // 100 + delta // 400)
  *     year = year + off             # <<<<<<<<<<<<<<
  * 
  *     # Move to around the year 2000
  */
-  __pyx_t_3 = PyNumber_Add(__pyx_v_year, __pyx_v_off); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_Add(__pyx_v_year, __pyx_v_off); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF_SET(__pyx_v_year, __pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "netcdftime/_datetime.pyx":112
+  /* "netcdftime/_datetime.pyx":119
  * 
  *     # Move to around the year 2000
  *     year = year + ((2000 - year) // 28) * 28             # <<<<<<<<<<<<<<
  *     timetuple = dt.timetuple()
  *     s1 = time.strftime(fmt, (year,) + timetuple[1:])
  */
-  __pyx_t_3 = PyNumber_Subtract(__pyx_int_2000, __pyx_v_year); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_Subtract(__pyx_int_2000, __pyx_v_year); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = PyNumber_FloorDivide(__pyx_t_3, __pyx_int_28); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyNumber_FloorDivide(__pyx_t_3, __pyx_int_28); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_int_28); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_int_28); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = PyNumber_Add(__pyx_v_year, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyNumber_Add(__pyx_v_year, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF_SET(__pyx_v_year, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":113
+  /* "netcdftime/_datetime.pyx":120
  *     # Move to around the year 2000
  *     year = year + ((2000 - year) // 28) * 28
  *     timetuple = dt.timetuple()             # <<<<<<<<<<<<<<
  *     s1 = time.strftime(fmt, (year,) + timetuple[1:])
  *     sites1 = _findall(s1, str(year))
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_timetuple); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_timetuple); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
@@ -2863,36 +3031,36 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
     }
   }
   if (__pyx_t_1) {
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_timetuple = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":114
+  /* "netcdftime/_datetime.pyx":121
  *     year = year + ((2000 - year) // 28) * 28
  *     timetuple = dt.timetuple()
  *     s1 = time.strftime(fmt, (year,) + timetuple[1:])             # <<<<<<<<<<<<<<
  *     sites1 = _findall(s1, str(year))
  * 
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strftime_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strftime_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_year);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_year);
   __Pyx_GIVEREF(__pyx_v_year);
-  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_timetuple, 1, 0, NULL, NULL, &__pyx_slice__4, 1, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_timetuple, 1, 0, NULL, NULL, &__pyx_slice__4, 1, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -2908,7 +3076,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   if (__pyx_t_2) {
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = NULL;
@@ -2919,28 +3087,28 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __pyx_t_6 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_s1 = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":115
+  /* "netcdftime/_datetime.pyx":122
  *     timetuple = dt.timetuple()
  *     s1 = time.strftime(fmt, (year,) + timetuple[1:])
  *     sites1 = _findall(s1, str(year))             # <<<<<<<<<<<<<<
  * 
  *     s2 = time.strftime(fmt, (year + 28,) + timetuple[1:])
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_findall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_findall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_year);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_year);
   __Pyx_GIVEREF(__pyx_v_year);
-  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -2955,7 +3123,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   if (__pyx_t_3) {
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -2966,35 +3134,35 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __pyx_t_6 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_sites1 = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":117
+  /* "netcdftime/_datetime.pyx":124
  *     sites1 = _findall(s1, str(year))
  * 
  *     s2 = time.strftime(fmt, (year + 28,) + timetuple[1:])             # <<<<<<<<<<<<<<
  *     sites2 = _findall(s2, str(year + 28))
  * 
  */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_strftime_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_strftime_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyNumber_Add(__pyx_v_year, __pyx_int_28); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyNumber_Add(__pyx_v_year, __pyx_int_28); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_timetuple, 1, 0, NULL, NULL, &__pyx_slice__5, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_timetuple, 1, 0, NULL, NULL, &__pyx_slice__5, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
@@ -3010,7 +3178,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   if (__pyx_t_1) {
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = NULL;
@@ -3021,30 +3189,30 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_s2 = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":118
+  /* "netcdftime/_datetime.pyx":125
  * 
  *     s2 = time.strftime(fmt, (year + 28,) + timetuple[1:])
  *     sites2 = _findall(s2, str(year + 28))             # <<<<<<<<<<<<<<
  * 
  *     sites = []
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_findall); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_findall); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = PyNumber_Add(__pyx_v_year, __pyx_int_28); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = PyNumber_Add(__pyx_v_year, __pyx_int_28); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -3059,7 +3227,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
       __pyx_t_7 = 1;
     }
   }
-  __pyx_t_1 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   if (__pyx_t_3) {
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = NULL;
@@ -3070,26 +3238,26 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_7, __pyx_t_6);
   __Pyx_GIVEREF(__pyx_t_6);
   __pyx_t_6 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_sites2 = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":120
+  /* "netcdftime/_datetime.pyx":127
  *     sites2 = _findall(s2, str(year + 28))
  * 
  *     sites = []             # <<<<<<<<<<<<<<
  *     for site in sites1:
  *         if site in sites2:
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_sites = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":121
+  /* "netcdftime/_datetime.pyx":128
  * 
  *     sites = []
  *     for site in sites1:             # <<<<<<<<<<<<<<
@@ -3100,25 +3268,25 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
     __pyx_t_4 = __pyx_v_sites1; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
     __pyx_t_8 = NULL;
   } else {
-    __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_sites1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_sites1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (likely(!__pyx_t_8)) {
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       } else {
         if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #endif
       }
     } else {
@@ -3127,7 +3295,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -3136,30 +3304,30 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
     __Pyx_XDECREF_SET(__pyx_v_site, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netcdftime/_datetime.pyx":122
+    /* "netcdftime/_datetime.pyx":129
  *     sites = []
  *     for site in sites1:
  *         if site in sites2:             # <<<<<<<<<<<<<<
  *             sites.append(site)
  * 
  */
-    __pyx_t_5 = (__Pyx_PySequence_Contains(__pyx_v_site, __pyx_v_sites2, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = (__Pyx_PySequence_Contains(__pyx_v_site, __pyx_v_sites2, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_9 = (__pyx_t_5 != 0);
     if (__pyx_t_9) {
 
-      /* "netcdftime/_datetime.pyx":123
+      /* "netcdftime/_datetime.pyx":130
  *     for site in sites1:
  *         if site in sites2:
  *             sites.append(site)             # <<<<<<<<<<<<<<
  * 
  *     s = s1
  */
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_sites, __pyx_v_site); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_sites, __pyx_v_site); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       goto __pyx_L6;
     }
     __pyx_L6:;
 
-    /* "netcdftime/_datetime.pyx":121
+    /* "netcdftime/_datetime.pyx":128
  * 
  *     sites = []
  *     for site in sites1:             # <<<<<<<<<<<<<<
@@ -3169,7 +3337,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":125
+  /* "netcdftime/_datetime.pyx":132
  *             sites.append(site)
  * 
  *     s = s1             # <<<<<<<<<<<<<<
@@ -3179,27 +3347,27 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   __Pyx_INCREF(__pyx_v_s1);
   __pyx_v_s = __pyx_v_s1;
 
-  /* "netcdftime/_datetime.pyx":126
+  /* "netcdftime/_datetime.pyx":133
  * 
  *     s = s1
  *     syear = "%4d" % (dt.year,)             # <<<<<<<<<<<<<<
  *     for site in sites:
  *         s = s[:site] + syear + s[site + 4:]
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_year); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dt, __pyx_n_s_year); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
   __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_4d, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_4d, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_syear = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":127
+  /* "netcdftime/_datetime.pyx":134
  *     s = s1
  *     syear = "%4d" % (dt.year,)
  *     for site in sites:             # <<<<<<<<<<<<<<
@@ -3210,37 +3378,37 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   for (;;) {
     if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #endif
     __Pyx_XDECREF_SET(__pyx_v_site, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netcdftime/_datetime.pyx":128
+    /* "netcdftime/_datetime.pyx":135
  *     syear = "%4d" % (dt.year,)
  *     for site in sites:
  *         s = s[:site] + syear + s[site + 4:]             # <<<<<<<<<<<<<<
  *     return s
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_s, 0, 0, NULL, &__pyx_v_site, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_s, 0, 0, NULL, &__pyx_v_site, NULL, 0, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_v_syear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_v_syear); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyNumber_Add(__pyx_v_site, __pyx_int_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_Add(__pyx_v_site, __pyx_int_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_s, 0, 0, &__pyx_t_2, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_s, 0, 0, &__pyx_t_2, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "netcdftime/_datetime.pyx":127
+    /* "netcdftime/_datetime.pyx":134
  *     s = s1
  *     syear = "%4d" % (dt.year,)
  *     for site in sites:             # <<<<<<<<<<<<<<
@@ -3250,7 +3418,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "netcdftime/_datetime.pyx":129
+  /* "netcdftime/_datetime.pyx":136
  *     for site in sites:
  *         s = s[:site] + syear + s[site + 4:]
  *     return s             # <<<<<<<<<<<<<<
@@ -3260,7 +3428,7 @@ static PyObject *__pyx_pf_10netcdftime_9_datetime_2_strftime(CYTHON_UNUSED PyObj
   __pyx_r = __pyx_v_s;
   goto __pyx_L0;
 
-  /* "netcdftime/_datetime.pyx":97
+  /* "netcdftime/_datetime.pyx":104
  * 
  * 
  * def _strftime(dt, fmt):             # <<<<<<<<<<<<<<
@@ -3359,6 +3527,7 @@ static PyMethodDef __pyx_methods_10netcdftime_9_datetime_datetime[] = {
   {"strftime", (PyCFunction)__pyx_pw_10netcdftime_9_datetime_8datetime_3strftime, METH_VARARGS|METH_KEYWORDS, 0},
   {"timetuple", (PyCFunction)__pyx_pw_10netcdftime_9_datetime_8datetime_5timetuple, METH_NOARGS, 0},
   {"_to_real_datetime", (PyCFunction)__pyx_pw_10netcdftime_9_datetime_8datetime_7_to_real_datetime, METH_NOARGS, 0},
+  {"__reduce__", (PyCFunction)__pyx_pw_10netcdftime_9_datetime_8datetime_15__reduce__, METH_NOARGS, __pyx_doc_10netcdftime_9_datetime_8datetime_14__reduce__},
   {0, 0, 0, 0}
 };
 
@@ -3460,8 +3629,10 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 0, 1, 1},
   {&__pyx_kp_s_This_strftime_implementation_doe, __pyx_k_This_strftime_implementation_doe, sizeof(__pyx_k_This_strftime_implementation_doe), 0, 0, 1, 0},
   {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
+  {&__pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_k_Users_jsw_python_netcdf4_python, sizeof(__pyx_k_Users_jsw_python_netcdf4_python), 0, 0, 1, 0},
   {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
   {&__pyx_kp_s_Y_m_d_H_M_S, __pyx_k_Y_m_d_H_M_S, sizeof(__pyx_k_Y_m_d_H_M_S), 0, 0, 1, 0},
+  {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
   {&__pyx_n_s_compile, __pyx_k_compile, sizeof(__pyx_k_compile), 0, 0, 1, 1},
   {&__pyx_n_s_datetime, __pyx_k_datetime, sizeof(__pyx_k_datetime), 0, 0, 1, 1},
   {&__pyx_n_s_day, __pyx_k_day, sizeof(__pyx_k_day), 0, 0, 1, 1},
@@ -3473,7 +3644,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_findall, __pyx_k_findall, sizeof(__pyx_k_findall), 0, 0, 1, 1},
   {&__pyx_n_s_fmt, __pyx_k_fmt, sizeof(__pyx_k_fmt), 0, 0, 1, 1},
   {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
-  {&__pyx_kp_s_home_mb312_dev_trees_netcdf4_py, __pyx_k_home_mb312_dev_trees_netcdf4_py, sizeof(__pyx_k_home_mb312_dev_trees_netcdf4_py), 0, 0, 1, 0},
   {&__pyx_n_s_hour, __pyx_k_hour, sizeof(__pyx_k_hour), 0, 0, 1, 1},
   {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
   {&__pyx_n_s_illegal_s, __pyx_k_illegal_s, sizeof(__pyx_k_illegal_s), 0, 0, 1, 1},
@@ -3513,7 +3683,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
 static int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -3545,73 +3715,73 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_tuple__2);
   __Pyx_GIVEREF(__pyx_tuple__2);
 
-  /* "netcdftime/_datetime.pyx":99
+  /* "netcdftime/_datetime.pyx":106
  * def _strftime(dt, fmt):
  *     if _illegal_s.search(fmt):
  *         raise TypeError("This strftime implementation does not handle %s")             # <<<<<<<<<<<<<<
  *     # don't use strftime method at all.
  *     # if dt.year > 1900:
  */
-  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_This_strftime_implementation_doe); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_This_strftime_implementation_doe); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__3);
   __Pyx_GIVEREF(__pyx_tuple__3);
 
-  /* "netcdftime/_datetime.pyx":114
+  /* "netcdftime/_datetime.pyx":121
  *     year = year + ((2000 - year) // 28) * 28
  *     timetuple = dt.timetuple()
  *     s1 = time.strftime(fmt, (year,) + timetuple[1:])             # <<<<<<<<<<<<<<
  *     sites1 = _findall(s1, str(year))
  * 
  */
-  __pyx_slice__4 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__4 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__4);
   __Pyx_GIVEREF(__pyx_slice__4);
 
-  /* "netcdftime/_datetime.pyx":117
+  /* "netcdftime/_datetime.pyx":124
  *     sites1 = _findall(s1, str(year))
  * 
  *     s2 = time.strftime(fmt, (year + 28,) + timetuple[1:])             # <<<<<<<<<<<<<<
  *     sites2 = _findall(s2, str(year + 28))
  * 
  */
-  __pyx_slice__5 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__5 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__5);
   __Pyx_GIVEREF(__pyx_slice__5);
 
-  /* "netcdftime/_datetime.pyx":77
+  /* "netcdftime/_datetime.pyx":84
  * 
  * 
  * _illegal_s = re.compile(r"((^|[^%])(%%)*%s)")             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_s); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_s); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__6);
   __Pyx_GIVEREF(__pyx_tuple__6);
 
-  /* "netcdftime/_datetime.pyx":80
+  /* "netcdftime/_datetime.pyx":87
  * 
  * 
  * def _findall(text, substr):             # <<<<<<<<<<<<<<
  *     # Also finds overlaps
  *     sites = []
  */
-  __pyx_tuple__7 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_substr, __pyx_n_s_sites, __pyx_n_s_i, __pyx_n_s_j); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__7 = PyTuple_Pack(5, __pyx_n_s_text, __pyx_n_s_substr, __pyx_n_s_sites, __pyx_n_s_i, __pyx_n_s_j); if (unlikely(!__pyx_tuple__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__7);
   __Pyx_GIVEREF(__pyx_tuple__7);
-  __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_mb312_dev_trees_netcdf4_py, __pyx_n_s_findall, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__8 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_findall, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "netcdftime/_datetime.pyx":97
+  /* "netcdftime/_datetime.pyx":104
  * 
  * 
  * def _strftime(dt, fmt):             # <<<<<<<<<<<<<<
  *     if _illegal_s.search(fmt):
  *         raise TypeError("This strftime implementation does not handle %s")
  */
-  __pyx_tuple__9 = PyTuple_Pack(14, __pyx_n_s_dt, __pyx_n_s_fmt, __pyx_n_s_year, __pyx_n_s_delta, __pyx_n_s_off, __pyx_n_s_timetuple, __pyx_n_s_s1, __pyx_n_s_sites1, __pyx_n_s_s2, __pyx_n_s_sites2, __pyx_n_s_sites, __pyx_n_s_site, __pyx_n_s_s_2, __pyx_n_s_syear); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__9 = PyTuple_Pack(14, __pyx_n_s_dt, __pyx_n_s_fmt, __pyx_n_s_year, __pyx_n_s_delta, __pyx_n_s_off, __pyx_n_s_timetuple, __pyx_n_s_s1, __pyx_n_s_sites1, __pyx_n_s_s2, __pyx_n_s_sites2, __pyx_n_s_sites, __pyx_n_s_site, __pyx_n_s_s_2, __pyx_n_s_syear); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__9);
   __Pyx_GIVEREF(__pyx_tuple__9);
-  __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(2, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_mb312_dev_trees_netcdf4_py, __pyx_n_s_strftime, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(2, 0, 14, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_Users_jsw_python_netcdf4_python, __pyx_n_s_strftime, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -3789,46 +3959,46 @@ PyMODINIT_FUNC PyInit__datetime(void)
   if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netcdftime/_datetime.pyx":77
+  /* "netcdftime/_datetime.pyx":84
  * 
  * 
  * _illegal_s = re.compile(r"((^|[^%])(%%)*%s)")             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_re); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_compile); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_illegal_s, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_illegal_s, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netcdftime/_datetime.pyx":80
+  /* "netcdftime/_datetime.pyx":87
  * 
  * 
  * def _findall(text, substr):             # <<<<<<<<<<<<<<
  *     # Also finds overlaps
  *     sites = []
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10netcdftime_9_datetime_1_findall, NULL, __pyx_n_s_netcdftime__datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10netcdftime_9_datetime_1_findall, NULL, __pyx_n_s_netcdftime__datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_findall, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_findall, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "netcdftime/_datetime.pyx":97
+  /* "netcdftime/_datetime.pyx":104
  * 
  * 
  * def _strftime(dt, fmt):             # <<<<<<<<<<<<<<
  *     if _illegal_s.search(fmt):
  *         raise TypeError("This strftime implementation does not handle %s")
  */
-  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10netcdftime_9_datetime_3_strftime, NULL, __pyx_n_s_netcdftime__datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10netcdftime_9_datetime_3_strftime, NULL, __pyx_n_s_netcdftime__datetime); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_strftime, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_strftime, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "netcdftime/_datetime.pyx":1
diff --git a/netcdftime/_datetime.pyx b/netcdftime/_datetime.pyx
index 9329f51..8ac1791 100644
--- a/netcdftime/_datetime.pyx
+++ b/netcdftime/_datetime.pyx
@@ -73,6 +73,13 @@ and format.
             return PyObject_RichCompare(self_str, other_str, op)
         return NotImplemented
 
+    def __reduce__(self):
+        """special method that allows instance to be pickled"""
+        args = (self.year,self.month,self.day,self.hour,
+                self.minute,self.second,self.microsecond,
+                self.dayofwk,self.dayofyr)
+        return (self.__class__,args)
+
 
 _illegal_s = re.compile(r"((^|[^%])(%%)*%s)")
 
diff --git a/netcdftime/netcdftime.py b/netcdftime/netcdftime.py
index 69a8359..e2ac23d 100644
--- a/netcdftime/netcdftime.py
+++ b/netcdftime/netcdftime.py
@@ -33,7 +33,6 @@ ISO8601_REGEX = re.compile(r"(?P<year>[0-9]{1,4})(-(?P<month>[0-9]{1,2})(-(?P<da
 TIMEZONE_REGEX = re.compile(
     "(?P<prefix>[+-])(?P<hours>[0-9]{1,2}):(?P<minutes>[0-9]{1,2})")
 
-
 def JulianDayFromDate(date, calendar='standard'):
     """
 
@@ -119,6 +118,13 @@ def JulianDayFromDate(date, calendar='standard'):
     # adjust for Julian calendar if necessary
     jd = jd + B
 
+    # Add a small offset (proportional to Julian date) for correct re-conversion.
+    # This is about 45 microseconds in 2000 for Julian date starting -4712.
+    # (pull request #433).
+    eps = np.finfo(float).eps
+    eps = np.maximum(eps*jd, eps)
+    jd += eps
+
     if isscalar:
         return jd[0]
     else:
@@ -232,7 +238,6 @@ def DateFromJulianDay(JD, calendar='standard'):
 
     Meeus, Jean (1998) Astronomical Algorithms (2nd Edition). Willmann-Bell,
     Virginia. p. 63
-
     """
 
     # based on redate.py by David Finlayson.
@@ -246,7 +251,7 @@ def DateFromJulianDay(JD, calendar='standard'):
     # get the day (Z) and the fraction of the day (F)
     # add 0.000005 which is 452 ms in case of jd being after
     # second 23:59:59 of a day we want to round to the next day see issue #75
-    Z = np.atleast_1d(np.int32(np.round(julian + 0.00005)))
+    Z = np.atleast_1d(np.int32(np.round(julian)))
     F = np.atleast_1d(julian + 0.5 - Z).astype(np.float64)
     if calendar in ['standard', 'gregorian']:
         # MC
@@ -313,14 +318,18 @@ def DateFromJulianDay(JD, calendar='standard'):
     inc_idx = np.where((leap == 1) & (month > 2))[0]
     dayofyr[inc_idx] = dayofyr[inc_idx] + leap[inc_idx]
 
-    eps = np.clip(
-        (1e-12 * np.abs(Z)).astype(np.float64), np.float64(1e-12), None)
-    hour = np.clip((F * 24. + eps).astype(np.int64), 0, 23)
-    F -= hour / 24.
-    minute = np.clip((F * 1440. + eps).astype(np.int64), 0, 59)
+    # Subtract the offset from JulianDayFromDate from the microseconds (pull
+    # request #433).
+    eps = np.finfo(float).eps
+    eps = np.maximum(eps*julian, eps)
+    hour = np.clip((F * 24.).astype(np.int64), 0, 23)
+    F   -= hour / 24.
+    minute = np.clip((F * 1440.).astype(np.int64), 0, 59)
+    # this is an overestimation due to added offset in JulianDayFromDate
     second = np.clip((F - minute / 1440.) * 86400., 0, None)
-    # microseconds may not be accurate.
     microsecond = (second % 1)*1.e6
+    # remove the offset from the microsecond calculation.
+    microsecond = np.clip(microsecond - eps*86400.*1e6, 0, 999999)
 
     # convert year, month, day, hour, minute, second to int32
     year = year.astype(np.int32)
@@ -1084,7 +1093,7 @@ def time2index(times, nctime, calendar=None, select='exact'):
 
         elif select == 'nearest':
             nearest_to_left = num[mismatch] < numpy.array(
-                [nctime[i - 1] + nctime[i] for i in index[mismatch]]) / 2.
+                [float(nctime[i - 1]) + float(nctime[i]) for i in index[mismatch]]) / 2.
             index[mismatch] = index[mismatch] - 1 * nearest_to_left
 
         else:
diff --git a/setup.py b/setup.py
index bc2dd96..f2da400 100644
--- a/setup.py
+++ b/setup.py
@@ -149,13 +149,22 @@ curl_incdir = os.environ.get('CURL_INCDIR')
 USE_NCCONFIG = os.environ.get('USE_NCCONFIG')
 if USE_NCCONFIG is not None:
     USE_NCCONFIG = bool(int(USE_NCCONFIG))
+USE_SETUPCFG = os.environ.get('USE_SETUPCFG')
+# override use of setup.cfg with env var.
+if USE_SETUPCFG is not None:
+    USE_SETUPCFG = bool(int(USE_SETUPCFG))
+else:
+    USE_SETUPCFG = True
+
 
 setup_cfg = 'setup.cfg'
-# contents of setup.cfg will override env vars.
+# contents of setup.cfg will override env vars, unless
+# USE_SETUPCFG evaluates to True. Exception is use_ncconfig,
+# which does not take precedence ofver USE_NCCONFIG env var.
 ncconfig = None
 use_ncconfig = None
 use_cython = True
-if os.path.exists(setup_cfg):
+if USE_SETUPCFG and os.path.exists(setup_cfg):
     sys.stdout.write('reading from setup.cfg...\n')
     config = configparser.SafeConfigParser()
     config.read(setup_cfg)
@@ -292,8 +301,10 @@ NETCDF4_DIR environment variable not set, checking standard locations.. \n""")
         netCDF4_libdir = os.path.join(netCDF4_dir, 'lib')
 
     libs = ['netcdf','hdf5_hl','hdf5','z']
-    lib_dirs = [netCDF4_libdir,HDF5_libdir]
-    inc_dirs = [netCDF4_incdir,HDF5_incdir]
+    if netCDF4_libdir is not None: lib_dirs=[netCDF4_libdir]
+    if HDF5_libdir is not None: lib_dirs.append(HDF5_libdir)
+    if netCDF4_incdir is not None: inc_dirs=[netCDF4_incdir]
+    if HDF5_incdir is not None: inc_dirs.append(HDF5_incdir)
 
     # add szip to link if desired.
     if szip_libdir is None and szip_dir is not None:
@@ -353,7 +364,7 @@ else:
 cmdclass = {}
 netcdf4_src_root = osp.join('netCDF4', '_netCDF4')
 netcdf4_src_c = netcdf4_src_root + '.c'
-if has_cython and 'sdist' not in sys.argv[1:]:
+if has_cython and 'sdist' not in sys.argv[1:] and 'clean' not in sys.argv[1:]:
     sys.stdout.write('using Cython to compile netCDF4.pyx...\n')
     extensions = [Extension("netCDF4._netCDF4",
                             [netcdf4_src_root + '.pyx'],
@@ -402,7 +413,7 @@ else:
 
 setup(name = "netCDF4",
   cmdclass = cmdclass,
-  version = "1.1.8",
+  version = "1.1.9",
   long_description = "netCDF version 4 has many features not found in earlier versions of the library, such as hierarchical groups, zlib compression, multiple unlimited dimensions, and new data types.  It is implemented on top of HDF5.  This module implements most of the new features, and can read and write netCDF files compatible with older versions of the library.  The API is modelled after Scientific.IO.NetCDF, and should be familiar to users of that module.\n\nThis project has a `Sub [...]
   author            = "Jeff Whitaker",
   author_email      = "jeffrey.s.whitaker at noaa.gov",
diff --git a/test/run_all.py b/test/run_all.py
index 8dba27c..f2a9c0d 100755
--- a/test/run_all.py
+++ b/test/run_all.py
@@ -18,6 +18,11 @@ if __netcdf4libversion__ < '4.2.1':
     test_files.remove('tst_diskless.py')
     sys.stdout.write('not running tst_diskless.py ...\n')
 
+# Don't run tests that require network connectivity
+if os.getenv('NO_NET'):
+    test_files.remove('tst_dap.py');
+    sys.stdout.write('not running tst_dap.py ...\n')
+
 # Build the test suite from the tests found in the test files.
 testsuite = unittest.TestSuite()
 for f in test_files:
diff --git a/test/tst_netcdftime.py b/test/tst_netcdftime.py
index 7e50d38..8da92f9 100644
--- a/test/tst_netcdftime.py
+++ b/test/tst_netcdftime.py
@@ -1,13 +1,14 @@
 from netcdftime import utime, JulianDayFromDate, DateFromJulianDay
 from netcdftime import datetime as datetimex
-from netCDF4 import Dataset, num2date, date2num, date2index
+from netCDF4 import Dataset, num2date, date2num, date2index, num2date
+import copy
 import numpy
 import random
 import sys
 import unittest
 import os
 import tempfile
-from datetime import datetime
+from datetime import datetime, timedelta
 from numpy.testing import assert_almost_equal, assert_equal
 
 # test netcdftime module for netCDF time <--> python datetime conversions.
@@ -207,7 +208,7 @@ class netcdftimeTestCase(unittest.TestCase):
         assert_equal(numpy.around(t), 3600)
         # test fix for issue 75 (seconds hit 60 at end of month,
         # day goes out of range).
-        t = 733498.999999
+        t = 733499.0
         d = num2date(t, units='days since 0001-01-01 00:00:00')
         dateformat =  '%Y-%m-%d %H:%M:%S'
         assert_equal(d.strftime(dateformat), '2009-04-01 00:00:00')
@@ -412,6 +413,9 @@ class netcdftimeTestCase(unittest.TestCase):
             self.assertEqual(d1, d2)
             self.assertEqual(num2date(d1, units, cap_cal),
                              num2date(d1, units, low_cal))
+        # issue 415
+        t = datetimex(2001, 12, 1, 2, 3, 4)
+        self.assertEqual(t, copy.deepcopy(t))
 
 class TestDate2index(unittest.TestCase):
 
@@ -466,6 +470,16 @@ class TestDate2index(unittest.TestCase):
         time2.units = 'days since 1901-01-01'
         self.first_timestamp = datetime(2000, 1, 1)
         time2[0] = date2num(self.first_timestamp, time2.units)
+        ntimes = 21
+        f.createDimension("record", ntimes)
+        time3 = f.createVariable("time3", numpy.int32, ("record", ))
+        time3.units = "seconds since 1970-01-01 00:00:00"
+        date = datetime(2037,1,1,0)
+        dates = [date]
+        for ndate in range(ntimes-1):
+            date += (ndate+1)*timedelta(hours=1)
+            dates.append(date)
+        time3[:] = date2num(dates,time3.units)
         f.close()
 
     def tearDown(self):
@@ -587,5 +601,16 @@ class TestDate2index(unittest.TestCase):
             assert_equal(date, date2)
         f.close()
 
+    def test_issue444(self):
+        # make sure integer overflow not causing error in
+        # calculation of nearest index when sum of adjacent
+        # time values won't fit in 32 bits.
+        ntimes = 20
+        f = Dataset(self.file, 'r')
+        query_time = datetime(2037, 1, 3, 21, 12)
+        index = date2index(query_time, f.variables['time3'], select='nearest')
+        assert(index == 11)
+        f.close()
+
 if __name__ == '__main__':
     unittest.main()
diff --git a/test/tst_scaled.py b/test/tst_scaled.py
index 3e9f688..230a193 100755
--- a/test/tst_scaled.py
+++ b/test/tst_scaled.py
@@ -135,6 +135,51 @@ class SetAutoScaleTrue(SetAutoScaleTestBase):
         f.close()
 
 
+class WriteAutoScaleTest(SetAutoScaleTestBase):
+
+    def test_auto_scale_write(self):
+
+        """Testing automatic packing to all kinds of integer types"""
+
+        def packparams(dmax, dmin, dtyp):
+            kind = dtyp[0]
+            n = int(dtyp[1]) * 8
+            scale_factor = (dmax - dmin) / (2**n - 1)
+            if kind == 'i':
+                add_offset = dmin + 2**(n-1) * scale_factor
+            elif kind == 'u':
+                add_offset = dmin
+            else:
+                raise Exception
+            return((add_offset, scale_factor))
+
+        for dtyp in ['i1', 'i2', 'i4', 'u1', 'u2', 'u4']:
+            np.random.seed(456)
+            data = np.random.uniform(size=100)
+            f = Dataset(self.testfile, 'w')
+            f.createDimension('x')
+            #
+            # save auto_scaled
+            v = f.createVariable('v', dtyp, ('x',))
+            v.set_auto_scale(True)  # redundant
+            v.add_offset, v.scale_factor = packparams(
+                np.max(data), np.min(data), dtyp)
+            v[:] = data
+            f.close()
+            #
+            # read back
+            f = Dataset(self.testfile, 'r')
+            v = f.variables['v']
+            v.set_auto_mask(False)
+            v.set_auto_scale(True)  # redundant
+            vdata = v[:]
+            # error normalized by scale factor
+            maxerrnorm = np.max(np.abs((vdata - data) / v.scale_factor))
+            # 1e-5 accounts for floating point errors
+            assert(maxerrnorm < 0.5 + 1e-5)
+            f.close()
+
+
 class GlobalSetAutoScaleTest(unittest.TestCase):
 
     def setUp(self):
diff --git a/test/tst_slicing.py b/test/tst_slicing.py
index 61f4268..8011d36 100644
--- a/test/tst_slicing.py
+++ b/test/tst_slicing.py
@@ -181,5 +181,17 @@ class VariablesTestCase(unittest.TestCase):
         assert_array_almost_equal(cc,a[-1,3:,:6])
         f.close()
 
+    def test_retain_single_dims(self):
+        f = Dataset(self.file, 'r')
+        v = f.variables['data']
+        keys = ((0, 1, 2, 3, 4, 5, 6, 7, 8), (5,), (4,))
+        shape = (9, 1, 1)
+        data = v[keys]
+        assert_equal(data.shape, shape)
+        keys = ((0, 1, 2, 3, 4, 5, 6, 7, 8), 5, 4,)
+        shape = (9,)
+        data = v[keys]
+        assert_equal(data.shape, shape)
+
 if __name__ == '__main__':
     unittest.main()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/netcdf4-python.git



More information about the Pkg-grass-devel mailing list