|
1 | 1 | # -*- coding: utf-8 -*-
|
2 | 2 | from __future__ import absolute_import, print_function, division
|
3 |
| -from collections import Mapping |
| 3 | +from collections import MutableMapping |
4 | 4 |
|
5 | 5 |
|
6 | 6 | import numpy as np
|
|
18 | 18 | from zarr.meta import decode_group_metadata
|
19 | 19 |
|
20 | 20 |
|
21 |
| -class Group(Mapping): |
| 21 | +class Group(MutableMapping): |
22 | 22 | """Instantiate a group from an initialized store.
|
23 | 23 |
|
24 | 24 | Parameters
|
@@ -304,7 +304,7 @@ def __getitem__(self, item):
|
304 | 304 | raise KeyError(item)
|
305 | 305 |
|
306 | 306 | def __setitem__(self, item, value):
|
307 |
| - raise TypeError('item assignment not supported') |
| 307 | + self.array(item, value, overwrite=True) |
308 | 308 |
|
309 | 309 | def __delitem__(self, item):
|
310 | 310 | return self._write_op(self._delitem_nosync, item)
|
@@ -508,10 +508,7 @@ def require_groups(self, *names):
|
508 | 508 | """Convenience method to require multiple groups in a single call."""
|
509 | 509 | return tuple(self.require_group(name) for name in names)
|
510 | 510 |
|
511 |
| - def create_dataset(self, name, data=None, shape=None, chunks=None, |
512 |
| - dtype=None, compressor='default', fill_value=0, |
513 |
| - order='C', synchronizer=None, filters=None, |
514 |
| - overwrite=False, cache_metadata=True, **kwargs): |
| 511 | + def create_dataset(self, name, **kwargs): |
515 | 512 | """Create an array.
|
516 | 513 |
|
517 | 514 | Parameters
|
@@ -564,43 +561,23 @@ def create_dataset(self, name, data=None, shape=None, chunks=None,
|
564 | 561 |
|
565 | 562 | """ # flake8: noqa
|
566 | 563 |
|
567 |
| - return self._write_op(self._create_dataset_nosync, name, data=data, |
568 |
| - shape=shape, chunks=chunks, dtype=dtype, |
569 |
| - compressor=compressor, fill_value=fill_value, |
570 |
| - order=order, synchronizer=synchronizer, |
571 |
| - filters=filters, overwrite=overwrite, |
572 |
| - cache_metadata=cache_metadata, **kwargs) |
| 564 | + return self._write_op(self._create_dataset_nosync, name, **kwargs) |
573 | 565 |
|
574 |
| - def _create_dataset_nosync(self, name, data=None, shape=None, chunks=None, |
575 |
| - dtype=None, compressor='default', |
576 |
| - fill_value=0, order='C', synchronizer=None, |
577 |
| - filters=None, overwrite=False, |
578 |
| - cache_metadata=True, **kwargs): |
| 566 | + def _create_dataset_nosync(self, name, data=None, **kwargs): |
579 | 567 |
|
580 | 568 | path = self._item_path(name)
|
581 | 569 |
|
582 | 570 | # determine synchronizer
|
583 |
| - if synchronizer is None: |
584 |
| - synchronizer = self._synchronizer |
| 571 | + kwargs.setdefault('synchronizer', self._synchronizer) |
585 | 572 |
|
586 | 573 | # create array
|
587 |
| - if data is not None: |
588 |
| - a = array(data, chunks=chunks, dtype=dtype, |
589 |
| - compressor=compressor, fill_value=fill_value, |
590 |
| - order=order, synchronizer=synchronizer, |
591 |
| - store=self._store, path=path, |
592 |
| - chunk_store=self._chunk_store, filters=filters, |
593 |
| - overwrite=overwrite, cache_metadata=cache_metadata, |
594 |
| - **kwargs) |
| 574 | + if data is None: |
| 575 | + a = create(store=self._store, path=path, |
| 576 | + chunk_store=self._chunk_store, **kwargs) |
595 | 577 |
|
596 | 578 | else:
|
597 |
| - a = create(shape=shape, chunks=chunks, dtype=dtype, |
598 |
| - compressor=compressor, fill_value=fill_value, |
599 |
| - order=order, synchronizer=synchronizer, |
600 |
| - store=self._store, path=path, |
601 |
| - chunk_store=self._chunk_store, filters=filters, |
602 |
| - overwrite=overwrite, cache_metadata=cache_metadata, |
603 |
| - **kwargs) |
| 579 | + a = array(data, store=self._store, path=path, |
| 580 | + chunk_store=self._chunk_store, **kwargs) |
604 | 581 |
|
605 | 582 | return a
|
606 | 583 |
|
|
0 commit comments