.. _user-guide-attrs:

Working with attributes
=======================

Zarr arrays and groups support custom key/value attributes, which can be useful for
storing application-specific metadata. For example::

   >>> import zarr
   >>> store = zarr.storage.MemoryStore()
   >>> root = zarr.create_group(store=store)
   >>> root.attrs['foo'] = 'bar'
   >>> z = root.create_array(name='zzz', shape=(10000, 10000), dtype='int32')
   >>> z.attrs['baz'] = 42
   >>> z.attrs['qux'] = [1, 4, 7, 12]
   >>> sorted(root.attrs)
   ['foo']
   >>> 'foo' in root.attrs
   True
   >>> root.attrs['foo']
   'bar'
   >>> sorted(z.attrs)
   ['baz', 'qux']
   >>> z.attrs['baz']
   42
   >>> z.attrs['qux']
   [1, 4, 7, 12]

Internally Zarr uses JSON to store array attributes, so attribute values must be
JSON serializable.
